|
@@ -48,7 +48,6 @@ import java.nio.charset.StandardCharsets;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.concurrent.ForkJoinTask;
|
|
import java.util.concurrent.ForkJoinTask;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
-import java.util.function.Function;
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -505,8 +504,12 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
Integer totalTaskSize = jsonObject.getInteger("totalTaskSize");
|
|
Integer totalTaskSize = jsonObject.getInteger("totalTaskSize");
|
|
Integer currentTaskSize = jsonObject.getInteger("currentTaskSize");
|
|
Integer currentTaskSize = jsonObject.getInteger("currentTaskSize");
|
|
|
|
|
|
- Map<Long, TOeExamRecord> tOeExamRecordMap = tOeExamRecordList.stream().collect(
|
|
|
|
- Collectors.toMap(TOeExamRecord::getExamStudentId, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
|
|
+// Map<Long, TOeExamRecord> tOeExamRecordMap = tOeExamRecordList.stream().collect(
|
|
|
|
+// Collectors.toMap(TOeExamRecord::getExamStudentId, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
+ LinkedMultiValueMap<Long, TOeExamRecord> tOeExamRecordMap = new LinkedMultiValueMap<>();
|
|
|
|
+ for (TOeExamRecord t : tOeExamRecordList) {
|
|
|
|
+ tOeExamRecordMap.add(t.getExamStudentId(), t);
|
|
|
|
+ }
|
|
|
|
|
|
Map<Long, Map<String, Integer>> paperStructMap = new HashMap<>();
|
|
Map<Long, Map<String, Integer>> paperStructMap = new HashMap<>();
|
|
List<File> recordJsonList = new ArrayList<>(teExamStudentList.size());
|
|
List<File> recordJsonList = new ArrayList<>(teExamStudentList.size());
|
|
@@ -527,38 +530,40 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
continue;
|
|
continue;
|
|
} else {
|
|
} else {
|
|
- TOeExamRecord tOeExamRecord = tOeExamRecordMap.get(t.getId());
|
|
|
|
- if (Objects.isNull(tOeExamRecord)) {
|
|
|
|
|
|
+ List<TOeExamRecord> tOeExamRecordExamStudentList = tOeExamRecordMap.get(t.getId());
|
|
|
|
+ if (CollectionUtils.isEmpty(tOeExamRecordExamStudentList)) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- String courseCode = t.getCourseCode() + SystemConstant.JOINT_MARK + tOeExamRecord.getPaperId();
|
|
|
|
- cloudMarkUtil.callStudentSaveApi(new SaveStudentParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()),
|
|
|
|
- t.getIdentity(),
|
|
|
|
- t.getName(),
|
|
|
|
- tbOrg.getName(),
|
|
|
|
- Objects.isNull(t.getClassNo()) ? SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD : t.getClassNo(),
|
|
|
|
- SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD,
|
|
|
|
- courseCode,
|
|
|
|
- t.getCourseName()));
|
|
|
|
-
|
|
|
|
- cloudMarkUtil.callStudentObjectiveScoreApi(new StudentObjectiveScoreParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()), tOeExamRecord.getObjectiveScore()));
|
|
|
|
-
|
|
|
|
- OpenRecordNeedMarkBean openRecordNeedMarkBean = GsonUtil.fromJson(GsonUtil.toJson(tOeExamRecord), OpenRecordNeedMarkBean.class);
|
|
|
|
- List<OpenRecordAnswerTempBean> answersTemp = examAnswerService.findByExamRecordId(tOeExamRecord.getId());
|
|
|
|
- openRecordNeedMarkBean = SystemConstant.filterAnswer(openRecordNeedMarkBean, answersTemp, paperStructMap);
|
|
|
|
- if (!CollectionUtils.isEmpty(openRecordNeedMarkBean.getAnswers())) {
|
|
|
|
- File fileAnswerJson = new File(SystemConstant.TEMP_FILES_DIR + File.separator + CloudMarkFileUploadTypeEnum.ANSWER.getCode() + File.separator + SystemConstant.getNanoId() + SystemConstant.JSON_PREFIX);
|
|
|
|
- if (!fileAnswerJson.exists()) {
|
|
|
|
- fileAnswerJson.getParentFile().mkdirs();
|
|
|
|
- fileAnswerJson.createNewFile();
|
|
|
|
|
|
+ for (TOeExamRecord tOeExamRecord : tOeExamRecordExamStudentList) {
|
|
|
|
+ String courseCode = t.getCourseCode() + SystemConstant.JOINT_MARK + tOeExamRecord.getPaperId();
|
|
|
|
+ cloudMarkUtil.callStudentSaveApi(new SaveStudentParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()),
|
|
|
|
+ t.getIdentity(),
|
|
|
|
+ t.getName(),
|
|
|
|
+ tbOrg.getName(),
|
|
|
|
+ Objects.isNull(t.getClassNo()) ? SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD : t.getClassNo(),
|
|
|
|
+ SystemConstant.VALUE_OF_BLANK_REQUIRED_FIELD,
|
|
|
|
+ courseCode,
|
|
|
|
+ t.getCourseName()));
|
|
|
|
+
|
|
|
|
+ cloudMarkUtil.callStudentObjectiveScoreApi(new StudentObjectiveScoreParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()), tOeExamRecord.getObjectiveScore()));
|
|
|
|
+
|
|
|
|
+ OpenRecordNeedMarkBean openRecordNeedMarkBean = GsonUtil.fromJson(GsonUtil.toJson(tOeExamRecord), OpenRecordNeedMarkBean.class);
|
|
|
|
+ List<OpenRecordAnswerTempBean> answersTemp = examAnswerService.findByExamRecordId(tOeExamRecord.getId());
|
|
|
|
+ openRecordNeedMarkBean = SystemConstant.filterAnswer(openRecordNeedMarkBean, answersTemp, paperStructMap);
|
|
|
|
+ if (!CollectionUtils.isEmpty(openRecordNeedMarkBean.getAnswers())) {
|
|
|
|
+ File fileAnswerJson = new File(SystemConstant.TEMP_FILES_DIR + File.separator + CloudMarkFileUploadTypeEnum.ANSWER.getCode() + File.separator + SystemConstant.getNanoId() + SystemConstant.JSON_PREFIX);
|
|
|
|
+ if (!fileAnswerJson.exists()) {
|
|
|
|
+ fileAnswerJson.getParentFile().mkdirs();
|
|
|
|
+ fileAnswerJson.createNewFile();
|
|
|
|
+ }
|
|
|
|
+ IOUtils.write(JacksonUtil.parseJson(openRecordNeedMarkBean.getAnswers()).getBytes(SystemConstant.CHARSET_NAME), new FileOutputStream(fileAnswerJson));
|
|
|
|
+ recordJsonList.add(fileAnswerJson);
|
|
|
|
+ cloudMarkUtil.callFileUploadApi(new FileUploadParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()), fileAnswerJson, CloudMarkFileUploadTypeEnum.JSON));
|
|
}
|
|
}
|
|
- IOUtils.write(JacksonUtil.parseJson(openRecordNeedMarkBean.getAnswers()).getBytes(SystemConstant.CHARSET_NAME), new FileOutputStream(fileAnswerJson));
|
|
|
|
- recordJsonList.add(fileAnswerJson);
|
|
|
|
- cloudMarkUtil.callFileUploadApi(new FileUploadParams(orgId, cloudMarkExamId, String.valueOf(tOeExamRecord.getId()), fileAnswerJson, CloudMarkFileUploadTypeEnum.JSON));
|
|
|
|
|
|
+ jsonObject.put("currentTaskSize", currentTaskSize);
|
|
|
|
+ currentTaskSize++;
|
|
|
|
+ tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
}
|
|
}
|
|
- jsonObject.put("currentTaskSize", currentTaskSize);
|
|
|
|
- currentTaskSize++;
|
|
|
|
- tbTaskHistory.setRemark(jsonObject.toJSONString());
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
progress = new BigDecimal(currentTaskSize).divide(new BigDecimal(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
progress = new BigDecimal(currentTaskSize).divide(new BigDecimal(totalTaskSize), 2, BigDecimal.ROUND_HALF_UP).multiply(b);
|
|
@@ -629,6 +634,11 @@ public class TempleteLogicServiceImpl implements TempleteLogicService {
|
|
//客观分最高,客观分相同则全部提交阅卷
|
|
//客观分最高,客观分相同则全部提交阅卷
|
|
final double score = highestObjectiveScore;
|
|
final double score = highestObjectiveScore;
|
|
finalResult.addAll(tempResult.stream().filter(bean -> bean.getObjectiveScore() == score).collect(Collectors.toList()));
|
|
finalResult.addAll(tempResult.stream().filter(bean -> bean.getObjectiveScore() == score).collect(Collectors.toList()));
|
|
|
|
+ if (finalResult.size() > 1) {
|
|
|
|
+ TOeExamRecord tOeExamRecord = finalResult.stream().max((p1, p2) -> Long.compare(p1.getFinishTime(), p2.getFinishTime())).get();
|
|
|
|
+ finalResult.clear();
|
|
|
|
+ finalResult.add(tOeExamRecord);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case LATEST:
|
|
case LATEST:
|