xiaof 3 роки тому
батько
коміт
53c5f8084d

+ 10 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/ExamDetailParams.java

@@ -12,7 +12,8 @@ public class ExamDetailParams {
     private String paperNumber;
     private String courseCode;
     private String courseName;
-    private Integer printCount;
+    private Integer printCount; // 总数量,适用于模式2
+    private Long printHouseId; // 总印刷室,适用于模式2
     private List<ExamDetailList> list;
 
     public Long getExamStartTime() {
@@ -63,6 +64,14 @@ public class ExamDetailParams {
         this.printCount = printCount;
     }
 
+    public Long getPrintHouseId() {
+        return printHouseId;
+    }
+
+    public void setPrintHouseId(Long printHouseId) {
+        this.printHouseId = printHouseId;
+    }
+
     public List<ExamDetailList> getList() {
         return list;
     }

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetail.java

@@ -122,6 +122,8 @@ public class ExamDetail extends BaseEntity implements Serializable {
     @TableField("print_count")
     private Integer printCount;
 
+
+
     public Long getSchoolId() {
         return schoolId;
     }

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

@@ -176,6 +176,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     TFCustomFlowService tfCustomFlowService;
 
+    @Resource
+    BasicExamService basicExamService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -1612,9 +1615,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
     /**
      * 获取不是自己可以审核的流程id集合
-     *
-     * @param currentUserId
-     * @return
      */
     @Override
     public List<Long> findFlowIdToNotMySelf(Long currentUserId) {
@@ -1676,6 +1676,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setCreateTime(System.currentTimeMillis());
 
             BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(examTask.getExamId(), examTask.getCourseCode());
+            if (basicPrintConfig == null) {
+                throw ExceptionResultEnum.ERROR.exception("印品配置未设置");
+            }
             examTask.setCardRuleId(basicPrintConfig.getCardRuleId());
 
             if (Objects.isNull(examTask.getFlowId())) {
@@ -1705,83 +1708,125 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
             examTaskDetailService.save(examTaskDetail);
 
-            // 创建印刷计划
-            ExamDetailParams examDetailParams = JSONObject.parseObject(String.valueOf(jsonObject.get("examDetail")), ExamDetailParams.class);
-
-            ExamPrintPlan examPrintPlan = new ExamPrintPlan();
-            examPrintPlan.insertInfo(sysUser.getId());
-            examPrintPlan.setSchoolId(schoolId);
-            examPrintPlan.setOrgId(sysUser.getOrgId());
-            examPrintPlan.setName(examTask.getCourseName() + examTask.getPaperNumber());
-            examPrintPlan.setExamStartTime(examDetailParams.getExamStartTime());
-            examPrintPlan.setExamEndTime(examDetailParams.getExamEndTime());
-            examPrintPlan.setPrintContent(String.join(",", JSONObject.parseArray(basicPrintConfig.getPrintContent(), String.class)));
-            examPrintPlan.setBackupMethod(BackupMethodEnum.valueOf(basicPrintConfig.getBackupMethod()));
-            examPrintPlan.setBackupCount(basicPrintConfig.getBackupCount());
-            examPrintPlan.setDrawRule(basicPrintConfig.getDrawRule());
-            examPrintPlan.setVariableContent(basicPrintConfig.getVariableContent());
-            examPrintPlan.setOrdinaryContent(basicPrintConfig.getOrdinaryContent());
-            examPrintPlan.setStatus(PrintPlanStatusEnum.READY);
-            examPrintPlan.setSyncStatus(ExamPrintPlanSyncStatusEnum.INIT);
-            examPrintPlan.setExamId(examTask.getExamId());
-            examPrintPlanService.save(examPrintPlan);
-
-            List<ExamDetailList> examDetailLists = JSONObject.parseArray(JSONObject.toJSONString(examDetailParams.getList()), ExamDetailList.class);
-
-            int i = 1;
-            for (ExamDetailList examDetailList : examDetailLists) {
-                SerialNumberParams serialNumberParams = new SerialNumberParams("packageCode-" + schoolId, "1", 6);
-                ExamDetail examDetail = new ExamDetail();
-                examDetail.setId(SystemConstant.getDbUuid());
-                examDetail.setPackageCode(printCommonService.createTempNumber(serialNumberParams));
-                examDetail.setSchoolId(schoolId);
-                examDetail.setOrgId(sysUser.getOrgId());
-                examDetail.setPrintPlanId(examPrintPlan.getId());
-                examDetail.setPrintPlanName(examPrintPlan.getName());
-                examDetail.setExamPlace(StringUtils.isBlank(examDetailList.getExamPlace()) ? "考点" + i : examDetailList.getExamPlace()); // 默认填充班级所在校区
-                examDetail.setExamRoom(StringUtils.isBlank(examDetailList.getExamRoom()) ? examDetailList.getClassName() : examDetailList.getExamRoom()); // 默认填充班级
-                examDetail.setStatus(ExamDetailStatusEnum.NEW);
-                examDetail.setExamStartTime(examDetailParams.getExamStartTime());
-                examDetail.setExamEndTime(examDetailParams.getExamEndTime());
-                examDetail.setTotalSubjects(examDetailList.getStudentCount());
-                examDetail.setExamDataSource(ExamDataSourceEnum.EXAM_TASK);
-                examDetail.setNormal(true);
-                examDetail.setPrintHouseId(examDetailList.getPrintHouseId());
-                examDetail.setCreateId(sysUser.getId());
-                examDetail.setCreateTime(System.currentTimeMillis());
-                examDetailService.save(examDetail);
-
-                List<String> classIds = Arrays.asList(examDetailList.getClassId().split(","));
-                ExamDetailCourse examDetailCourse = new ExamDetailCourse();
-                examDetailCourse.setId(SystemConstant.getDbUuid());
-                examDetailCourse.setSchoolId(schoolId);
-                examDetailCourse.setOrgId(sysUser.getOrgId());
-                examDetailCourse.setExamDetailId(examDetail.getId());
-                examDetailCourse.setCourseCode(examTask.getCourseCode());
-                examDetailCourse.setCourseName(examTask.getCourseName());
-                examDetailCourse.setPaperNumber(examTask.getPaperNumber());
-                examDetailCourse.setClazzId(examDetailList.getClassId());
-                examDetailCourse.setTotalSubjects(examDetailList.getStudentCount());
-                examDetailCourse.setCreateId(sysUser.getId());
-                examDetailCourseService.save(examDetailCourse);
-
-                // 更新实际考生数量
-                List<ExamStudent> examStudents = printCommonService.createBatchStudent(schoolId, examDetailList.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
-                if (!CollectionUtils.isEmpty(examStudents)) {
-                    examStudentService.insertBatch(examStudents);
-                }
-                int studentCount = examStudents.size();
-                if (studentCount - examDetail.getTotalSubjects() != 0) {
-                    UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
-                    updateWrapper.lambda().set(ExamDetail::getTotalSubjects, studentCount).eq(ExamDetail::getId, examDetail.getId());
-                    examDetailService.update(updateWrapper);
-                }
-                if (studentCount - examDetailCourse.getTotalSubjects() != 0) {
-                    UpdateWrapper<ExamDetailCourse> updateWrapper = new UpdateWrapper<>();
-                    updateWrapper.lambda().set(ExamDetailCourse::getTotalSubjects, studentCount).eq(ExamDetailCourse::getId, examDetailCourse.getId());
-                    examDetailCourseService.update(updateWrapper);
+            BasicExam basicExam = basicExamService.getById(examTask.getExamId());
+            if (basicExam == null || basicExam.getExamModel() == null) {
+                throw ExceptionResultEnum.ERROR.exception("未查到考试信息");
+            }
+
+            if (ExamModelEnum.MODEL1.equals(basicExam.getExamModel()) || ExamModelEnum.MODEL2.equals(basicExam.getExamModel())) {
+                // 创建印刷计划
+                ExamDetailParams examDetailParams = JSONObject.parseObject(String.valueOf(jsonObject.get("examDetail")), ExamDetailParams.class);
+                ExamPrintPlan examPrintPlan = new ExamPrintPlan();
+
+                examPrintPlan.insertInfo(sysUser.getId());
+                examPrintPlan.setSchoolId(schoolId);
+                examPrintPlan.setExamId(examTask.getExamId());
+                examPrintPlan.setOrgId(sysUser.getOrgId());
+                examPrintPlan.setName(examTask.getCourseName() + examTask.getPaperNumber());
+                examPrintPlan.setExamStartTime(examDetailParams.getExamStartTime());
+                examPrintPlan.setExamEndTime(examDetailParams.getExamEndTime());
+                examPrintPlan.setPrintContent(String.join(",", JSONObject.parseArray(basicPrintConfig.getPrintContent(), String.class)));
+                examPrintPlan.setBackupMethod(BackupMethodEnum.valueOf(basicPrintConfig.getBackupMethod()));
+                examPrintPlan.setBackupCount(basicPrintConfig.getBackupCount());
+                examPrintPlan.setDrawRule(basicPrintConfig.getDrawRule());
+                examPrintPlan.setVariableContent(basicPrintConfig.getVariableContent());
+                examPrintPlan.setOrdinaryContent(basicPrintConfig.getOrdinaryContent());
+                examPrintPlan.setStatus(PrintPlanStatusEnum.READY);
+                examPrintPlan.setSyncStatus(ExamPrintPlanSyncStatusEnum.INIT);
+                examPrintPlanService.save(examPrintPlan);
+
+                if (ExamModelEnum.MODEL1.equals(basicExam.getExamModel())) {
+                    List<ExamDetailList> examDetailLists = JSONObject.parseArray(JSONObject.toJSONString(examDetailParams.getList()), ExamDetailList.class);
+                    int i = 1;
+                    for (ExamDetailList examDetailList : examDetailLists) {
+                        SerialNumberParams serialNumberParams = new SerialNumberParams("packageCode-" + schoolId, "1", 6);
+                        ExamDetail examDetail = new ExamDetail();
+                        examDetail.setId(SystemConstant.getDbUuid());
+                        examDetail.setPackageCode(printCommonService.createTempNumber(serialNumberParams));
+                        examDetail.setSchoolId(schoolId);
+                        examDetail.setOrgId(sysUser.getOrgId());
+                        examDetail.setPrintPlanId(examPrintPlan.getId());
+                        examDetail.setPrintPlanName(examPrintPlan.getName());
+                        examDetail.setExamPlace(StringUtils.isBlank(examDetailList.getExamPlace()) ? "考点" + i : examDetailList.getExamPlace()); // 默认填充班级所在校区
+                        examDetail.setExamRoom(StringUtils.isBlank(examDetailList.getExamRoom()) ? examDetailList.getClassName() : examDetailList.getExamRoom()); // 默认填充班级
+                        examDetail.setStatus(ExamDetailStatusEnum.NEW);
+                        examDetail.setExamStartTime(examDetailParams.getExamStartTime());
+                        examDetail.setExamEndTime(examDetailParams.getExamEndTime());
+                        examDetail.setTotalSubjects(examDetailList.getStudentCount());
+                        examDetail.setExamDataSource(ExamDataSourceEnum.EXAM_TASK);
+                        examDetail.setNormal(true);
+                        examDetail.setPrintHouseId(examDetailList.getPrintHouseId());
+                        examDetail.setCreateId(sysUser.getId());
+                        examDetail.setCreateTime(System.currentTimeMillis());
+                        examDetailService.save(examDetail);
+
+                        List<String> classIds = Arrays.asList(examDetailList.getClassId().split(","));
+                        ExamDetailCourse examDetailCourse = new ExamDetailCourse();
+                        examDetailCourse.setId(SystemConstant.getDbUuid());
+                        examDetailCourse.setSchoolId(schoolId);
+                        examDetailCourse.setOrgId(sysUser.getOrgId());
+                        examDetailCourse.setExamDetailId(examDetail.getId());
+                        examDetailCourse.setCourseCode(examTask.getCourseCode());
+                        examDetailCourse.setCourseName(examTask.getCourseName());
+                        examDetailCourse.setPaperNumber(examTask.getPaperNumber());
+                        examDetailCourse.setClazzId(examDetailList.getClassId());
+                        examDetailCourse.setTotalSubjects(examDetailList.getStudentCount());
+                        examDetailCourse.setCreateId(sysUser.getId());
+                        examDetailCourseService.save(examDetailCourse);
+
+                        // 更新实际考生数量
+                        List<ExamStudent> examStudents = printCommonService.createBatchStudent(schoolId, examDetailList.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
+                        if (!CollectionUtils.isEmpty(examStudents)) {
+                            examStudentService.insertBatch(examStudents);
+                        }
+                        int studentCount = examStudents.size();
+
+                        if (studentCount - examDetail.getTotalSubjects() != 0) {
+                            UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
+                            updateWrapper.lambda().set(ExamDetail::getTotalSubjects, studentCount).eq(ExamDetail::getId, examDetail.getId());
+                            examDetailService.update(updateWrapper);
+                        }
+                        if (studentCount - examDetailCourse.getTotalSubjects() != 0) {
+                            UpdateWrapper<ExamDetailCourse> updateWrapper = new UpdateWrapper<>();
+                            updateWrapper.lambda().set(ExamDetailCourse::getTotalSubjects, studentCount).eq(ExamDetailCourse::getId, examDetailCourse.getId());
+                            examDetailCourseService.update(updateWrapper);
+                        }
+                        i++;
+                    }
+                } else if (ExamModelEnum.MODEL2.equals(basicExam.getExamModel())) {
+                    SerialNumberParams serialNumberParams = new SerialNumberParams("packageCode-" + schoolId, "1", 6);
+                    ExamDetail examDetail = new ExamDetail();
+                    examDetail.setId(SystemConstant.getDbUuid());
+                    examDetail.setPackageCode(printCommonService.createTempNumber(serialNumberParams));
+                    examDetail.setSchoolId(schoolId);
+                    examDetail.setOrgId(sysUser.getOrgId());
+                    examDetail.setPrintPlanId(examPrintPlan.getId());
+                    examDetail.setPrintPlanName(examPrintPlan.getName());
+                    examDetail.setExamPlace("考点1"); // 默认填充班级所在校区
+                    examDetail.setExamRoom("考场1"); // 默认填充班级
+                    examDetail.setStatus(ExamDetailStatusEnum.NEW);
+                    examDetail.setExamStartTime(examDetailParams.getExamStartTime());
+                    examDetail.setExamEndTime(examDetailParams.getExamEndTime());
+                    examDetail.setTotalSubjects(examDetailParams.getPrintCount());
+                    examDetail.setExamDataSource(ExamDataSourceEnum.EXAM_TASK);
+                    examDetail.setNormal(true);
+                    examDetail.setPrintHouseId(examDetailParams.getPrintHouseId());
+                    examDetail.setCreateId(sysUser.getId());
+                    examDetail.setCreateTime(System.currentTimeMillis());
+                    examDetailService.save(examDetail);
+
+                    ExamDetailCourse examDetailCourse = new ExamDetailCourse();
+                    examDetailCourse.setId(SystemConstant.getDbUuid());
+                    examDetailCourse.setSchoolId(schoolId);
+                    examDetailCourse.setOrgId(sysUser.getOrgId());
+                    examDetailCourse.setExamDetailId(examDetail.getId());
+                    examDetailCourse.setCourseCode(examTask.getCourseCode());
+                    examDetailCourse.setCourseName(examTask.getCourseName());
+                    examDetailCourse.setPaperNumber(examTask.getPaperNumber());
+                    examDetailCourse.setTotalSubjects(examDetailParams.getPrintCount());
+                    examDetailCourse.setCreateId(sysUser.getId());
+                    examDetailCourseService.save(examDetailCourse);
                 }
-                i++;
             }
 
             if (Objects.nonNull(examTask.getFlowId())) {

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceServiceImpl.java

@@ -130,6 +130,9 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
     @Autowired
     BasicSchoolService basicSchoolService;
 
+    @Autowired
+    BasicExamService basicExamService;
+
     /**
      * 保存附件
      *
@@ -995,6 +998,12 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
     public void checkData(Long schoolId, String courseCode, String paperNumber, SysUser user) throws IOException {
         // 校验命题任务是否提交
         ExamTask examTask = examTaskService.getByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
+        BasicExam basicExam = basicExamService.getById(examTask.getExamId());
+        if (basicExam != null && ExamModelEnum.MODEL3.equals(basicExam.getExamModel())) {
+            log.info("考试模式为模式3,不生成pdf");
+            return;
+        }
+
         if (examTask != null && !examTask.getEnable()) {
             log.info("命题任务已禁用");
             return;