Explorar el Código

fix:
1.命题计划统计 - 总印数量改为实际试卷印刷数

caozixuan hace 3 años
padre
commit
ccc554d01c

+ 5 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ClazzContentDto.java

@@ -35,7 +35,7 @@ public class ClazzContentDto {
     private String remark;
 
     @ApiModelProperty(value = "学生数量")
-    private Integer studentCount;
+    private String printCount;
 
     public Long getClazzId() {
         return clazzId;
@@ -93,11 +93,11 @@ public class ClazzContentDto {
         this.remark = remark;
     }
 
-    public Integer getStudentCount() {
-        return studentCount;
+    public String getPrintCount() {
+        return printCount;
     }
 
-    public void setStudentCount(Integer studentCount) {
-        this.studentCount = studentCount;
+    public void setPrintCount(String printCount) {
+        this.printCount = printCount;
     }
 }

+ 23 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPlanStatisticDto.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.bean.dto;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.enums.BackupMethodEnum;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -22,6 +23,12 @@ public class ExamTaskPlanStatisticDto implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     private Long examPrintPlanId;
 
+    @ApiModelProperty(value = "备份方式")
+    private BackupMethodEnum backupMethod;
+
+    @ApiModelProperty(value = "备份数量")
+    private Integer backupCount;
+
     @ApiModelProperty(value = "印刷计划名称")
     private String examPrintPlanName;
 
@@ -59,6 +66,22 @@ public class ExamTaskPlanStatisticDto implements Serializable {
         this.examId = examId;
     }
 
+    public BackupMethodEnum getBackupMethod() {
+        return backupMethod;
+    }
+
+    public void setBackupMethod(BackupMethodEnum backupMethod) {
+        this.backupMethod = backupMethod;
+    }
+
+    public Integer getBackupCount() {
+        return backupCount;
+    }
+
+    public void setBackupCount(Integer backupCount) {
+        this.backupCount = backupCount;
+    }
+
     public Long getExamPrintPlanId() {
         return examPrintPlanId;
     }

+ 5 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/TCStatisticResult.java

@@ -49,7 +49,7 @@ public class TCStatisticResult implements Serializable {
     private String examPrintPlanName;
 
     @ApiModelProperty(value = "总印份数(学生数)")
-    private String studentCount;
+    private String printCount;
 
     @ApiModelProperty(value = "总控状态")
     private StatisticsStatusEnum status;
@@ -145,12 +145,12 @@ public class TCStatisticResult implements Serializable {
         this.examPrintPlanName = examPrintPlanName;
     }
 
-    public String getStudentCount() {
-        return studentCount;
+    public String getPrintCount() {
+        return printCount;
     }
 
-    public void setStudentCount(String studentCount) {
-        this.studentCount = studentCount;
+    public void setPrintCount(String printCount) {
+        this.printCount = printCount;
     }
 
     public StatisticsStatusEnum getStatus() {

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TCStatistics.java

@@ -77,7 +77,7 @@ public class TCStatistics extends BaseEntity implements Serializable {
     private String batchNo;
 
     @ApiModelProperty(value = "总印份数")
-    private Integer printSum;
+    private String printSum;
 
     @ApiModelProperty(value = "完成状态,FINISH:已完成,UN_FINISH:未完成")
     private StatisticsStatusEnum status;
@@ -173,11 +173,11 @@ public class TCStatistics extends BaseEntity implements Serializable {
         this.examDetailId = examDetailId;
     }
 
-    public Integer getPrintSum() {
+    public String getPrintSum() {
         return printSum;
     }
 
-    public void setPrintSum(Integer printSum) {
+    public void setPrintSum(String printSum) {
         this.printSum = printSum;
     }
 

+ 63 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCStatisticsServiceImpl.java

@@ -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 {

+ 3 - 1
distributed-print-business/src/main/resources/mapper/TCStatisticsMapper.xml

@@ -325,6 +325,8 @@
         SELECT
             epp.exam_id as examId,
             epp.id as examPrintPlanId,
+            epp.backup_method as backupMethod,
+            epp.backup_count as backupCount,
             epp.name as examPrintPlanName,
             ed.id as examDetailId,
             ed.status as examDetailStatus,
@@ -363,7 +365,7 @@
             tcs.clazz_name AS clazzNames,
             tcs.paper_number AS paperNumber,
             epp.name AS examPrintPlanName,
-            tcs.print_sum AS studentCount,
+            tcs.print_sum AS printCount,
             tcs.status AS status,
             tcs.clazz_content AS clazzContent
         FROM