Преглед изворни кода

关联试卷修改前校验是否pdf生成中。短信到期提醒

xiaof пре 4 година
родитељ
комит
48e93c8a8c
14 измењених фајлова са 270 додато и 38 уклоњено
  1. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java
  2. 27 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicMessageService.java
  3. 6 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  4. 45 13
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicMessageServiceImpl.java
  5. 5 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  6. 59 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  7. 1 1
      distributed-print-business/src/main/resources/db/init-table.sql
  8. 38 0
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  9. 27 0
      distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/SendSmsExpireJob.java
  10. 27 0
      distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/SendSmsOverDueJob.java
  11. 5 0
      distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/service/JobService.java
  12. 13 4
      distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/service/impl/JobServiceImpl.java
  13. 12 6
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  14. 1 1
      distributed-print/src/test/java/com/qmth/distributed/print/ServiceTest.java

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

@@ -83,4 +83,8 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
      * @return 结果
      */
     List<ReviewSampleDto> listReviewSampleInfoByExamTaskId(@Param("examTaskId") Long examTaskId);
+
+    List<ExamTask> listExamTaskExpire(@Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("examTaskStatus1") String[] examTaskStatus1);
+
+    List<ExamTask> listExamTaskAuditExpire(@Param("startTime") long startTime, @Param("endTime") long endTime, @Param("examTaskStatus2") String[] examTaskStatus2);
 }

+ 27 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicMessageService.java

@@ -17,25 +17,44 @@ public interface BasicMessageService extends IService<BasicMessage> {
 
     /**
      * 保存消息发送日志(以下参数必传)
-     * @param userId 接收人id
-     * @param mobileNumber 接收人电话
-     * @param businessId 业务id
+     *
+     * @param userId         接收人id
+     * @param mobileNumber   接收人电话
+     * @param businessId     业务id
      * @param variableParams 变量参数
-     * @param messageType 消息类型
+     * @param messageType    消息类型
      */
-    void saveMessageSendLog(Long userId, String mobileNumber, Long businessId, String variableParams, MessageEnum messageType, String remark);
+    void saveMessageSendLog(Long userId, String mobileNumber, Long businessId, String variableParams, Long createId, MessageEnum messageType, String remark);
 
     /**
      * 命题任务审核消息处理
+     *
      * @param examTaskIdList 命题任务主键集合
-     * @param messageType 消息类型枚举
-     * @param sysUser 发送信息的用户
+     * @param messageType    消息类型枚举
+     * @param sysUser        发送信息的用户
      */
     void noticeOfExamTaskAudit(List<Long> examTaskIdList, MessageEnum messageType, SysUser sysUser);
 
     /**
-     * 发送给命题老师-待办提醒
+     * 发送给命题老师-命题待办提醒
+     *
      * @param examTasks
      */
     void sendNoticeTaskCreate(ExamTask... examTasks);
+
+    /**
+     * 发送给考务老师-审核待办提醒、修改审核待办提醒
+     *
+     * @param examTask
+     * @param messageType
+     */
+    void sendNoticeTaskAuditCreateOrReview(ExamTask examTask, MessageEnum messageType);
+
+    /**
+     * 发送到期预警、逾期提醒
+     * @param messageType
+     * @param userId
+     * @param ids
+     */
+    void sendNoticeExpireOrOverdue(MessageEnum messageType, Long userId, List<String> ids);
 }

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

@@ -13,6 +13,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.text.ParseException;
 import java.util.List;
 import java.util.Map;
 
@@ -121,4 +122,9 @@ public interface ExamTaskService extends IService<ExamTask> {
      * @return 命题任务信息
      */
     ReviewSampleDto findReviewSampleInfoByExamTaskId(Long examTaskId);
+
+    /**
+     * 发送即将到期数据短信提醒
+     */
+    void sendSmsExpireTask();
 }

+ 45 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicMessageServiceImpl.java

@@ -24,12 +24,10 @@ import com.qmth.distributed.print.business.util.ServletUtil;
 import com.qmth.distributed.print.common.contant.SpringContextHolder;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.text.MessageFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -49,8 +47,7 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void saveMessageSendLog(Long userId, String mobileNumber, Long businessId, String variableParams, MessageEnum messageType, String remark) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+    public void saveMessageSendLog(Long userId, String mobileNumber, Long businessId, String variableParams, Long createId, MessageEnum messageType, String remark) {
         BasicMessage basicMessage = new BasicMessage();
         // code和content
         Map<String, String> enumInfo = this.getCodeAndContentByEnum(messageType);
@@ -124,7 +121,7 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
             basicMessage.setMobileNumber(mobileNumber);
             basicMessage.setBusinessId(businessId);
             basicMessage.setVariableParams(variableParams);
-            basicMessage.setCreateId(sysUser.getId());
+            basicMessage.setCreateId(createId);
             basicMessage.setMessageType(messageType);
             basicMessage.setRemark(remark);
             basicMessage.setResendCount(0);
@@ -163,7 +160,7 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
                     jsonMap.put("courseName", courseName);
                     jsonMap.put("paperNumber", paperNumber);
                     String variableParams = JSON.toJSONString(jsonMap);
-                    this.saveMessageSendLog(userId, mobileNumber, examTaskId, variableParams, messageType, null);
+                    this.saveMessageSendLog(userId, mobileNumber, examTaskId, variableParams, sysUser.getId(), messageType, null);
                 }
             }
         }
@@ -177,6 +174,7 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
      */
     @Override
     public void sendNoticeTaskCreate(ExamTask... examTasks) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         // 指派命题老师的命题任务
         Map<Long, List<String>> collects = Arrays.stream(examTasks).filter(m -> m.getUserId() != null).collect(Collectors.groupingBy(ExamTask::getUserId, Collectors.mapping(m -> String.valueOf(m.getId()), Collectors.toList())));
         for (Map.Entry<Long, List<String>> longListEntry : collects.entrySet()) {
@@ -191,13 +189,49 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
                 jsonMap.put("userName", userName);
                 jsonMap.put("count", ids.size());
                 String variableParams = JSON.toJSONString(jsonMap);
-                String remark = String.format("命题任务ID:s%", String.join(",", ids));
-                this.saveMessageSendLog(userId, mobileNumber, null, variableParams, MessageEnum.NOTICE_OF_AUDIT_CREATED, remark);
+                String remark = String.format("命题任务ID:%s", String.join(",", ids));
+                this.saveMessageSendLog(userId, mobileNumber, null, variableParams, sysUser.getId(), MessageEnum.NOTICE_OF_EXAM_TASK_CREATED, remark);
             }
         }
     }
 
-    private void checkData(Object ... objects) {
+    @Override
+    public void sendNoticeTaskAuditCreateOrReview(ExamTask examTask, MessageEnum messageType) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        // 考务老师(命题任务创建人)
+        Long userId = examTask.getCreateId();
+        SysUser user = cacheService.userCache(userId);
+        if (Objects.nonNull(user)) {
+            String userName = user.getRealName();
+            String mobileNumber = user.getMobileNumber();
+
+            Map<String, Object> jsonMap = new HashMap<>();
+            jsonMap.put("userName", userName);
+            jsonMap.put("courseName", examTask.getCourseName());
+            jsonMap.put("paperNumber", examTask.getPaperNumber());
+            String variableParams = JSON.toJSONString(jsonMap);
+            String remark = String.format("命题任务ID:%s", examTask.getId().toString());
+            this.saveMessageSendLog(userId, mobileNumber, examTask.getId(), variableParams, sysUser.getId(), messageType, remark);
+        }
+    }
+
+    @Override
+    public void sendNoticeExpireOrOverdue(MessageEnum messageType, Long userId, List<String> ids) {
+        // 考务老师(命题任务创建人)
+        SysUser user = cacheService.userCache(userId);
+        if (Objects.nonNull(user)) {
+            String userName = user.getRealName();
+            String mobileNumber = user.getMobileNumber();
+            Map<String, Object> jsonMap = new HashMap<>();
+            jsonMap.put("userName", userName);
+            jsonMap.put("count", ids.size());
+            String variableParams = JSON.toJSONString(jsonMap);
+            String remark = String.format("命题任务ID:%s", String.join(",", ids));
+            this.saveMessageSendLog(userId, mobileNumber, null, variableParams, null, messageType, remark);
+        }
+    }
+
+    private void checkData(Object... objects) {
         for (Object object : objects) {
             if (Objects.isNull(object)) {
                 throw ExceptionResultEnum.ERROR.exception("调用发送短信方法时必传参数缺失");
@@ -217,8 +251,8 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
 
     private Map<String, String> getCodeAndContentByEnum(MessageEnum messageEnum) {
         Map<String, String> result = new HashMap<>();
-        String templateContent;
-        String templateCode;
+        String templateContent = null;
+        String templateCode = null;
         switch (messageEnum) {
             case NOTICE_OF_AUDIT_PASS:
                 templateCode = dictionaryConfig.smsDomain().getAliyunSMSAuditPassCode();
@@ -228,8 +262,6 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
                 templateCode = dictionaryConfig.smsDomain().getAliyunSMSAuditNotPassCode();
                 templateContent = messageEnum.getTemplate();
                 break;
-            default:
-                throw new IllegalStateException("Unexpected value: " + messageEnum);
         }
         result.put("templateContent", templateContent);
         result.put("templateCode", templateCode);

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

@@ -148,8 +148,8 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
 
         // 提交印刷的考场,不允许修改关联试卷
         List<ExamDetail> examDetails = examDetailService.listByPrintPlanIdAndCourseCodeAndPaperNumber(examTask.getSchoolId(), paperParam.getPrintPlanId(), examTask.getCourseCode(), examTask.getPaperNumber());
-        examDetails = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.equals(m.getStatus()) && !ExamDetailStatusEnum.READY.equals(m.getStatus())).collect(Collectors.toList());
-        if (!examDetails.isEmpty()) {
+        List<ExamDetail> examDetails1 = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.equals(m.getStatus()) && !ExamDetailStatusEnum.READY.equals(m.getStatus())).collect(Collectors.toList());
+        if (!examDetails1.isEmpty()) {
             throw ExceptionResultEnum.ERROR.exception("有考场已开始打印,不能修改");
         }
 
@@ -263,8 +263,8 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
         List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber());
         if (examDetails != null && examDetails.size() > 0) {
-            examDetails = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.equals(m.getStatus()) && !ExamDetailStatusEnum.READY.equals(m.getStatus())).collect(Collectors.toList());
-            if (!examDetails.isEmpty()) {
+            List<ExamDetail> examDetails1 = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.equals(m.getStatus()) && !ExamDetailStatusEnum.READY.equals(m.getStatus())).collect(Collectors.toList());
+            if (!examDetails1.isEmpty()) {
                 throw ExceptionResultEnum.ERROR.exception("有考场已开始打印,不能修改卷库");
             }
             Map<Long, List<Long>> map = examDetails.stream().collect(Collectors.groupingBy(ExamDetail::getPrintPlanId, Collectors.mapping(ExamDetail::getId, Collectors.toList())));
@@ -313,7 +313,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
 
         }
 
-        // 不需要审核,直接更新
+        // 不需要审核,直接更新,否则加入待审核列表
         if (examTask.getReview()) {
             // 加入临时审核表
             ExamTaskPaperLog examTaskPaperLog = examTaskPaperLogService.getByExamTaskIdAndReview(examTaskDetail.getExamTaskId(), false);

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

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -22,6 +23,7 @@ import com.qmth.distributed.print.business.util.excel.ExcelError;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -32,6 +34,8 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -100,6 +104,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Autowired
     private ExamTaskPaperLogService examTaskPaperLogService;
 
+    @Autowired
+    private SysConfigService sysConfigService;
+
+    @Autowired
+    private BasicMessageService basicMessageService;
+
 
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
@@ -1079,4 +1089,53 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
         return reviewSampleDtoList.get(0);
     }
+
+    @Override
+    public void sendSmsExpireTask() {
+        SysConfig sysConfig = sysConfigService.getByKey("sys.warning.days");
+        if (sysConfig != null && StringUtils.isNotBlank(sysConfig.getConfigValue())) {
+            Integer configValue = Integer.valueOf(sysConfig.getConfigValue());
+            // 当天15点
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 15:00:00");
+            Date thirteenDate = null;
+            try {
+                thirteenDate = sdf.parse(sdf.format(new Date()));
+            } catch (ParseException e) {
+                log.error("定时发送到期预警短信,时间格式化错误");
+            }
+            long startTime = thirteenDate.getTime();
+            // 3天前
+            Calendar cal = Calendar.getInstance();
+            cal.setTime(thirteenDate);
+            cal.add(Calendar.DATE, configValue);
+            long endTime = cal.getTimeInMillis();
+            // 命题任务到期预警
+            String[] examTaskStatus1 = {ExamStatusEnum.READY.name(), ExamStatusEnum.STAGE.name()};
+            List<ExamTask> examTasks1 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
+            if (examTasks1 != null && examTasks1.size() > 0) {
+                Map<Long, List<String>> listMap = examTasks1.stream().collect(Collectors.groupingBy(ExamTask::getUserId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+                for (Map.Entry<Long, List<String>> entry : listMap.entrySet()) {
+                    basicMessageService.sendNoticeExpireOrOverdue(MessageEnum.NOTICE_OF_EXAM_TASK_WILL_EXPIRE, entry.getKey(), entry.getValue());
+                }
+            }
+            // 命题分配到期预警
+            String[] examTaskStatus2 = {ExamStatusEnum.NEW.name()};
+            List<ExamTask> examTasks2 = this.baseMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
+            if (examTasks2 != null && examTasks2.size() > 0) {
+                Map<Long, List<String>> listMap = examTasks2.stream().collect(Collectors.groupingBy(ExamTask::getCreateId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+                for (Map.Entry<Long, List<String>> entry : listMap.entrySet()) {
+                    basicMessageService.sendNoticeExpireOrOverdue(MessageEnum.NOTICE_OF_ALLOCATION_WILL_EXPIRE, entry.getKey(), entry.getValue());
+                }
+            }
+
+            // 审核待办到期预警
+            List<ExamTask> examTasks3 = this.baseMapper.listExamTaskAuditExpire(startTime, endTime, examTaskStatus2);
+            if (examTasks3 != null && examTasks3.size() > 0) {
+                Map<Long, List<String>> listMap = examTasks3.stream().collect(Collectors.groupingBy(ExamTask::getCreateId, Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+                for (Map.Entry<Long, List<String>> entry : listMap.entrySet()) {
+                    basicMessageService.sendNoticeExpireOrOverdue(MessageEnum.NOTICE_OF_AUDIT_WILL_EXPIRE, entry.getKey(), entry.getValue());
+                }
+            }
+        }
+    }
 }

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

@@ -107,7 +107,7 @@ CREATE TABLE `basic_message`  (
     `user_id` bigint(20) NOT NULL COMMENT '消息接收人用户',
     `mobile_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '电话号码',
     `business_id` bigint(20) NOT NULL COMMENT '业务id',
-    `business_operate` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '业务操作',
+    `business_operate` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '业务操作',
     `template_code` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '消息模板代码',
     `variable_params` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '变量参数内容',
     `template_content` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '模板内容',

+ 38 - 0
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -528,6 +528,44 @@
             det.exam_task_id = #{examTaskId}
         ORDER BY det.update_time DESC
     </select>
+    <select id="listExamTaskExpire" resultMap="BaseResultMap">
+        select * from exam_task a
+        <where>
+            and a.enable = true
+            <if test="status != null and status != ''">
+                and a.status in
+                <foreach item="item" collection="status" separator="," open="(" close=")" index="">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="startTime != null and startTime != ''">
+                and a.end_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                and a.end_time &lt; #{endTime}
+            </if>
+        </where>
+    </select>
+    <select id="listExamTaskAuditExpire" resultMap="BaseResultMap">
+        SELECT
+            *
+        FROM
+            exam_task a
+                LEFT JOIN
+            exam_task_paper_log b ON a.id = b.exam_task_id
+                AND b.review = FALSE
+        <where>
+            and a.enable = true
+            and a.review = true
+            and ((a.status = 'SUBMIT' and a.review_status is null) or (a.status = 'FINISH' and e.id is not null ))
+            <if test="startTime != null and startTime != ''">
+                and a.end_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                and a.end_time &lt; #{endTime}
+            </if>
+        </where>
+    </select>
 
     <sql id="myworkCommonHead">
         SELECT

+ 27 - 0
distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/SendSmsExpireJob.java

@@ -0,0 +1,27 @@
+package com.qmth.distributed.print.task.job;
+
+import com.qmth.distributed.print.task.job.service.JobService;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+
+/**
+ * @Description: 发送即将到期数据短信提醒(每天15点)
+ */
+public class SendSmsExpireJob extends QuartzJobBean {
+
+    @Resource
+    JobService jobService;
+
+    @Override
+    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        try {
+            jobService.sendSmsExpireTask();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 27 - 0
distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/SendSmsOverDueJob.java

@@ -0,0 +1,27 @@
+package com.qmth.distributed.print.task.job;
+
+import com.qmth.distributed.print.task.job.service.JobService;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.scheduling.quartz.QuartzJobBean;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+
+/**
+ * @Description: 发送已逾期数据(每天9点)
+ */
+public class SendSmsOverDueJob extends QuartzJobBean {
+
+    @Resource
+    JobService jobService;
+
+    @Override
+    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        try {
+            jobService.resetCreatePdfTask();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 5 - 0
distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/service/JobService.java

@@ -27,4 +27,9 @@ public interface JobService {
      * @throws IOException
      */
     void resetCreatePdfTask() throws IOException;
+
+    /**
+     * 发送即将到期数据
+     */
+    void sendSmsExpireTask();
 }

+ 13 - 4
distributed-print-task/src/main/java/com/qmth/distributed/print/task/job/service/impl/JobServiceImpl.java

@@ -4,13 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.distributed.print.business.entity.ExamDetail;
 import com.qmth.distributed.print.business.entity.ExamPrintPlan;
 import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
-import com.qmth.distributed.print.business.service.ExamDetailService;
-import com.qmth.distributed.print.business.service.ExamPrintPlanService;
-import com.qmth.distributed.print.business.service.OrgCenterDataDisposeService;
-import com.qmth.distributed.print.business.service.TBTaskService;
+import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.task.job.service.JobService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -42,6 +40,12 @@ public class JobServiceImpl implements JobService {
     @Resource
     TBTaskService tbTaskService;
 
+    @Autowired
+    ExamTaskService examTaskService;
+
+    @Autowired
+    BasicMessageService basicMessageService;
+
     @Override
     public void updateSchoolInfo() throws IOException {
         orgCenterDataDisposeService.updateSchoolInfo();
@@ -81,4 +85,9 @@ public class JobServiceImpl implements JobService {
     public void resetCreatePdfTask() throws IOException {
         tbTaskService.resetCreatePdfTask();
     }
+
+    @Override
+    public void sendSmsExpireTask() {
+        examTaskService.sendSmsExpireTask();
+    }
 }

+ 12 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -2,14 +2,10 @@ package com.qmth.distributed.print.api;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.qmth.boot.api.annotation.Aac;
-import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.params.ArraysParams;
-import com.qmth.distributed.print.business.bean.params.PrintPlanParams;
-import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.service.*;
@@ -296,7 +292,7 @@ public class ExamTaskController {
         }
         // todo 待审核状态,发送短信
         if(ExamStatusEnum.SUBMIT.name().equals(examTask.getStatus())){
-//            basicMessageService.sendNoticeTaskCreate(tasks);
+            basicMessageService.sendNoticeTaskAuditCreateOrReview(examTask, MessageEnum.NOTICE_OF_AUDIT_CREATED);
         }
 
         return ResultUtil.ok(isSuccess);
@@ -494,8 +490,18 @@ public class ExamTaskController {
      */
     @ApiOperation(value = "卷库查询-卷库修改")
     @RequestMapping(value = "/paper_update", method = RequestMethod.POST)
-    public Result taskPaperUpdate(@RequestBody ExamTaskDetail examTaskDetail) {
+    public Result taskPaperUpdate(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
         boolean isSuccess = examTaskDetailService.paperUpdate(examTaskDetail);
+        if(isSuccess){
+            ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
+            if(examTask.getReview()){
+                basicMessageService.sendNoticeTaskAuditCreateOrReview(examTask, MessageEnum.NOTICE_OF_AUDIT_REVIEW);
+            } else {
+                SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+                // 校验是否可以提交打印状态
+                commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
+            }
+        }
         return ResultUtil.ok(isSuccess);
     }
 }

+ 1 - 1
distributed-print/src/test/java/com/qmth/distributed/print/ServiceTest.java

@@ -88,7 +88,7 @@ public class ServiceTest {
         Long createId = 1L;
         MessageEnum messageType = MessageEnum.NOTICE_OF_AUDIT_PASS;
 
-        basicMessageService.saveMessageSendLog(userId, mobileNumber, businessId, variableParams, messageType, null);
+        basicMessageService.saveMessageSendLog(userId, mobileNumber, businessId, variableParams, createId, messageType, null);
     }
 
     @Test