Przeglądaj źródła

3.2.6 广药新需求

xiaofei 2 lat temu
rodzic
commit
b3aa13c46d

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/ExamDetailStatusEnum.java

@@ -14,7 +14,8 @@ public enum ExamDetailStatusEnum {
     WAITING("待打印"),
     PRINTING("印刷中"),
     EXPIRED("已过期"),
-    FINISH("已完成");
+    FINISH("已完成"),
+    CANCEL("作废");
     private final String desc;
 
     ExamDetailStatusEnum(String desc) {

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

@@ -41,4 +41,6 @@ public interface ExamDetailCourseMapper extends BaseMapper<ExamDetailCourse> {
     List<ExamDetailCourseDto> listByPrintPlanIdAndExamTaskId(@Param("printPlanIds") List<Long> printPlanIds, @Param("examTaskId") Long examTaskId, @Param("paperType") String paperType);
 
     IPage<SyncExamTaskDto> listSyncCourseByPrintPlanId(@Param("ipage") Page<SyncExamTaskDto> ipage, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("roomOrgIds") Set<Long> roomOrgIds, @Param("orgIds") Set<Long> orgIds, @Param("cardType") String cardType, @Param("syncStatus") ExamTaskSyncStatusEnum syncStatus, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
+
+    List<ExamDetailCourse> listExamDetailByExamIdAndPaperNumber(@Param("schoolId") Long schoolId, @Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 }

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

@@ -40,4 +40,6 @@ public interface ExamDetailCourseService extends IService<ExamDetailCourse> {
     IPage<SyncExamTaskDto> listSyncCourseByPrintPlanId(Long semesterId, Long examId, Long orgId, String cardType, ExamTaskSyncStatusEnum syncStatus, String courseCode, String paperNumber, Long startTime, Long endTime, Integer pageNumber, Integer pageSize);
 
     List<ExamDetailCourseDto> listByPrintPlanIdAndExamTaskId(List<Long> printPlanIds, Long examTaskId, String paperType);
+
+    List<ExamDetailCourse> listExamDetailByExamIdAndPaperNumber(Long schoolId, Long examId, String paperNumber);
 }

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

@@ -150,4 +150,9 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
     public List<ExamDetailCourseDto> listByPrintPlanIdAndExamTaskId(List<Long> printPlanIds, Long examTaskId, String paperType) {
         return this.baseMapper.listByPrintPlanIdAndExamTaskId(printPlanIds, examTaskId, paperType);
     }
+
+    @Override
+    public List<ExamDetailCourse> listExamDetailByExamIdAndPaperNumber(Long schoolId, Long examId, String paperNumber) {
+        return this.baseMapper.listExamDetailByExamIdAndPaperNumber(schoolId, examId, paperNumber);
+    }
 }

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

@@ -1016,6 +1016,10 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Override
     public boolean taskNormal(ExamDetail examDetail) {
+        ExamDetail detail = this.getById(examDetail.getId());
+        if (ExamDetailStatusEnum.CANCEL.equals(detail.getStatus()) && !examDetail.getNormal()) {
+            throw ExceptionResultEnum.ERROR.exception("印刷任务关联的命题任务已作废,无法恢复");
+        }
         UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(ExamDetail::getNormal, examDetail.getNormal()).eq(ExamDetail::getId, examDetail.getId());
         return this.update(updateWrapper);

+ 22 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -546,14 +546,34 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         return this.getByExamTaskId(examTask.getId());
     }
 
+    @Transactional
     @Override
     public boolean cancel(Long id) {
         ExamTask examTask = examTaskService.getById(id);
+        String paperNumber = examTask.getPaperNumber();
+        String paperNumberCancel = paperNumber + "-作废";
+        examTask.setPaperNumber(paperNumberCancel);
         examTask.setStatus(ExamStatusEnum.CANCEL);
         examTaskService.updateById(examTask);
 
-        // todo 作废后,考务数据、考场状态怎么处理
-        return false;
+        // 作废后,考场状态改为作废,考务数据保留
+        List<ExamDetailCourse> examDetailCourseList = examDetailCourseService.listExamDetailByExamIdAndPaperNumber(examTask.getSchoolId(), examTask.getExamId(), paperNumber);
+        // 考场状态改为作废
+        if (!CollectionUtils.isEmpty(examDetailCourseList)) {
+            for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
+                UpdateWrapper<ExamDetail> examDetailUpdateWrapper = new UpdateWrapper<>();
+                examDetailUpdateWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.CANCEL)
+                        .set(ExamDetail::getNormal, false)
+                        .eq(ExamDetail::getId, examDetailCourse.getExamDetailId());
+                examDetailService.update(examDetailUpdateWrapper);
+
+                UpdateWrapper<ExamDetailCourse> examDetailCourseUpdateWrapper = new UpdateWrapper<>();
+                examDetailCourseUpdateWrapper.lambda().set(ExamDetailCourse::getPaperNumber, paperNumberCancel)
+                        .eq(ExamDetailCourse::getId, examDetailCourse.getId());
+                examDetailCourseService.update(examDetailCourseUpdateWrapper);
+            }
+        }
+        return true;
     }
 
     /**

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

@@ -1859,7 +1859,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     examDetailCourseService.save(examDetailCourse);
                 }
 
-                if (CollectionUtils.isEmpty(errorClassIds)) {
+                if (!CollectionUtils.isEmpty(errorClassIds)) {
                     List<BasicClazz> basicClazzList = basicClazzService.listByIds(errorClassIds);
                     String clazzNames = basicClazzList.stream().map(m -> m.getClazzName()).collect(Collectors.joining(","));
                     throw ExceptionResultEnum.ERROR.exception("考试对象[" + clazzNames + "]已被其它人占用");

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

@@ -319,5 +319,23 @@
             </if>
         </where>
     </select>
+    <select id="listExamDetailByExamIdAndPaperNumber"
+            resultMap="BaseResultMap">
+        SELECT
+            *
+        FROM
+            exam_detail_course edc
+        WHERE
+            edc.paper_number = #{paperNumber}
+          AND EXISTS( SELECT
+                          1
+                      FROM
+                          exam_detail ed
+                      WHERE
+                          edc.school_id = ed.school_id
+                        AND edc.exam_detail_id = ed.id
+                        AND ed.school_id = #{schoolId}
+                        AND ed.exam_id = #{examId})
+    </select>
 
 </mapper>

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

@@ -674,6 +674,6 @@
             exam_detail ed ON edc.exam_detail_id = ed.id
         WHERE
             edc.school_id = #{schoolId} AND ed.exam_id = #{examId}
-          AND edc.course_code = #{courseCode}
+          AND edc.course_code = #{courseCode} AND ed.status != 'CANCEL'
     </select>
 </mapper>