瀏覽代碼

3.2.7 优化

xiaofei 2 年之前
父節點
當前提交
9f63e72073
共有 20 個文件被更改,包括 316 次插入538 次删除
  1. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetail.java
  2. 1 36
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskDetail.java
  3. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/ExamDetailStatusEnum.java
  4. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java
  5. 2 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicPrintConfigService.java
  6. 1 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  7. 6 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamServiceImpl.java
  8. 7 13
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicPrintConfigServiceImpl.java
  9. 5 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  10. 26 174
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  11. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/TaskLogicService.java
  12. 178 216
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  13. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java
  14. 65 0
      distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql
  15. 1 5
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  16. 13 13
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicClazzController.java
  17. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicPrintConfigController.java
  18. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPaperStructureController.java
  19. 2 57
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java
  20. 1 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ExceptionResultEnum.java

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

@@ -109,7 +109,7 @@ public class ExamDetail extends BaseEntity implements Serializable {
     private Long cardAttachmentId;
 
     @ApiModelProperty(value = "印品附件路径")
-    @TableField("attachment_path")
+    @TableField(value = "attachment_path", updateStrategy = FieldStrategy.IGNORED)
     private String attachmentPath;
 
     @ApiModelProperty(value = "来源")

+ 1 - 36
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskDetail.java

@@ -54,15 +54,7 @@ public class ExamTaskDetail extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "转换后A3试卷附件")
     @TableField("paper_attachment_ids")
     private String paperAttachmentIds;
-//    /**
-//     * 题卡ID
-//     */
-//    @JsonSerialize(using = ToStringSerializer.class)
-//    @TableField("card_id")
-//    private Long cardId;
-
-    @TableField("make_method")
-    private String makeMethod;
+
     /**
      * [
      * {
@@ -101,18 +93,6 @@ public class ExamTaskDetail extends BaseEntity implements Serializable {
     @TableField(exist = false)
     private List<Long> approveUserIds;
 
-    @ApiModelProperty(value = "题卡id")
-    @TableField(exist = false)
-    private String cardId;
-
-    public String getCardId() {
-        return cardId;
-    }
-
-    public void setCardId(String cardId) {
-        this.cardId = cardId;
-    }
-
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -157,21 +137,6 @@ public class ExamTaskDetail extends BaseEntity implements Serializable {
         this.paperAttachmentIds = paperAttachmentIds;
     }
 
-//    public Long getCardId() {
-//        return cardId;
-//    }
-
-//    public void setCardId(Long cardId) {
-//        this.cardId = cardId;
-//    }
-    public String getMakeMethod() {
-        return makeMethod;
-    }
-
-    public void setMakeMethod(String makeMethod) {
-        this.makeMethod = makeMethod;
-    }
-
     public String getPaperConfirmAttachmentIds() {
         return paperConfirmAttachmentIds;
     }

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

@@ -10,6 +10,7 @@ import java.util.List;
  */
 public enum ExamDetailStatusEnum {
     NEW("新建"),
+    CREATING("生成中"),
     READY("就绪"),
     WAITING("待打印"),
     PRINTING("印刷中"),

+ 1 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java

@@ -73,12 +73,11 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
      *
      * @param schoolId
      * @param courseCode
-     * @param courseName
      * @param paperNumber
      * @param flowStatus
      * @return
      */
-    List<ExamTask> findByFlowStatus(@Param("schoolId") Long schoolId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("courseName") String courseName, @Param("paperNumber") String paperNumber, @Param("flowStatus") String flowStatus);
+    List<ExamTask> findExamTaskByFlowStatus(@Param("schoolId") Long schoolId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("flowStatus") String flowStatus);
 
     /**
      * 根据试卷编号查询考场详细数据集(印刷计划状态为‘PRINTING’、‘PRINTING_FINISH‘的)

+ 2 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicPrintConfigService.java

@@ -29,13 +29,7 @@ public interface BasicPrintConfigService extends IService<BasicPrintConfig> {
      */
     BasicPrintConfig getByExamId(Long examId);
 
-    /**
-     * 根据examId和orgId查询印品
-     *
-     * @param examId 考试ID
-     * @return BasicPrintConfig
-     */
-    BasicPrintConfig getByExamIdAndOrgId(Long examId);
-
     List<BasicPrintConfig> listBySchoolId(Long schoolId);
+
+    void removeByExamId(Long examId);
 }

+ 1 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -137,24 +137,19 @@ public interface ExamTaskService extends IService<ExamTask> {
      */
     public WorkResult getFlowInfo(Long flowId, Long taskId);
 
-    void switchCard(Long examTaskId);
-
     /**
      * 根据流程状态查找命题任务
      *
      * @param schoolId
      * @param courseCode
-     * @param courseName
      * @param paperNumber
      * @param flowStatus
      * @return
      */
-    List<ExamTask> findByFlowStatus(Long schoolId, Long examId, String courseCode, String courseName, String paperNumber, FlowStatusEnum flowStatus);
+    ExamTask findExamTaskByFlowStatus(Long schoolId, Long examId, String courseCode, String paperNumber, FlowStatusEnum flowStatus);
 
     void removeByExamTaskId(Long examTaskId);
 
-    Map<String, Object> saveExamTaskAndExamTaskDetail(ExamTaskApplyParam examTaskApplyParam);
-
     /**
      * 查找题卡规则标题
      *

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamServiceImpl.java

@@ -10,6 +10,7 @@ import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.mapper.BasicExamMapper;
 import com.qmth.distributed.print.business.service.BasicExamService;
+import com.qmth.distributed.print.business.service.BasicPrintConfigService;
 import com.qmth.distributed.print.business.service.ExamPrintPlanService;
 import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.util.CodeUtils;
@@ -43,6 +44,9 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
     @Resource
     BasicRoleDataPermissionService basicRoleDataPermissionService;
 
+    @Resource
+    BasicPrintConfigService basicPrintConfigService;
+
     @Resource
     CodeUtils codeUtils;
 
@@ -100,6 +104,8 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
         if (countExamPrint > 0) {
             throw ExceptionResultEnum.ERROR.exception("印刷计划已使用考试[" + basicExam.getName() + "],不能删除");
         }
+        // 删除设置印品
+        basicPrintConfigService.removeByExamId(id);
         return this.removeById(id);
     }
 

+ 7 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicPrintConfigServiceImpl.java

@@ -106,23 +106,17 @@ public class BasicPrintConfigServiceImpl extends ServiceImpl<BasicPrintConfigMap
         return printConfig;
     }
 
-    @Override
-    public BasicPrintConfig getByExamIdAndOrgId(Long examId) {
-        BasicExam basicExam = basicExamService.getById(examId);
-        BasicPrintConfig printConfig = this.baseMapper.getBySchoolIdAndExamId(basicExam.getSchoolId(), examId);
-        if (printConfig == null) {
-            throw ExceptionResultEnum.ERROR.exception("考试[" + basicExam.getName() + "]未设置印品");
-        }
-        if (!printConfig.getEnable()) {
-            throw ExceptionResultEnum.ERROR.exception("考试[" + basicExam.getName() + "]印品配置已禁用");
-        }
-        return printConfig;
-    }
-
     @Override
     public List<BasicPrintConfig> listBySchoolId(Long schoolId) {
         QueryWrapper<BasicPrintConfig> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicPrintConfig::getSchoolId, schoolId);
         return this.list(queryWrapper);
     }
+
+    @Override
+    public void removeByExamId(Long examId) {
+        UpdateWrapper<BasicPrintConfig> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(BasicPrintConfig::getExamId, examId);
+        this.remove(updateWrapper);
+    }
 }

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

@@ -458,7 +458,11 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
     public ExamTaskDetail getByExamTaskId(Long examTaskId) {
         QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, examTaskId);
-        return this.getOne(queryWrapper);
+        ExamTaskDetail examTaskDetail = this.getOne(queryWrapper);
+        if (examTaskDetail == null) {
+            throw ExceptionResultEnum.ERROR.exception("未找到命题任务详情数据," + String.format("命题任务ID[%s]", examTaskId));
+        }
+        return examTaskDetail;
     }
 
     /**

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

@@ -1364,67 +1364,30 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         return examTaskMapper.getFlowInfo(flowId, taskId);
     }
 
-    @Transactional
-    @Override
-    public void switchCard(Long examTaskId) {
-        ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTaskId);
-        if (examTaskDetail == null) {
-            throw ExceptionResultEnum.ERROR.exception("命题任务不存在");
-        }
-        if (StringUtils.isNotBlank(examTaskDetail.getExposedPaperType())) {
-            throw ExceptionResultEnum.ERROR.exception("已有试卷曝光,不能切换题卡");
-        }
-        QueryWrapper<ExamTaskDetail> examTaskDetailQueryWrapper = new QueryWrapper<>();
-        examTaskDetailQueryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, examTaskId);
-        List<ExamTaskDetail> examTaskDetailList = examTaskDetailService.list(examTaskDetailQueryWrapper);
-        if (!CollectionUtils.isEmpty(examTaskDetailList)) {
-            for (ExamTaskDetail e : examTaskDetailList) {
-                if (Objects.nonNull(e.getPaperAttachmentIds())) {
-                    JSONArray jsonArrayPaper = JSONArray.parseArray(e.getPaperAttachmentIds());
-                    for (int i = 0; i < jsonArrayPaper.size(); i++) {
-                        JSONObject object = jsonArrayPaper.getJSONObject(i);
-                        ExamCard examCard = examCardService.getById(Long.parseLong((String) object.get("cardId")));
-                        if (examCard == null) {
-                            throw ExceptionResultEnum.ERROR.exception("题卡不存在");
-                        }
-                        if (MakeMethodEnum.CUST.equals(examCard.getMakeMethod())) {
-                            throw ExceptionResultEnum.ERROR.exception("客服制卡方式,不能切换");
-                        }
-
-                        // 删除自建题卡
-                        if (!MakeMethodEnum.SELECT.name().equals(examTaskDetail.getMakeMethod())) {
-                            UpdateWrapper<ExamCardDetail> updateWrapper = new UpdateWrapper<>();
-                            updateWrapper.lambda().eq(ExamCardDetail::getCardId, examCard.getId());
-                            examCardDetailService.remove(updateWrapper);
-                            examCardService.removeById(examCard.getId());
-                        }
-
-//                        UpdateWrapper<ExamTaskDetail> examTaskDetailUpdateWrapper = new UpdateWrapper<>();
-//                        examTaskDetailUpdateWrapper.lambda().set(ExamTaskDetail::getCardId, null)
-//                                .set(ExamTaskDetail::getMakeMethod, null)
-//                                .eq(ExamTaskDetail::getId, examTaskDetail.getId());
-                        object.put("cardId", null);
-                        e.setMakeMethod(null);
-                        examTaskDetailService.updateById(e);
-                    }
-                }
-            }
-        }
-    }
-
     /**
      * 根据流程状态查找命题任务
      *
      * @param schoolId
      * @param courseCode
-     * @param courseName
      * @param paperNumber
      * @param flowStatus
      * @return
      */
     @Override
-    public List<ExamTask> findByFlowStatus(Long schoolId, Long examId, String courseCode, String courseName, String paperNumber, FlowStatusEnum flowStatus) {
-        return examTaskMapper.findByFlowStatus(schoolId, examId, courseCode, courseName, paperNumber, Objects.nonNull(flowStatus) ? flowStatus.name() : null);
+    public ExamTask findExamTaskByFlowStatus(Long schoolId, Long examId, String courseCode, String paperNumber, FlowStatusEnum flowStatus) {
+        List<ExamTask> examTaskList = examTaskMapper.findExamTaskByFlowStatus(schoolId, examId, courseCode, paperNumber, Objects.nonNull(flowStatus) ? flowStatus.name() : null);
+        if (CollectionUtils.isEmpty(examTaskList)) {
+            throw ExceptionResultEnum.EXAM_TASK_IS_NULL.exception();
+        } else if (examTaskList.size() != 1) {
+            throw ExceptionResultEnum.ERROR.exception("命题任务查询异常:" + ExceptionResultEnum.DATA_COUNT_EXCEPTION.getMessage() + String.format("考试ID[%s],课程代码[%s],试卷编号[%s]", examId, courseCode, paperNumber));
+        } else {
+            ExamTask examTask = examTaskList.get(0);
+            if (!examTask.getEnable()) {
+                throw ExceptionResultEnum.EXAM_TASK_ENABLE.exception();
+            }
+
+            return examTask;
+        }
     }
 
     @Transactional
@@ -1434,124 +1397,23 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         this.removeById(examTaskId);
         ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTaskId);
         if (examTaskDetail != null) {
-            if (examTaskDetail.getCardId() != null && !MakeMethodEnum.SELECT.name().equals(examTaskDetail.getMakeMethod())) {
-                examCardService.removeById(examTaskDetail.getCardId());
-                UpdateWrapper<ExamCardDetail> examCardDetailUpdateWrapper = new UpdateWrapper<>();
-                examCardDetailUpdateWrapper.lambda().eq(ExamCardDetail::getCardId, examTaskDetail.getCardId());
-                examCardDetailService.remove(examCardDetailUpdateWrapper);
-            }
-        }
-        if (examTaskDetail != null && examTaskDetail.getId() != null) {
             examTaskDetailService.removeById(examTaskDetail.getId());
-        }
-    }
-
-    @Transactional
-    @Override
-    public Map<String, Object> saveExamTaskAndExamTaskDetail(ExamTaskApplyParam examTaskApplyParam) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        ExamTask examTask = examTaskApplyParam.getExamTask();
-        String courseCode = examTask.getCourseCode();
-        Long examId = examTask.getExamId();
-        ExamTaskDetail examTaskDetail = examTaskApplyParam.getExamTaskDetail();
-        Map<String, Object> mapVar = new HashMap<>();
-        try {
-            BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId();
-            if (basicExamRule == null) {
-                throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
-            }
-
-            if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
-                validPaperNumberExists(schoolId, examTask);
-            } else {
-                // 试卷编号生成规则:年月日(例如:20100419)+0000(例如:0001)顺序编号
-                String paperNumber = printCommonService.createPaperNumber(schoolId, examId);
-                examTask.setPaperNumber(paperNumber);
-            }
-            if (Objects.nonNull(examTask.getId())) {
-                ExamTask task = this.getById(examTask.getId());
-                examTask.setFlowId(task.getFlowId());
-            }
-
-            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
 
-            examTask.setId(Objects.isNull(examTask.getId()) ? SystemConstant.getDbUuid() : examTask.getId());
-            examTask.setCardRuleId(basicPrintConfig.getCardRuleId());
-            examTask.setPaperNumberId(SystemConstant.getDbUuid());
-            examTask.setSchoolId(schoolId);
-            examTask.setOrgId(basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, examTask.getCourseCode()));
-            examTask.setCreateId(sysUser.getId());
-            examTask.setReview(basicPrintConfig.getReview());
-            examTask.setUserId(sysUser.getId());
-            examTask.updateInfo(sysUser.getId());
-
-            examTask.setStatus(ExamStatusEnum.valueOf(examTaskDetail.getOperateType()));
-            if (Objects.isNull(examTask.getFlowId())) {
-                if (Objects.nonNull(basicPrintConfig.getReview()) && basicPrintConfig.getReview()) {
-                    Map<String, Object> map = SystemConstant.buildFlowVar(examTask.getId(),
-                            examTask,
-                            TFCustomTypeEnum.ELECTRON_FLOW,
-                            examTask.getUserId(),
-                            false);
-                    map = activitiService.customFlowStart(map);
-                    examTask.setFlowId(SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ID)));
-                    map.computeIfAbsent(SystemConstant.FLOW_JOIN_TYPE, v -> FlowJoinTypeEnum.NEW);
-                    tfFlowJoinService.saveOrUpdate(map);
-                    mapVar.putAll(map);
-                    mapVar.put(SystemConstant.SEND_FLOW_START_MQ, true);
-                }
-            }
-            this.saveOrUpdate(examTask);
-
-            // 提交时,校验
-            if (ExamStatusEnum.SUBMIT.name().equals(examTaskDetail.getOperateType())) {
-                validSubmitParam(examTaskDetail, basicPrintConfig.getPrintContent());
-                if (Objects.nonNull(examTask.getFlowId())) {
-                    // 审核一级
-                    Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(examTask.getFlowId())).singleResult();
-                    if (Objects.nonNull(task)) {
-                        Map<String, Object> map = new HashMap<>();
-                        map.computeIfAbsent(SystemConstant.FLOW_TASK_ID, v -> task.getId());
-                        map.computeIfAbsent(SystemConstant.PAPAER_ATTACHMENT_IDS, v -> examTaskDetail.getPaperAttachmentIds());
-                        map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> FlowApprovePassEnum.PASS);
-                        map.computeIfAbsent(SystemConstant.APPROVE_USER_IDS, v -> examTaskApplyParam.getApproveUserIds());
-                        activitiService.taskApprove(map);
-                        mapVar.putAll(map);
-                        mapVar.remove(SystemConstant.SEND_FLOW_START_MQ);
-                        mapVar.put(SystemConstant.SEND_FLOW_MQ, true);
+            // 题卡更新为未使用
+            String paperAttachmentIds = examTaskDetail.getPaperAttachmentIds();
+            if (StringUtils.isNotBlank(paperAttachmentIds)) {
+                List<JSONObject> jsonObjectList = JSON.parseArray(paperAttachmentIds, JSONObject.class);
+                for (JSONObject jsonObject : jsonObjectList) {
+                    Long cardId = jsonObject.getLong("cardId");
+                    ExamCard examCard = examCardService.getById(cardId);
+                    if (examCard.getType().equals(CardTypeEnum.CUSTOM) || (examCard.getType().equals(CardTypeEnum.GENERIC) && examCard.getCreateMethod().equals(CardCreateMethodEnum.STANDARD))) {
+                        UpdateWrapper<ExamCard> updateWrapper = new UpdateWrapper<>();
+                        updateWrapper.lambda().set(ExamCard::getUsed, false).eq(ExamCard::getId, cardId);
+                        examCardService.update(updateWrapper);
                     }
                 }
             }
-
-            QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, examTask.getId());
-            ExamTaskDetail detail = examTaskDetailService.getOne(queryWrapper);
-            if (detail != null) {
-                examTaskDetail.setId(detail.getId());
-                // 已曝光试卷和未曝光试卷赋值
-                examTaskDetail.setExposedPaperType(detail.getExposedPaperType());
-                examTaskDetail.setUnexposedPaperType(examTaskDetail.getPaperType());
-            } else {
-                // 已曝光试卷和未曝光试卷赋值(新增时,已曝光试卷为null,未曝光试卷为paper_type)
-                examTaskDetail.setId(SystemConstant.getDbUuid());
-                examTaskDetail.setUnexposedPaperType(examTaskDetail.getPaperType());
-            }
-            examTaskDetail.setExamTaskId(examTask.getId());
-            examTaskDetail.setUpdateId(sysUser.getId());
-            examTaskDetail.setUpdateTime(System.currentTimeMillis());
-
-            examTaskDetailService.saveOrUpdate(examTaskDetail);
-        } catch (Exception e) {
-            log.error(SystemConstant.LOG_ERROR, e);
-            if (e instanceof ActivitiObjectNotFoundException) {
-                ResultUtil.error("流程不存在");
-            } else {
-                ResultUtil.error(e.getMessage());
-            }
         }
-        mapVar.put(SystemConstant.EXAM_TASK, examTask);
-        return mapVar;
     }
 
     /**
@@ -1602,7 +1464,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Long customFlowId = examTaskApplyTemp.getCustomFlowId();
-        Optional.ofNullable(customFlowId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程id为空"));
+        Optional.ofNullable(customFlowId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程ID为空"));
 
         if (Objects.nonNull(examTaskApplyTemp.getVersion())) {
             Integer version = examTaskApplyTemp.getVersion();
@@ -1621,11 +1483,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         // 新建命题任务
         ExamTask examTask = JSONObject.parseObject(String.valueOf(jsonObject.get("examTask")), ExamTask.class);
         try {
-            BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId();
-            if (basicExamRule == null) {
-                throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
-            }
-
             if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
                 validPaperNumberExists(schoolId, examTask);
             } else {
@@ -1646,8 +1503,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setReview(basicPrintConfig.getReview());
             examTask.setUserId(sysUser.getId());
             examTask.setStatus(ExamStatusEnum.SUBMIT);
-//            examTask.setStartTime(examTask.getExamStartTime());
-//            examTask.setEndTime(examTask.getExamEndTime());
             examTask.setCreateId(sysUser.getId());
             examTask.setCreateTime(System.currentTimeMillis());
 
@@ -1693,8 +1548,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
 
 
-            BasicCourse basicCourse = basicCourseService.findByCourseCode(examTask.getCourseCode(), schoolId);
-
             BasicExam basicExam = basicExamService.getById(examTask.getExamId());
             if (ExamModelEnum.MODEL1.equals(basicExam.getExamModel()) || ExamModelEnum.MODEL2.equals(basicExam.getExamModel())) {
                 // 创建印刷计划
@@ -1860,7 +1713,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                     examDetailCourseService.save(examDetailCourse);
                 }
 
-                //TODO 测试流程暂时屏蔽
                 if (!CollectionUtils.isEmpty(errorClassIds)) {
                     Map<String, List<String>> finalMap = new HashMap<>();
                     StringJoiner stringJoiner = new StringJoiner(",");

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/TaskLogicService.java

@@ -18,7 +18,7 @@ public interface TaskLogicService {
      * @param map
      * @return
      */
-    public Map<String, Object> createPdfPrepose(Map<String, Object> map);
+    Map<String, Object> createPdfPrepose(Map<String, Object> map);
 
     /**
      * 创建pdf逻辑
@@ -26,7 +26,7 @@ public interface TaskLogicService {
      * @param map
      * @return
      */
-    public Map<String, Object> executeCreatePdfLogic(Map<String, Object> map) throws IOException;
+    Map<String, Object> executeCreatePdfLogic(Map<String, Object> map);
 
     /**
      * 处理考务数据逻辑

+ 178 - 216
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -202,10 +202,11 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         } else if (Objects.nonNull(examDetailIds)) {
             examDetailQueryWrapper.lambda().in(ExamDetail::getId, examDetailIds);
         }
-        examDetailQueryWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.NEW)
+        examDetailQueryWrapper.lambda().set(ExamDetail::getStatus, ExamDetailStatusEnum.CREATING)
                 .set(ExamDetail::getAttachmentPath, null);
         examDetailService.update(examDetailQueryWrapper);
 
+        // todo 是否在这里校验???
         //所有考场都撤回,印刷任务状态改为就绪
         QueryWrapper<ExamDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamDetail::getPrintPlanId, tbTask.getPrintPlanId())
@@ -243,240 +244,206 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                                                     List<File> fileTempList,
                                                     List<PdfDto>... list
     ) throws Exception {
-        if (Objects.nonNull(examDetailCourseList) && examDetailCourseList.size() > 0) {
-            Map<Long, BasicCardRule> basicCardRuleMap = new HashMap<>();
-            for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
-                List<PdfDto> studentPaperPdfList = new ArrayList<>();//所有试卷
-                List<PdfDto> studentCardPdfList = new ArrayList<>();//所有题卡
-                List<PdfDto> backupPaperPdfList = new ArrayList<>();//备份试卷
-                List<PdfDto> backupCardPdfList = new ArrayList<>();//备份题卡
+        for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
+            List<PdfDto> studentPaperPdfList = new ArrayList<>();//所有试卷
+            List<PdfDto> studentCardPdfList = new ArrayList<>();//所有题卡
+            List<PdfDto> backupPaperPdfList = new ArrayList<>();//备份试卷
+            List<PdfDto> backupCardPdfList = new ArrayList<>();//备份题卡
 
-                List<ExamDetailCoursePaperType> examDetailCoursePaperTypes = new ArrayList<>();
+            List<ExamDetailCoursePaperType> examDetailCoursePaperTypes = new ArrayList<>();
 
-                String printContent = examPrintPlan.getPrintContent();
-                if (StringUtils.isBlank(printContent)) {
-                    return null;
-                }
-                //查询试卷
-                List<ExamTask> examTaskList = examTaskService.findByFlowStatus(sysUser.getSchoolId(), examPrintPlan.getExamId(), examDetailCourse.getCourseCode(), examDetailCourse.getCourseName(), examDetailCourse.getPaperNumber(), FlowStatusEnum.FINISH);
-                if (Objects.isNull(examTaskList) || examTaskList.size() == 0) {
-                    throw ExceptionResultEnum.EXAM_TASK_IS_NULL.exception();
-                }
-                Set<Long> examTaskIds = examTaskList.stream().map(ExamTask::getId).collect(Collectors.toSet());
-                Map<Long, ExamTask> examTaskMap = examTaskList.stream().collect(Collectors.toMap(ExamTask::getId, Function.identity(), (dto1, dto2) -> dto1));
-
-                QueryWrapper<ExamTaskDetail> examTaskDetailQueryWrapper = new QueryWrapper<>();
-                examTaskDetailQueryWrapper.lambda().in(ExamTaskDetail::getExamTaskId, examTaskIds).eq(ExamTaskDetail::getEnable, true);
-                List<ExamTaskDetail> examTaskDetailList = examTaskDetailService.list(examTaskDetailQueryWrapper);
-
-                JSONObject jsonObject = new JSONObject();
-                JSONArray jsonArray = new JSONArray();
-                JSONArray stuJsonArray = new JSONArray();
-                Map<String, ExamCard> examCardMap = new HashMap<>();
-                for (ExamTaskDetail examTaskDetail : examTaskDetailList) {
-                    JSONArray jsonArrayPaper = JSONArray.parseArray(examTaskDetail.getPaperAttachmentIds());
-                    ExamCard examCard = null;
-                    for (int i = 0; i < jsonArrayPaper.size(); i++) {
-                        JSONObject object = jsonArrayPaper.getJSONObject(i);
-                        if (Objects.nonNull(object.get("cardId")) && !Objects.equals("", object.get("cardId"))) {
-                            examCard = examCardService.getById(Long.parseLong((String) object.get("cardId")));
-                            if (Objects.isNull(examCard)) {
-                                throw ExceptionResultEnum.EXAM_CARD_IS_NULL.exception();
-                            }
-                            examCardMap.put((String) object.get("name"), examCard);
-                        }
+            String printContent = examPrintPlan.getPrintContent();
+            if (StringUtils.isBlank(printContent)) {
+                return null;
+            }
+            //查询命题任务绑定的试卷和题卡
+            ExamTask examTask = examTaskService.findExamTaskByFlowStatus(sysUser.getSchoolId(), examPrintPlan.getExamId(), examDetailCourse.getCourseCode(), examDetailCourse.getPaperNumber(), FlowStatusEnum.FINISH);
+            ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTask.getId());
+
+            JSONObject jsonObject = new JSONObject();
+            JSONArray jsonArray = new JSONArray();
+            JSONArray stuJsonArray = new JSONArray();
+            Map<String, ExamCard> examCardMap = new HashMap<>();
+            JSONArray jsonArrayPaper = JSONArray.parseArray(examTaskDetail.getPaperAttachmentIds());
+            ExamCard examCard;
+            for (int i = 0; i < jsonArrayPaper.size(); i++) {
+                JSONObject object = jsonArrayPaper.getJSONObject(i);
+                if (Objects.nonNull(object.get("cardId")) && !Objects.equals("", object.get("cardId"))) {
+                    examCard = examCardService.getById(Long.parseLong((String) object.get("cardId")));
+                    if (Objects.isNull(examCard)) {
+                        throw ExceptionResultEnum.EXAM_CARD_IS_NULL.exception();
                     }
+                    examCardMap.put((String) object.get("name"), examCard);
+                }
+            }
 
-                    ExamTask examTask = examTaskMap.get(examTaskDetail.getExamTaskId());
+            //查询题卡规则
+            BasicCardRule basicCardRule = basicCardRuleService.getById(examTask.getCardRuleId());
 
-                    //查询题卡规则
-                    BasicCardRule basicCardRule = null;
-                    if (!basicCardRuleMap.containsKey(examTask.getCardRuleId())) {
-                        basicCardRule = basicCardRuleService.getById(examTask.getCardRuleId());
-                        BasicCardRule finalBasicCardRule = basicCardRule;
-                        basicCardRuleMap.computeIfAbsent(examTask.getCardRuleId(), v -> finalBasicCardRule);
-                    } else {
-                        basicCardRule = basicCardRuleMap.get(examTask.getCardRuleId());
-                    }
+            //试卷编号本考场使用卷型key
+            StringJoiner stringJoiner = new StringJoiner("_");
+            stringJoiner.add(String.valueOf(examPrintPlan.getExamId())).add(examDetailCourse.getPaperNumber()).add(String.valueOf(examDetail.getExamStartTime())).add(String.valueOf(examDetail.getExamEndTime()));
+            String key = stringJoiner.toString();
 
-                    //拼装key
-                    StringJoiner stringJoiner = new StringJoiner("_");
-                    stringJoiner.add(String.valueOf(examPrintPlan.getId()))
-                            .add(examDetailCourse.getPaperNumber())
-                            .add(String.valueOf(examDetail.getExamStartTime()))
-                            .add(String.valueOf(examDetail.getExamEndTime()));
-                    String key = stringJoiner.toString();
-
-                    String paperType;
-                    if (Objects.nonNull(paperTypeParam)) {
-                        paperType = paperTypeParam;
-                        CreatePdfCacheUtil.setPaperType(key, paperType);
-                    } else {
-                        paperType = createPdfUtil.getPaperType(examPrintPlan.getDrawRule(), examTaskDetail, key);//抽取卷型
-                    }
-                    //查询考生
-                    QueryWrapper<ExamStudent> examStudentQueryWrapper = new QueryWrapper<>();
-                    examStudentQueryWrapper.lambda().eq(ExamStudent::getExamDetailCourseId, examDetailCourse.getId());
-                    List<ExamStudent> examStudentList = examStudentService.list(examStudentQueryWrapper);
-
-                    List<String> paperTypes = Arrays.stream(paperType.split(",")).sorted(Comparator.comparing(String::valueOf)).collect(Collectors.toList());
-                    int backupCount = SystemConstant.calcBackupCount(examDetail.getBackupCount(), examDetail.getTotalSubjects(), 1);
-
-                    // 当前关联试卷类型
-                    List<String> relatePaperTypes = new ArrayList<>();
-//                    if (StringUtils.isNotBlank(examTaskDetail.getRelatePaperType())) {
-//                        String[] strings = examTaskDetail.getRelatePaperType().split(",");
-//                        if (strings.length > 0) {
-//                            relatePaperTypes.addAll(Arrays.asList(strings));
-//                        }
-//                    }
-
-                    // 考生实际关联试卷类型
-                    List<String> studentPaperTypes = new ArrayList<>();
-                    if (examStudentList != null && !examStudentList.isEmpty()) {
-                        AtomicInteger atomicInteger = new AtomicInteger(0);
-                        for (ExamStudent t : examStudentList) {
-                            int i1 = atomicInteger.getAndIncrement();
-                            int mod = i1 % examTaskDetail.getDrawCount();
-                            t.setPaperType(paperTypes.get(mod));
-                            if (!relatePaperTypes.contains(t.getPaperType())) {
-                                relatePaperTypes.add(t.getPaperType());
-                            }
-                            if (!studentPaperTypes.contains(t.getPaperType())) {
-                                studentPaperTypes.add(t.getPaperType());
-                            }
-                        }
-                    } else {
-                        relatePaperTypes.addAll(paperTypes);
-                        studentPaperTypes.addAll(paperTypes);
+            //抽取卷型
+            String paperType;
+            if (Objects.nonNull(paperTypeParam)) {
+                paperType = paperTypeParam;
+                CreatePdfCacheUtil.setPaperType(key, paperType);
+            } else {
+                paperType = createPdfUtil.getPaperType(examPrintPlan.getDrawRule(), examTaskDetail, key);
+            }
+            //查询考生
+            QueryWrapper<ExamStudent> examStudentQueryWrapper = new QueryWrapper<>();
+            examStudentQueryWrapper.lambda().eq(ExamStudent::getExamDetailCourseId, examDetailCourse.getId());
+            List<ExamStudent> examStudentList = examStudentService.list(examStudentQueryWrapper);
+
+            List<String> paperTypes = Arrays.stream(paperType.split(",")).sorted(Comparator.comparing(String::valueOf)).collect(Collectors.toList());
+            // 计算备份数量,默认最小为1份。
+            int backupCount = SystemConstant.calcBackupCount(examDetail.getBackupCount(), examDetail.getTotalSubjects(), 1);
+
+            // 当前关联试卷类型
+            List<String> relatePaperTypes = new ArrayList<>();
+            // 考生实际关联试卷类型
+            if (!CollectionUtils.isEmpty(examStudentList)) {
+                AtomicInteger atomicInteger = new AtomicInteger(0);
+                for (ExamStudent t : examStudentList) {
+                    int i1 = atomicInteger.getAndIncrement();
+                    int mod = i1 % examTaskDetail.getDrawCount();
+                    t.setPaperType(paperTypes.get(mod));
+                    if (!relatePaperTypes.contains(t.getPaperType())) {
+                        relatePaperTypes.add(t.getPaperType());
                     }
+                }
+            } else {
+                relatePaperTypes.addAll(paperTypes);
+            }
 
-                    examTaskDetail.setRelatePaperType(String.join(",", relatePaperTypes));
-                    examDetailCourse.setPaperType(String.join(",", studentPaperTypes));
-
-                    studentPaperTypes.forEach(m -> {
-                        ExamDetailCoursePaperType examDetailCoursePaperType = new ExamDetailCoursePaperType();
-                        examDetailCoursePaperType.setId(SystemConstant.getDbUuid());
-                        examDetailCoursePaperType.setExamDetailCourseId(examDetailCourse.getId());
-                        examDetailCoursePaperType.setPaperType(m);
-                        examDetailCoursePaperTypes.add(examDetailCoursePaperType);
-                    });
-
-                    // 试卷数据组装
-                    if (printContent.contains("PAPER")) {
-                        List<PaperPdfDto> paperPdfDto = createPdfUtil.getPaperPdfFile(examDetailCourse.getPaperType(), examTaskDetail, fileTempList);
+            examTaskDetail.setRelatePaperType(String.join(",", relatePaperTypes));
+            examDetailCourse.setPaperType(String.join(",", relatePaperTypes));
+
+            relatePaperTypes.forEach(m -> {
+                ExamDetailCoursePaperType examDetailCoursePaperType = new ExamDetailCoursePaperType();
+                examDetailCoursePaperType.setId(SystemConstant.getDbUuid());
+                examDetailCoursePaperType.setExamDetailCourseId(examDetailCourse.getId());
+                examDetailCoursePaperType.setPaperType(m);
+                examDetailCoursePaperTypes.add(examDetailCoursePaperType);
+            });
+
+            // 试卷数据组装
+            if (printContent.contains("PAPER")) {
+                List<PaperPdfDto> paperPdfDto = createPdfUtil.getPaperPdfFile(examDetailCourse.getPaperType(), examTaskDetail, fileTempList);
+
+                //获取试卷pdf
+                PdfDto pdfDto = createPdfUtil.getPaperPdf(paperPdfDto, backupCount, backupPaperPdfList);
+                if (Objects.nonNull(pdfDto)) {
+                    examDetailCourse.setPaperPagesA3(pdfDto.getPageCount());
+                } else {
+                    examDetailCourse.setPaperPagesA3(examDetailCourse.getPaperPagesA3());
+                }
+                // 备用试卷
+                list[0].addAll(backupPaperPdfList);
 
-                        //获取试卷pdf
-                        PdfDto pdfDto = createPdfUtil.getPaperPdf(paperPdfDto, backupCount, backupPaperPdfList);
+                if (examStudentList != null && examStudentList.size() > 0) {
+                    for (ExamStudent t : examStudentList) {
                         if (Objects.nonNull(pdfDto)) {
-                            examDetailCourse.setPaperPagesA3(pdfDto.getPageCount());
-                        } else {
-                            examDetailCourse.setPaperPagesA3(examDetailCourse.getPaperPagesA3());
+                            String[] waterMarkNames = {t.getStudentName(), t.getTicketNumber()};
+                            createPdfUtil.getExamStudentPaperPdf(t.getPaperType(), paperPdfDto, studentPaperPdfList, waterMarkNames);
                         }
-                        // 备用试卷
-                        list[0].addAll(backupPaperPdfList);
-
-                        if (examStudentList != null && examStudentList.size() > 0) {
-                            for (ExamStudent t : examStudentList) {
-                                if (Objects.nonNull(pdfDto)) {
-                                    String[] waterMarkNames = {t.getStudentName(), t.getTicketNumber()};
-                                    createPdfUtil.getExamStudentPaperPdf(t.getPaperType(), paperPdfDto, studentPaperPdfList, waterMarkNames);
-                                }
-                            }
-                        } else if (examDetail.getTotalSubjects() != null) {
-                            AtomicInteger atomicInteger = new AtomicInteger(0);
-                            int i = 0;
-                            while (i < examDetail.getTotalSubjects()) {
-                                int seq = atomicInteger.getAndIncrement();
-                                int mod = seq % examTaskDetail.getDrawCount();
-                                if (Objects.nonNull(pdfDto)) {
-                                    createPdfUtil.getExamStudentPaperPdf(paperTypes.get(mod), paperPdfDto, studentPaperPdfList, null);
-                                }
-                                i++;
-                            }
-                        } else {
-                            throw ExceptionResultEnum.ERROR.exception("数据错误:未找到考生或者印刷数量");
+                    }
+                } else if (examDetail.getTotalSubjects() != null) {
+                    AtomicInteger atomicInteger = new AtomicInteger(0);
+                    int i = 0;
+                    while (i < examDetail.getTotalSubjects()) {
+                        int seq = atomicInteger.getAndIncrement();
+                        int mod = seq % examTaskDetail.getDrawCount();
+                        if (Objects.nonNull(pdfDto)) {
+                            createPdfUtil.getExamStudentPaperPdf(paperTypes.get(mod), paperPdfDto, studentPaperPdfList, null);
                         }
-                        // 考生试卷
-                        list[2].addAll(studentPaperPdfList);
+                        i++;
                     }
+                } else {
+                    throw ExceptionResultEnum.ERROR.exception("数据错误:未找到考生或者印刷数量");
+                }
+                // 考生试卷
+                list[2].addAll(studentPaperPdfList);
+            }
 
-                    // 题卡数据组装
-                    basicAttachmentList = Objects.isNull(basicAttachmentList) ? new ArrayList<>() : basicAttachmentList;
-                    if (printContent.contains("CARD")) {
-                        Map<String, ExamCardDetail> examCardDetailMap = new HashMap<>();
-                        Map<String, String> cardContentMap = new HashMap<>();
-                        for (String s : examDetailCourse.getPaperType().split(",")) {
-                            examCard = examCardMap.get(s);
-                            Optional.ofNullable(examCard).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("卷型" + s + "题卡不存在"));
+            // 题卡数据组装
+            basicAttachmentList = Objects.isNull(basicAttachmentList) ? new ArrayList<>() : basicAttachmentList;
+            if (printContent.contains("CARD")) {
+                Map<String, ExamCardDetail> examCardDetailMap = new HashMap<>();
+                Map<String, String> cardContentMap = new HashMap<>();
+                for (String s : examDetailCourse.getPaperType().split(",")) {
+                    examCard = examCardMap.get(s);
+                    Optional.ofNullable(examCard).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("卷型" + s + "题卡不存在"));
 
-                            QueryWrapper<ExamCardDetail> examCardDetailQueryWrapper = new QueryWrapper<>();
-                            examCardDetailQueryWrapper.lambda().eq(ExamCardDetail::getCardId, examCard.getId());
-                            ExamCardDetail examCardDetail = examCardDetailService.getOne(examCardDetailQueryWrapper);
+                    QueryWrapper<ExamCardDetail> examCardDetailQueryWrapper = new QueryWrapper<>();
+                    examCardDetailQueryWrapper.lambda().eq(ExamCardDetail::getCardId, examCard.getId());
+                    ExamCardDetail examCardDetail = examCardDetailService.getOne(examCardDetailQueryWrapper);
 
-                            createPdfUtil.getCardAttachmentId(examCardDetail, attachmentIds);
+                    createPdfUtil.getCardAttachmentId(examCardDetail, attachmentIds);
 
-                            //把模板页面上的 ${} 替换成实际内容
-                            String cardContent = createPdfUtil.resetHtmlTemplateBar(examCardDetail.getHtmlContent());
+                    //把模板页面上的 ${} 替换成实际内容
+                    String cardContent = createPdfUtil.resetHtmlTemplateBar(examCardDetail.getHtmlContent());
 
-                            for (int i = 1; i <= backupCount; i++) {
-                                BasicAttachment basicAttachment = createPdfUtil.cardHtml(String.format(SystemConstant.DATE_TIME_FORMAT, i), cardContent, examDetail, examDetailCourse, s, jsonArray, sysUser.getId(), backupCardPdfList, basicCardRule, fileTempList);
-                                examDetailCourse.setCardPagesA3(basicAttachment.getPages());
-                                basicAttachmentList.add(basicAttachment);
-                            }
-                            examCardDetailMap.put(s, examCardDetail);
-                            cardContentMap.put(s, cardContent);
-                        }
-                        // 备用题卡
-                        list[1].addAll(backupCardPdfList);
+                    for (int i = 1; i <= backupCount; i++) {
+                        BasicAttachment basicAttachment = createPdfUtil.cardHtml(String.format(SystemConstant.DATE_TIME_FORMAT, i), cardContent, examDetail, examDetailCourse, s, jsonArray, sysUser.getId(), backupCardPdfList, basicCardRule, fileTempList);
+                        examDetailCourse.setCardPagesA3(basicAttachment.getPages());
+                        basicAttachmentList.add(basicAttachment);
+                    }
+                    examCardDetailMap.put(s, examCardDetail);
+                    cardContentMap.put(s, cardContent);
+                }
+                // 备用题卡
+                list[1].addAll(backupCardPdfList);
 
-                        if (examStudentList != null && examStudentList.size() > 0) {
-                            for (ExamStudent t : examStudentList) {
-                                // 用带条码的模板
-                                basicAttachmentList.add(createPdfUtil.examStudentHtml(examCardDetailMap.get(t.getPaperType()).getHtmlContent(), t, paperType, examDetail, examDetailCourse, sysUser.getId(), studentCardPdfList, basicCardRule, fileTempList));
-                            }
-                        } else if (examDetail.getTotalSubjects() != null) {
-                            AtomicInteger atomicInteger = new AtomicInteger(0);
-                            Map<String, BasicAttachment> stringBasicAttachmentMap = new HashMap<>();
-                            int i = 0;
-                            while (i < examDetail.getTotalSubjects()) {
-                                int seq = atomicInteger.getAndIncrement();
-                                int mod = seq % examTaskDetail.getDrawCount();
-                                String tempPaperType = paperTypes.get(mod);
-                                BasicAttachment basicAttachment = createPdfUtil.examStudentHtml(cardContentMap.get(tempPaperType), null, tempPaperType, examDetail, examDetailCourse, sysUser.getId(), studentCardPdfList, basicCardRule, fileTempList);
-
-                                if (!stringBasicAttachmentMap.containsKey(tempPaperType)) {
-                                    stringBasicAttachmentMap.put(tempPaperType, basicAttachment);
-                                    JSONObject object = new JSONObject();
-                                    object.put("name", tempPaperType);
-                                    object.put("attachmentId", basicAttachment.getId());
-                                    stuJsonArray.add(object);
-
-                                    // 用不带条码的模板
-                                    basicAttachmentList.add(basicAttachment);
-                                }
-                                i++;
-                            }
-                        } else {
-                            throw ExceptionResultEnum.ERROR.exception("数据错误:未找到考生或者印刷数量");
+                if (examStudentList != null && examStudentList.size() > 0) {
+                    for (ExamStudent t : examStudentList) {
+                        // 用带条码的模板
+                        basicAttachmentList.add(createPdfUtil.examStudentHtml(examCardDetailMap.get(t.getPaperType()).getHtmlContent(), t, paperType, examDetail, examDetailCourse, sysUser.getId(), studentCardPdfList, basicCardRule, fileTempList));
+                    }
+                } else if (examDetail.getTotalSubjects() != null) {
+                    AtomicInteger atomicInteger = new AtomicInteger(0);
+                    Map<String, BasicAttachment> stringBasicAttachmentMap = new HashMap<>();
+                    int i = 0;
+                    while (i < examDetail.getTotalSubjects()) {
+                        int seq = atomicInteger.getAndIncrement();
+                        int mod = seq % examTaskDetail.getDrawCount();
+                        String tempPaperType = paperTypes.get(mod);
+                        BasicAttachment basicAttachment = createPdfUtil.examStudentHtml(cardContentMap.get(tempPaperType), null, tempPaperType, examDetail, examDetailCourse, sysUser.getId(), studentCardPdfList, basicCardRule, fileTempList);
+
+                        if (!stringBasicAttachmentMap.containsKey(tempPaperType)) {
+                            stringBasicAttachmentMap.put(tempPaperType, basicAttachment);
+                            JSONObject object = new JSONObject();
+                            object.put("name", tempPaperType);
+                            object.put("attachmentId", basicAttachment.getId());
+                            stuJsonArray.add(object);
+
+                            // 用不带条码的模板
+                            basicAttachmentList.add(basicAttachment);
                         }
-                        // 题卡
-                        list[3].addAll(studentCardPdfList);
-                        jsonObject.put("card", jsonArray);
-                        examDetailCourse.setAttachmentId(jsonObject.toJSONString());
-                        examDetailCourse.setCommonAttachmentId(stuJsonArray.toJSONString());
+                        i++;
                     }
-                    examStudentService.saveOrUpdateBatch(examStudentList);
+                } else {
+                    throw ExceptionResultEnum.ERROR.exception("数据错误:未找到考生或者印刷数量");
                 }
+                // 题卡
+                list[3].addAll(studentCardPdfList);
+                jsonObject.put("card", jsonArray);
                 examDetailCourse.setAttachmentId(jsonObject.toJSONString());
-                examTaskDetailService.saveOrUpdateBatch(examTaskDetailList);
-
-                examDetailCoursePaperTypeService.deleteByExamDetailCourseId(examDetailCourse.getId());
-                examDetailCoursePaperTypeService.saveBatch(examDetailCoursePaperTypes);
+                examDetailCourse.setCommonAttachmentId(stuJsonArray.toJSONString());
             }
-            examDetailCourseService.saveOrUpdateBatch(examDetailCourseList);
+            examStudentService.saveOrUpdateBatch(examStudentList);
 
+            examDetailCourse.setAttachmentId(jsonObject.toJSONString());
+            examTaskDetailService.saveOrUpdate(examTaskDetail);
+
+            examDetailCoursePaperTypeService.deleteByExamDetailCourseId(examDetailCourse.getId());
+            examDetailCoursePaperTypeService.saveBatch(examDetailCoursePaperTypes);
         }
+        examDetailCourseService.saveOrUpdateBatch(examDetailCourseList);
+
         return basicAttachmentList;
     }
 
@@ -540,8 +507,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
      * @return
      */
     @Override
-//    @Transactional
-    public Map<String, Object> executeCreatePdfLogic(Map<String, Object> map) throws IOException {
+    public Map<String, Object> executeCreatePdfLogic(Map<String, Object> map) {
         List<BasicAttachment> basicAttachmentList = null;
         List<File> fileTempList = new ArrayList<>();
         try {
@@ -559,10 +525,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
 
             BasicSchool basicSchool = commonCacheService.schoolCache(examPrintPlan.getSchoolId());
-            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndOrgId(examPrintPlan.getExamId());
-            if (Objects.isNull(basicPrintConfig)) {
-                throw ExceptionResultEnum.EXAM_PRINT_CONFIG_IS_NULL.exception();
-            }
+            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examPrintPlan.getExamId());
 
             //查询examDetail
             QueryWrapper<ExamDetail> examDetailQueryWrapper = new QueryWrapper<>();
@@ -625,7 +588,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 //合并A3(题卡+备用题卡)
                 String dirNameCardA3 = createPdfUtil.mergeA3Pdf(fileTempList, examStudentPdfList, backupCardPdfList);
 
-//                BasicAttachment attachment = createPdfUtil.mergePdfSaveDb(dirNameA4, dirNameA3, dirNameCardA3, tbTask, sysUser.getId(), examDetail, basicExamRule, mergePdfDeleteList);
                 BasicAttachment attachment = createPdfUtil.mergePdfSaveDb(dirNamePaper, dirNameCardA3, tbTask, sysUser.getId(), examDetail, basicPrintConfig, fileTempList);
                 if (basicAttachmentList != null) {
                     basicAttachmentList.add(attachment);

+ 1 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -1047,7 +1047,7 @@ public class CreatePdfUtil {
     public List<PaperPdfDto> getPaperPdfFile(String paperType, ExamTaskDetail examTaskDetail, List<File> fileTempList) throws Exception {
         String[] paperTypes = paperType.split(",");
         List<PaperPdfDto> paperPdfDtoList = new ArrayList<>();
-        PaperPdfDto paperPdfDto = null;
+        PaperPdfDto paperPdfDto;
         JSONArray jsonArrayPaper = JSONArray.parseArray(examTaskDetail.getPaperAttachmentIds());
         for (int i = 0; i < jsonArrayPaper.size(); i++) {
             JSONObject object = jsonArrayPaper.getJSONObject(i);
@@ -1072,7 +1072,6 @@ public class CreatePdfUtil {
                         break;
                     }
                 }
-
             }
         }
         return paperPdfDtoList;

+ 65 - 0
distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql

@@ -124,4 +124,69 @@ DELETE FROM `sys_privilege` WHERE (`id` = '430');
 DELETE FROM `sys_privilege` WHERE (`id` = '449');
 DELETE FROM `sys_privilege` WHERE (`id` = '306');
 
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '224');
+UPDATE `sys_privilege` SET `name` = '启用/禁用' WHERE (`id` = '220');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '218');
+UPDATE `sys_privilege` SET `name` = '导入' WHERE (`id` = '243');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '230');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '238');
+UPDATE `sys_privilege` SET `name` = '生成图片/预览图片' WHERE (`id` = '828');
+UPDATE `sys_privilege` SET `name` = '编辑题卡/编辑信息' WHERE (`id` = '630');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '250');
+UPDATE `sys_privilege` SET `name` = '启用/禁用' WHERE (`id` = '253');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '511');
+UPDATE `sys_privilege` SET `name` = '编辑' WHERE (`id` = '628');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '516');
+DELETE FROM `sys_privilege` WHERE (`id` = '460');
+DELETE FROM `sys_privilege` WHERE (`id` = '454');
+UPDATE `sys_privilege` SET `name` = '导入' WHERE (`id` = '382');
+UPDATE `sys_privilege` SET `name` = '批量删除' WHERE (`id` = '570');
+UPDATE `sys_privilege` SET `name` = '批量删除' WHERE (`id` = '574');
+UPDATE `sys_privilege` SET `name` = '删除' WHERE (`id` = '269');
+UPDATE `sys_privilege` SET `name` = '导入' WHERE (`id` = '388');
+DELETE FROM `sys_privilege` WHERE (`id` = '265');
+UPDATE `sys_privilege` SET `name` = '查询条件' WHERE (`id` = '838');
+UPDATE `sys_privilege` SET `name` = '查询' WHERE (`id` = '836');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '840');
+UPDATE `sys_privilege` SET `name` = '删除' WHERE (`id` = '837');
+UPDATE `sys_privilege` SET `name` = '管理' WHERE (`id` = '841');
+UPDATE `sys_privilege` SET `name` = '批量新增' WHERE (`id` = '273');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '274');
+UPDATE `sys_privilege` SET `name` = '启用/禁用' WHERE (`id` = '277');
+UPDATE `sys_privilege` SET `name` = '指派/更改' WHERE (`id` = '448');
+DELETE FROM `sys_privilege` WHERE (`id` = '276');
+UPDATE `sys_privilege` SET `name` = '立即申请' WHERE (`id` = '283');
+UPDATE `sys_privilege` SET `name` = '新建命题申请' WHERE (`id` = '307');
+UPDATE `sys_privilege` SET `name` = '新建任务' WHERE (`id` = '463');
+UPDATE `sys_privilege` SET `name` = '查询条件(未审核)' WHERE (`id` = '293');
+UPDATE `sys_privilege` SET `name` = '查询条件(已审核)' WHERE (`id` = '297');
+UPDATE `sys_privilege` SET `name` = '列表(未审核)' WHERE (`id` = '294');
+UPDATE `sys_privilege` SET `name` = '查询(未审核)' WHERE (`id` = '288');
+UPDATE `sys_privilege` SET `name` = '列表(已审核)' WHERE (`id` = '298');
+UPDATE `sys_privilege` SET `name` = '查询(已审核)' WHERE (`id` = '295');
+UPDATE `sys_privilege` SET `name` = '查看详情(已审核)' WHERE (`id` = '296');
+UPDATE `sys_privilege` SET `name` = '审核(未审核)' WHERE (`id` = '292');
+UPDATE `sys_privilege` SET `name` = '批量通过(未审核)' WHERE (`id` = '291');
+UPDATE `sys_privilege` SET `name` = '批量不通过(未审核)', `front_display` = '0' WHERE (`id` = '290');
+UPDATE `sys_privilege` SET `name` = '导出审核样本(未审核)' WHERE (`id` = '289');
+UPDATE `sys_privilege` SET `name` = '启用/禁用' WHERE (`id` = '302');
+DELETE FROM `sys_privilege` WHERE (`id` = '412');
+UPDATE `sys_privilege` SET `name` = '新增' WHERE (`id` = '310');
+UPDATE `sys_privilege` SET `name` = '模版下载' WHERE (`id` = '317');
+UPDATE `sys_privilege` SET `name` = '导出' WHERE (`id` = '318');
+DELETE FROM `sys_privilege` WHERE (`id` = '438');
+UPDATE `sys_privilege` SET `name` = '查看pdf' WHERE (`id` = '332');
+UPDATE `sys_privilege` SET `name` = '作废/恢复' WHERE (`id` = '447');
+UPDATE `sys_privilege` SET `front_display` = '0' WHERE (`id` = '495');
+UPDATE `sys_privilege` SET `name` = '上传标答文件' WHERE (`id` = '666');
+UPDATE `sys_privilege` SET `name` = '查询' WHERE (`id` = '674');
+UPDATE `sys_privilege` SET `name` = '查看标答文件' WHERE (`id` = '497');
+UPDATE `sys_privilege` SET `front_display` = '0' WHERE (`id` = '496');
+UPDATE `sys_privilege` SET `name` = '设置客观题标答' WHERE (`id` = '668');
+DELETE FROM `sys_privilege` WHERE (`id` = '174');
+UPDATE `sys_privilege` SET `related` = '71,167,424,477,417,420,421,441,442,640,641' WHERE (`id` = '283');
+DELETE FROM `sys_privilege` WHERE (`id` = '423');
+DELETE FROM `sys_privilege` WHERE (`id` = '424');
+DELETE FROM `sys_privilege` WHERE (`id` = '436');
+DELETE FROM `sys_privilege` WHERE (`id` = '307');
 

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

@@ -938,7 +938,7 @@
             and ari.TYPE_ = 'candidate'
     </sql>
 
-    <select id="findByFlowStatus" resultType="com.qmth.distributed.print.business.entity.ExamTask">
+    <select id="findExamTaskByFlowStatus" resultType="com.qmth.distributed.print.business.entity.ExamTask">
         select
         et.*
         from
@@ -946,7 +946,6 @@
         left join t_f_flow_approve tffa on
         tffa.flow_id = et.flow_id
         <where>
-            and et.enable = true
             <if test="schoolId != null and schoolId != ''">
                 and et.school_id = #{schoolId}
             </if>
@@ -956,9 +955,6 @@
             <if test="courseCode != null and courseCode != ''">
                 and et.course_code = #{courseCode}
             </if>
-            <if test="courseName != null and courseName != ''">
-                and et.course_name = #{courseName}
-            </if>
             <if test="paperNumber != null and paperNumber != ''">
                 and et.paper_number = #{paperNumber}
             </if>

+ 13 - 13
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicClazzController.java

@@ -77,19 +77,19 @@ public class BasicClazzController {
         return ResultUtil.ok(basicClazzService.removeBasicClazzBatch(idList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList())));
     }
 
-    @ApiOperation(value = "班级基本信息管理-批量导入(异步)")
-    @RequestMapping(value = "/data_import", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
-    public Result basicClazzImportAsync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Map<String, Object> map = printCommonService.saveTask(file, TaskTypeEnum.CLAZZ_IMPORT);
-        map.put(SystemConstant.SYS_USER, sysUser);
-
-        asyncBasicClazzImportService.importTask(map);
-        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
-        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
-    }
+//    @ApiOperation(value = "班级基本信息管理-批量导入(异步)")
+//    @RequestMapping(value = "/data_import", method = RequestMethod.POST)
+//    @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
+//    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
+//    public Result basicClazzImportAsync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
+//        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+//        Map<String, Object> map = printCommonService.saveTask(file, TaskTypeEnum.CLAZZ_IMPORT);
+//        map.put(SystemConstant.SYS_USER, sysUser);
+//
+//        asyncBasicClazzImportService.importTask(map);
+//        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+//        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
+//    }
 
     @ApiOperation(value = "班级数据源查询")
     @RequestMapping(value = "/datasource", method = RequestMethod.POST)

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

@@ -88,7 +88,7 @@ public class BasicPrintConfigController {
     @ApiOperation(value = "查询orgId印品")
     @RequestMapping(value = "/get_by_exam_id_and_org_id", method = RequestMethod.POST)
     public Result getByOrgId(@RequestParam(value = "examId") Long examId) {
-        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndOrgId(examId);
+        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examId);
         return ResultUtil.ok(basicPrintConfig);
     }
 

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

@@ -154,7 +154,7 @@ public class ExamPaperStructureController {
      *
      * @param body body
      */
-    @ApiOperation(value = "更新客观题答案")
+    @ApiOperation(value = "保存客观题答案")
     @RequestMapping(value = "/update_objective_answer", method = RequestMethod.POST)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     public Result updateObjectiveAnswer(@RequestBody String body) {

+ 2 - 57
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java

@@ -141,7 +141,6 @@ public class ExamTaskApplyController {
                 task = taskService.createTaskQuery().processInstanceId(detail.getFlowId())
                         .taskCandidateOrAssigned(String.valueOf(sysUser.getId())).singleResult();
                 if (Objects.nonNull(task)) {
-//                    detail.setSubFlowReject(true);
                     detail.setFlowTaskId(task.getId());
                     detail.setFlowId(flowId);
                 }
@@ -151,7 +150,7 @@ public class ExamTaskApplyController {
     }
 
     /**
-     * 入库申请-暂存/提交
+     * 入库申请-立即申请-提交
      *
      * @param examTaskDetail 命题任务详情对象
      * @return Result
@@ -216,66 +215,12 @@ public class ExamTaskApplyController {
         return ResultUtil.ok();
     }
 
-    /**
-     * 入库申请-新建命题任务
-     *
-     * @param examTaskApplyParam
-     * @return
-     */
-    @ApiOperation(value = "入库申请-新建命题任务-暂存/提交")
-    @RequestMapping(value = "/save_task_apply", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
-    public Result saveTaskApply(@RequestBody ExamTaskApplyParam examTaskApplyParam) throws IOException {
-        Map<String, Object> map = examTaskService.saveExamTaskAndExamTaskDetail(examTaskApplyParam);
-        ExamTask examTask = (ExamTask) map.get(SystemConstant.EXAM_TASK);
-        if (examTaskApplyParam.getExamTaskDetail().getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && (Objects.nonNull(examTask.getReview()) && !examTask.getReview())) {
-            // 校验是否可以提交打印状态
-            printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
-        }
-        Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
-        Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
-        if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {
-            activitiService.sendFlowStartMsg(examTask.getFlowId());
-        } else if (Objects.nonNull(sendFlowMq) && sendFlowMq) {
-            activitiService.sendFlowTaskApproveMsg(map);
-        }
-        return ResultUtil.ok(examTask);
-    }
-
-    /**
-     * 入库申请-新建命题任务-取消/删除
-     *
-     * @param examTaskId
-     * @return
-     */
-    @ApiOperation(value = "入库申请-新建命题任务-取消/删除")
-    @RequestMapping(value = "/remove_task_apply", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
-    public Result removeTaskApply(@RequestParam(value = "examTaskId") Long examTaskId) {
-        examTaskService.removeByExamTaskId(examTaskId);
-        return ResultUtil.ok(true, "");
-    }
-
-    /**
-     * 入库申请-新建命题任务-切换题卡
-     *
-     * @param examTaskId
-     * @return
-     */
-    @ApiOperation(value = "切换题卡")
-    @RequestMapping(value = "/switch_card", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
-    public Result switchCard(@RequestParam(value = "examTaskId") Long examTaskId) {
-        examTaskService.switchCard(examTaskId);
-        return ResultUtil.ok(true, "");
-    }
-
     /**
      * 印刷室列表
      *
      * @return
      */
-    @ApiOperation(value = "卷库查询-发布印刷任务-印刷室列表")
+    @ApiOperation(value = "印刷室列表")
     @RequestMapping(value = "/list_task_print_house", method = RequestMethod.POST)
     public Result listTaskPrintHouse() {
         return ResultUtil.ok(examTaskPrintService.listHouse());

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ExceptionResultEnum.java

@@ -80,6 +80,7 @@ public enum ExceptionResultEnum {
     EXAM_CARD_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000028, "题卡为空"),
 
     EXAM_TASK_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000029, "命题任务为空或未找到审核通过记录"),
+    EXAM_TASK_ENABLE(HttpStatus.INTERNAL_SERVER_ERROR, 50000034, "命题任务已禁用"),
 
     NO_DATA(HttpStatus.INTERNAL_SERVER_ERROR, 5000030, "没有数据"),