瀏覽代碼

3.2.7 bug修改

xiaofei 1 年之前
父節點
當前提交
3ca557e220

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

@@ -49,7 +49,7 @@ public interface BasicMessageService extends IService<BasicMessage> {
      * @param userId
      * @param userId
      * @param ids
      * @param ids
      */
      */
-    void sendNoticeExpireOrOverdue(MessageEnum messageType, Long userId, List<String> ids);
+    void sendNoticeExpireOrOverdue(Long schoolId, MessageEnum messageType, Long userId, List<String> ids);
 
 
     /**
     /**
      * 重发失败短信
      * 重发失败短信

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

@@ -311,8 +311,7 @@ public class BasicMessageServiceImpl extends ServiceImpl<BasicMessageMapper, Bas
     }
     }
 
 
     @Override
     @Override
-    public void sendNoticeExpireOrOverdue(MessageEnum messageType, Long userId, List<String> ids) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+    public void sendNoticeExpireOrOverdue(Long schoolId, MessageEnum messageType, Long userId, List<String> ids) {
         // 考务老师(命题任务创建人)
         // 考务老师(命题任务创建人)
         SysUser user = commonCacheService.userCache(userId);
         SysUser user = commonCacheService.userCache(userId);
         if (Objects.nonNull(user)) {
         if (Objects.nonNull(user)) {

+ 45 - 20
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -301,6 +301,8 @@ public class DataSyncServiceImpl implements DataSyncService {
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.GROUP.getType(), "sync", saveMarkerGroup));
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.GROUP.getType(), "sync", saveMarkerGroup));
             }
             }
 
 
+            // 所有分组下评卷员集合(分班阅使用)
+            List<ExamPaperGroupMarker> examPaperGroupMarkerList = new ArrayList<>();
             // 同步绑定评卷员
             // 同步绑定评卷员
             try {
             try {
                 errorMessage = "[绑定评卷员]";
                 errorMessage = "[绑定评卷员]";
@@ -313,6 +315,8 @@ public class DataSyncServiceImpl implements DataSyncService {
                         cloudMarkingTaskUtils.syncUser(SpecialPrivilegeEnum.MARKER.getPrefix() + markerUser.getLoginName(), markerUser.getRealName(), SpecialPrivilegeEnum.MARKER.getValue(), markerUser.getEnable(), schoolId, orgCode);
                         cloudMarkingTaskUtils.syncUser(SpecialPrivilegeEnum.MARKER.getPrefix() + markerUser.getLoginName(), markerUser.getRealName(), SpecialPrivilegeEnum.MARKER.getValue(), markerUser.getEnable(), schoolId, orgCode);
                         // 绑定评卷员
                         // 绑定评卷员
                         cloudMarkingTaskUtils.saveMarker(schoolId, examId, subjectCode, examPaperGroup.getGroupNumber(), examPaperGroupMarker.getLoginName());
                         cloudMarkingTaskUtils.saveMarker(schoolId, examId, subjectCode, examPaperGroup.getGroupNumber(), examPaperGroupMarker.getLoginName());
+
+                        examPaperGroupMarkerList.add(examPaperGroupMarker);
                     }
                     }
                 }
                 }
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER.getType(), "sync", true));
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER.getType(), "sync", true));
@@ -321,18 +325,27 @@ public class DataSyncServiceImpl implements DataSyncService {
             }
             }
 
 
             errorMessage = "[分班阅]";
             errorMessage = "[分班阅]";
-            List<ExamPaperClassMarker> examPaperClassMarkers = examPaperClassMarkerService.listByExamPaperStructureId(examPaperStructure.getId());
-            if (!CollectionUtils.isEmpty(examPaperClassMarkers)) {
-                try {
-                    for (ExamPaperClassMarker examPaperClassMarker : examPaperClassMarkers) {
-                        String className = examPaperClassMarker.getClassName();
-                        List<String> classNames = Arrays.asList(className.split(","));
-                        cloudMarkingTaskUtils.saveUserClass(schoolId, examId, examPaperClassMarker.getLoginName(), classNames);
+            try {
+                if (examPaperStructure.getOpenClassReading()) {
+                    List<ExamPaperClassMarker> examPaperClassMarkers = examPaperClassMarkerService.listByExamPaperStructureId(examPaperStructure.getId());
+                    if (!CollectionUtils.isEmpty(examPaperClassMarkers)) {
+
+                        for (ExamPaperClassMarker examPaperClassMarker : examPaperClassMarkers) {
+                            String className = examPaperClassMarker.getClassName();
+                            List<String> classNames = Arrays.asList(className.split(","));
+                            cloudMarkingTaskUtils.saveUserClass(schoolId, examId, examPaperClassMarker.getLoginName(), classNames);
+                        }
+                    }
+                } else {
+                    // 同步空集合对象,就是删除云阅卷分班阅班级信息
+                    List<String> classNames = new ArrayList<>();
+                    for (ExamPaperGroupMarker examPaperGroupMarker : examPaperGroupMarkerList) {
+                        cloudMarkingTaskUtils.saveUserClass(schoolId, examId, examPaperGroupMarker.getLoginName(), classNames);
                     }
                     }
-                    examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", true));
-                } catch (Exception e) {
-                    examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", false));
                 }
                 }
+                examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", true));
+            } catch (Exception e) {
+                examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", false));
             }
             }
             result = TaskResultEnum.SUCCESS;
             result = TaskResultEnum.SUCCESS;
         } catch (Exception e) {
         } catch (Exception e) {
@@ -569,6 +582,7 @@ public class DataSyncServiceImpl implements DataSyncService {
             // 同步客观题
             // 同步客观题
             String orgCode = cloudMarkingTaskUtils.isCollegeMode(schoolId) ? sysOrgService.findCollegeByCourseCode(schoolId, examPaperStructure.getCourseCode()).getCode() : null;
             String orgCode = cloudMarkingTaskUtils.isCollegeMode(schoolId) ? sysOrgService.findCollegeByCourseCode(schoolId, examPaperStructure.getCourseCode()).getCode() : null;
 
 
+            List<ExamPaperGroupMarker> examPaperGroupMarkerList = new ArrayList<>();
             try {
             try {
                 List<ExamPaperGroup> examPaperGroups = examPaperGroupService.listByExamPaperStructureId(examPaperStructure.getId());
                 List<ExamPaperGroup> examPaperGroups = examPaperGroupService.listByExamPaperStructureId(examPaperStructure.getId());
                 for (ExamPaperGroup examPaperGroup : examPaperGroups) {
                 for (ExamPaperGroup examPaperGroup : examPaperGroups) {
@@ -579,6 +593,8 @@ public class DataSyncServiceImpl implements DataSyncService {
                         cloudMarkingTaskUtils.syncUser(SpecialPrivilegeEnum.MARKER.getPrefix() + markerUser.getLoginName(), markerUser.getRealName(), SpecialPrivilegeEnum.MARKER.getValue(), markerUser.getEnable(), schoolId, orgCode);
                         cloudMarkingTaskUtils.syncUser(SpecialPrivilegeEnum.MARKER.getPrefix() + markerUser.getLoginName(), markerUser.getRealName(), SpecialPrivilegeEnum.MARKER.getValue(), markerUser.getEnable(), schoolId, orgCode);
                         // 绑定评卷员
                         // 绑定评卷员
                         cloudMarkingTaskUtils.saveMarker(schoolId, examId, subjectCode, examPaperGroup.getGroupNumber(), examPaperGroupMarker.getLoginName());
                         cloudMarkingTaskUtils.saveMarker(schoolId, examId, subjectCode, examPaperGroup.getGroupNumber(), examPaperGroupMarker.getLoginName());
+
+                        examPaperGroupMarkerList.add(examPaperGroupMarker);
                     }
                     }
                 }
                 }
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER.getType(), "sync", true));
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER.getType(), "sync", true));
@@ -586,18 +602,26 @@ public class DataSyncServiceImpl implements DataSyncService {
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER.getType(), "sync", false));
                 examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER.getType(), "sync", false));
             }
             }
 
 
-            List<ExamPaperClassMarker> examPaperClassMarkers = examPaperClassMarkerService.listByExamPaperStructureId(examPaperStructure.getId());
-            if (!CollectionUtils.isEmpty(examPaperClassMarkers)) {
-                try {
-                    for (ExamPaperClassMarker examPaperClassMarker : examPaperClassMarkers) {
-                        String className = examPaperClassMarker.getClassName();
-                        List<String> classNames = Arrays.asList(className.split(","));
-                        cloudMarkingTaskUtils.saveUserClass(schoolId, examId, examPaperClassMarker.getLoginName(), classNames);
+            try {
+                if (examPaperStructure.getOpenClassReading()) {
+                    List<ExamPaperClassMarker> examPaperClassMarkers = examPaperClassMarkerService.listByExamPaperStructureId(examPaperStructure.getId());
+                    if (!CollectionUtils.isEmpty(examPaperClassMarkers)) {
+
+                        for (ExamPaperClassMarker examPaperClassMarker : examPaperClassMarkers) {
+                            String className = examPaperClassMarker.getClassName();
+                            List<String> classNames = Arrays.asList(className.split(","));
+                            cloudMarkingTaskUtils.saveUserClass(schoolId, examId, examPaperClassMarker.getLoginName(), classNames);
+                        }
+                    }
+                } else {
+                    List<String> classNames = new ArrayList<>();
+                    for (ExamPaperGroupMarker examPaperGroupMarker : examPaperGroupMarkerList) {
+                        cloudMarkingTaskUtils.saveUserClass(schoolId, examId, examPaperGroupMarker.getLoginName(), classNames);
                     }
                     }
-                    examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", true));
-                } catch (Exception e) {
-                    examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", false));
                 }
                 }
+                examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", true));
+            } catch (Exception e) {
+                examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "sync", false));
             }
             }
             result = TaskResultEnum.SUCCESS;
             result = TaskResultEnum.SUCCESS;
         } catch (Exception e) {
         } catch (Exception e) {
@@ -605,6 +629,7 @@ public class DataSyncServiceImpl implements DataSyncService {
             errorMessage = e.getMessage();
             errorMessage = e.getMessage();
         } finally {
         } finally {
             tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), examPaperStructure.getThirdRelateId(), TaskStatusEnum.FINISH, result, errorMessage);
             tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), examPaperStructure.getThirdRelateId(), TaskStatusEnum.FINISH, result, errorMessage);
+            examPaperStructureService.updateById(examPaperStructure);
         }
         }
     }
     }
 
 

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

@@ -45,9 +45,9 @@ public class ExamPaperClassMarkerServiceImpl extends ServiceImpl<ExamPaperClassM
                 list.add(examPaperClassMarker);
                 list.add(examPaperClassMarker);
             }
             }
             this.saveBatch(list);
             this.saveBatch(list);
-            examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "save", true));
-            examPaperStructureService.updateById(examPaperStructure);
         }
         }
+        examPaperStructure.setStatus(ExamPaperStructure.parseStatus(examPaperStructure.getStatus(), ExamPaperStructureStatusTypeEnum.MARKER_CLASS.getType(), "save", true));
+        examPaperStructureService.updateById(examPaperStructure);
     }
     }
 
 
     @Override
     @Override

+ 36 - 18
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SmsSendServiceImpl.java

@@ -52,27 +52,36 @@ public class SmsSendServiceImpl implements SmsSendService {
             String[] examTaskStatus1 = {ExamStatusEnum.SUBMIT.name()};
             String[] examTaskStatus1 = {ExamStatusEnum.SUBMIT.name()};
             List<ExamTask> examTasks1 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
             List<ExamTask> examTasks1 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
             if (examTasks1 != null && examTasks1.size() > 0) {
             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());
+                Map<String, List<String>> listMap = examTasks1.stream().collect(Collectors.groupingBy(m -> m.getSchoolId() + "#" + m.getUserId(), Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+                for (Map.Entry<String, List<String>> entry : listMap.entrySet()) {
+                    String[] keys = entry.getKey().split("#");
+                    Long schoolId = Long.valueOf(keys[0]);
+                    Long userId = Long.valueOf(keys[1]);
+                    basicMessageService.sendNoticeExpireOrOverdue(schoolId, MessageEnum.NOTICE_OF_EXAM_TASK_WILL_EXPIRE, userId, entry.getValue());
                 }
                 }
             }
             }
             // 命题分配到期预警
             // 命题分配到期预警
             String[] examTaskStatus2 = {ExamStatusEnum.SUBMIT.name()};
             String[] examTaskStatus2 = {ExamStatusEnum.SUBMIT.name()};
             List<ExamTask> examTasks2 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
             List<ExamTask> examTasks2 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
             if (examTasks2 != null && examTasks2.size() > 0) {
             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());
+                Map<String, List<String>> listMap = examTasks2.stream().collect(Collectors.groupingBy(m -> m.getSchoolId() + "#" + m.getCreateId(), Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+                for (Map.Entry<String, List<String>> entry : listMap.entrySet()) {
+                    String[] keys = entry.getKey().split("#");
+                    Long schoolId = Long.valueOf(keys[0]);
+                    Long userId = Long.valueOf(keys[1]);
+                    basicMessageService.sendNoticeExpireOrOverdue(schoolId, MessageEnum.NOTICE_OF_ALLOCATION_WILL_EXPIRE, userId, entry.getValue());
                 }
                 }
             }
             }
 
 
             // 审核待办到期预警
             // 审核待办到期预警
             List<ExamTask> examTasks3 = examTaskMapper.listExamTaskAuditExpire(startTime, endTime);
             List<ExamTask> examTasks3 = examTaskMapper.listExamTaskAuditExpire(startTime, endTime);
             if (examTasks3 != null && examTasks3.size() > 0) {
             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());
+                Map<String, List<String>> listMap = examTasks3.stream().collect(Collectors.groupingBy(m -> m.getSchoolId() + "#" + m.getCreateId(), Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+                for (Map.Entry<String, List<String>> entry : listMap.entrySet()) {
+                    String[] keys = entry.getKey().split("#");
+                    Long schoolId = Long.valueOf(keys[0]);
+                    Long userId = Long.valueOf(keys[1]);
+                    basicMessageService.sendNoticeExpireOrOverdue(schoolId, MessageEnum.NOTICE_OF_AUDIT_WILL_EXPIRE, userId, entry.getValue());
                 }
                 }
             }
             }
         }
         }
@@ -99,27 +108,36 @@ public class SmsSendServiceImpl implements SmsSendService {
         String[] examTaskStatus1 = {ExamStatusEnum.SUBMIT.name()};
         String[] examTaskStatus1 = {ExamStatusEnum.SUBMIT.name()};
         List<ExamTask> examTasks1 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
         List<ExamTask> examTasks1 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus1);
         if (examTasks1 != null && examTasks1.size() > 0) {
         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_OVERDUE, entry.getKey(), entry.getValue());
+            Map<String, List<String>> listMap = examTasks1.stream().collect(Collectors.groupingBy(m -> m.getSchoolId() + "#" + m.getUserId(), Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+            for (Map.Entry<String, List<String>> entry : listMap.entrySet()) {
+                String[] keys = entry.getKey().split("#");
+                Long schoolId = Long.valueOf(keys[0]);
+                Long userId = Long.valueOf(keys[1]);
+                basicMessageService.sendNoticeExpireOrOverdue(schoolId, MessageEnum.NOTICE_OF_EXAM_TASK_OVERDUE, userId, entry.getValue());
             }
             }
         }
         }
         // 命题分配已逾期
         // 命题分配已逾期
         String[] examTaskStatus2 = {ExamStatusEnum.SUBMIT.name()};
         String[] examTaskStatus2 = {ExamStatusEnum.SUBMIT.name()};
         List<ExamTask> examTasks2 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
         List<ExamTask> examTasks2 = examTaskMapper.listExamTaskExpire(startTime, endTime, examTaskStatus2);
         if (examTasks2 != null && examTasks2.size() > 0) {
         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_OVERDUE, entry.getKey(), entry.getValue());
+            Map<String, List<String>> listMap = examTasks2.stream().collect(Collectors.groupingBy(m -> m.getSchoolId() + "#" + m.getCreateId(), Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+            for (Map.Entry<String, List<String>> entry : listMap.entrySet()) {
+                String[] keys = entry.getKey().split("#");
+                Long schoolId = Long.valueOf(keys[0]);
+                Long userId = Long.valueOf(keys[1]);
+                basicMessageService.sendNoticeExpireOrOverdue(schoolId, MessageEnum.NOTICE_OF_ALLOCATION_OVERDUE, userId, entry.getValue());
             }
             }
         }
         }
 
 
         // 审核待办已逾期
         // 审核待办已逾期
         List<ExamTask> examTasks3 = examTaskMapper.listExamTaskAuditExpire(startTime, endTime);
         List<ExamTask> examTasks3 = examTaskMapper.listExamTaskAuditExpire(startTime, endTime);
         if (examTasks3 != null && examTasks3.size() > 0) {
         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_OVERDUE, entry.getKey(), entry.getValue());
+            Map<String, List<String>> listMap = examTasks3.stream().collect(Collectors.groupingBy(m -> m.getSchoolId() + "#" + m.getCreateId(), Collectors.mapping(m -> m.getId().toString(), Collectors.toList())));
+            for (Map.Entry<String, List<String>> entry : listMap.entrySet()) {
+                String[] keys = entry.getKey().split("#");
+                Long schoolId = Long.valueOf(keys[0]);
+                Long userId = Long.valueOf(keys[1]);
+                basicMessageService.sendNoticeExpireOrOverdue(schoolId, MessageEnum.NOTICE_OF_AUDIT_OVERDUE, userId, entry.getValue());
             }
             }
         }
         }
     }
     }

+ 5 - 1
distributed-print-business/src/main/resources/db/log/脚本-xiaof.sql

@@ -301,4 +301,8 @@ ADD COLUMN `course_code` VARCHAR(50) NULL COMMENT '课程代码' AFTER `exam_id`
 ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
 ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
 ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;
 ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;
 
 
-DELETE FROM `sys_privilege` WHERE (`id` = '234');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '234');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '308');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '512');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('330', '重新生成pdf', 'CreatePdf', 'LINK', '47', '6', 'AUTH', '190', '1', '0', '1');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '857');

+ 5 - 1
distributed-print-business/src/main/resources/db/upgrade/3.2.7.sql

@@ -207,4 +207,8 @@ ADD COLUMN `course_code` VARCHAR(50) NULL COMMENT '课程代码' AFTER `exam_id`
 ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
 ADD COLUMN `course_name` VARCHAR(100) NULL COMMENT '课程名称' AFTER `course_code`,
 ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;
 ADD COLUMN `paper_number` VARCHAR(45) NULL COMMENT '试卷编号' AFTER `course_name`;
 
 
-DELETE FROM `sys_privilege` WHERE (`id` = '234');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '234');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '308');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '512');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('330', '重新生成pdf', 'CreatePdf', 'LINK', '47', '6', 'AUTH', '190', '1', '0', '1');
+UPDATE `sys_privilege` SET `enable` = '0', `front_display` = '0' WHERE (`id` = '857');

+ 4 - 3
distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml

@@ -152,14 +152,15 @@
                  c.exam_start_time,
                  c.exam_start_time,
                  c.exam_end_time,
                  c.exam_end_time,
                  SUM(b.total_subjects) total_subjects,
                  SUM(b.total_subjects) total_subjects,
-                 group_concat(c.print_plan_id) print_plan_ids
+                 group_concat(c.print_plan_id) print_plan_ids,
+                 sum(case c.status when 'FINISH' then 0 else 1 end) notFinishCount
              FROM
              FROM
                  exam_detail_course b
                  exam_detail_course b
                      LEFT JOIN exam_detail c ON b.exam_detail_id = c.id
                      LEFT JOIN exam_detail c ON b.exam_detail_id = c.id
                      LEFT JOIN exam_print_plan epp ON c.print_plan_id = epp.id
                      LEFT JOIN exam_print_plan epp ON c.print_plan_id = epp.id
                      LEFT JOIN basic_exam be ON epp.exam_id = be.id
                      LEFT JOIN basic_exam be ON epp.exam_id = be.id
             <where>
             <where>
-                and c.status = 'FINISH' and be.enable = true
+                 and be.enable = true
                 <if test="semesterId != null">
                 <if test="semesterId != null">
                     and be.semester_id = #{semesterId}
                     and be.semester_id = #{semesterId}
                 </if>
                 </if>
@@ -173,7 +174,7 @@
                     and b.paper_number = #{paperNumber}
                     and b.paper_number = #{paperNumber}
                 </if>
                 </if>
             </where>
             </where>
-             GROUP BY b.school_id , c.exam_id,  b.paper_number , b.paper_type, c.exam_start_time, c.exam_end_time) t
+             GROUP BY b.school_id , c.exam_id,  b.paper_number , b.paper_type, c.exam_start_time, c.exam_end_time having notFinishCount = 0) t
                 ON t.school_id = et.school_id
                 ON t.school_id = et.school_id
                 AND t.exam_id = et.exam_id
                 AND t.exam_id = et.exam_id
                 AND t.paper_number = et.paper_number
                 AND t.paper_number = et.paper_number

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPaperStructureController.java

@@ -138,12 +138,12 @@ public class ExamPaperStructureController {
     }
     }
 
 
     /**
     /**
-     * 绑定评卷员
+     * 绑定评卷员、分班阅
      *
      *
      * @param data
      * @param data
      * @return
      * @return
      */
      */
-    @ApiOperation(value = "绑定评卷员")
+    @ApiOperation(value = "绑定评卷员、分班阅")
     @RequestMapping(value = "/bind_marker", method = RequestMethod.POST)
     @RequestMapping(value = "/bind_marker", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = EditResult.class)})
     @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)

+ 0 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -44,7 +44,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import javax.validation.Valid;
 import java.io.File;
 import java.io.File;
@@ -845,7 +844,6 @@ public class SysController {
      */
      */
     @ApiOperation(value = "下载导入模板")
     @ApiOperation(value = "下载导入模板")
     @RequestMapping(value = "/download_import_template", method = RequestMethod.POST)
     @RequestMapping(value = "/download_import_template", method = RequestMethod.POST)
-    @Aac(auth = BOOL.FALSE)
     public void downloadImportTemplate(@RequestParam(value = "type") String type, HttpServletResponse response) {
     public void downloadImportTemplate(@RequestParam(value = "type") String type, HttpServletResponse response) {
         List<String> templateEnums = Stream.of(ImportTemplateEnum.values()).map(m -> m.name()).collect(Collectors.toList());
         List<String> templateEnums = Stream.of(ImportTemplateEnum.values()).map(m -> m.name()).collect(Collectors.toList());
         if (!templateEnums.contains(type)) {
         if (!templateEnums.contains(type)) {

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/PushTypeEnum.java

@@ -16,7 +16,7 @@ public enum PushTypeEnum {
     STRUCTURE_GROUP_PUSH("试卷结构、分组、评卷员绑定关系数据推送"),
     STRUCTURE_GROUP_PUSH("试卷结构、分组、评卷员绑定关系数据推送"),
 
 
     MARK_LEADER_PUSH("科组长数据推送"),
     MARK_LEADER_PUSH("科组长数据推送"),
-    MARKER_PUSH("评卷员数据推送"),
+    MARKER_PUSH("评卷员、分班阅数据推送"),
 
 
     PAPER_ANSWER_FILE_PUSH("试卷、标答文件推送"),
     PAPER_ANSWER_FILE_PUSH("试卷、标答文件推送"),
 
 

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/sync/CloudMarkingTaskUtils.java

@@ -590,7 +590,7 @@ public class CloudMarkingTaskUtils {
             ClassMarkerDTO classMarkerDTO = new ClassMarkerDTO();
             ClassMarkerDTO classMarkerDTO = new ClassMarkerDTO();
             classMarkerDTO.setExamId(Integer.valueOf(validParam(examId, null, true, "考试ID")));
             classMarkerDTO.setExamId(Integer.valueOf(validParam(examId, null, true, "考试ID")));
             classMarkerDTO.setAccount(SpecialPrivilegeEnum.MARKER.getPrefix() + validParam(loginName, null, true, "用户名"));
             classMarkerDTO.setAccount(SpecialPrivilegeEnum.MARKER.getPrefix() + validParam(loginName, null, true, "用户名"));
-            classMarkerDTO.setClassName(validParam(className, null, true, "班级名称"));
+            classMarkerDTO.setClassName(validParam(className, new ArrayList<>(), false, "班级名称"));
 
 
             String jsonData = JSONObject.toJSONString(classMarkerDTO);
             String jsonData = JSONObject.toJSONString(classMarkerDTO);
             String result = HttpKit.sendPost(postUrl, jsonData, getHeaders(schoolId, userClassSaveUrl));
             String result = HttpKit.sendPost(postUrl, jsonData, getHeaders(schoolId, userClassSaveUrl));

+ 2 - 2
teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

@@ -85,7 +85,7 @@ public class StartRunning implements CommandLineRunner {
         Map reunifyJobMap = new HashMap();
         Map reunifyJobMap = new HashMap();
         reunifyJobMap.computeIfAbsent("name", v -> SubjectCalculateJob.class.getName());
         reunifyJobMap.computeIfAbsent("name", v -> SubjectCalculateJob.class.getName());
         quartzService.deleteJob(JobEnum.SYNC_REUNIFY_JOB.name(), JobEnum.SYNC_REUNIFY_JOB_GROUP.name());
         quartzService.deleteJob(JobEnum.SYNC_REUNIFY_JOB.name(), JobEnum.SYNC_REUNIFY_JOB_GROUP.name());
-        quartzService.addJob(SendSmsExpireJob.class, JobEnum.SYNC_REUNIFY_JOB.name(), JobEnum.SYNC_REUNIFY_JOB_GROUP.name(), "0 0 0/2 * * ?", reunifyJobMap);
+        quartzService.addJob(SubjectCalculateJob.class, JobEnum.SYNC_REUNIFY_JOB.name(), JobEnum.SYNC_REUNIFY_JOB_GROUP.name(), "0 0 0/2 * * ?", reunifyJobMap);
         log.info("增加自动统分定时任务 end");
         log.info("增加自动统分定时任务 end");
 
 
         // 每天1点开始,每2小时一次
         // 每天1点开始,每2小时一次
@@ -93,7 +93,7 @@ public class StartRunning implements CommandLineRunner {
         Map autoSyncStudentJobMap = new HashMap();
         Map autoSyncStudentJobMap = new HashMap();
         autoSyncStudentJobMap.computeIfAbsent("name", v -> AutoSyncStudentJob.class.getName());
         autoSyncStudentJobMap.computeIfAbsent("name", v -> AutoSyncStudentJob.class.getName());
         quartzService.deleteJob(JobEnum.SYNC_STUDENT_JOB.name(), JobEnum.SYNC_STUDENT_JOB_GROUP.name());
         quartzService.deleteJob(JobEnum.SYNC_STUDENT_JOB.name(), JobEnum.SYNC_STUDENT_JOB_GROUP.name());
-        quartzService.addJob(SendSmsExpireJob.class, JobEnum.SYNC_STUDENT_JOB.name(), JobEnum.SYNC_STUDENT_JOB_GROUP.name(), "0 0 1/2 * * ?", autoSyncStudentJobMap);
+        quartzService.addJob(AutoSyncStudentJob.class, JobEnum.SYNC_STUDENT_JOB.name(), JobEnum.SYNC_STUDENT_JOB_GROUP.name(), "0 0 1/2 * * ?", autoSyncStudentJobMap);
         log.info("增加自动同步考生定时任务 end");
         log.info("增加自动同步考生定时任务 end");
 
 
         log.info("服务器启动时执行 end");
         log.info("服务器启动时执行 end");