Browse Source

bug修改

xiaof 4 years ago
parent
commit
1d3be8b7bc

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailCourseMapper.java

@@ -25,4 +25,8 @@ public interface ExamDetailCourseMapper extends BaseMapper<ExamDetailCourse> {
     List<BasicCourse> listCoursesByPrintPlanId(@Param("param") String param, @Param("printPlanId") Long printPlanId);
 
     List<String> listPaperNumberByPrintPlanId(@Param("param") String param, @Param("printPlanId") Long printPlanId);
+
+    List<ExamDetailCourse> listByPrintPlanIdAndCourseCodeAndPaperNumber(@Param("schoolId") Long schoolId, @Param("printPlanId") Long printPlanId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
+
+    List<ExamDetailCourse> listByAndCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
 }

+ 4 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailCourseService.java

@@ -26,8 +26,6 @@ public interface ExamDetailCourseService extends IService<ExamDetailCourse> {
 
     List<Map<String, Object>> listByExamDetailId(Long examDetailId);
 
-    List<ExamDetailCourse> listDetailCourseByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
-
     void updatePaperNumber(List<ExamDetailCourse> examDetailCourses, String paperNumber, String relatePaperType);
 
     List<ExamDetailCourse> listByExamDetailIdAndStatus(Long examDetailId);
@@ -35,4 +33,8 @@ public interface ExamDetailCourseService extends IService<ExamDetailCourse> {
     List<BasicCourse> listCoursesByPrintPlanId(String param, Long printPlanId);
 
     List<String> listPaperNumberByPrintPlanId(String param, Long printPlanId);
+
+    List<ExamDetailCourse> listByPrintPlanIdAndCourseCodeAndPaperNumber(Long schoolId, Long printPlanId, String courseCode, String paperNumber);
+
+    List<ExamDetailCourse> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
 }

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -161,7 +161,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
 
 
 
-    List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
+    List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, Long printPlanId, String courseCode, String paperNumber);
 
 
     List<ExamDetail> listByExamPrintId(Long printPlanId);
@@ -178,4 +178,6 @@ public interface ExamDetailService extends IService<ExamDetail> {
     IPage<ClientExamStudentDto> listStudent(Long schoolId, Long examDetailId, String ticketNumber, String studentName, String courseCode, Integer pageNumber, Integer pageSize);
 
     List<Map> listStudentByExamDetailId(Long schoolId, Long examDetailId, String ticketNumber, String type);
+
+    List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber);
 }

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

@@ -37,4 +37,6 @@ public interface ExamTaskDetailService extends IService<ExamTaskDetail> {
     Map<String, String>  getUrl(Long schoolId, Long examTaskId);
 
     boolean paperUpdate(ExamTaskDetail examTaskDetail);
+
+    ExamTaskDetail getByExamTaskId(Long examTaskId);
 }

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

@@ -89,7 +89,6 @@ public class BasicCardRuleServiceImpl extends ServiceImpl<BasicCardRuleMapper, B
             throw ExceptionResultEnum.ERROR.exception("题卡标题规则长度不能超过200字符");
         }
 
-        // todo 校验是否有必选字段已使用
         QueryWrapper<BasicCardRule> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicCardRule::getSchoolId, cardRule.getSchoolId()).eq(BasicCardRule::getName, cardRule.getName());
         BasicCardRule basicCardRule = this.getOne(queryWrapper);

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

@@ -71,7 +71,6 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         template.setSchoolId(schoolId);
-        // todo 校验是否有必选字段已使用
         QueryWrapper<BasicTemplate> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicTemplate::getSchoolId, template.getSchoolId()).eq(BasicTemplate::getName, template.getName());
         BasicTemplate basicTemplate = this.getOne(queryWrapper);

+ 10 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailCourseServiceImpl.java

@@ -38,16 +38,6 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
         return this.baseMapper.listByExamDetailId(examDetailId, ExamDetailStatusEnum.FINISH.name());
     }
 
-    @Override
-    public List<ExamDetailCourse> listDetailCourseByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber) {
-        QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
-        examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getSchoolId, schoolId)
-                .eq(ExamDetailCourse::getCourseCode, courseCode)
-                .eq(ExamDetailCourse::getPaperNumber, paperNumber);
-        List<ExamDetailCourse> examDetailCourses = this.list(examDetailCourseQueryWrapper);
-        return examDetailCourses;
-    }
-
     @Override
     public void updatePaperNumber(List<ExamDetailCourse> examDetailCourses, String paperNumber, String relatePaperType) {
         List<Long> examDetailCourseIds = examDetailCourses.stream().map(m->m.getId()).collect(Collectors.toList());
@@ -72,4 +62,14 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
     public List<String> listPaperNumberByPrintPlanId(String param, Long printPlanId) {
         return this.baseMapper.listPaperNumberByPrintPlanId(param, printPlanId);
     }
+
+    @Override
+    public List<ExamDetailCourse> listByPrintPlanIdAndCourseCodeAndPaperNumber(Long schoolId, Long printPlanId, String courseCode, String paperNumber) {
+        return this.baseMapper.listByPrintPlanIdAndCourseCodeAndPaperNumber(schoolId, printPlanId, courseCode, paperNumber);
+    }
+
+    @Override
+    public List<ExamDetailCourse> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber) {
+        return this.baseMapper.listByAndCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
+    }
 }

+ 13 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -560,12 +560,8 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     }
 
     @Override
-    public List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber) {
-        QueryWrapper<ExamDetailCourse> examDetailCourseQueryWrapper = new QueryWrapper<>();
-        examDetailCourseQueryWrapper.lambda().eq(ExamDetailCourse::getSchoolId, schoolId)
-                .eq(ExamDetailCourse::getCourseCode, courseCode)
-                .eq(ExamDetailCourse::getPaperNumber, paperNumber);
-        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.list(examDetailCourseQueryWrapper);
+    public List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, Long printPlanId, String courseCode, String paperNumber) {
+        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByPrintPlanIdAndCourseCodeAndPaperNumber(schoolId, printPlanId, courseCode, paperNumber);
         if (examDetailCourses != null && examDetailCourses.size() > 0) {
             Set<Long> examDetailIds = examDetailCourses.stream().map(m -> m.getExamDetailId()).collect(Collectors.toSet());
             List<ExamDetail> examDetails = this.listByIds(examDetailIds);
@@ -661,6 +657,17 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         return this.baseMapper.listStudentByExamDetailId(schoolId, examDetailId, ticketNumber, type);
     }
 
+    @Override
+    public List<ExamDetail> listByCourseCodeAndPaperNumber(Long schoolId, String courseCode, String paperNumber) {
+        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
+        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;
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void deleteExaminationData(Long printPlanId) {

+ 15 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -10,6 +10,7 @@ import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailDto;
 import com.qmth.distributed.print.business.bean.params.RelatePaperParam;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
+import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
 import com.qmth.distributed.print.business.enums.TaskTypeEnum;
 import com.qmth.distributed.print.business.mapper.ExamTaskDetailMapper;
 import com.qmth.distributed.print.business.service.*;
@@ -59,7 +60,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     private AsyncCreatePdfTempleteService asyncCreatePdfTempleteService;
 
     @Autowired
-    private BasicAttachmentService basicAttachmentService;
+    private ExamPrintPlanService examPrintPlanService;
 
     @Resource
     TBTaskService tbTaskService;
@@ -77,10 +78,14 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     @Transactional
     @Override
     public boolean updatePaper(RelatePaperParam paperParam) throws IOException {
+        ExamPrintPlan examPrintPlan = examPrintPlanService.getById(paperParam.getPrintPlanId());
+        if(PrintPlanStatusEnum.END.equals( examPrintPlan.getStatus())){
+            throw ExceptionResultEnum.ERROR.exception("印刷计划已结束,不能修改");
+        }
         ExamTask examTask = examTaskService.getById(paperParam.getExamTaskId());
 
         // 提交印刷的考场,不允许修改关联试卷
-        List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber());
+        List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(),paperParam.getPrintPlanId(), examTask.getCourseCode(), examTask.getPaperNumber());
         examDetails = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.equals(m.getStatus()) && !ExamDetailStatusEnum.READY.equals(m.getStatus())).collect(Collectors.toList());
         if (!examDetails.isEmpty()) {
             throw ExceptionResultEnum.ERROR.exception("有考场已开始打印,不能修改");
@@ -93,7 +98,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         this.update(updateWrapper);
 
         // 更新试卷编号
-        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listDetailCourseByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber());
+        List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByPrintPlanIdAndCourseCodeAndPaperNumber(examTask.getSchoolId(),paperParam.getPrintPlanId(), examTask.getCourseCode(), examTask.getPaperNumber());
         examDetailCourseService.updatePaperNumber(examDetailCourses, paperParam.getPaperNumber(), paperParam.getRelatePaperType());
 
         // 更新考生关联类型
@@ -236,4 +241,11 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         return true;
     }
 
+    @Override
+    public ExamTaskDetail getByExamTaskId(Long examTaskId) {
+        QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, examTaskId);
+        return this.getOne(queryWrapper);
+    }
+
 }

+ 39 - 32
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -634,26 +634,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 statusEnum = ExamStatusEnum.STAGE;
             }
             updateWrapper.lambda().set(ExamTask::getStatus, statusEnum).set(ExamTask::getReviewStatus, taskReviewLog.getReviewStatus()).eq(ExamTask::getId, taskReviewLog.getExamTaskId());
-            return this.update(updateWrapper);
+            this.update(updateWrapper);
         } else {
             // 更新记录表状态
-            examTaskPaperLog.setReview(true);
-            examTaskPaperLog.setReviewStatus(taskReviewLog.getReviewStatus());
-            examTaskPaperLog.setUpdateId(sysUser.getId());
-            examTaskPaperLog.setUpdateTime(System.currentTimeMillis());
-            examTaskPaperLogService.updateById(examTaskPaperLog);
-
-            if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-                // 通过,更新正式表数据
-                UpdateWrapper<ExamTaskDetail> examTaskDetailUpdateWrapper = new UpdateWrapper<>();
-                examTaskDetailUpdateWrapper.lambda().set(ExamTaskDetail::getPaperType, examTaskPaperLog.getPaperType())
-                        .set(ExamTaskDetail::getPaperAttachmentIds, examTaskPaperLog.getPaperAttachmentIds())
-                        .set(ExamTaskDetail::getCardId, examTaskPaperLog.getCardId())
-                        .eq(ExamTaskDetail::getExamTaskId, taskReviewLog.getExamTaskId());
-                examTaskDetailService.update(examTaskDetailUpdateWrapper);
-            }
-            return true;
+            taskAfterPass(taskReviewLog, examTaskPaperLog, sysUser);
         }
+        return true;
     }
 
     @Transactional
@@ -688,26 +674,47 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 this.update(updateWrapper);
             } else {
                 // 更新记录表状态
-                examTaskPaperLog.setReview(true);
-                examTaskPaperLog.setReviewStatus(taskReviewLog.getReviewStatus());
-                examTaskPaperLog.setUpdateId(sysUser.getId());
-                examTaskPaperLog.setUpdateTime(System.currentTimeMillis());
-                examTaskPaperLogService.updateById(examTaskPaperLog);
-
-                if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-                    // 通过,更新正式表数据
-                    UpdateWrapper<ExamTaskDetail> examTaskDetailUpdateWrapper = new UpdateWrapper<>();
-                    examTaskDetailUpdateWrapper.lambda().set(ExamTaskDetail::getPaperType, examTaskPaperLog.getPaperType())
-                            .set(ExamTaskDetail::getPaperAttachmentIds, examTaskPaperLog.getPaperAttachmentIds())
-                            .set(ExamTaskDetail::getCardId, examTaskPaperLog.getCardId())
-                            .eq(ExamTaskDetail::getExamTaskId, taskReviewLog.getExamTaskId());
-                    examTaskDetailService.update(examTaskDetailUpdateWrapper);
-                }
+                taskAfterPass(taskReviewLog, examTaskPaperLog, sysUser);
             }
         }
         return true;
     }
 
+    private void taskAfterPass(ExamTaskReviewLog taskReviewLog, ExamTaskPaperLog examTaskPaperLog, SysUser sysUser){
+        // 更新记录表状态
+        examTaskPaperLog.setReview(true);
+        examTaskPaperLog.setReviewStatus(taskReviewLog.getReviewStatus());
+        examTaskPaperLog.setUpdateId(sysUser.getId());
+        examTaskPaperLog.setUpdateTime(System.currentTimeMillis());
+        examTaskPaperLogService.updateById(examTaskPaperLog);
+
+        if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
+            ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(taskReviewLog.getExamTaskId());
+            String exposedPaperType = examTaskDetail.getExposedPaperType();
+            Set<String> exposedPaperSet = StringUtils.isBlank(exposedPaperType) ? new HashSet<>() : new HashSet<>(Arrays.asList(exposedPaperType.split(",")));
+            String unexposedPaperType = examTaskPaperLog.getPaperType();
+            Set<String> unexposedPaperSet =  StringUtils.isBlank(unexposedPaperType) ? new HashSet<>() : new HashSet<>(Arrays.asList(unexposedPaperType.split(",")));
+            String newUnexposedPaperType;
+            //未曝光类型
+            if (!exposedPaperSet.isEmpty()) {
+                for (String exposedPaper : exposedPaperSet) {
+                    unexposedPaperSet.remove(exposedPaper);
+                }
+                newUnexposedPaperType = String.join(",", unexposedPaperSet);
+            } else{
+                newUnexposedPaperType = unexposedPaperType;
+            }
+            // 通过,更新正式表数据
+            UpdateWrapper<ExamTaskDetail> examTaskDetailUpdateWrapper = new UpdateWrapper<>();
+            examTaskDetailUpdateWrapper.lambda().set(ExamTaskDetail::getPaperType, examTaskPaperLog.getPaperType())
+                    .set(ExamTaskDetail::getPaperAttachmentIds, examTaskPaperLog.getPaperAttachmentIds())
+                    .set(ExamTaskDetail::getCardId, examTaskPaperLog.getCardId())
+                    .set(ExamTaskDetail::getUnexposedPaperType, newUnexposedPaperType)
+                    .eq(ExamTaskDetail::getExamTaskId, taskReviewLog.getExamTaskId());
+            examTaskDetailService.update(examTaskDetailUpdateWrapper);
+        }
+    }
+
     @Override
     public IPage<ExamTaskDetailDto> listTaskPaper(String courseCode, String paperNumber, Long startTime, Long endTime, Integer pageNumber, Integer pageSize) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();

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

@@ -75,7 +75,7 @@
     </select>
     <select id="listPaperNumberByPrintPlanId" resultType="java.lang.String">
         SELECT
-            a.paper_number paperNumber
+            distinct a.paper_number paperNumber
         FROM
             exam_detail_course a
                 LEFT JOIN
@@ -87,5 +87,36 @@
             </if>
         </where>
     </select>
+    <select id="listByPrintPlanIdAndCourseCodeAndPaperNumber" resultMap="BaseResultMap">
+        SELECT
+            a.*
+        FROM
+            exam_detail_course a
+                LEFT JOIN
+            exam_detail b ON a.exam_detail_id = b.id
+                LEFT JION
+            exam_print_plan c ON b.exam_print_id = c.id
+        WHERE
+            a.school_id = #{schoolId}
+                AND b.print_plan_id = #{printPlanId}
+                AND a.course_code = #{courseCode}
+                AND a.paper_number = #{paperNumber}
+                AND c.status != 'END'
+    </select>
+    <select id="listByAndCourseCodeAndPaperNumber" resultMap="BaseResultMap">
+        SELECT
+            a.*
+        FROM
+            exam_detail_course a
+                LEFT JOIN
+            exam_detail b ON a.exam_detail_id = b.id
+                LEFT JION
+            exam_print_plan c ON b.exam_print_id = c.id
+        WHERE
+            a.school_id = #{schoolId}
+                AND a.course_code = #{courseCode}
+                AND a.paper_number = #{paperNumber}
+                AND c.status != 'END'
+    </select>
 
 </mapper>

+ 6 - 6
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -253,12 +253,12 @@
     </select>
     <select id="taskTotalData" resultType="com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto">
         SELECT
-            count(b.package_code) packageCount,
-            sum(b.total_subjects) totalSubjects,
-            sum(ifnull(b.pages_a3, 0))/2 pagesA3,
-            sum(ifnull(b.pages_a4, 0))/2 pagesA4,
-            sum(case b.status when 'FINISH' then 0 else ifnull(b.pages_a3, 0) end)/2 pagesA3Left,
-            sum(case b.status when 'FINISH' then 0 else ifnull(b.pages_a4, 0) end)/2 pagesA4Left
+            ifnull(count(b.package_code), 0) packageCount,
+            ifnull(sum(b.total_subjects), 0) totalSubjects,
+            ifnull(sum(ifnull(b.pages_a3, 0)), 0)/2 pagesA3,
+            ifnull(sum(ifnull(b.pages_a4, 0)), 0) /2 pagesA4,
+            ifnull(sum(case b.status when 'FINISH' then 0 else ifnull(b.pages_a3, 0) end),0)/2 pagesA3Left,
+            ifnull(sum(case b.status when 'FINISH' then 0 else ifnull(b.pages_a4, 0) end),0)/2 pagesA4Left
         FROM
             exam_print_plan a
          JOIN