|
@@ -16,6 +16,7 @@ import com.qmth.distributed.print.business.entity.ExamStudent;
|
|
|
import com.qmth.distributed.print.business.entity.TCStatistics;
|
|
|
import com.qmth.distributed.print.business.entity.TCStatisticsTemp;
|
|
|
import com.qmth.distributed.print.business.entity.TeachStudent;
|
|
|
+import com.qmth.distributed.print.business.enums.BackupMethodEnum;
|
|
|
import com.qmth.distributed.print.business.enums.ClazzContentEnum;
|
|
|
import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
|
|
|
import com.qmth.distributed.print.business.enums.StatisticsStatusEnum;
|
|
@@ -99,7 +100,13 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
|
|
|
Set<Long> clazzIdSet = Arrays.stream(clazzIds.split(",")).map(SystemConstant::convertIdToLong).collect(Collectors.toSet());
|
|
|
// 根据课程和考试查到的命题计划数据
|
|
|
List<ExamTaskPlanStatisticDto> examTaskPlanStatisticDtoList = this.baseMapper.findByExamIdCourseCode(examId,courseCode);
|
|
|
+
|
|
|
+ // 印刷计划备份数量map
|
|
|
+ Map<Long,Integer> backupCountMap = new HashMap<>();
|
|
|
+ int totalStudentCount = 0;
|
|
|
+ boolean printSumView= true;
|
|
|
for (Long clazzId : clazzIdSet) {
|
|
|
+ int studentCount = 0;
|
|
|
// 匹配到班级的所有命题计划
|
|
|
List<ExamTaskPlanStatisticDto> matchClazzList = examTaskPlanStatisticDtoList.stream().filter(e -> {
|
|
|
if (!SystemConstant.strNotNull(e.getClazzIds())){
|
|
@@ -112,43 +119,70 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
|
|
|
ClazzContentDto clazzContent = new ClazzContentDto();
|
|
|
clazzContent.setClazzId(clazzId);
|
|
|
clazzContent.setClazzName(examDetailService.findClazzNamesByClazzIds(String.valueOf(clazzId), ","));
|
|
|
- if (matchClazzList.size() == 1){
|
|
|
- // 课程-班级只提交一次(且已有印刷计划)的数据记录印刷计划试卷编号等信息
|
|
|
- ExamTaskPlanStatisticDto matchClazz = matchClazzList.get(0);
|
|
|
- clazzContent.setExamPrintPlanId(matchClazz.getExamPrintPlanId());
|
|
|
- clazzContent.setExamPrintPlanName(matchClazz.getExamPrintPlanName());
|
|
|
- clazzContent.setPaperNumber(matchClazz.getPaperNumber());
|
|
|
- clazzContent.setStudentCount(examStudentService.count(new QueryWrapper<ExamStudent>()
|
|
|
- .lambda()
|
|
|
- .eq(ExamStudent::getClazzId,clazzId)
|
|
|
- .eq(ExamStudent::getExamDetailCourseId,matchClazz.getExamDetailCourseId())));
|
|
|
- }
|
|
|
|
|
|
// 匹配到以印刷的
|
|
|
List<ExamTaskPlanStatisticDto> printClazzList = matchClazzList.stream().filter(e -> ExamDetailStatusEnum.FINISH.equals(e.getExamDetailStatus())).collect(Collectors.toList());
|
|
|
|
|
|
-
|
|
|
if (printClazzList.size() > 1) {
|
|
|
// 同一个班级课程已完成印刷的命题任务多次提交
|
|
|
+ printSumView = false;
|
|
|
status = StatisticsStatusEnum.UN_FINISH;
|
|
|
clazzContent.setStatus(ClazzContentEnum.EXCEPTION);
|
|
|
} else if (printClazzList.size() == 1) {
|
|
|
// 该班级对应的命题任务完成印刷
|
|
|
ExamTaskPlanStatisticDto printMatchClazz = printClazzList.get(0);
|
|
|
+ Long examDetailId = printMatchClazz.getExamDetailId();
|
|
|
clazzContent.setExamPrintPlanId(printMatchClazz.getExamPrintPlanId());
|
|
|
clazzContent.setExamPrintPlanName(printMatchClazz.getExamPrintPlanName());
|
|
|
clazzContent.setPaperNumber(printMatchClazz.getPaperNumber());
|
|
|
clazzContent.setStatus(ClazzContentEnum.FINISH);
|
|
|
- clazzContent.setStudentCount(examStudentService.count(new QueryWrapper<ExamStudent>()
|
|
|
+ studentCount = examStudentService.count(new QueryWrapper<ExamStudent>()
|
|
|
.lambda()
|
|
|
.eq(ExamStudent::getClazzId,clazzId)
|
|
|
- .eq(ExamStudent::getExamDetailCourseId,printMatchClazz.getExamDetailCourseId())));
|
|
|
+ .eq(ExamStudent::getExamDetailCourseId,printMatchClazz.getExamDetailCourseId()));
|
|
|
+ StringBuilder printCount = new StringBuilder(String.valueOf(studentCount));
|
|
|
+ // 如果是按照考场备份再找备份数量
|
|
|
+ if (BackupMethodEnum.ROOM.equals(printMatchClazz.getBackupMethod())){
|
|
|
+ // 如果是新的考场再加
|
|
|
+ if (!backupCountMap.containsKey(examDetailId)){
|
|
|
+ int backupCount = printMatchClazz.getBackupCount();
|
|
|
+ backupCountMap.put(examDetailId,backupCount);
|
|
|
+ if (backupCount > 0){
|
|
|
+ printCount.append(" + ").append(backupCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ clazzContent.setPrintCount(printCount.toString());
|
|
|
} else {
|
|
|
// 该班级对应的命题任务还未完成印刷
|
|
|
+ if (matchClazzList.size() == 1) {
|
|
|
+ // 课程-班级只提交一次(且已有印刷计划)的数据记录印刷计划试卷编号等信息
|
|
|
+ ExamTaskPlanStatisticDto matchClazz = matchClazzList.get(0);
|
|
|
+ Long examDetailId = matchClazz.getExamDetailId();
|
|
|
+ clazzContent.setExamPrintPlanId(matchClazz.getExamPrintPlanId());
|
|
|
+ clazzContent.setExamPrintPlanName(matchClazz.getExamPrintPlanName());
|
|
|
+ clazzContent.setPaperNumber(matchClazz.getPaperNumber());
|
|
|
+ studentCount = examStudentService.count(new QueryWrapper<ExamStudent>()
|
|
|
+ .lambda()
|
|
|
+ .eq(ExamStudent::getClazzId, clazzId)
|
|
|
+ .eq(ExamStudent::getExamDetailCourseId, matchClazz.getExamDetailCourseId()));
|
|
|
+ StringBuilder printCount = new StringBuilder(String.valueOf(studentCount));
|
|
|
+ // 如果是按照考场备份再找备份数量
|
|
|
+ if (BackupMethodEnum.ROOM.equals(matchClazz.getBackupMethod())){
|
|
|
+ // 如果是新的考场再加
|
|
|
+ if (!backupCountMap.containsKey(examDetailId)){
|
|
|
+ int backupCount = matchClazz.getBackupCount();
|
|
|
+ backupCountMap.put(examDetailId,backupCount);
|
|
|
+ printCount.append(" + ").append(backupCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ clazzContent.setPrintCount(printCount.toString());
|
|
|
+ }
|
|
|
status = StatisticsStatusEnum.UN_FINISH;
|
|
|
clazzContent.setStatus(ClazzContentEnum.UN_FINISH);
|
|
|
}
|
|
|
clazzContentDtoList.add(clazzContent);
|
|
|
+ totalStudentCount = totalStudentCount + studentCount;
|
|
|
}
|
|
|
|
|
|
TCStatistics tcStatistics = new TCStatistics();
|
|
@@ -171,6 +205,19 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
|
|
|
tcStatistics.setPrintPlanId(cell.getExamPrintPlanId());
|
|
|
tcStatistics.setPaperNumber(cell.getPaperNumber());
|
|
|
}
|
|
|
+ // 考场id
|
|
|
+ int backupTotal = 0;
|
|
|
+ for (Long examDetailId : backupCountMap.keySet()) {
|
|
|
+ int backupCount = backupCountMap.get(examDetailId);
|
|
|
+ backupTotal = backupTotal + backupCount;
|
|
|
+ }
|
|
|
+ String printSum = String.valueOf(totalStudentCount);
|
|
|
+ if (backupTotal > 0){
|
|
|
+ printSum = printSum + " + " + backupTotal;
|
|
|
+ }
|
|
|
+ if (printSumView){
|
|
|
+ tcStatistics.setPrintSum(printSum);
|
|
|
+ }
|
|
|
insertTCStatisticsList.add(tcStatistics);
|
|
|
}
|
|
|
}
|
|
@@ -321,9 +368,9 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
|
|
|
map.computeIfAbsent(key, v -> t);
|
|
|
} else {
|
|
|
TCStatisticsDto temp = map.get(key);
|
|
|
- if (t.getPrintSum().intValue() > temp.getPrintSum().intValue()) {
|
|
|
+ if (Integer.parseInt(t.getPrintSum()) > Integer.parseInt(temp.getPrintSum())) {
|
|
|
map.put(key, t);
|
|
|
- } else if (t.getPrintSum().intValue() == temp.getPrintSum().intValue()) {
|
|
|
+ } else if (Integer.parseInt(t.getPrintSum()) == Integer.parseInt(temp.getPrintSum())) {
|
|
|
if (t.getStatus() != StatisticsStatusEnum.UN_JOIN) {
|
|
|
temp.setExamDetailId(t.getExamDetailId());
|
|
|
} else {
|