xiaof 4 лет назад
Родитель
Сommit
1a22268857

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

@@ -87,7 +87,18 @@ public class ExamTask extends BaseEntity implements Serializable {
     /**
      * 0-禁用,1-启用
      */
-    private Boolean enable = true;
+    private Boolean enable;
+
+    @TableField("is_try")
+    private Boolean isTry;
+
+    @TableField("try_time")
+    private Long tryTime;
+
+    @TableField("is_pass")
+    private Boolean isPass;
+
+
     @TableField("batch_no")
     private String batchNo;
 
@@ -198,6 +209,30 @@ public class ExamTask extends BaseEntity implements Serializable {
         this.enable = enable;
     }
 
+    public Boolean getTry() {
+        return isTry;
+    }
+
+    public void setTry(Boolean aTry) {
+        isTry = aTry;
+    }
+
+    public Long getTryTime() {
+        return tryTime;
+    }
+
+    public void setTryTime(Long tryTime) {
+        this.tryTime = tryTime;
+    }
+
+    public Boolean getPass() {
+        return isPass;
+    }
+
+    public void setPass(Boolean pass) {
+        isPass = pass;
+    }
+
     public String getBatchNo() {
         return batchNo;
     }

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

@@ -2,6 +2,9 @@ package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.distributed.print.business.entity.ExamDetailCourse;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.qmth.distributed.print.business.entity.ExamDetailCourse;
  */
 public interface ExamDetailCourseMapper extends BaseMapper<ExamDetailCourse> {
 
+    List<ExamDetailCourse> listByExamDetailId(@Param("examDetailId") Long examDetailId, @Param("status") String status);
 }

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

@@ -3,6 +3,8 @@ package com.qmth.distributed.print.business.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.entity.ExamDetailCourse;
 
+import java.util.List;
+
 /**
  * <p>
  * 考务数据(考场关联科目) 服务类
@@ -19,4 +21,6 @@ public interface ExamDetailCourseService extends IService<ExamDetailCourse> {
      * @return 该场次下卷代数
      */
     double calculatePackagesByDetailId(Long examDetailId);
+
+    List<ExamDetailCourse> listByExamDetailId(Long examDetailId);
 }

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

@@ -45,4 +45,6 @@ public interface SysUserService extends IService<SysUser> {
     public List<UserExportDto> queryByExport(ArraysParams arraysParams);
 
     List<BlurryUserDto> listUser(String courseCode, String param);
+
+    List<SysUser> listByOrgId(Long id);
 }

+ 15 - 40
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CommonServiceImpl.java

@@ -85,6 +85,9 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     private BasicExamRuleService basicExamRuleService;
 
+    @Autowired
+    private ExamDetailCourseService examDetailCourseService;
+
     /**
      * 新增用户权限
      *
@@ -495,54 +498,26 @@ public class CommonServiceImpl implements CommonService {
 
     @Override
     public void checkData(Long schoolId, String courseCode, String paperNumber) {
-        boolean isSuccess = true;
         // 校验命题任务是否提交
         ExamTask examTask = examTaskService.getByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
         if (examTask != null && !examTask.getEnable()) {
             throw ExceptionResultEnum.ERROR.exception("命题任务已禁用");
         }
-        if (examTask == null || !examTask.getStatus().name().equals(ExamStatusEnum.FINISH.name())) {
-            isSuccess = false;
-        }
-
-        // 校验考务数据是否导入
-        List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
-        if (examDetails.isEmpty()) {
-            isSuccess = false;
-        } else {
-            // 校验附件是否生成
-            for (ExamDetail examDetail : examDetails) {
-                if (!examDetail.getStatus().name().equals(ExamDetailStatusEnum.READY.name()) || examDetail.getAttachmentId() == null) {
-                    isSuccess = false;
-                }
-            }
-        }
-
-        // 校验通过,更新exam_detail状态和exam_print_plan状态
-        if (isSuccess) {
-            BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId();
-            if (basicExamRule == null) {
-                throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
-            }
-            // 更新exam_detail状态
-            for (ExamDetail examDetail : examDetails) {
-                // 自动提交印刷,状态更新为WAITING
-                examDetail.setStatus(PrintMethodEnum.AUTO.name().equals(basicExamRule.getPrintMethod().name()) ? ExamDetailStatusEnum.WAITING : ExamDetailStatusEnum.READY);
-                examDetailService.updateById(examDetail);
-
-                // 更新exam_print_plan状态
-                ExamPrintPlan examPrintPlan = examPrintPlanService.getById(examDetail.getPrintPlanId());
-                if (examPrintPlan == null || !examPrintPlan.getStatus().name().equals(PrintPlanStatusEnum.NEW.name())) {
-                    throw ExceptionResultEnum.ERROR.exception("印刷计划数据有误");
-                }
-                List<ExamDetail> list = examDetailService.listByExamPrintId(examDetail.getPrintPlanId());
-                if (list.isEmpty()) {
-                    examPrintPlan.setStatus(PrintPlanStatusEnum.READY);
-                    examPrintPlanService.updateById(examPrintPlan);
+        // 1.命题任务已完成
+        if (examTask != null && examTask.getStatus().name().equals(ExamStatusEnum.FINISH.name())) {
+            // 2.校验考务数据是否导入
+            List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
+            if (examDetails!= null && examDetails.size() > 0) {
+                // 3.检查examDetailId下有无其它课程
+                for (ExamDetail examDetail : examDetails) {
+                    List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByExamDetailId(examDetail.getId());
+                    // 4.没有未完成的命题任务
+                    if (examDetailCourses.isEmpty()) {
+                        // todo 调用生成pdf
+                    }
                 }
             }
         }
-
     }
 
     public static void outputFile(HttpServletResponse response, File file, String fileName) {

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

@@ -3,11 +3,14 @@ package com.qmth.distributed.print.business.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.entity.ExamDetailCourse;
+import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
 import com.qmth.distributed.print.business.mapper.ExamDetailCourseMapper;
 import com.qmth.distributed.print.business.service.ExamDetailCourseService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
+
 /**
  * <p>
  * 考务数据(考场关联科目) 服务实现类
@@ -25,4 +28,9 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
         System.out.println(this.count(new QueryWrapper<ExamDetailCourse>().lambda().eq(ExamDetailCourse::getExamDetailId,examDetailId)));
         return this.count(new QueryWrapper<ExamDetailCourse>().lambda().eq(ExamDetailCourse::getExamDetailId,examDetailId));
     }
+
+    @Override
+    public List<ExamDetailCourse> listByExamDetailId(Long examDetailId) {
+        return this.baseMapper.listByExamDetailId(examDetailId, ExamDetailStatusEnum.FINISH.name());
+    }
 }

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

@@ -186,6 +186,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         } else {
             examTask.setStatus(ExamStatusEnum.READY);
         }
+        examTask.setEnable(true);
         examTask.setCreateId(sysUser.getId());
         examTask.setCreateTime(System.currentTimeMillis());
         examTask.setReview(basicExamRule.getReview());
@@ -315,6 +316,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setPaperNumber(examTaskTemp.getPaperNumber());
             examTask.setStartTime(task.getStartTime());
             examTask.setEndTime(task.getEndTime());
+            examTask.setEnable(true);
             examTask.setCardRuleId(task.getCardRuleId());
             examTask.setBatchNo(task.getBatchNo());
             examTask.setCreateId(sysUser.getId());
@@ -376,6 +378,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         ExamStatusEnum statusEnum;
         if (taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
             statusEnum = ExamStatusEnum.FINISH;
+            // 校验是否可以提交打印状态
+            ExamTask examTask = this.getById(taskReviewLog.getExamTaskId());
+            commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber());
         } else {
             statusEnum = ExamStatusEnum.STAGE;
         }
@@ -462,6 +467,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         ExamTask examTask = this.getById(examTaskDetail.getExamTaskId());
         if (examTask.getStatus().name().equals(ExamStatusEnum.SUBMIT.name()) && !examTask.getReview()) {
             examTask.setStatus(ExamStatusEnum.FINISH);
+            // 校验是否可以提交打印状态
+            commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber());
         }
 
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();

+ 30 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SysOrgServiceImpl.java

@@ -10,10 +10,12 @@ import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.mapper.SysOrgMapper;
 import com.qmth.distributed.print.business.service.BasicTemplateOrgService;
 import com.qmth.distributed.print.business.service.SysOrgService;
+import com.qmth.distributed.print.business.service.SysUserService;
 import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -32,6 +34,9 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     @Autowired
     private BasicTemplateOrgService basicTemplateOrgService;
 
+    @Autowired
+    private SysUserService sysUserService;
+
     @Override
     public List<OrgDto> listOrgTree() {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -101,12 +106,10 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     @Override
     public boolean enable(SysOrg org) {
-        /*QueryWrapper<BasicTemplateOrg> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(BasicTemplateOrg::getOrgId, org.getId());
-        List<BasicTemplateOrg> basicTemplateOrgs = basicTemplateOrgService.list(queryWrapper);
-        if(basicTemplateOrgs != null && basicTemplateOrgs.size() > 0){
-            throw ExceptionResultEnum.ERROR.exception("机构已绑定,不能禁用");
-        }*/
+        // 禁用时,校验机构
+        if(!org.getEnable()){
+            validateOrg(org.getId());
+        }
         UpdateWrapper<SysOrg> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(SysOrg::getEnable, org.getEnable()).eq(SysOrg::getId, org.getId());
         return this.update(updateWrapper);
@@ -114,12 +117,32 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     @Override
     public boolean remove(Long id) {
+        // 机构校验
+        validateOrg(id);
+        return this.removeById(id);
+    }
+
+
+    private void validateOrg(Long id){
+        // 机构下是否有用户
+        List<SysUser> sysUsers = sysUserService.listByOrgId(id);
+        if(sysUsers != null && sysUsers.size() > 0){
+            throw ExceptionResultEnum.ERROR.exception("该机构下有用户,不能删除");
+        }
+
+        // 机构下是否有子机构
+        QueryWrapper<SysOrg> orgQueryWrapper = new QueryWrapper<>();
+        orgQueryWrapper.lambda().eq(SysOrg::getParentId, id);
+        List<SysOrg> sysOrgs = this.list(orgQueryWrapper);
+        if(sysOrgs != null && sysOrgs.size() > 0){
+            throw ExceptionResultEnum.ERROR.exception("该机构下有子机构,不能删除");
+        }
+
         QueryWrapper<BasicTemplateOrg> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(BasicTemplateOrg::getOrgId, id);
         List<BasicTemplateOrg> basicTemplateOrgs = basicTemplateOrgService.list(queryWrapper);
         if (basicTemplateOrgs != null && basicTemplateOrgs.size() > 0) {
             throw ExceptionResultEnum.ERROR.exception("机构已绑定,不能删除");
         }
-        return this.removeById(id);
     }
 }

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SysUserServiceImpl.java

@@ -266,4 +266,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         return this.baseMapper.listUser(schoolId, RoleTypeEnum.QUESTION_TEACHER.name(), courseCode, param);
     }
+
+    @Override
+    public List<SysUser> listByOrgId(Long id) {
+        QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(SysUser::getOrgId, id);
+        return this.list(queryWrapper);
+    }
 }

+ 6 - 3
distributed-print-business/src/main/resources/db/init-table.sql

@@ -250,11 +250,11 @@ CREATE TABLE `exam_detail`  (
   `validate` tinyint(1) NULL DEFAULT 0 COMMENT '是否校验',
   `print_start_time` bigint(20) NULL DEFAULT NULL COMMENT '打印开始时间',
   `print_end_time` bigint(20) NULL DEFAULT NULL COMMENT '打印完成时间',
+  `attachment_id` bigint(20) NULL DEFAULT NULL COMMENT '附件id',
   `create_id` bigint(20) NULL DEFAULT NULL,
   `create_time` bigint(20) NULL DEFAULT NULL,
   `update_id` bigint(20) NULL DEFAULT NULL,
   `update_time` bigint(20) NULL DEFAULT NULL,
-  `attachment_id` bigint(20) NULL DEFAULT NULL COMMENT '附件id',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '考务数据' ROW_FORMAT = Dynamic;
 
@@ -329,7 +329,6 @@ CREATE TABLE `exam_student`  (
 -- ----------------------------
 -- Table structure for exam_task
 -- ----------------------------
-DROP TABLE IF EXISTS `exam_task`;
 CREATE TABLE `exam_task`  (
   `id` bigint(20) NOT NULL,
   `school_id` bigint(20) NOT NULL,
@@ -342,16 +341,20 @@ CREATE TABLE `exam_task`  (
   `card_rule_id` bigint(20) NOT NULL COMMENT '题卡规则',
   `user_id` bigint(20) NULL DEFAULT NULL COMMENT '命题老师',
   `status` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务状态,NEW(\"新建\"),READY(\"待命题\"),STAGE(\"进行中\"),SUBMIT(\"待审核\"),FINISH(\"已完成\"),CANCEL(\"撤回\")',
+  `review` tinyint(4) NULL DEFAULT NULL COMMENT '0-禁用,1-启用',
   `review_status` varchar(8) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '审核状态:PASS-审核通过,NOT_PASS-审核不通过,默认为空-未审核',
   `enable` tinyint(4) NULL DEFAULT 1 COMMENT '是否启用,false:停用,true:启用',
+  `is_try` TINYINT(1) NULL COMMENT '是否打样:true-是,false-否',
+  `try_time` BIGINT(20) NULL COMMENT '试打时间',
+  `is_pass` TINYINT(1) NULL COMMENT '是否合格:true-合格,false-不合格',
   `batch_no` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
   `create_id` bigint(20) NULL DEFAULT NULL COMMENT '创建人',
   `create_time` bigint(20) NULL DEFAULT NULL COMMENT '创建时间',
   `update_id` bigint(20) NULL DEFAULT NULL COMMENT '修改人',
   `update_time` bigint(20) NULL DEFAULT NULL COMMENT '修改时间',
-  `review` tinyint(4) NULL DEFAULT NULL COMMENT '0-禁用,1-启用',
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '命题任务' ROW_FORMAT = Dynamic;
+DROP TABLE IF EXISTS `exam_task`;
 
 -- ----------------------------
 -- Table structure for exam_task_detail

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

@@ -17,5 +17,17 @@
         id,
         school_id, exam_detail_id, course_code, course_name, paper_number
     </sql>
+    <select id="listByExamDetailId" resultMap="BaseResultMap">
+        SELECT
+            a.*
+        FROM
+            exam_detail_course a
+                LEFT JOIN
+            exam_task b ON a.school_id = b.school_id
+                AND a.course_code = b.course_code
+                AND a.paper_number = b.paper_number
+        WHERE
+            a.exam_detail_id = #{examDetailId} AND b.status != #{status}
+    </select>
 
 </mapper>