Przeglądaj źródła

Merge branch 'dev_v3.0.1' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v3.0.1

xiaof 3 lat temu
rodzic
commit
0ee39ab359

+ 20 - 18
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TCStatisticsMapper.java

@@ -52,26 +52,27 @@ public interface TCStatisticsMapper extends BaseMapper<TCStatistics> {
 
     /**
      * 查询命题计划统计表
-     * @param iPage 分页参数
-     * @param examId 考试id
-     * @param collegeId 学院id
+     *
+     * @param iPage          分页参数
+     * @param semesterId     学期id
+     * @param examId         考试id
+     * @param collegeId      学院id
      * @param teachingRoomId 教研室id
-     * @param status 状态
-     * @param courseName 课程名称
-     * @param teacherName 任课教师名称
-     * @param userId 用户
+     * @param status         状态
+     * @param courseName     课程名称
+     * @param teacherName    任课教师名称
+     * @param userId         用户
      * @return 查询结果
      */
     public IPage<TCStatisticResult> findExamTaskPrintStatistic(@Param("iPage") Page<TCStatisticResult> iPage,
-                                         @Param("examId") Long examId,
-                                         @Param("collegeId") Long collegeId,
-                                         @Param("teachingRoomId") Long teachingRoomId,
-                                         @Param("status") StatisticsStatusEnum status,
-                                         @Param("courseName") String courseName,
-                                         @Param("teacherName") String teacherName,
-                                         @Param("userId") Long userId);
-
-
+                                                               @Param("semesterId") Long semesterId,
+                                                               @Param("examId") Long examId,
+                                                               @Param("collegeId") Long collegeId,
+                                                               @Param("teachingRoomId") Long teachingRoomId,
+                                                               @Param("status") StatisticsStatusEnum status,
+                                                               @Param("courseName") String courseName,
+                                                               @Param("teacherName") String teacherName,
+                                                               @Param("userId") Long userId);
 
 
     /**
@@ -96,9 +97,10 @@ public interface TCStatisticsMapper extends BaseMapper<TCStatistics> {
 
     /**
      * 根据考试id和课程编号查询命题计划统计数据
-     * @param examId 考试id
+     *
+     * @param examId     考试id
      * @param courseCode 课程编号
      * @return 命题计划统计数据
      */
-    List<ExamTaskPlanStatisticDto> findByExamIdCourseCode(@Param("examId")Long examId, @Param("courseCode") String courseCode);
+    List<ExamTaskPlanStatisticDto> findByExamIdCourseCode(@Param("examId") Long examId, @Param("courseCode") String courseCode);
 }

+ 29 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCStatisticsServiceImpl.java

@@ -12,6 +12,7 @@ import com.qmth.distributed.print.business.bean.dto.ClazzContentDto;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskPlanStatisticDto;
 import com.qmth.distributed.print.business.bean.dto.TCStatisticsDto;
 import com.qmth.distributed.print.business.bean.result.TCStatisticResult;
+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;
@@ -69,6 +70,9 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
     @Resource
     ExamDetailService examDetailService;
 
+    @Resource
+    ExamStudentService examStudentService;
+
 
     @Deprecated
     @Override
@@ -90,8 +94,6 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
                 List<ClazzContentDto> clazzContentDtoList = new ArrayList<>();
                 String courseCode = tcStatisticsTemp.getCourseCode();
                 String clazzIds = tcStatisticsTemp.getClazzIds();
-                // 总印份数(只是学生数不包含备份)
-                int printSum;
                 StatisticsStatusEnum status = StatisticsStatusEnum.FINISH;
                 // 导入的班级
                 Set<Long> clazzIdSet = Arrays.stream(clazzIds.split(",")).map(SystemConstant::convertIdToLong).collect(Collectors.toSet());
@@ -100,29 +102,47 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
                 for (Long clazzId : clazzIdSet) {
                     // 匹配到班级的所有命题计划
                     List<ExamTaskPlanStatisticDto> matchClazzList = examTaskPlanStatisticDtoList.stream().filter(e -> {
+                        if (!SystemConstant.strNotNull(e.getClazzIds())){
+                            return false;
+                        }
                         Set<Long> ebcClazzIdSet = Arrays.stream(e.getClazzIds().split(",")).map(SystemConstant::convertIdToLong).collect(Collectors.toSet());
                         return ebcClazzIdSet.contains(clazzId);
                     }).collect(Collectors.toList());
 
-                    // 匹配到以印刷的
-                    List<ExamTaskPlanStatisticDto> printClazzList = matchClazzList.stream().filter(e -> ExamDetailStatusEnum.FINISH.equals(e.getExamDetailStatus())).collect(Collectors.toList());
-
                     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) {
                         // 同一个班级课程已完成印刷的命题任务多次提交
                         status = StatisticsStatusEnum.UN_FINISH;
                         clazzContent.setStatus(ClazzContentEnum.EXCEPTION);
                     } else if (printClazzList.size() == 1) {
+                        // 该班级对应的命题任务完成印刷
                         ExamTaskPlanStatisticDto printMatchClazz = printClazzList.get(0);
-                        // 查询考场表状态为已印刷的被匹配数据
                         clazzContent.setExamPrintPlanId(printMatchClazz.getExamPrintPlanId());
                         clazzContent.setExamPrintPlanName(printMatchClazz.getExamPrintPlanName());
                         clazzContent.setPaperNumber(printMatchClazz.getPaperNumber());
-                        clazzContent.setStudentCount(printMatchClazz.getStudentCount());
-                        // 改版机对应的命题任务完成印刷
                         clazzContent.setStatus(ClazzContentEnum.FINISH);
+                        clazzContent.setStudentCount(examStudentService.count(new QueryWrapper<ExamStudent>()
+                                .lambda()
+                                .eq(ExamStudent::getClazzId,clazzId)
+                                .eq(ExamStudent::getExamDetailCourseId,printMatchClazz.getExamDetailCourseId())));
                     } else {
                         // 该班级对应的命题任务还未完成印刷
                         status = StatisticsStatusEnum.UN_FINISH;
@@ -130,9 +150,6 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
                     }
                     clazzContentDtoList.add(clazzContent);
                 }
-                Integer teachClazzStudentCount = teachStudentService.count(new QueryWrapper<TeachStudent>().lambda().in(TeachStudent::getTeachClazzId,clazzIdSet));
-                Integer basicClazzStudentCount = basicStudentService.count(new QueryWrapper<BasicStudent>().lambda().in(BasicStudent::getClazzId,clazzIdSet));
-                printSum = teachClazzStudentCount + basicClazzStudentCount;
 
                 TCStatistics tcStatistics = new TCStatistics();
                 tcStatistics.setExamId(examId);
@@ -147,7 +164,6 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
                 tcStatistics.setClazzIds(clazzIds);
                 tcStatistics.setClazzName(examDetailService.findClazzNamesByClazzIds(clazzIds,","));
                 tcStatistics.setClazzContent(JSON.toJSONString(clazzContentDtoList));
-                tcStatistics.setPrintSum(printSum);
                 tcStatistics.setStatus(status);
                 tcStatistics.insertInfo(requestUserId);
                 if (StatisticsStatusEnum.FINISH.equals(status)){
@@ -217,7 +233,7 @@ public class TCStatisticsServiceImpl extends ServiceImpl<TCStatisticsMapper, TCS
 
     @Override
     public IPage<TCStatisticResult> findExamTaskPrintStatistic(Long semesterId, Long examId, Long collegeId, Long teachingRoomId, StatisticsStatusEnum status, String courseName, String teacherName, Long schoolId, Long userId, Integer pageNumber, Integer pageSize) {
-        return tcStatisticsMapper.findExamTaskPrintStatistic(new Page<>(pageNumber,pageSize), examId, collegeId, teachingRoomId, status, courseName, teacherName, userId);
+        return tcStatisticsMapper.findExamTaskPrintStatistic(new Page<>(pageNumber,pageSize),semesterId, examId, collegeId, teachingRoomId, status, courseName, teacherName, userId);
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 5 - 0
distributed-print-business/src/main/resources/mapper/TCStatisticsMapper.xml

@@ -372,7 +372,12 @@
             basic_exam be ON tcs.exam_id = be.id
                 LEFT JOIN
             exam_print_plan epp ON tcs.print_plan_id = epp.id
+                LEFT JOIN
+            basic_semester bs ON be.semester_id = bs.id
         <where>
+            <if test="semesterId != null and semesterId != ''">
+                and bs.id = #{semesterId}
+            </if>
             <if test="examId != null and examId != ''">
                 and tcs.exam_id = #{examId}
             </if>