Explorar el Código

3.2.2-通用规则、印品管理

xiaof hace 2 años
padre
commit
f97211380f

+ 19 - 38
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicExamRule.java

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.enums.PrintMethodEnum;
+import com.qmth.teachcloud.common.enums.PrintMethodEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -46,26 +46,15 @@ public class BasicExamRule extends BaseEntity implements Serializable {
     @TableField("extend_fields")
     private String extendFields;
 
-    /**
-     * 0-禁用,1-启用
-     */
-    private Boolean review;
-
-    /**
-     * 0-禁用,1-启用
-     */
-    @TableField("include_paper")
-    private Boolean includePaper;
-
-    /**
-     * AUTO-自动,MANUAL-手动
-     */
-    @TableField("print_method")
-    private PrintMethodEnum printMethod;
-
     @TableField("exam_number_digit")
     private Integer examNumberDigit;
 
+    @TableField("sign_scope")
+    private String signScope;
+
+    @TableField("package_scope")
+    private String packageScope;
+
     public static long getSerialVersionUID() {
         return serialVersionUID;
     }
@@ -102,35 +91,27 @@ public class BasicExamRule extends BaseEntity implements Serializable {
         this.extendFields = extendFields;
     }
 
-    public Boolean getReview() {
-        return review;
-    }
-
-    public void setReview(Boolean review) {
-        this.review = review;
-    }
-
-    public Boolean getIncludePaper() {
-        return includePaper;
+    public Integer getExamNumberDigit() {
+        return examNumberDigit;
     }
 
-    public void setIncludePaper(Boolean includePaper) {
-        this.includePaper = includePaper;
+    public void setExamNumberDigit(Integer examNumberDigit) {
+        this.examNumberDigit = examNumberDigit;
     }
 
-    public PrintMethodEnum getPrintMethod() {
-        return printMethod;
+    public String getSignScope() {
+        return signScope;
     }
 
-    public void setPrintMethod(PrintMethodEnum printMethod) {
-        this.printMethod = printMethod;
+    public void setSignScope(String signScope) {
+        this.signScope = signScope;
     }
 
-    public Integer getExamNumberDigit() {
-        return examNumberDigit;
+    public String getPackageScope() {
+        return packageScope;
     }
 
-    public void setExamNumberDigit(Integer examNumberDigit) {
-        this.examNumberDigit = examNumberDigit;
+    public void setPackageScope(String packageScope) {
+        this.packageScope = packageScope;
     }
 }

+ 28 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamRuleServiceImpl.java

@@ -1,22 +1,27 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.entity.BasicExamRule;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
+import com.qmth.distributed.print.business.enums.RequiredFieldsEnum;
 import com.qmth.distributed.print.business.mapper.BasicExamRuleMapper;
 import com.qmth.distributed.print.business.service.BasicExamRuleService;
 import com.qmth.distributed.print.business.service.ExamPrintPlanService;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.EnumResult;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -34,10 +39,32 @@ public class BasicExamRuleServiceImpl extends ServiceImpl<BasicExamRuleMapper, B
 
     @Override
     public BasicExamRule getBySchoolId() {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         QueryWrapper<BasicExamRule> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicExamRule::getSchoolId, schoolId);
-        return this.getOne(queryWrapper);
+        BasicExamRule basicExamRule = this.getOne(queryWrapper);
+        if(basicExamRule == null){
+            List<EnumResult> enumResultList = RequiredFieldsEnum.listTypes();
+            List<JSONObject> requiredObjects = enumResultList.stream().map(m->{
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("code", m.getCode());
+                jsonObject.put("name", m.getDesc());
+                jsonObject.put("enable", true);
+                return jsonObject;
+            }).collect(Collectors.toList());
+
+            basicExamRule = new BasicExamRule();
+            basicExamRule.setSchoolId(schoolId);
+            basicExamRule.setOrgId(sysUser.getOrgId());
+            basicExamRule.setRequiredFields(JSON.toJSONString(requiredObjects));
+            String emptyObject = JSON.toJSONString(new ArrayList<>());
+            basicExamRule.setExtendFields(emptyObject);
+            basicExamRule.setExamNumberDigit(8);
+            basicExamRule.setSignScope(emptyObject);
+            basicExamRule.setPackageScope(emptyObject);
+        }
+        return basicExamRule;
     }
 
     @Override
@@ -55,7 +82,6 @@ public class BasicExamRuleServiceImpl extends ServiceImpl<BasicExamRuleMapper, B
 
         // 新增
         if (examRule.getId() == null) {
-            examRule.setIncludePaper(true);
             examRule.insertInfo(sysUser.getId());
             examRule.setOrgId(sysUser.getOrgId());
             this.save(examRule);
@@ -99,15 +125,6 @@ public class BasicExamRuleServiceImpl extends ServiceImpl<BasicExamRuleMapper, B
                 if (!basicExamRule.getExamNumberDigit().equals(examRule.getExamNumberDigit())) {
                     throw ExceptionResultEnum.ERROR.exception("有未结束的印刷计划,不能修改考号位数");
                 }
-                if (!basicExamRule.getReview().equals(examRule.getReview())) {
-                    throw ExceptionResultEnum.ERROR.exception("有未结束的印刷计划,不能修改入库审核控制");
-                }
-                /*if (!basicExamRule.getIncludePaper().equals(examRule.getIncludePaper())) {
-                    throw ExceptionResultEnum.ERROR.exception("有未结束的印刷计划,不能修改包含试卷控制");
-                }*/
-                if (!basicExamRule.getPrintMethod().equals(examRule.getPrintMethod())) {
-                    throw ExceptionResultEnum.ERROR.exception("有未结束的印刷计划,不能修改印刷方式控制");
-                }
             }
             examRule.updateInfo(sysUser.getId());
             examRule.setOrgId(sysUser.getOrgId());

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

@@ -62,6 +62,8 @@ public class BasicExamServiceImpl extends ServiceImpl<BasicExamMapper, BasicExam
                     .set(BasicExam::getName, basicExam.getName())
                     .set(BasicExam::getCategory, basicExam.getCategory())
                     .set(BasicExam::getExamModel, basicExam.getExamModel())
+                    .set(BasicExam::getReview, basicExam.getReview())
+                    .set(BasicExam::getPrintMethod, basicExam.getPrintMethod())
                     .set(BasicExam::getCreateId, sysUser.getId())
                     .set(BasicExam::getCreateTime, System.currentTimeMillis()));
         } else {

+ 0 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -258,9 +258,6 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         if (Objects.isNull(basicExamRule)) {
             throw ExceptionResultEnum.ERROR.exception("未找到学校的通用规则");
         }
-        /*if (basicExamRule.getIncludePaper() && !printContentList.contains("PAPER")) {
-            throw ExceptionResultEnum.ERROR.exception("学校通用规则设置了强制包含试卷的必须选择试卷印品!");
-        }*/
         if (printContentList.contains("PAPER") && !printContentList.contains("CARD")) {
             throw ExceptionResultEnum.ERROR.exception("如果试卷题卡印品选择了试卷,题卡必须被选择");
         }

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

@@ -426,7 +426,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
             examTask.insertInfo(sysUser.getId());
             examTask.updateInfo(sysUser.getId());
-            examTask.setReview(basicExamRule.getReview());
+
+            BasicExam basicExam = basicExamService.getById(examId);
+            examTask.setReview(basicExam.getReview());
             // 取课程所在机构
             Long teachingRoomId = basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, courseCode);
             examTask.setOrgId(teachingRoomId);
@@ -736,7 +738,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             } else {
                 examTask.setStatus(ExamStatusEnum.DRAFT);
             }
-            examTask.setReview(basicExamRule.getReview());
+
+            BasicExam basicExam = basicExamService.getById(examId);
+            examTask.setReview(basicExam.getReview());
             list.add(examTask);
         }
         this.saveBatch(list);
@@ -968,7 +972,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Override
     public ExamTaskDetailCardDto applyGetOne(Long examTaskId, String source) {
         ExamTaskDetailCardDto detailCardDto = this.baseMapper.applyGetOne(examTaskId, source);
-        if(detailCardDto != null) {
+        if (detailCardDto != null) {
             ExamTask examTask = examTaskService.getById(examTaskId);
             BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamIdAndCourseCode(examTask.getExamId(), examTask.getCourseCode());
             if (basicPrintConfig != null) {
@@ -1414,13 +1418,14 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setSchoolId(schoolId);
             examTask.setOrgId(basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, examTask.getCourseCode()));
             examTask.setCreateId(sysUser.getId());
-            examTask.setReview(basicExamRule.getReview());
+            BasicExam basicExam = basicExamService.getById(examId);
+            examTask.setReview(basicExam.getReview());
             examTask.setUserId(sysUser.getId());
             examTask.updateInfo(sysUser.getId());
 
             examTask.setStatus(ExamStatusEnum.valueOf(examTaskDetail.getOperateType()));
             if (Objects.isNull(examTask.getFlowId())) {
-                if (basicExamRule.getReview()) {
+                if (basicExam.getReview()) {
                     Map<String, Object> map = SystemConstant.buildFlowVar(examTask.getId(),
                             examTask,
                             TFCustomTypeEnum.ELECTRON_FLOW,
@@ -1553,7 +1558,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setPaperNumberId(SystemConstant.getDbUuid());
             examTask.setSchoolId(schoolId);
             examTask.setOrgId(basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, examTask.getCourseCode()));
-            examTask.setReview(basicExamRule.getReview());
+
+            BasicExam basicExam = basicExamService.getById(examTask.getExamId());
+            examTask.setReview(basicExam.getReview());
             examTask.setUserId(sysUser.getId());
             examTask.setStatus(ExamStatusEnum.SUBMIT);
             examTask.setCreateId(sysUser.getId());
@@ -1566,7 +1573,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setCardRuleId(basicPrintConfig.getCardRuleId());
 
             if (Objects.isNull(examTask.getFlowId())) {
-                if (basicExamRule.getReview()) {
+                if (basicExam.getReview()) {
                     Map<String, Object> map = SystemConstant.buildFlowVar(examTask.getId(),
                             examTask,
                             TFCustomTypeEnum.ELECTRON_FLOW,
@@ -1592,11 +1599,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
             examTaskDetailService.save(examTaskDetail);
 
-            BasicExam basicExam = basicExamService.getById(examTask.getExamId());
-            if (basicExam == null || basicExam.getExamModel() == null) {
-                throw ExceptionResultEnum.ERROR.exception("未查到考试信息");
-            }
-
             BasicCourse basicCourse = basicCourseService.findByCourseCode(examTask.getCourseCode(), schoolId);
 
             if (ExamModelEnum.MODEL1.equals(basicExam.getExamModel()) || ExamModelEnum.MODEL2.equals(basicExam.getExamModel())) {
@@ -1613,10 +1615,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examPrintPlan.setExamStartTime(examDetailParams.getExamStartTime());
                 examPrintPlan.setExamEndTime(examDetailParams.getExamEndTime());
                 List<String> stringList = JSONObject.parseArray(basicPrintConfig.getPrintContent(), String.class);
-                if(!stringList.contains("PAPER")){
+                if (!stringList.contains("PAPER")) {
                     List<Map> paperAttachmentIds = JSONObject.parseArray(examTaskDetail.getPaperAttachmentIds(), Map.class);
                     long count = paperAttachmentIds.stream().filter(m -> StringUtils.isBlank(m.get("attachmentId").toString())).count();
-                    if (count == 0){
+                    if (count == 0) {
                         stringList.add("PAPER");
                     }
                 }

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

@@ -184,6 +184,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Resource
     DictionaryConfig dictionaryConfig;
 
+    @Resource
+    BasicExamService basicExamService;
+
     /**
      * 创建pdf前置条件
      *
@@ -555,9 +558,9 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             }
 
             BasicSchool basicSchool = commonCacheService.schoolCache(examPrintPlan.getSchoolId());
-            BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
-            if (Objects.isNull(basicExamRule)) {
-                throw ExceptionResultEnum.EXAM_RULE_IS_NULL.exception();
+            BasicExam basicExam = basicExamService.getById(examPrintPlan.getExamId());
+            if (Objects.isNull(basicExam)) {
+                throw ExceptionResultEnum.EXAM_IS_NULL.exception();
             }
 
             //查询examDetail
@@ -620,14 +623,14 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 mergePdfDeleteList.addAll(examStudentPdfList);
                 mergePdfDeleteList.addAll(backupCardPdfList);
 //                BasicAttachment attachment = createPdfUtil.mergePdfSaveDb(dirNameA4, dirNameA3, dirNameCardA3, tbTask, sysUser.getId(), examDetail, basicExamRule, mergePdfDeleteList);
-                BasicAttachment attachment = createPdfUtil.mergePdfSaveDb(dirNameA4, dirNamePaper, dirNameCardA3, tbTask, sysUser.getId(), examDetail, basicExamRule, mergePdfDeleteList);
+                BasicAttachment attachment = createPdfUtil.mergePdfSaveDb(dirNameA4, dirNamePaper, dirNameCardA3, tbTask, sysUser.getId(), examDetail, basicExam, mergePdfDeleteList);
                 if (basicAttachmentList != null) {
                     basicAttachmentList.add(attachment);
                 }
 
                 examDetailService.updateById(examDetail);
             }
-            updateExamPrintPlan(basicExamRule, examPrintPlan);
+            updateExamPrintPlan(basicExam, examPrintPlan);
             map.computeIfAbsent("size", v -> examDetailList.size());
             //最后一步删除附件
 //            createPdfUtil.deleteAttachment(attachmentIds, ftlList);
@@ -648,12 +651,12 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     /**
      * 更新考试计划
      *
-     * @param basicExamRule
+     * @param basicExam
      * @param examPrintPlan
      */
     @Transactional
-    public void updateExamPrintPlan(BasicExamRule basicExamRule, ExamPrintPlan examPrintPlan) {
-        if (PrintMethodEnum.AUTO == basicExamRule.getPrintMethod()) {
+    public void updateExamPrintPlan(BasicExam basicExam, ExamPrintPlan examPrintPlan) {
+        if (PrintMethodEnum.AUTO == basicExam.getPrintMethod()) {
             examPrintPlan.setStatus(PrintPlanStatusEnum.PRINTING);
             examPrintPlanService.updateById(examPrintPlan);
         }

+ 5 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -12,15 +12,12 @@ import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.cache.CreatePdfCacheUtil;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
-import com.qmth.distributed.print.business.enums.PrintMethodEnum;
+import com.qmth.teachcloud.common.entity.*;
+import com.qmth.teachcloud.common.enums.PrintMethodEnum;
 import com.qmth.distributed.print.business.enums.StudentClazzEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.BasicAttachment;
-import com.qmth.teachcloud.common.entity.BasicClazz;
-import com.qmth.teachcloud.common.entity.BasicSemester;
-import com.qmth.teachcloud.common.entity.TBTask;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ConvertUtil;
@@ -1108,7 +1105,7 @@ public class CreatePdfUtil {
      * @param tbTask
      * @param userId
      * @param examDetail
-     * @param basicExamRule
+     * @param basicExam
      * @param mergePdfDeleteList
      * @return
      * @throws IOException
@@ -1120,7 +1117,7 @@ public class CreatePdfUtil {
                                           TBTask tbTask,
                                           Long userId,
                                           ExamDetail examDetail,
-                                          BasicExamRule basicExamRule,
+                                          BasicExam basicExam,
                                           List<PdfDto> mergePdfDeleteList) throws Exception {
         boolean oss = dictionaryConfig.sysDomain().isOss();
         StringJoiner stringJoiner = new StringJoiner("").add(SystemConstant.getUserDir()).add(File.separator);
@@ -1156,7 +1153,7 @@ public class CreatePdfUtil {
         examDetail.setPaperPages(PdfUtil.getPdfPages(localPaperPdfFile));
         examDetail.setCardPages(PdfUtil.getPdfPages(localA3PdfCardFile));
         examDetail.setPagesA4(PdfUtil.getPdfPages(localA4PdfFile));
-        if (PrintMethodEnum.AUTO == basicExamRule.getPrintMethod()) {
+        if (PrintMethodEnum.AUTO == basicExam.getPrintMethod()) {
             examDetail.setStatus(ExamDetailStatusEnum.WAITING);
         } else {
             examDetail.setStatus(ExamDetailStatusEnum.READY);

+ 25 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicExam.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.enums.ExamCategoryEnum;
 import com.qmth.teachcloud.common.enums.ExamModelEnum;
+import com.qmth.teachcloud.common.enums.PrintMethodEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -44,6 +45,14 @@ public class BasicExam extends BaseEntity implements Serializable {
     @TableField("exam_model")
     private ExamModelEnum examModel;
 
+    @ApiModelProperty(value = "是否启用入库审核")
+    @TableField("review")
+    private Boolean review;
+
+    @ApiModelProperty(value = "提交打印方式")
+    @TableField("print_method")
+    private PrintMethodEnum printMethod;
+
     @ApiModelProperty(value = "启用/禁用")
     @TableField("enable")
     private Boolean enable;
@@ -100,6 +109,22 @@ public class BasicExam extends BaseEntity implements Serializable {
         this.examModel = examModel;
     }
 
+    public Boolean getReview() {
+        return review;
+    }
+
+    public void setReview(Boolean review) {
+        this.review = review;
+    }
+
+    public PrintMethodEnum getPrintMethod() {
+        return printMethod;
+    }
+
+    public void setPrintMethod(PrintMethodEnum printMethod) {
+        this.printMethod = printMethod;
+    }
+
     public Boolean getEnable() {
         return enable;
     }

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

@@ -71,6 +71,8 @@ public enum ExceptionResultEnum {
 
     EXAM_RULE_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000026, "考务规则为空"),
 
+    EXAM_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000026, "考试不存在"),
+
     EXAM_DETAIL_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000027, "考场数据为空"),
 
     EXAM_CARD_IS_NULL(HttpStatus.INTERNAL_SERVER_ERROR, 50000028, "题卡为空"),

+ 1 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/PrintMethodEnum.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PrintMethodEnum.java

@@ -1,6 +1,4 @@
-package com.qmth.distributed.print.business.enums;
-
-import com.qmth.teachcloud.common.enums.EnumResult;
+package com.qmth.teachcloud.common.enums;
 
 import java.util.ArrayList;
 import java.util.List;