Parcourir la source

批量提交考生优化。增加驳回短信发送

xiaof il y a 3 ans
Parent
commit
e85738b64e

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java

@@ -61,5 +61,11 @@ public class DirectorApproveListener implements TaskListener {
                 && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
         }
+
+        // 驳回短信
+        if(tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT)
+                && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
+            basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
+        }
     }
 }

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java

@@ -69,5 +69,11 @@ public class PresidentApproveListener implements TaskListener {
                 && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup())) {
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
         }
+
+        // 驳回短信
+        if(tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT)
+                && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup())) {
+            basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
+        }
     }
 }

+ 4 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/MessageEnum.java

@@ -35,7 +35,10 @@ public enum MessageEnum {
     NOTICE_OF_AUDIT_REVIEW("审核待办修改申请通知","${userName}您好,${courseNameAndPaperNumber}试卷重新提交修改申请,请您尽快审核!"),
     // 定时任务查询触发,业务id为考务老师id,短信发送给考务老师
     NOTICE_OF_AUDIT_WILL_EXPIRE("审核待办到期预警通知","${userName}您好,您还有${count}条审核待办即将逾期,请您尽快处理!"),
-    NOTICE_OF_AUDIT_OVERDUE("审核待办逾期通知","${userName}您好,您有${count}条审核待办已逾期!");
+    NOTICE_OF_AUDIT_OVERDUE("审核待办逾期通知","${userName}您好,您有${count}条审核待办已逾期!"),
+
+    NOTICE_OF_AUDIT_REJECT("审核驳回生成通知","${userName}您好,${courseNameAndPaperNumber}试卷审核未通过,请您尽快处理!");
+
 
     MessageEnum(String name, String template) {
         this.name = name;

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

@@ -31,4 +31,8 @@ public interface ExamStudentMapper extends BaseMapper<ExamStudent> {
     List<ExamStudentCourseDto> queryBySchoolIdAndExamDetailCourseIds(@Param("schoolId") Long schoolId, @Param("examDetailCourseIds") List<Long> examDetailCourseIds);
 
     List<SyncExamStudentDto> listStudentByPrintPlanIdAndSyncStatus(Long printPlanId);
+
+    void insertBatch(@Param("examStudents") List<ExamStudent> examStudents);
+
+    List<ExamStudent> listExamStudentBySchoolIdAndClazzId(@Param("schoolId") Long schoolId, @Param("classId") String classId);
 }

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

@@ -35,4 +35,8 @@ public interface ExamStudentService extends IService<ExamStudent> {
     List<ExamStudentCourseDto> queryBySchoolIdAndExamDetailCourseIds(Long schoolId, List<Long> examDetailCourseIds);
 
     List<SyncExamStudentDto> listStudentByPrintPlanIdAndSyncStatus(Long printPlanId);
+
+    void insertBatch(List<ExamStudent> examStudents);
+
+    List<ExamStudent> listExamStudentBySchoolIdAndClazzId(Long schoolId, String classId);
 }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java

@@ -5,6 +5,7 @@ import com.itextpdf.text.DocumentException;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.bean.params.SerialNumberParams;
 import com.qmth.distributed.print.business.entity.ExamDetail;
+import com.qmth.distributed.print.business.entity.ExamStudent;
 import com.qmth.distributed.print.business.entity.ExamTaskPrint;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
 import com.qmth.teachcloud.common.entity.BasicCourse;
@@ -237,7 +238,7 @@ public interface PrintCommonService {
      * @param examDetailCourseId
      * @param sysUser
      */
-    public int saveBatchStudent(Long schoolId, String extendFields, List<String> classIds, Long examDetailCourseId, SysUser sysUser);
+    public List<ExamStudent> createBatchStudent(Long schoolId, String extendFields, List<String> classIds, Long examDetailCourseId, SysUser sysUser);
 
     /**
      * 生成准考证号

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamStudentServiceImpl.java

@@ -79,4 +79,14 @@ public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamS
     public List<SyncExamStudentDto> listStudentByPrintPlanIdAndSyncStatus(Long printPlanId) {
         return this.baseMapper.listStudentByPrintPlanIdAndSyncStatus(printPlanId);
     }
+
+    @Override
+    public void insertBatch(List<ExamStudent> examStudents) {
+        this.baseMapper.insertBatch(examStudents);
+    }
+
+    @Override
+    public List<ExamStudent> listExamStudentBySchoolIdAndClazzId(Long schoolId, String classId) {
+        return this.baseMapper.listExamStudentBySchoolIdAndClazzId(schoolId, classId);
+    }
 }

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

@@ -231,7 +231,10 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
             examDetailCourse.setCreateId(examTaskPrint.getCreateId());
             examDetailCourseService.save(examDetailCourse);
 
-            printCommonService.saveBatchStudent(examTaskPrint.getSchoolId(), examTaskPrint.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
+            List<ExamStudent> examStudents = printCommonService.createBatchStudent(examTaskPrint.getSchoolId(), examTaskPrint.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
+            if(!CollectionUtils.isEmpty(examStudents)) {
+                examStudentService.insertBatch(examStudents);
+            }
 
             // 更改印刷计划状态
             examPrintPlan.setStatus(PrintPlanStatusEnum.READY);
@@ -279,7 +282,10 @@ public class ExamTaskPrintServiceImpl extends ServiceImpl<ExamTaskPrintMapper, E
             examStudentUpdateWrapper.lambda().eq(ExamStudent::getExamDetailCourseId, examDetailCourse.getId());
             examStudentService.remove(examStudentUpdateWrapper);
 
-            printCommonService.saveBatchStudent(taskPrint.getSchoolId(), taskPrint.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
+            List<ExamStudent> examStudents = printCommonService.createBatchStudent(taskPrint.getSchoolId(), taskPrint.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
+            if(!CollectionUtils.isEmpty(examStudents)) {
+                examStudentService.insertBatch(examStudents);
+            }
 
             return examDetail;
         }

+ 12 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -35,6 +35,8 @@ import org.activiti.engine.TaskService;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -63,6 +65,8 @@ import java.util.stream.Collectors;
 @Service
 public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> implements ExamTaskService {
 
+    private static final Logger logger = LoggerFactory.getLogger(ExamTaskServiceImpl.class);
+
     @Autowired
     private ExamTaskTempService examTaskTempService;
 
@@ -163,6 +167,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     BasicCampusService basicCampusService;
 
+    @Autowired
+    ExamStudentService examStudentService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -1678,7 +1685,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examDetailCourseService.save(examDetailCourse);
 
                 // 更新实际考生数量
-                int studentCount = printCommonService.saveBatchStudent(schoolId, examDetailList.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
+                List<ExamStudent> examStudents = printCommonService.createBatchStudent(schoolId, examDetailList.getExtendFields(), classIds, examDetailCourse.getId(), sysUser);
+                if (!CollectionUtils.isEmpty(examStudents)) {
+                    examStudentService.insertBatch(examStudents);
+                }
+                int studentCount = examStudents.size();
                 if (studentCount - examDetail.getTotalSubjects().intValue() != 0) {
                     UpdateWrapper<ExamDetail> updateWrapper = new UpdateWrapper<>();
                     updateWrapper.lambda().set(ExamDetail::getTotalSubjects, studentCount).eq(ExamDetail::getId, examDetail.getId());

+ 25 - 22
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceServiceImpl.java

@@ -41,6 +41,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.FileCopyUtils;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -50,6 +51,7 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 公共服务service impl
@@ -1010,31 +1012,32 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
         }
     }
 
-    public int saveBatchStudent(Long schoolId, String extendFields, List<String> classIds, Long examDetailCourseId, SysUser sysUser) {
-        QueryWrapper<BasicStudent> queryWrapper1 = new QueryWrapper<>();
-        queryWrapper1.lambda().eq(BasicStudent::getSchoolId, schoolId).in(BasicStudent::getClazzId, classIds);
-        List<BasicStudent> basicStudents = basicStudentService.list(queryWrapper1);
+    public List<ExamStudent> createBatchStudent(Long schoolId, String extendFields, List<String> classIds, Long examDetailCourseId, SysUser sysUser) {
         AtomicInteger atomicInteger = new AtomicInteger(1);
-        List<ExamStudent> examStudents = new ArrayList<>();
+        List<ExamStudent> examStudentAll = new ArrayList<>();
         SerialNumberParams ticketNumberParams = new SerialNumberParams("ticketNumber-" + schoolId, DateUtil.format(new Date(), "yyyyMM"), 6);
-        for (BasicStudent basicStudent : basicStudents) {
-            ExamStudent examStudent = new ExamStudent();
-            examStudent.setId(SystemConstant.getDbUuid());
-            examStudent.setSchoolId(schoolId);
-            examStudent.setOrgId(sysUser.getOrgId());
-            examStudent.setExamDetailCourseId(examDetailCourseId);
-            examStudent.setStudentName(basicStudent.getStudentName());
-            examStudent.setStudentCode(basicStudent.getStudentCode());
-            // 准考证号(年月+000001)
-            examStudent.setTicketNumber(createTempNumber(ticketNumberParams));
-            examStudent.setExtendFields(extendFields);
-            examStudent.setSiteNumber(String.valueOf(atomicInteger.getAndIncrement()));
-            examStudent.setClazzId(String.valueOf(basicStudent.getClazzId()));
-            examStudent.setCreateId(sysUser.getId());
-            examStudents.add(examStudent);
+
+        for (String classId : classIds) {
+            List<ExamStudent> basicStudents = examStudentService.listExamStudentBySchoolIdAndClazzId(schoolId, classId);
+
+            basicStudents = basicStudents.stream().map(examStudent->{
+                examStudent.setId(SystemConstant.getDbUuid());
+                examStudent.setSchoolId(schoolId);
+                examStudent.setOrgId(sysUser.getOrgId());
+                examStudent.setExamDetailCourseId(examDetailCourseId);
+                // 准考证号(年月+000001)
+                examStudent.setTicketNumber(createTempNumber(ticketNumberParams));
+                examStudent.setExtendFields(extendFields);
+                examStudent.setSiteNumber(String.valueOf(atomicInteger.getAndIncrement()));
+                examStudent.setCreateId(sysUser.getId());
+                return examStudent;
+            }).collect(Collectors.toList());
+            if(!CollectionUtils.isEmpty(basicStudents)) {
+                examStudentAll.addAll(basicStudents);
+            }
         }
-        examStudentService.saveBatch(examStudents);
-        return examStudents.size();
+
+        return examStudentAll;
     }
 
     public String createTempNumber(SerialNumberParams serialNumberParams) {

+ 10 - 0
distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -22,6 +22,12 @@
         id,
         school_id, exam_detail_course_id, student_name, student_code, ticket_number, site_number, print_paper, print_card, extend_fields, paper_type
     </sql>
+    <insert id="insertBatch">
+        insert into exam_student (id, school_id, org_id, exam_detail_course_id, student_name, student_code, ticket_number, site_number, extend_fields, clazz_id, create_id) values
+        <foreach collection="examStudents" separator="," item="item">
+            (#{item.id}, #{item.schoolId}, #{item.orgId}, #{item.examDetailCourseId}, #{item.studentName}, #{item.studentCode}, #{item.ticketNumber}, #{item.siteNumber}, #{item.extendFields}, #{item.clazzId}, #{item.createId})
+        </foreach>
+    </insert>
     <select id="getStudentDetail" resultType="java.util.Map">
         SELECT
             a.student_name studentName,
@@ -107,5 +113,9 @@
         WHERE
             c.print_plan_id = #{printPlanId}
     </select>
+    <select id="listExamStudentBySchoolIdAndClazzId"
+            resultType="com.qmth.distributed.print.business.entity.ExamStudent">
+        select student_name studentName, student_code studentCode, clazz_id clazzId from basic_student where school_id = #{schoolId} and clazz_id = #{classId}
+    </select>
 
 </mapper>