Bladeren bron

bug修改

xiaof 4 jaren geleden
bovenliggende
commit
78f0f7050d

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -179,5 +179,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
 
     List<Map> listStudentByExamDetailId(Long schoolId, Long examDetailId, String ticketNumber, String type);
 
+    List<ExamDetail> listByCourseCodeAndPaperNumberAndPaperTypeIsNull(Long schoolId, String courseCode, String paperNumber);
+
     List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CommonServiceImpl.java

@@ -608,7 +608,7 @@ public class CommonServiceImpl implements CommonService {
         // 1.命题任务已完成
         if (examTask != null && examTask.getStatus().name().equals(ExamStatusEnum.FINISH.name())) {
             // 2.校验考务数据是否导入
-            List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
+            List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumberAndPaperTypeIsNull(schoolId, courseCode, paperNumber);
             if (examDetails != null && examDetails.size() > 0) {
                 // 3.检查examDetailId下有无其它课程
                 for (ExamDetail examDetail : examDetails) {

+ 12 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -655,6 +655,18 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return this.baseMapper.listStudentByExamDetailId(schoolId, examDetailId, ticketNumber, type);
     }
 
+    @Override
+    public List<ExamDetail> listByCourseCodeAndPaperNumberAndPaperTypeIsNull(Long schoolId, String courseCode, String paperNumber) {
+        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
+        examDetailCourses = examDetailCourses.stream().filter(m->StringUtils.isBlank(m.getPaperType())).collect(Collectors.toList());
+        if (examDetailCourses != null && examDetailCourses.size() > 0) {
+            Set<Long> examDetailIds = examDetailCourses.stream().map(m -> m.getExamDetailId()).collect(Collectors.toSet());
+            List<ExamDetail> examDetails = this.listByIds(examDetailIds);
+            return examDetails;
+        }
+        return null;
+    }
+
     @Override
     public List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber) {
         List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);

+ 55 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -71,11 +71,54 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     @Transactional
     @Override
     public boolean enable(ExamTaskDetail examTaskDetail) {
-        // 正在生成pdf不能禁用
-
         // 禁用,解决试卷关联关系,并且解除生成pdf绑定
         if (!examTaskDetail.getEnable()) {
+            // 正在生成pdf不能禁用
+            ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
+            List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber());
+            if (!examDetails.isEmpty()) {
+                Map<Long, List<Long>> map = examDetails.stream().collect(Collectors.groupingBy(ExamDetail::getPrintPlanId, Collectors.mapping(ExamDetail::getId, Collectors.toList())));
+                for (Map.Entry<Long, List<Long>> listEntry : map.entrySet()) {
+                    boolean b = tbTaskService.countByPrintPlanIdAndEntityId(examTask.getSchoolId(), listEntry.getKey(), listEntry.getValue());
+                    if (!b) {
+                        throw ExceptionResultEnum.ERROR.exception("有关联该任务的考场正在生成打印pdf,不能禁用卷库");
+                    }
 
+                    // 解除所有考场该任务绑定关系
+                    // 更新exam_detail
+                    List<Long> examDetailIds = listEntry.getValue();
+                    UpdateWrapper<ExamDetail> examDetailUpdateWrapper = new UpdateWrapper<>();
+                    examDetailUpdateWrapper.lambda()
+                            .set(ExamDetail::getStatus, ExamDetailStatusEnum.NEW)
+                            .set(ExamDetail::getAttachmentId, null)
+                            .set(ExamDetail::getAttachmentPath, null)
+                            .set(ExamDetail::getPagesA3, null)
+                            .set(ExamDetail::getPagesA4,null)
+                            .in(ExamDetail::getId, examDetailIds);
+                    examDetailService.update(examDetailUpdateWrapper);
+                    // 更新绑定关系
+                    List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByPrintPlanIdAndCourseCodeAndPaperNumber(examTask.getSchoolId(), listEntry.getKey(), examTask.getCourseCode(), examTask.getPaperNumber());
+                    List<Long> examDetailCourseIds = examDetailCourses.stream().map(m->m.getId()).collect(Collectors.toList());
+                    UpdateWrapper<ExamDetailCourse> examDetailCourseUpdateWrapper = new UpdateWrapper<>();
+                    examDetailCourseUpdateWrapper.lambda()
+                            .set(ExamDetailCourse::getPaperType, null)
+                            .set(ExamDetailCourse::getPaperPagesA3, null)
+                            .set(ExamDetailCourse::getCardPagesA3,null)
+                            .in(ExamDetailCourse::getId, examDetailCourseIds);
+                    examDetailCourseService.update(examDetailCourseUpdateWrapper);
+
+                    // 全部任务都取消,更新计划状态
+                    //所有考场都撤回,印刷任务状态改为就绪
+                    QueryWrapper<ExamDetail> examDetailQueryWrapper = new QueryWrapper<>();
+                    examDetailQueryWrapper.lambda().eq(ExamDetail::getPrintPlanId, listEntry.getKey()).notIn(ExamDetail::getStatus, ExamDetailStatusEnum.NEW, ExamDetailStatusEnum.READY);
+                    List<ExamDetail> examDetailList = examDetailService.list(examDetailQueryWrapper);
+                    if (examDetailList.isEmpty()) {
+                        UpdateWrapper<ExamPrintPlan> printPlanUpdateWrapper = new UpdateWrapper<>();
+                        printPlanUpdateWrapper.lambda().set(ExamPrintPlan::getStatus, PrintPlanStatusEnum.READY).eq(ExamPrintPlan::getId, listEntry.getKey());
+                        examPrintPlanService.update(printPlanUpdateWrapper);
+                    }
+                }
+            }
         }
         UpdateWrapper<ExamTaskDetail> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(ExamTaskDetail::getEnable, examTaskDetail.getEnable()).eq(ExamTaskDetail::getExamTaskId, examTaskDetail.getId());
@@ -114,12 +157,16 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         examStudentService.updatePaperType(examDetailCourses, paperParam.getRelatePaperType());
 
         // 重新生成pdf
-        List<Long> examDetailCourseIds = examDetailCourses.stream().map(m -> m.getId()).collect(Collectors.toList());
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, paperParam.getPrintPlanId(), sysUser, null);
-        map.computeIfAbsent("examDetailCourseIds", v -> examDetailCourseIds);
-        map.computeIfAbsent("paperType", v -> paperParam.getRelatePaperType());
-        asyncCreatePdfTempleteService.createPdf(map, null);
+//        List<Long> examDetailCourseIds = examDetailCourses.stream().map(m -> m.getId()).collect(Collectors.toList());
+        for (ExamDetailCourse examDetailCours : examDetailCourses) {
+            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.CREATE_PDF, paperParam.getPrintPlanId(), sysUser, null);
+            map.computeIfAbsent("examDetailId", v -> examDetailCours.getExamDetailId());
+            map.computeIfAbsent("examDetailCourseIds", v -> examDetailCours.getId());
+            map.computeIfAbsent("paperType", v -> paperParam.getRelatePaperType());
+            asyncCreatePdfTempleteService.createPdf(map, null);
+        }
+
         return true;
     }
 

+ 0 - 1
distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml

@@ -116,7 +116,6 @@
             a.school_id = #{schoolId}
                 AND a.course_code = #{courseCode}
                 AND a.paper_number = #{paperNumber}
-                AND a.paper_type is null
                 AND c.status != 'END'
     </select>
 

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -454,7 +454,7 @@ public class ExamTaskController {
         // 启用,触发考场生成pdf
         if(examTaskDetail.getEnable()){
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-            ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
+            ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
             // 校验是否可以提交打印状态
             commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
         }