Browse Source

广药子流程update

wangliang 3 years ago
parent
commit
d4df2c5348

+ 200 - 55
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.reflect.TypeToken;
-import com.google.gson.Gson;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.result.FlowApproveResult;
 import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
@@ -23,7 +21,6 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.service.SysUserService;
-import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -224,23 +221,25 @@ public class ActivitiServiceImpl implements ActivitiService {
                     }
                     FlowApproveSetupEnum setupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
                     //广东医科大学流程
-                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                    if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
+                            || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
                         if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题
-                            assignFlowEnd(tfFlowApproveLog, sysUser);
+                            this.assignFlowEnd(tfFlowApproveLog, sysUser);
                         } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任
-                            directorFlowEnd(tfFlowApproveLog, sysUser);
+                            this.directorFlowEnd(tfFlowApproveLog, sysUser);
                         } else if (setupEnum == FlowApproveSetupEnum.SECOND_APPROVE) {//院长
-                            tfFlowApproveLog.setSecondApproveId(sysUser.getId());
-                            tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.END);
-                            tfFlowApproveLog.setSecondApproveRemark(FlowApproveOperationEnum.END.getTitle());
+                            this.presidentFlowEnd(tfFlowApproveLog, sysUser);
+                        } else if (setupEnum == FlowApproveSetupEnum.THREE_APPROVE) {//命题
+                            this.teacherFlowEnd(tfFlowApproveLog, sysUser);
+                        } else if (setupEnum == FlowApproveSetupEnum.FOUR_APPROVE) {//印刷员
+                            this.printFlowEnd(tfFlowApproveLog, sysUser);
                         }
-                    }
-                    //江西中医药大学
+                    }//江西中医药大学
                     else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
                         if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题
-                            assignFlowEnd(tfFlowApproveLog, sysUser);
+                            this.assignFlowEnd(tfFlowApproveLog, sysUser);
                         } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任
-                            directorFlowEnd(tfFlowApproveLog, sysUser);
+                            this.directorFlowEnd(tfFlowApproveLog, sysUser);
                         }
                     } else {
                         throw ExceptionResultEnum.ERROR.exception("未配置流程学校code");
@@ -442,7 +441,7 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Override
     public Boolean flowDelete(Long id) {
         TFFlow tfFlow = tfFlowService.getById(id);
-        List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().processDefinitionId(tfFlow.getActFlowId()).processDefinitionKey(SystemConstant.GDYKDX_FLOW_KEY).list();
+        List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().processDefinitionId(tfFlow.getActFlowId()).processDefinitionKey(tfFlow.getFlowKey()).list();
         if (Objects.nonNull(processInstanceList) && processInstanceList.size() > 0) {
             throw ExceptionResultEnum.ERROR.exception("有在途的流程,无法删除!");
         } else {
@@ -486,13 +485,13 @@ public class ActivitiServiceImpl implements ActivitiService {
             if (Objects.nonNull(flowApproveResultIPage) && flowApproveResultIPage.getRecords().size() > 0) {
                 flowApproveResult = flowApproveResultIPage.getRecords().get(0);
             }
-            List<ApproveUserResult> approveUserMtResult = null;
+            Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
+            List<FlowTaskResult> taskTaskAll = getTaskAll(task.getProcessInstanceId());
             switch (tfFlowApprove.getSetup()) {
                 case -1:
-                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
                     if (Objects.nonNull(flowApproveResult.getStartId())) {
                         //获取命题已审
-                        approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                        List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
                     }
                     if (Objects.nonNull(flowApproveResult.getPrimaryApproveId())) {
@@ -500,13 +499,30 @@ public class ActivitiServiceImpl implements ActivitiService {
                         List<ApproveUserResult> approveUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, approveUserDirectorList));
                     }
+                    if (Objects.nonNull(flowApproveResult.getSecondApproveId())) {
+                        //获取院长已审
+                        List<ApproveUserResult> approveUserPresidentList = sysUserService.findById(flowApproveResult.getSecondApproveId());
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, approveUserPresidentList));
+                    }
+                    if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                        if (Objects.nonNull(flowApproveResult.getStartApproveId())) {
+                            //获取命题已审
+                            List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getStartApproveId());
+                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), true, approveUserTeacherResult));
+                        }
+                        if (Objects.nonNull(flowApproveResult.getFourApproveId())) {
+                            //获取印刷员已审
+                            List<ApproveUserResult> approveUserPrintResult = sysUserService.findById(flowApproveResult.getFourApproveId());
+                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), true, approveUserPrintResult));
+                        }
+                    }
                     break;
                 case 0:
-                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
                     //广东医科大学流程
-                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                    if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
+                            || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
                         //获取命题已审
-                        approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                        List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
                         //获取主任已审
                         List<ApproveUserResult> approveUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
@@ -514,11 +530,23 @@ public class ActivitiServiceImpl implements ActivitiService {
                         //获取院长已审
                         List<ApproveUserResult> approveUserPresidentList = sysUserService.findById(flowApproveResult.getSecondApproveId());
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, approveUserPresidentList));
-                    }
-                    //江西中医药大学
+
+                        if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                            if (Objects.nonNull(flowApproveResult.getStartApproveId())) {
+                                //获取命题已审
+                                List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getStartApproveId());
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), true, approveUserTeacherResult));
+                            }
+                            if (Objects.nonNull(flowApproveResult.getFourApproveId())) {
+                                //获取印刷员已审
+                                List<ApproveUserResult> approveUserPrintResult = sysUserService.findById(flowApproveResult.getFourApproveId());
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), true, approveUserPrintResult));
+                            }
+                        }
+                    }//江西中医药大学
                     else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
                         //获取命题已审
-                        approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                        List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
                         //获取主任已审
                         List<ApproveUserResult> approveUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
@@ -529,14 +557,18 @@ public class ActivitiServiceImpl implements ActivitiService {
                     break;
                 case 1:
                     if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
-                        flowTaskApprovePeopleResultList = getApproveUserAll(examTask.getCourseCode(), flowTaskApprovePeopleResultList, Objects.nonNull(processDefinitionEntity) ? processDefinitionEntity.getKey() : null);
+                        flowTaskApprovePeopleResultList = getApproveUserAll(examTask.getCourseCode(), flowTaskApprovePeopleResultList, Objects.nonNull(processDefinitionEntity) ? processDefinitionEntity.getKey() : null, task.getProcessInstanceId(), taskTaskAll);
                     } else {
                         //广东医科大学流程
-                        if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                        if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
+                                || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
                             flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, new ArrayList<>()));
                             flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, new ArrayList<>()));
-                        }
-                        //江西中医药大学
+                            if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), false, new ArrayList<>()));
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), false, new ArrayList<>()));
+                            }
+                        }//江西中医药大学
                         else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
                             flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, new ArrayList<>()));
                         } else {
@@ -545,11 +577,11 @@ public class ActivitiServiceImpl implements ActivitiService {
                     }
                     break;
                 case 2:
-                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
                     //广东医科大学流程
-                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                    if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
+                            || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
                         //获取命题已审
-                        approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                        List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
 
                         if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
@@ -559,27 +591,71 @@ public class ActivitiServiceImpl implements ActivitiService {
                                 List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(Arrays.asList(sysUser.getOrgId()), null);
                                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, sysUserPresidentList));
                             }
+                            if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                                //获取命题审批人
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), false, approveUserMtResult));
+                                //获取印刷员审批人
+                                List<ApproveUserResult> sysUserPrintList = this.findByPrintApprove(task.getProcessInstanceId());
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), false, sysUserPrintList));
+                            }
                         } else {
                             flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, new ArrayList<>()));
+                            if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), false, new ArrayList<>()));
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), false, new ArrayList<>()));
+                            }
                         }
-                    }
-                    //江西中医药大学
+                    }//江西中医药大学
                     else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
                         //获取命题已审
-                        approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                        List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
                     } else {
                         throw ExceptionResultEnum.ERROR.exception("未配置流程学校code");
                     }
                     break;
                 case 3:
-                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
                     //获取命题已审
-                    approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                    List<ApproveUserResult> approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                     flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
                     //获取主任已审
                     List<ApproveUserResult> sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
                     flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
+                    if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                        //获取命题审批人
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), false, approveUserMtResult));
+                        //获取印刷员审批人
+                        List<ApproveUserResult> sysUserPrintList = this.findByPrintApprove(task.getProcessInstanceId());
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), false, sysUserPrintList));
+                    }
+                    break;
+                case 4:
+                    //获取命题已审
+                    approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+                    //获取主任已审
+                    sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
+                    //获取院长已审
+                    List<ApproveUserResult> sysUserPresidentList = sysUserService.findById(flowApproveResult.getSecondApproveId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, sysUserPresidentList));
+                    //获取印刷员审批人
+                    List<ApproveUserResult> sysUserPrintList = this.findByPrintApprove(task.getProcessInstanceId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), false, sysUserPrintList));
+                    break;
+                case 5:
+                    //获取命题已审
+                    approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+                    //获取主任已审
+                    sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
+                    //获取院长已审
+                    sysUserPresidentList = sysUserService.findById(flowApproveResult.getSecondApproveId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, sysUserPresidentList));
+                    //获取命题审核已审
+                    List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getStartApproveId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), true, approveUserTeacherResult));
                     break;
                 default:
                     break;
@@ -591,10 +667,10 @@ public class ActivitiServiceImpl implements ActivitiService {
                 if (Objects.isNull(courseCode) || Objects.equals(courseCode, "")) {
                     throw ExceptionResultEnum.ERROR.exception("课程编码为空");
                 }
-                flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList, SystemConstant.GDYKDX_FLOW_KEY);
+                flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList, SystemConstant.GDYKDX_FLOW_KEY, null, null);
                 flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
             } else if (Objects.equals(basicSchool.getCode(), flowSchoolCodeMap.get(SystemConstant.JXZYY_FLOW_KEY))) {//江西中医药大学
-                flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList, SystemConstant.JXZYY_FLOW_KEY);
+                flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList, SystemConstant.JXZYY_FLOW_KEY, null, null);
                 flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
             } else {
                 throw ExceptionResultEnum.ERROR.exception("未配置流程学校code");
@@ -627,12 +703,14 @@ public class ActivitiServiceImpl implements ActivitiService {
 //        String variableName = null;
         switch (tfFlowApprove.getSetup()) {
             case 1:
+            case 4:
                 if (Objects.nonNull(task) && Objects.nonNull(task.getAssignee()) && Objects.equals(task.getAssignee(), userId)) {
                     throw ExceptionResultEnum.ERROR.exception("不能转给自己");
                 }
                 break;
             case 2:
             case 3:
+            case 5:
                 if (Objects.nonNull(task) && Objects.nonNull(task.getAssignee()) && Objects.equals(task.getAssignee(), userId)) {
                     throw ExceptionResultEnum.ERROR.exception("不能转给自己");
                 } else {
@@ -706,12 +784,12 @@ public class ActivitiServiceImpl implements ActivitiService {
             case 1:
                 List<ApproveUserResult> approveUserResultList = null;
                 //广东医科大学流程
-                if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
+                        || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
                     //获取命题审批人
                     examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
                     approveUserResultList = sysUserService.findByAssignApprove(examTask.getCourseCode(), realName);
-                }
-                //江西中医药大学
+                }//江西中医药大学
                 else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
                     approveUserResultList = sysUserService.findByJxzyyAssignApprove(realName);
                 } else {
@@ -723,7 +801,8 @@ public class ActivitiServiceImpl implements ActivitiService {
                 examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
                 List<ApproveUserResult> sysUserDirectorList = null;
                 //广东医科大学流程
-                if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
+                        || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
                     if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
                         //获取教研室主任审批人
                         sysUserDirectorList = sysUserService.findByDirectorApprove(examTask.getCourseCode(), realName);
@@ -732,8 +811,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                         List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(examTask.getTeachingRoomId(), true, true);
                         sysUserDirectorList = sysUserService.findByRootApprove(null, sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toList()), null, FlowApproveNameEnum.DIRECTOR);
                     }
-                }
-                //江西中医药大学
+                }//江西中医药大学
                 else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
                     //获取教研室主任审批人
                     sysUserDirectorList = sysUserService.findByJxzyyDirectorApprove(realName, FlowApproveNameEnum.DIRECTOR);
@@ -757,6 +835,16 @@ public class ActivitiServiceImpl implements ActivitiService {
                 }
                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(sysUserPresidentList));
                 break;
+            case 4:
+                //获取命题审批人
+                approveUserResultList = sysUserService.findByAssignApprove(examTask.getCourseCode(), realName);
+                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(approveUserResultList));
+                break;
+            case 5:
+                //获取印刷员审批人
+                List<ApproveUserResult> approvePrintUserResultList = this.findByPrintApprove(task.getProcessInstanceId());
+                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(approvePrintUserResultList));
+                break;
             default:
                 break;
         }
@@ -797,12 +885,12 @@ public class ActivitiServiceImpl implements ActivitiService {
             switch (tfFlowApprove.getSetup()) {
                 case 1:
                     //广东医科大学流程
-                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                    if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)
+                            || processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
                         //获取教研室主任审批人
                         approveUserResultList = sysUserService.findByRootApprove(null, sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toList()), null, FlowApproveNameEnum.DIRECTOR);
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, approveUserResultList));
-                    }
-                    //江西中医药大学
+                    }//江西中医药大学
                     else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
                         //获取教研室主任审批人
                         approveUserResultList = sysUserService.findByJxzyyDirectorApprove(null, FlowApproveNameEnum.DIRECTOR);
@@ -816,6 +904,16 @@ public class ActivitiServiceImpl implements ActivitiService {
                     approveUserResultList = sysUserService.findByRootApprove(null, sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toList()), null, FlowApproveNameEnum.PRESIDENT);
                     flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, approveUserResultList));
                     break;
+                case 3:
+                    //获取命题审批人
+                    approveUserResultList = sysUserService.findByAssignApprove(examTask.getCourseCode(), null);
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), false, approveUserResultList));
+                    break;
+                case 4:
+                    //获取印刷员审批人
+                    approveUserResultList = this.findByPrintApprove(task.getProcessInstanceId());
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), false, approveUserResultList));
+                    break;
                 default:
                     break;
             }
@@ -864,11 +962,7 @@ public class ActivitiServiceImpl implements ActivitiService {
             List<ExamDetail> examDetailList = examDetailService.list(examDetailQueryWrapper);
             if (Objects.nonNull(examDetailList) && examDetailList.size() > 0) {
                 Set<Long> printHouseIdSet = examDetailList.stream().map(s -> s.getPrintHouseId()).collect(Collectors.toSet());
-                QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
-                sysUserQueryWrapper.lambda().in(SysUser::getOrgId, printHouseIdSet);
-                List<SysUser> sysUserList = sysUserService.list(sysUserQueryWrapper);
-                approveUserResultList = new Gson().fromJson(JacksonUtil.parseJson(sysUserList), new TypeToken<List<ApproveUserResult>>() {
-                }.getType());
+                approveUserResultList = sysUserService.findByOrgIds(printHouseIdSet);
             }
         }
         return approveUserResultList;
@@ -916,11 +1010,18 @@ public class ActivitiServiceImpl implements ActivitiService {
      * @param courseCode
      * @param flowTaskApprovePeopleResultList
      * @param processDefinitionEntity
+     * @param processInstanceId
+     * @param taskTaskAll
      */
-    private List<FlowTaskApprovePeopleResult> getApproveUserAll(String courseCode, List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList, String processDefinitionEntity) {
+    private List<FlowTaskApprovePeopleResult> getApproveUserAll(String courseCode
+            , List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList
+            , String processDefinitionEntity
+            , String processInstanceId
+            , List<FlowTaskResult> taskTaskAll) {
         flowTaskApprovePeopleResultList = Objects.isNull(flowTaskApprovePeopleResultList) ? new LinkedList() : flowTaskApprovePeopleResultList;
         //广东医科大学流程
-        if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+        if (Objects.nonNull(processDefinitionEntity) && (processDefinitionEntity.contains(SystemConstant.GDYKDX_FLOW_KEY)
+                || processDefinitionEntity.contains(SystemConstant.GDYKDX_SUB_FLOW_KEY))) {
             //获取教研室主任审批人
             List<ApproveUserResult> sysUserDirectorList = sysUserService.findByDirectorApprove(courseCode, null);
             flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, sysUserDirectorList));
@@ -928,8 +1029,17 @@ public class ActivitiServiceImpl implements ActivitiService {
             //获取院长审批人
             List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds), null);
             flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, sysUserPresidentList));
-        }
-        //江西中医药大学
+            if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                //获取命题审批人
+                List<ApproveUserResult> sysUserTeacherList = sysUserService.findByAssignApprove(courseCode, null);
+                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), false, sysUserTeacherList));
+                if (Objects.nonNull(processInstanceId)) {
+                    //获取印刷员审批人
+                    List<ApproveUserResult> sysUserPrintList = this.findByPrintApprove(processInstanceId);
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.FOUR_APPROVE.getSetup(), false, sysUserPrintList));
+                }
+            }
+        }//江西中医药大学
         else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.contains(SystemConstant.JXZYY_FLOW_KEY)) {
             //获取教研室主任审批人
             List<ApproveUserResult> sysUserDirectorList = sysUserService.findByJxzyyDirectorApprove(null, FlowApproveNameEnum.DIRECTOR);
@@ -1038,6 +1148,41 @@ public class ActivitiServiceImpl implements ActivitiService {
         tfFlowApproveLog.setPrimaryApproveRemark(FlowApproveOperationEnum.END.getTitle());
     }
 
+    /**
+     * 院长终止
+     *
+     * @param tfFlowApproveLog
+     * @param sysUser
+     */
+    private void presidentFlowEnd(TFFlowApproveLog tfFlowApproveLog, SysUser sysUser) {
+        tfFlowApproveLog.setSecondApproveId(sysUser.getId());
+        tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.END);
+        tfFlowApproveLog.setSecondApproveRemark(FlowApproveOperationEnum.END.getTitle());
+    }
+
+    /**
+     * 命题终止
+     *
+     * @param tfFlowApproveLog
+     * @param sysUser
+     */
+    private void teacherFlowEnd(TFFlowApproveLog tfFlowApproveLog, SysUser sysUser) {
+        tfFlowApproveLog.setStartApproveId(sysUser.getId());
+        tfFlowApproveLog.setThreeApproveRemark(FlowApproveSetupEnum.THREE_APPROVE.getTitle() + FlowApproveOperationEnum.END.getTitle());
+    }
+
+    /**
+     * 印刷员终止
+     *
+     * @param tfFlowApproveLog
+     * @param sysUser
+     */
+    private void printFlowEnd(TFFlowApproveLog tfFlowApproveLog, SysUser sysUser) {
+        tfFlowApproveLog.setFourApproveId(sysUser.getId());
+        tfFlowApproveLog.setFourApproveOperation(FlowApproveOperationEnum.END);
+        tfFlowApproveLog.setFourApproveRemark(FlowApproveOperationEnum.END.getTitle());
+    }
+
     /**
      * 院长审核
      *

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

@@ -66,4 +66,12 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @return 更新条数
      */
     int updateVerifyCodeExpiredTime(@Param("userId") Long userId, @Param("mobileNumber") String mobileNumber);
+
+    /**
+     * 根据机构id获取
+     *
+     * @param orgIdSet
+     * @return
+     */
+    List<ApproveUserResult> findByOrgIds(@Param("orgIdSet") Set<Long> orgIdSet);
 }

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

@@ -179,6 +179,14 @@ public interface SysUserService extends IService<SysUser> {
      */
     public List<ApproveUserResult> findById(Long id);
 
+    /**
+     * 根据机构id获取
+     *
+     * @param orgIdSet
+     * @return
+     */
+    public List<ApproveUserResult> findByOrgIds(Set<Long> orgIdSet);
+
     /**
      * 校验短信验证码
      *

+ 11 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -997,6 +997,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return sysUserMapper.findById(id);
     }
 
+    /**
+     * 根据机构id获取
+     *
+     * @param orgIdSet
+     * @return
+     */
+    @Override
+    public List<ApproveUserResult> findByOrgIds(Set<Long> orgIdSet) {
+        return sysUserMapper.findByOrgIds(orgIdSet);
+    }
+
     @Override
     public void checkSmsCode(Long userId, String mobileNumber, String code) {
         SysConfig value = sysConfigService.getByKey("sys.code.enable");

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

@@ -184,6 +184,18 @@
         </where>
     </select>
 
+    <select id="findByOrgIds" resultType="com.qmth.teachcloud.common.bean.params.ApproveUserResult">
+        <include refid="approveUserResultHeaderCommon" />
+        <where>
+            <if test="orgIdSet != null">
+                AND su.org_id IN
+                <foreach collection="orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
     <select id="findVerifyCodeByUser" resultType="com.qmth.teachcloud.common.bean.dto.VerifyCodeCheckDto">
         SELECT
             id,