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

Merge branch 'dev_v3.0.0' of http://git.qmth.com.cn/wangliang/distributed-print-service into dev_v3.0.0

xiaof пре 3 година
родитељ
комит
cad14a8f5f
20 измењених фајлова са 241 додато и 94 уклоњено
  1. 23 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ApprovalInfo.java
  2. 35 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowVarDto.java
  3. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/PrintPlanResult.java
  4. 8 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamPrintPlanMapper.java
  5. 12 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java
  6. 11 16
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java
  7. 6 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  8. 6 17
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  9. 6 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TFFlowLogServiceImpl.java
  10. 11 4
      distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml
  11. 5 5
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java
  12. 0 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  13. 6 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/MenuCustomController.java
  14. 4 5
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java
  15. 39 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/SysUserResult.java
  16. 8 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java
  17. 7 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  18. 2 9
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java
  19. 7 4
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  20. 23 0
      teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

+ 23 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/approvalForm/ApprovalInfo.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.bean.dto.approvalForm;
 
+import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
@@ -24,6 +25,12 @@ public class ApprovalInfo {
     @ApiModelProperty(value = "审核级别(2:主任审核、3:院长审核)")
     private int level;
 
+    @ApiModelProperty(value = "审核机构名称")
+    private String approveOrgName;
+
+    @ApiModelProperty(value = "审核类型")
+    private FlowApproveOperationEnum approveType;
+
     public Long getApproveId() {
         return approveId;
     }
@@ -63,4 +70,20 @@ public class ApprovalInfo {
     public void setLevel(int level) {
         this.level = level;
     }
+
+    public String getApproveOrgName() {
+        return approveOrgName;
+    }
+
+    public void setApproveOrgName(String approveOrgName) {
+        this.approveOrgName = approveOrgName;
+    }
+
+    public FlowApproveOperationEnum getApproveType() {
+        return approveType;
+    }
+
+    public void setApproveType(FlowApproveOperationEnum approveType) {
+        this.approveType = approveType;
+    }
 }

+ 35 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/flow/CustomFlowVarDto.java

@@ -21,7 +21,7 @@ public class CustomFlowVarDto implements Serializable {
     @ApiModelProperty(value = "流程节点变量")
     String flowTaskVar;
 
-    @ApiModelProperty(value = "审批人")
+    @ApiModelProperty(value = "审批人id")
     List<String> approveIds;
 
     @ApiModelProperty(value = "属性")
@@ -36,9 +36,15 @@ public class CustomFlowVarDto implements Serializable {
     @ApiModelProperty(value = "自定义流程驳回重新提交类型")
     CustomFlowRejectResubmitTypeEnum rejectResubmitType;
 
-    @ApiModelProperty(value = "审批人")
+    @ApiModelProperty(value = "审批人姓名")
     String approveUserNames;
 
+    @ApiModelProperty(value = "抄送人id")
+    List<String> copyForUserIds;
+
+    @ApiModelProperty(value = "抄送人姓名")
+    String copyForUserNames;
+
     public CustomFlowVarDto() {
 
     }
@@ -47,15 +53,19 @@ public class CustomFlowVarDto implements Serializable {
         this.flowTaskVar = flowTaskVar;
     }
 
-    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds) {
+    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds, List<String> copyForUserIds, String copyForUserNames) {
         this.flowTaskVar = flowTaskVar;
         this.approveIds = approveIds;
+        this.copyForUserIds = copyForUserIds;
+        this.copyForUserNames = copyForUserNames;
     }
 
-    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds, String approveUserNames) {
+    public CustomFlowVarDto(String flowTaskVar, List<String> approveIds, String approveUserNames, List<String> copyForUserIds, String copyForUserNames) {
         this.flowTaskVar = flowTaskVar;
         this.approveIds = approveIds;
         this.approveUserNames = approveUserNames;
+        this.copyForUserIds = copyForUserIds;
+        this.copyForUserNames = copyForUserNames;
     }
 
     public CustomFlowVarDto(String flowTaskVar, List<String> approveIds,
@@ -63,7 +73,9 @@ public class CustomFlowVarDto implements Serializable {
                             CustomFlowMultipleUserApproveTypeEnum multipleUserApproveType,
                             CustomFlowRejectTypeEnum rejectType,
                             CustomFlowRejectResubmitTypeEnum rejectResubmitType,
-                            String approveUserNames) {
+                            String approveUserNames,
+                            List<String> copyForUserIds,
+                            String copyForUserNames) {
         this.flowTaskVar = flowTaskVar;
         this.approveIds = approveIds;
         this.approveUserType = approveUserType;
@@ -71,6 +83,24 @@ public class CustomFlowVarDto implements Serializable {
         this.rejectType = rejectType;
         this.rejectResubmitType = rejectResubmitType;
         this.approveUserNames = approveUserNames;
+        this.copyForUserIds = copyForUserIds;
+        this.copyForUserNames = copyForUserNames;
+    }
+
+    public List<String> getCopyForUserIds() {
+        return copyForUserIds;
+    }
+
+    public void setCopyForUserIds(List<String> copyForUserIds) {
+        this.copyForUserIds = copyForUserIds;
+    }
+
+    public String getCopyForUserNames() {
+        return copyForUserNames;
+    }
+
+    public void setCopyForUserNames(String copyForUserNames) {
+        this.copyForUserNames = copyForUserNames;
     }
 
     public String getApproveUserNames() {

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/PrintPlanResult.java

@@ -96,6 +96,12 @@ public class PrintPlanResult {
     @ApiModelProperty("是否同步成功")
     private ExamPrintPlanSyncStatusEnum syncStatus;
 
+    @ApiModelProperty("考试id")
+    private Long examId;
+
+    @ApiModelProperty("考试名称")
+    private String examName;
+
     public Long getId() {
         return id;
     }
@@ -287,4 +293,20 @@ public class PrintPlanResult {
     public void setSyncStatus(ExamPrintPlanSyncStatusEnum syncStatus) {
         this.syncStatus = syncStatus;
     }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
 }

+ 8 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamPrintPlanMapper.java

@@ -25,6 +25,7 @@ public interface ExamPrintPlanMapper extends BaseMapper<ExamPrintPlan> {
     IPage<PrintPlanResult> findPrintPlanPage(@Param("iPage") Page<PrintPlanResult> iPage,
                                              @Param("schoolId") Long schoolId,
                                              @Param("semesterId") Long semesterId,
+                                             @Param("examId") Long examId,
                                              @Param("printPlanIdList") List<Long> printPlanIdList,
                                              @Param("status") PrintPlanStatusEnum status,
                                              @Param("startTime") Long startTime,
@@ -32,13 +33,13 @@ public interface ExamPrintPlanMapper extends BaseMapper<ExamPrintPlan> {
                                              @Param("orgIds") Set<Long> orgIds);
 
     IPage<PrintPlanResult> findPrintPlanSyncPage(@Param("iPage") Page<PrintPlanResult> iPage,
-                                             @Param("schoolId") Long schoolId,
-                                             @Param("semesterId") Long semesterId,
-                                             @Param("status") String[] status,
-                                             @Param("printPlanId") Long printPlanId,
-                                             @Param("startTime") Long startTime,
-                                             @Param("endTime") Long endTime,
-                                             @Param("orgIds") Set<Long> orgIds);
+                                                 @Param("schoolId") Long schoolId,
+                                                 @Param("semesterId") Long semesterId,
+                                                 @Param("status") String[] status,
+                                                 @Param("printPlanId") Long printPlanId,
+                                                 @Param("startTime") Long startTime,
+                                                 @Param("endTime") Long endTime,
+                                                 @Param("orgIds") Set<Long> orgIds);
 
     List<PrintPlanBrief> list(@Param("schoolId") Long schoolId, @Param("source") String source, @Param("module") String module, @Param("status") String[] status, @Param("orgIds") Set<Long> orgIds);
 

+ 12 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamPrintPlanService.java

@@ -28,26 +28,27 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
     /**
      * 印刷计划分页查询
      *
-     * @param schoolId   学校id
-     * @param semesterId
-     * @param printPlanIdList  印刷计划id集合
-     * @param status     印刷计划状态
-     * @param startTime  印刷计划创建时间开始
-     * @param endTime    印刷计划创建时间结束
-     * @param pageNumber 分页页数
-     * @param pageSize   分页容量
+     * @param schoolId        学校id
+     * @param semesterId      校区id
+     * @param examId          考试id
+     * @param printPlanIdList 印刷计划id集合
+     * @param status          印刷计划状态
+     * @param startTime       印刷计划创建时间开始
+     * @param endTime         印刷计划创建时间结束
+     * @param pageNumber      分页页数
+     * @param pageSize        分页容量
      * @return 分页查询结果
      */
-    IPage<PrintPlanResult> printPlanPage(Long schoolId, Long semesterId, List<Long> printPlanIdList, PrintPlanStatusEnum status, Long startTime, Long endTime, int pageNumber, int pageSize);
+    IPage<PrintPlanResult> printPlanPage(Long schoolId, Long semesterId, Long examId, List<Long> printPlanIdList, PrintPlanStatusEnum status, Long startTime, Long endTime, int pageNumber, int pageSize);
 
     IPage<PrintPlanResult> printPlanSyncPage(Long schoolId, Long semesterId, Long printPlanId, Long startTime, Long endTime, int pageNumber, int pageSize);
 
     /**
      * 印刷计划模糊名称
      *
-     * @return 印刷计划id和名称
      * @param source
      * @param module
+     * @return 印刷计划id和名称
      */
     List<PrintPlanBrief> printPlanBriefQuery(String source, String module);
 
@@ -99,6 +100,7 @@ public interface ExamPrintPlanService extends IService<ExamPrintPlan> {
 
     /**
      * 根据考场详情表查找印刷计划
+     *
      * @param examDetailId 考场详情表id
      * @return 印刷计划
      */

+ 11 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -885,7 +885,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                     //默认在开始节点后新增一个审批节点
                     customFlowDefaultDto = multiWorkFlow.createDefaultUserTask(customFlowDto, flowTaskLink, DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK);
                     setupMap.put(customFlowDefaultDto.getFlowTaskId(), new FlowTaskResult(customFlowDefaultDto.getContent(), customFlowDefaultDto.getFlowTaskId(), customFlowDefaultDto.getSetup()));
-                    agginessMap.computeIfAbsent(customFlowDefaultDto.getFlowTaskId(), v -> new CustomFlowVarDto(SystemConstant.APPROVE_ID, new ArrayList(Arrays.asList(""))));
+                    agginessMap.computeIfAbsent(customFlowDefaultDto.getFlowTaskId(), v -> new CustomFlowVarDto(SystemConstant.APPROVE_ID, new ArrayList(Arrays.asList("")), null, null));
                     process.addFlowElement(createUserTask(CustomFlowTypeEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, Objects.nonNull(flowTaskLink.getLast().getTask().getContent()) && !Objects.equals(flowTaskLink.getLast().getTask().getContent(), "") ? flowTaskLink.getLast().getTask().getContent() : DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK_NAME, DefaultInstanceConvertToMultiInstance.APPROVE_ID_EXP));
                     break;
                 case PROCESS://过程节点
@@ -895,6 +895,10 @@ public class ActivitiServiceImpl implements ActivitiService {
                     CustomFlowPropertyDto customFlowPropertyDto = customFlowDto.getProperty();
                     List<String> approveUserIds = new ArrayList<>();//审批用户
                     List<String> copyUserIds = new ArrayList<>();//抄送用户
+                    //抄送用户
+                    if (Objects.nonNull(customFlowPropertyDto.getCopyForUsers()) && customFlowPropertyDto.getCopyForUsers().size() > 0) {
+                        copyUserIds.addAll(customFlowPropertyDto.getCopyForUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
+                    }
                     if (Objects.nonNull(customFlowDto.getProperty())) {
                         //选人属性
                         switch (customFlowPropertyDto.getApproveUserType()) {
@@ -903,20 +907,15 @@ public class ActivitiServiceImpl implements ActivitiService {
                                     approveUserIds.addAll(customFlowPropertyDto.getApproveUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
                                 }
                                 break;
-                            case ROLE://角色
-                                if (Objects.nonNull(customFlowPropertyDto.getApproveRoles()) && customFlowPropertyDto.getApproveRoles().size() > 0) {
-                                    List<SysUser> sysUserList = sysUserService.findByRoleIds(customFlowPropertyDto.getApproveRoles().stream().map(x -> x.getId()).collect(Collectors.toList()));
-                                    if (Objects.isNull(sysUserList) || sysUserList.size() == 0) {
-                                        throw ExceptionResultEnum.ERROR.exception(customFlowPropertyDto.getApproveRoles().stream().map(x -> x.getName()).collect(Collectors.toList()) + "角色下未找到用户");
-                                    }
-                                    approveUserIds.addAll(sysUserList.stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
-                                }
-                                break;
                             default:
                                 break;
                         }
                         ApproveUserResult approveUserResult = sysUserService.findByIds(approveUserIds.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
-                        agginessMap.put(node.getTask().getFlowTaskId(), new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, approveUserIds, node.getTask().getProperty().getApproveUserType(), node.getTask().getProperty().getMultipleUserApproveType(), node.getTask().getProperty().getRejectType(), node.getTask().getProperty().getRejectResubmitType(), approveUserResult.getPendApproveUsers()));
+                        ApproveUserResult approveUserResultCopyUser = null;
+                        if (copyUserIds.size() > 0) {
+                            approveUserResultCopyUser = sysUserService.findByIds(copyUserIds.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
+                        }
+                        agginessMap.put(node.getTask().getFlowTaskId(), new CustomFlowVarDto(DefaultInstanceConvertToMultiInstance.DEFAULT_ASSIGNEE_LIST + i, approveUserIds, node.getTask().getProperty().getApproveUserType(), node.getTask().getProperty().getMultipleUserApproveType(), node.getTask().getProperty().getRejectType(), node.getTask().getProperty().getRejectResubmitType(), approveUserResult.getPendApproveUsers(), copyUserIds, Objects.nonNull(approveUserResultCopyUser) ? approveUserResultCopyUser.getPendApproveUsers() : null));
                         if (Objects.nonNull(customFlowPropertyDto.getRejectType()) && !Objects.equals(customFlowPropertyDto.getRejectType(), "")) {
                             //驳回属性
                             switch (customFlowPropertyDto.getRejectType()) {
@@ -1014,10 +1013,6 @@ public class ActivitiServiceImpl implements ActivitiService {
                                     break;
                             }
                         }
-                        //抄送用户
-                        if (Objects.nonNull(customFlowPropertyDto.getCopyForUsers())) {
-                            copyUserIds.addAll(customFlowPropertyDto.getCopyForUsers().stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList()));
-                        }
                     }
                     process.addFlowElement(createUserTask(CustomFlowTypeEnum.USER_TASK.getId() + i, Objects.nonNull(customFlowDto.getContent()) && !Objects.equals(customFlowDto.getContent(), "") ? customFlowDto.getContent() : DefaultInstanceConvertToMultiInstance.USER_TASK_APPROVE_NAME, approveUserIds, customFlowPropertyDto.getMultipleUserApproveType()));
                     break;
@@ -1242,7 +1237,7 @@ public class ActivitiServiceImpl implements ActivitiService {
         Map<String, CustomFlowVarDto> agginessMap = (Map<String, CustomFlowVarDto>) flowProcessVarMap.get(SystemConstant.AGGINESS_MAP);
         List<String> approveUserIds = new ArrayList(Arrays.asList(String.valueOf(approveId)));
         ApproveUserResult approveUserResult = sysUserService.findByIds(approveUserIds.stream().map(x -> SystemConstant.convertIdToLong(x)).collect(Collectors.toList()));
-        agginessMap.put(CustomFlowTypeEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, new CustomFlowVarDto(SystemConstant.APPROVE_ID, approveUserIds, approveUserResult.getPendApproveUsers()));
+        agginessMap.put(CustomFlowTypeEnum.USER_TASK.getId() + DefaultInstanceConvertToMultiInstance.DEFAULT_USER_TASK, new CustomFlowVarDto(SystemConstant.APPROVE_ID, approveUserIds, approveUserResult.getPendApproveUsers(), null, null));
         flowProcessVarMap.put(SystemConstant.AGGINESS_MAP, agginessMap);
 
         map.computeIfAbsent(SystemConstant.ID, v -> tfCustomFlow.getFlowKey());

+ 6 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -85,9 +85,9 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public IPage<PrintPlanResult> printPlanPage(Long schoolId, Long semesterId, List<Long> printPlanIdList, PrintPlanStatusEnum status, Long startTime, Long endTime, int pageNumber, int pageSize) {
+    public IPage<PrintPlanResult> printPlanPage(Long schoolId, Long semesterId, Long examId, List<Long> printPlanIdList, PrintPlanStatusEnum status, Long startTime, Long endTime, int pageNumber, int pageSize) {
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
-        IPage<PrintPlanResult> page = examPrintPlanMapper.findPrintPlanPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, printPlanIdList, status, startTime, endTime, orgIds);
+        IPage<PrintPlanResult> page = examPrintPlanMapper.findPrintPlanPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, printPlanIdList, status, startTime, endTime, orgIds);
         List<PrintPlanResult> list = page.getRecords();
         for (PrintPlanResult printPlanResult : list) {
             List<Map> variableContent = JSONObject.parseArray(printPlanResult.getVariableContentTemp(), Map.class);
@@ -105,10 +105,10 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public IPage<PrintPlanResult> printPlanSyncPage(Long schoolId,Long semesterId, Long printPlanId, Long startTime, Long endTime, int pageNumber, int pageSize) {
+    public IPage<PrintPlanResult> printPlanSyncPage(Long schoolId, Long semesterId, Long printPlanId, Long startTime, Long endTime, int pageNumber, int pageSize) {
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         String[] status = {PrintPlanStatusEnum.PRINT_FINISH.name(), PrintPlanStatusEnum.END.name()};
-        IPage<PrintPlanResult> page = examPrintPlanMapper.findPrintPlanSyncPage(new Page<>(pageNumber, pageSize), schoolId,semesterId, status, printPlanId, startTime, endTime, orgIds);
+        IPage<PrintPlanResult> page = examPrintPlanMapper.findPrintPlanSyncPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, status, printPlanId, startTime, endTime, orgIds);
         List<PrintPlanResult> list = page.getRecords();
         for (PrintPlanResult printPlanResult : list) {
             List<Map> variableContent = JSONObject.parseArray(printPlanResult.getVariableContentTemp(), Map.class);
@@ -457,11 +457,11 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     @Override
     public ExamPrintPlan findByExamDetailId(Long examDetailId) {
         ExamDetail examDetail = examDetailService.getById(examDetailId);
-        if (Objects.isNull(examDetail)){
+        if (Objects.isNull(examDetail)) {
             throw ExceptionResultEnum.ERROR.exception("未找到印刷考场数据");
         }
         ExamPrintPlan examPrintPlan = this.getById(examDetail.getPrintPlanId());
-        if (Objects.isNull(examPrintPlan)){
+        if (Objects.isNull(examPrintPlan)) {
             throw ExceptionResultEnum.ERROR.exception("未找到印刷计划");
         }
         return examPrintPlan;

+ 6 - 17
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -266,22 +266,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
             if (Objects.nonNull(examTask.getUserId())) {
                 examStatusEnum = ExamStatusEnum.STAGE;
-//                Map<String, Object> map = new HashMap<>();
-//                map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
-//                map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-//                ProcessInstance processInstance = activitiService.flowStart(map);
-//                flowId = SystemConstant.convertIdToLong(processInstance.getId());
-//                Map<String, Object> texamTaskFlowMap = new HashMap<>();
-//                texamTaskFlowMap.computeIfAbsent(SystemConstant.SCHOOL_ID, v -> examTask.getSchoolId());
-//                texamTaskFlowMap.computeIfAbsent(SystemConstant.EXAM_TASK_ID, v -> examTask.getId());
-//                texamTaskFlowMap.computeIfAbsent(SystemConstant.FLOW_ID, v -> SystemConstant.convertIdToLong(processInstance.getId()));
-//                tExamTaskFlowService.saveOrUpdate(texamTaskFlowMap);
-
                 Map<String, Object> map = new HashMap<>();
                 map.computeIfAbsent(SystemConstant.OBJECT_ID, v -> examTask.getId());
                 map.computeIfAbsent(SystemConstant.FLOW_TYPE, v -> TFCustomTypeEnum.ELECTRON_FLOW);
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> examTask.getUserId());
                 map = activitiService.customFlowStart(map);
+                flowId = SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ID));
                 tfFlowJoinService.saveOrUpdate(map);
             }
         }
@@ -425,21 +415,21 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             Long teachingRoomId = basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, courseCode);
             examTask.setOrgId(teachingRoomId);
             examTask.setTeachingRoomId(teachingRoomId);
-            Map<String, Object> map = new HashMap<>();
-            map.computeIfAbsent(SystemConstant.OBJECT_ID, v -> examTask.getId());
-            map.computeIfAbsent(SystemConstant.FLOW_TYPE, v -> TFCustomTypeEnum.ELECTRON_FLOW);
-            map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> examTask.getUserId());
             if (examTask.getUserId() == null) {
                 examTask.setStatus(ExamStatusEnum.DRAFT);
             } else if (examTask.getReview()) {
                 examTask.setStatus(ExamStatusEnum.STAGE);
+                Map<String, Object> map = new HashMap<>();
+                map.computeIfAbsent(SystemConstant.OBJECT_ID, v -> examTask.getId());
+                map.computeIfAbsent(SystemConstant.FLOW_TYPE, v -> TFCustomTypeEnum.ELECTRON_FLOW);
+                map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> examTask.getUserId());
                 map = activitiService.customFlowStart(map);
                 examTask.setFlowId(SystemConstant.convertIdToLong((String) map.get(SystemConstant.FLOW_ID)));
+                tfFlowJoinService.saveOrUpdate(map);
             } else if (!examTask.getReview()) {
                 examTask.setStatus(ExamStatusEnum.STAGE);
             }
             this.save(examTask);
-            tfFlowJoinService.saveOrUpdate(map);
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             if (e instanceof ActivitiObjectNotFoundException) {
@@ -730,7 +720,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
         this.saveBatch(list);
         for (ExamTask examTask : list) {
-            examTask.setReview(false);
             if (examTask.getReview() && Objects.nonNull(examTask.getUserId()) && Objects.isNull(examTask.getFlowId())) {
                 Map<String, Object> map = new HashMap<>();
                 map.computeIfAbsent(SystemConstant.OBJECT_ID, v -> examTask.getId());

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

@@ -8,6 +8,7 @@ import com.qmth.distributed.print.business.entity.TFFlowLog;
 import com.qmth.distributed.print.business.mapper.TFFlowLogMapper;
 import com.qmth.distributed.print.business.service.TFFlowLogService;
 import com.qmth.teachcloud.common.enums.FlowApproveOperationEnum;
+import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.SysUserService;
 import org.springframework.stereotype.Service;
 
@@ -31,6 +32,8 @@ public class TFFlowLogServiceImpl extends ServiceImpl<TFFlowLogMapper, TFFlowLog
     TFFlowLogMapper tfFlowLogMapper;
     @Resource
     SysUserService sysUserService;
+    @Resource
+    SysOrgService sysOrgService;
 
     /**
      * 根据流程id查询流程状态
@@ -72,8 +75,7 @@ public class TFFlowLogServiceImpl extends ServiceImpl<TFFlowLogMapper, TFFlowLog
     public List<ApprovalInfo> findApprovalInfoByFlowId(Long flowId) {
         List<ApprovalInfo> approvalInfoList = new ArrayList<>();
         List<TFFlowLog> tfFlowLogList = this.list(new QueryWrapper<TFFlowLog>().lambda()
-                .eq(TFFlowLog::getFlowId,flowId)
-                .ne(TFFlowLog::getApproveOperation,FlowApproveOperationEnum.SUBMIT));
+                .eq(TFFlowLog::getFlowId,flowId));
         for (TFFlowLog tfFlowLog : tfFlowLogList) {
             ApprovalInfo approvalInfo = new ApprovalInfo();
             Long approveId = tfFlowLog.getApproveId();
@@ -81,6 +83,8 @@ public class TFFlowLogServiceImpl extends ServiceImpl<TFFlowLogMapper, TFFlowLog
             approvalInfo.setApproveName(sysUserService.getById(approveId).getRealName());
             approvalInfo.setTime(tfFlowLog.getUpdateTime());
             approvalInfo.setRemark(tfFlowLog.getApproveRemark());
+            approvalInfo.setApproveOrgName(sysOrgService.getById(sysUserService.getById(approveId).getOrgId()).getName());
+            approvalInfo.setApproveType(tfFlowLog.getApproveOperation());
             approvalInfoList.add(approvalInfo);
         }
         return approvalInfoList;

+ 11 - 4
distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml

@@ -32,7 +32,7 @@
             resultType="com.qmth.distributed.print.business.bean.result.PrintPlanResult">
         SELECT
             a.id,
-            a.semester_id semesterId,
+            c.id semesterId,
             c.name semesterName,
             a.name,
             a.exam_start_time AS examStartTime,
@@ -57,19 +57,23 @@
             b.real_name AS createName,
             a.third_relate_id thirdRelateId,
             a.third_relate_name thirdRelateName,
-            a.sync_status syncStatus
+            a.sync_status syncStatus,
+            a.exam_id as examId,
+            d.name as examName
         FROM
             exam_print_plan a
                 LEFT JOIN
             sys_user b on a.create_id = b.id
                 LEFT JOIN
-            basic_semester c on a.semester_id = c.id
+            basic_exam d on a.exam_id = d.id
+                LEFT JOIN
+            basic_semester c on d.semester_id = c.id
         <where>
             <if test="schoolId != null and schoolId != ''">
                 and a.school_id = #{schoolId}
             </if>
             <if test="semesterId != null and semesterId != ''">
-                and a.semester_id = #{semesterId}
+                and c.id = #{semesterId}
             </if>
             <if test="printPlanIdList != null and printPlanIdList.size() > 0">
                 and a.id IN
@@ -86,6 +90,9 @@
             <if test="endTime != null and endTime != ''">
                 and #{endTime} >= a.create_time
             </if>
+            <if test="examId != null and examId != ''">
+                and a.exam_id = #{examId}
+            </if>
             <if test="orgIds != null">
                 AND b.org_id IN
                 <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">

+ 5 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -77,6 +77,7 @@ public class ExamPrintPlanController {
     @RequestMapping(value = "/list", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result findPrintPlanPage(@ApiParam(value = "学期ID") @RequestParam(required = false) Long semesterId,
+                                    @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
                                     @ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
                                     @ApiParam(value = "印刷计划状态") @RequestParam(required = false) PrintPlanStatusEnum status,
                                     @ApiParam(value = "计划创建时间段开始时间") @RequestParam(required = false) Long startTime,
@@ -89,7 +90,7 @@ public class ExamPrintPlanController {
             printPlanIdList = new ArrayList<>();
         }
         List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
-        return ResultUtil.ok(examPrintPlanService.printPlanPage(schoolId,semesterId, idList, status, startTime, endTime, pageNumber, pageSize));
+        return ResultUtil.ok(examPrintPlanService.printPlanPage(schoolId, semesterId, SystemConstant.convertIdToLong(examId), idList, status, startTime, endTime, pageNumber, pageSize));
     }
 
     @ApiOperation(value = "印刷计划模糊查询")
@@ -200,7 +201,7 @@ public class ExamPrintPlanController {
      * @param examPlace
      * @param examStartTime
      * @param examEndTime
-     * @param printHouseId 印刷室id
+     * @param printHouseId  印刷室id
      * @param pageNumber
      * @param pageSize
      * @return
@@ -220,7 +221,7 @@ public class ExamPrintPlanController {
                            @RequestParam(value = "printHouseId", required = false) String printHouseId,
                            @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                            @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        IPage<PrintTaskDto> examTasks = examDetailService.listPrintTask(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime,SystemConstant.convertIdToLong(printHouseId), pageNumber, pageSize);
+        IPage<PrintTaskDto> examTasks = examDetailService.listPrintTask(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, SystemConstant.convertIdToLong(printHouseId), pageNumber, pageSize);
         return ResultUtil.ok(examTasks);
     }
 
@@ -290,7 +291,7 @@ public class ExamPrintPlanController {
                                 @RequestParam(value = "printStartTime", required = false) Long printStartTime,
                                 @RequestParam(value = "printEndTime", required = false) Long printEndTime,
                                 @RequestParam(value = "printHouseId", required = false) String printHouseId) {
-        PrintTaskTotalDto printTaskTotalDto = examDetailService.taskTotalData(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime,SystemConstant.convertIdToLong(printHouseId));
+        PrintTaskTotalDto printTaskTotalDto = examDetailService.taskTotalData(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, SystemConstant.convertIdToLong(printHouseId));
         return ResultUtil.ok(printTaskTotalDto);
     }
 
@@ -351,6 +352,5 @@ public class ExamPrintPlanController {
         boolean isSuccess = examDetailService.taskNormal(examDetail);
         return ResultUtil.ok(isSuccess);
     }
-
 }
 

+ 0 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -70,9 +70,6 @@ public class ExamTaskController {
     @Resource
     private ExamTaskDetailService examTaskDetailService;
 
-    @Resource
-    private ExamTaskReviewLogService examTaskReviewLogService;
-
     @Resource
     private BasicAttachmentService basicAttachmentService;
 

+ 6 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/MenuCustomController.java

@@ -151,7 +151,12 @@ public class MenuCustomController {
                 //绑定该角色的用户都需要清除鉴权缓存
                 List<SysUserRole> sysUserRoleList = sysUserRoleService.listByRoleId(l);
                 for (SysUserRole s : sysUserRoleList) {
-                    commonService.removeUserInfo(s.getUserId(), true);
+                    SysUser user = commonCacheService.userCache(s.getUserId());
+                    if (Objects.nonNull(user)) {
+                        commonService.removeUserInfo(s.getUserId(), true);
+                    } else {
+                        sysUserRoleService.removeById(s);
+                    }
                 }
             }
         }

+ 4 - 5
distributed-print/src/main/java/com/qmth/distributed/print/api/TFCustomFlowController.java

@@ -92,7 +92,8 @@ public class TFCustomFlowController {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        customFlowSaveDto.setSchoolAndOrgInfo(sysUser.getSchoolId(), sysUser.getOrgId());
+        Long schoolId = Objects.isNull(sysUser.getSchoolId()) ? SystemConstant.getHeadOrUserSchoolId() : sysUser.getSchoolId();
+        customFlowSaveDto.setSchoolAndOrgInfo(schoolId, sysUser.getOrgId());
         String flowBpmnId = MD5Util.encoder(customFlowSaveDto.toString());
         BasicSchool basicSchool = commonCacheService.schoolCache(customFlowSaveDto.getSchoolId());
         flowBpmnId = basicSchool.getCode() + "_" + flowBpmnId;
@@ -172,8 +173,7 @@ public class TFCustomFlowController {
                                   @ApiParam(value = "提交人名称", required = false) @RequestParam(required = false) String pendApproveUserName,
                                   @ApiParam(value = "页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                                   @ApiParam(value = "数量", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(tfFlowApproveService.findApproveList(new Page<>(pageNumber, pageSize), status, createUserName, SystemConstant.convertIdToLong(teachingRoomId), startTime, endTime, pendApproveUserName, sysUser.getSchoolId(), null));
+        return ResultUtil.ok(tfFlowApproveService.findApproveList(new Page<>(pageNumber, pageSize), status, createUserName, SystemConstant.convertIdToLong(teachingRoomId), startTime, endTime, pendApproveUserName, SystemConstant.getHeadOrUserSchoolId(), null));
     }
 
     @ApiOperation(value = "流程列表")
@@ -182,8 +182,7 @@ public class TFCustomFlowController {
     public Result list(@ApiParam(value = "流程名称", required = false) @RequestParam(required = false) String name,
                        @ApiParam(value = "页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @ApiParam(value = "数量", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(tfCustomFlowService.list(new Page<>(pageNumber, pageSize), name, sysUser.getSchoolId(), null));
+        return ResultUtil.ok(tfCustomFlowService.list(new Page<>(pageNumber, pageSize), name, SystemConstant.getHeadOrUserSchoolId(), null));
     }
 
     @ApiOperation(value = "流程编辑")

+ 39 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/SysUserResult.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.common.bean.result;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
@@ -23,6 +25,19 @@ public class SysUserResult implements Serializable {
     @ApiModelProperty(value = "电话号码")
     private String mobileNumber;
 
+    @ApiModelProperty(value = "机构id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @JSONField(serialize = false)
+    @JsonIgnore
+    private Long orgId;
+
+    @ApiModelProperty(value = "角色id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long roleId;
+
+    @ApiModelProperty(value = "角色名称")
+    private String roleName;
+
     public Long getId() {
         return id;
     }
@@ -46,4 +61,28 @@ public class SysUserResult implements Serializable {
     public void setMobileNumber(String mobileNumber) {
         this.mobileNumber = mobileNumber;
     }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getRoleId() {
+        return roleId;
+    }
+
+    public void setRoleId(Long roleId) {
+        this.roleId = roleId;
+    }
+
+    public String getRoleName() {
+        return roleName;
+    }
+
+    public void setRoleName(String roleName) {
+        this.roleName = roleName;
+    }
 }

+ 8 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java

@@ -7,6 +7,7 @@ import com.qmth.teachcloud.common.bean.dto.BlurryUserDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
 import com.qmth.teachcloud.common.bean.dto.VerifyCodeCheckDto;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.bean.result.UserRoleNameResult;
 import com.qmth.teachcloud.common.entity.SysUser;
 import org.apache.ibatis.annotations.Param;
@@ -99,4 +100,11 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @return
      */
     List<SysUser> findByRoleIds(@Param("roleIds") List<Long> roleIds);
+
+    /**
+     * 根据学校id查找用户
+     * @param schoolId 学校id
+     * @return 用户集合
+     */
+    List<SysUserResult> findSysUserResultBySchoolId(@Param("schoolId") Long schoolId);
 }

+ 7 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -10,6 +10,7 @@ import com.qmth.teachcloud.common.bean.params.UserPushParam;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
 import com.qmth.teachcloud.common.bean.result.LoginResult;
 import com.qmth.teachcloud.common.bean.result.SyncCountResult;
+import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.bean.result.UserRoleNameResult;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.FlowApproveNameEnum;
@@ -230,4 +231,10 @@ public interface SysUserService extends IService<SysUser> {
      * @return true:是管理员权限、false:不是
      */
     boolean isAdminDataAuth(Long userId);
+
+    /**
+     * 查找机构树下所有用户集合
+     * @return 用户集合
+     */
+    List<SysUserResult> findSysUserResultList();
 }

+ 2 - 9
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -61,19 +61,12 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     @Override
     public List<OrgDto> listOrgTree() {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        List<SysUserResult> sysUserResultList = sysUserService.findSysUserResultList();
         List<OrgDto> orgList = this.listOrgAll(schoolId);
         Map<Long, OrgDto> map = orgList.stream()
                 .peek(e -> {
                     // 加入机构下所有人员查询
-                    List<SysUser> sysUserList = sysUserService.list(new QueryWrapper<SysUser>().lambda()
-                            .eq(SysUser::getSchoolId,schoolId)
-                            .eq(SysUser::getOrgId,e.getId()));
-
-                    e.setSysUserList(sysUserList.stream().flatMap(f -> {
-                        SysUserResult sysUserResult = new SysUserResult();
-                        BeanUtils.copyProperties(f,sysUserResult);
-                        return Stream.of(sysUserResult);
-                    }).collect(Collectors.toList()));
+                    e.setSysUserList(sysUserResultList.stream().filter(f -> f.getOrgId().equals(e.getId())).collect(Collectors.toList()));
                 })
                 .collect(Collectors.toMap(OrgDto::getId, Function.identity(), (dto1, dto2) -> dto1));
 

+ 7 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -19,10 +19,7 @@ import com.qmth.teachcloud.common.bean.dto.excel.SysUserImportDto;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.bean.params.UserPushParam;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
-import com.qmth.teachcloud.common.bean.result.LoginResult;
-import com.qmth.teachcloud.common.bean.result.SyncCountResult;
-import com.qmth.teachcloud.common.bean.result.UserBatchDisposeResult;
-import com.qmth.teachcloud.common.bean.result.UserRoleNameResult;
+import com.qmth.teachcloud.common.bean.result.*;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -1084,6 +1081,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return result;
     }
 
+    @Override
+    public List<SysUserResult> findSysUserResultList() {
+        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
+        return this.baseMapper.findSysUserResultBySchoolId(schoolId);
+    }
+
     /**
      * 批量处理用户信息帮助类
      *

+ 23 - 0
teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

@@ -273,4 +273,27 @@
         </where>
         ORDER BY update_time DESC
     </select>
+
+    <select id="findSysUserResultBySchoolId" resultType="com.qmth.teachcloud.common.bean.result.SysUserResult">
+        SELECT
+            su.id AS id,
+            su.real_name AS realName,
+            su.mobile_number AS mobileNumber,
+            so.id AS orgId,
+            sr.id AS roleId,
+            sr.name AS roleName
+        FROM
+            sys_user su
+                LEFT JOIN
+            sys_user_role sur ON su.id = sur.user_id
+                LEFT JOIN
+            sys_role sr ON sur.role_id = sr.id
+                LEFT JOIN
+            sys_org so ON su.org_id = so.id
+        <where>
+            <if test="schoolId != null and schoolId != ''">
+                AND su.school_id = #{schoolId}
+            </if>
+        </where>
+    </select>
 </mapper>