wangliang 4 роки тому
батько
коміт
ccb0d70778

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ExaminationDetailResult.java

@@ -28,6 +28,9 @@ public class ExaminationDetailResult {
     @ApiModelProperty(value = "试卷代码")
     private String paperNumber;
 
+    @ApiModelProperty(value = "适用专业")
+    private String specialty;
+
     @ApiModelProperty(value = "考点")
     private String examPlace;
 
@@ -99,6 +102,14 @@ public class ExaminationDetailResult {
         this.paperNumber = paperNumber;
     }
 
+    public String getSpecialty() {
+        return specialty;
+    }
+
+    public void setSpecialty(String specialty) {
+        this.specialty = specialty;
+    }
+
     public String getExamPlace() {
         return examPlace;
     }

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicMessageService.java

@@ -2,8 +2,11 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.entity.BasicMessage;
+import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.enums.MessageEnum;
 
+import java.util.List;
+
 /**
  * @Description: 短信消息发送
  * @Author: CaoZixuan
@@ -21,4 +24,12 @@ public interface BasicMessageService extends IService<BasicMessage> {
      * @param messageType 消息类型
      */
     void saveMessageSendLog(Long userId, String mobileNumber, Long businessId, String variableParams, Long createId, MessageEnum messageType);
+
+    /**
+     * 命题任务审核消息处理
+     * @param examTaskIdList 命题任务主键集合
+     * @param messageType 消息类型枚举
+     * @param sysUser 发送信息的用户
+     */
+    void noticeOfExamTaskAudit(List<Long> examTaskIdList, MessageEnum messageType, SysUser sysUser);
 }

+ 3 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicAttachmentServiceImpl.java

@@ -295,6 +295,7 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             pdfStringJoiner.add(File.separator).add(SystemConstant.getUuid()).add(SystemConstant.PDF_PREFIX);
 
             String pdfDirName = pdfStringJoiner.toString();
+            String pdfDirNameStr = pdfStringJoiner.toString().replace("\\","/");
             String destUrl = SystemConstant.PDF_TEMP_FILES_DIR + File.separator + pdfDirName;
 
             File pdfFile = new File(destUrl);
@@ -309,7 +310,7 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             PdfDto pdfDto = null;
             if (oss) {//上传至oss
                 pdfDto = PdfUtil.addPdfPage(pdfFile);
-                ossUtil.ossUpload(pdfDirName, pdfFile, BinaryUtil.toBase64String(HexUtils.decodeHex(pdfFileMd5)));
+                ossUtil.ossUpload(pdfDirNameStr, pdfFile, BinaryUtil.toBase64String(HexUtils.decodeHex(pdfFileMd5)));
 //                htmlFile.delete();
             }
             JSONObject attachmentPath = JSONObject.parseObject(examDetail.getAttachmentPath());
@@ -321,7 +322,7 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             object.put(SystemConstant.HTML_PATH, filePath);
             object.put("htmlMd5", htmlFileMd5);
             object.put("pdfMd5", pdfFileMd5);
-            object.put(SystemConstant.PDF_PATH, pdfDirName);
+            object.put(SystemConstant.PDF_PATH, pdfDirNameStr);
             object.put(SystemConstant.TYPE, SystemConstant.OSS);
             object.put(SystemConstant.UPLOAD_TYPE, new UploadFileEnum[]{
                     UploadFileEnum.HTML,

+ 38 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicMessageServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.aliyuncs.DefaultAcsClient;
 import com.aliyuncs.IAcsClient;
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
@@ -8,25 +9,29 @@ import com.aliyuncs.exceptions.ClientException;
 import com.aliyuncs.http.MethodType;
 import com.aliyuncs.profile.DefaultProfile;
 import com.aliyuncs.profile.IClientProfile;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.config.DictionaryConfig;
 import com.qmth.distributed.print.business.entity.BasicMessage;
-import com.qmth.distributed.print.business.entity.BasicVerifyCode;
+import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.SysConfig;
+import com.qmth.distributed.print.business.entity.SysUser;
 import com.qmth.distributed.print.business.enums.MessageEnum;
 import com.qmth.distributed.print.business.mapper.BasicMessageMapper;
 import com.qmth.distributed.print.business.service.BasicMessageService;
+import com.qmth.distributed.print.business.service.CacheService;
+import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.service.SysConfigService;
+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.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * @Description: 短信消息发送
@@ -39,6 +44,8 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
     private SysConfigService sysConfigService;
     @Resource
     private DictionaryConfig dictionaryConfig;
+    @Resource
+    private CacheService cacheService;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -122,6 +129,34 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
         }
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void noticeOfExamTaskAudit(List<Long> examTaskIdList, MessageEnum messageType, SysUser sysUser) {
+        ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
+        Long createId = sysUser.getId();
+        for (Long examTaskId : examTaskIdList) {
+            ExamTask examTask = examTaskService.getById(examTaskId);
+            if (Objects.nonNull(examTask)){
+                String courseName = examTask.getCourseName();
+                String paperNumber = examTask.getPaperNumber();
+                Long userId = examTask.getCreateId();
+                SysUser user = cacheService.userCache(userId);
+                if (Objects.nonNull(user)){
+                    String userName = user.getRealName();
+                    String mobileNumber = user.getMobileNumber();
+
+                    Map<String, String> jsonMap = new HashMap<>();
+                    jsonMap.put("userName", userName);
+                    jsonMap.put("courseName", courseName);
+                    jsonMap.put("paperNumber", paperNumber);
+                    String variableParams = JSON.toJSONString(jsonMap);
+                    this.saveMessageSendLog(userId,mobileNumber, examTaskId,variableParams,createId,messageType);
+                }
+            }
+        }
+
+    }
+
     private void checkData(Object ... objects){
         for (Object object : objects) {
             if (object instanceof String){

+ 11 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CommonServiceImpl.java

@@ -80,6 +80,9 @@ public class CommonServiceImpl implements CommonService {
     @Autowired
     private ExamTaskService examTaskService;
 
+    @Autowired
+    private ExamTaskDetailService examTaskDetailService;
+
     @Autowired
     private ExamDetailService examDetailService;
 
@@ -603,7 +606,14 @@ public class CommonServiceImpl implements CommonService {
         // 校验命题任务是否提交
         ExamTask examTask = examTaskService.getByCourseCodeAndPaperNumber(schoolId, courseCode, paperNumber);
         if (examTask != null && !examTask.getEnable()) {
-            throw ExceptionResultEnum.ERROR.exception("命题任务已禁用");
+            log.info("命题任务已禁用");
+            return;
+//            throw ExceptionResultEnum.ERROR.exception("命题任务已禁用");
+        }
+        ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTask.getId());
+        if (!examTaskDetail.getEnable()) {
+            log.info("卷库已禁用");
+            return;
         }
         // 1.命题任务已完成
         if (examTask != null && examTask.getStatus().name().equals(ExamStatusEnum.FINISH.name())) {

+ 3 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/FreemarkerUtil.java

@@ -115,8 +115,9 @@ public class FreemarkerUtil {
             template.process(dataMap, out);
             out.flush();
             if (oss) {
-                ossUtil.ossUpload(htmlStringJoiner.toString(), htmlFile, DigestUtils.md5Hex(new FileInputStream(htmlFile)));
-                jsonObject.put(SystemConstant.HTML_PATH, htmlStringJoiner.toString());
+                String htmlStringJoinerStr = htmlStringJoiner.toString().replace("\\","/");
+                ossUtil.ossUpload(htmlStringJoinerStr, htmlFile, DigestUtils.md5Hex(new FileInputStream(htmlFile)));
+                jsonObject.put(SystemConstant.HTML_PATH, htmlStringJoinerStr);
                 jsonObject.put(SystemConstant.UPLOAD_TYPE, new UploadFileEnum[]{
                         UploadFileEnum.FILE,
                         UploadFileEnum.HTML

+ 5 - 0
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -171,6 +171,7 @@
                    cou.course_code,
                    ')') AS courseNameCode,
             cou.paper_number AS paperNumber,
+            et.specialty,
             det.print_plan_id AS printPlanId,
             det.print_plan_name AS printPlanName,
             det.exam_start_time AS examStartTime,
@@ -186,6 +187,10 @@
             exam_detail det ON cou.exam_detail_id = det.id
                 AND stu.school_id = det.school_id
                 LEFT JOIN
+            exam_task et on cou.school_id = et.school_id
+                AND cou.course_code = et.course_code
+                AND cou.paper_number = et.paper_number
+                LEFT JOIN
             sys_user b on det.create_id = b.id
         <where>
             <if test="schoolId != null and schoolId > 0">

+ 20 - 10
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -11,10 +11,7 @@ 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.ExamStatusEnum;
-import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
-import com.qmth.distributed.print.business.enums.TaskTypeEnum;
-import com.qmth.distributed.print.business.enums.UploadFileEnum;
+import com.qmth.distributed.print.business.enums.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.templete.execute.AsyncTaskReviewSampleExportService;
 import com.qmth.distributed.print.business.util.ServletUtil;
@@ -35,10 +32,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * <p>
@@ -73,6 +67,9 @@ public class ExamTaskController {
 
     @Autowired
     private CommonService commonService;
+
+    @Resource
+    private BasicMessageService basicMessageService;
     /**
      * 查询
      *
@@ -367,12 +364,19 @@ public class ExamTaskController {
     @ApiOperation(value = "审核")
     @RequestMapping(value = "/review_save", method = RequestMethod.POST)
     public Result taskReviewSave(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
+        List<Long> examTaskIdList = new ArrayList<>();
+        examTaskIdList.add(taskReviewLog.getExamTaskId());
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         boolean isSuccess = examTaskService.taskReviewSave(taskReviewLog);
         if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            // 发送审核通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS,sysUser);
             ExamTask examTask = examTaskService.getById(taskReviewLog.getExamTaskId());
             // 校验是否可以提交打印状态
             commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
+        }else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())){
+            // 发送审核不通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS,sysUser);
         }
         return ResultUtil.ok(isSuccess);
     }
@@ -386,14 +390,20 @@ public class ExamTaskController {
     @ApiOperation(value = "批量审核")
     @RequestMapping(value = "/review_save_batch", method = RequestMethod.POST)
     public Result taskReviewSaveBatch(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
+        List<Long> examTaskIdList = Arrays.asList(taskReviewLog.getExamTaskIds());
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         boolean isSuccess = examTaskService.taskReviewSaveBatch(taskReviewLog);
         if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+            // 发送审核通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS,sysUser);
             // 校验是否可以提交打印状态
             for (Long examTaskId : taskReviewLog.getExamTaskIds()) {
                 ExamTask examTask = examTaskService.getById(examTaskId);
                 commonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
             }
+        }else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())){
+            // 发送审核不通过短信通知
+            basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS,sysUser);
         }
         return ResultUtil.ok(isSuccess);
     }

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

@@ -80,13 +80,13 @@ public class ServiceTest {
         String mobileNumber = "18903719928";
         Long businessId = 1L;
         Map<String, String> jsonMap = new HashMap<>();
-        jsonMap.put("userName", "张三");
+        jsonMap.put("userName", "李四");
         jsonMap.put("courseName", "数学");
         jsonMap.put("paperNumber", "SX001");
         String variableParams = JSON.toJSONString(jsonMap);
 //        String variableParams = "{\"code\":\"" + "123456" + "\"}";
         Long createId = 1L;
-        MessageEnum messageType = MessageEnum.NOTICE_OF_AUDIT_NOT_PASS;
+        MessageEnum messageType = MessageEnum.NOTICE_OF_AUDIT_PASS;
 
         basicMessageService.saveMessageSendLog(userId, mobileNumber, businessId, variableParams, createId, messageType);
     }