wangliang 3 лет назад
Родитель
Сommit
69c1dc8a89
17 измененных файлов с 625 добавлено и 253 удалено
  1. 79 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveByJxzyyListener.java
  2. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java
  3. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/FlowTaskApproveParam.java
  5. 2 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApprove.java
  6. 53 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/FlowSchoolCodeEnum.java
  7. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java
  8. 340 200
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java
  9. 1 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java
  10. 8 15
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  11. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  12. 2 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java
  13. 69 0
      distributed-print/src/main/resources/processes/JxzyydxPaperApprove.bpmn
  14. 2 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  15. 5 5
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FlowApproveSetupEnum.java
  16. 17 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  17. 33 16
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

+ 79 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveByJxzyyListener.java

@@ -0,0 +1,79 @@
+package com.qmth.distributed.print.business.activiti;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.qmth.distributed.print.business.entity.ExamTask;
+import com.qmth.distributed.print.business.entity.TFFlowApprove;
+import com.qmth.distributed.print.business.enums.MessageEnum;
+import com.qmth.distributed.print.business.service.BasicMessageService;
+import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.service.TFFlowApproveService;
+import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.FlowApproveSetupEnum;
+import com.qmth.teachcloud.common.enums.FlowStatusEnum;
+import com.qmth.teachcloud.common.service.SysUserService;
+import com.qmth.teachcloud.common.util.JacksonUtil;
+import org.activiti.engine.delegate.DelegateTask;
+import org.activiti.engine.delegate.TaskListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 教研室主任审批
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/11/10
+ */
+public class DirectorApproveByJxzyyListener implements TaskListener {
+    private final static Logger log = LoggerFactory.getLogger(DirectorApproveByJxzyyListener.class);
+
+    /**
+     * 查找同级和以上人员
+     *
+     * @param delegateTask
+     */
+    @Override
+    public void notify(DelegateTask delegateTask) {
+        SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
+        ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
+        BasicMessageService basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
+        TFFlowApproveService tfFlowApproveService = SpringContextHolder.getBean(TFFlowApproveService.class);
+        List<Long> approveUserIds = (List<Long>) delegateTask.getVariable(SystemConstant.APPROVE_DIRECTOR_USER_IDS);
+        String flowId = delegateTask.getProcessInstanceId();
+        ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(flowId));
+        List<ApproveUserResult> sysUserList = null;
+        if (Objects.nonNull(approveUserIds) && approveUserIds.size() > 0) {
+            List<SysUser> sysUsers = sysUserService.listByIds(approveUserIds);
+            sysUserList = new Gson().fromJson(JacksonUtil.parseJson(sysUsers), new TypeToken<List<ApproveUserResult>>() {
+            }.getType());
+            delegateTask.addCandidateUsers(approveUserIds.stream().map(x -> String.valueOf(x)).collect(Collectors.toList()));
+        } else {
+            sysUserList = sysUserService.findByJxzyyDirectorApprove(null);
+            if (Objects.nonNull(sysUserList) && sysUserList.size() > 0) {
+                List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
+                //添加或签的人员,一人通过即可进入下一环节
+                delegateTask.addCandidateUsers(ids);
+            }
+        }
+        // 发送审核短信
+        TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(Long.valueOf(flowId));
+        if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
+                && tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
+            basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
+        }
+
+        // 驳回短信(驳回给主任)
+        if (tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT)
+                && tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
+            basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
+        }
+    }
+}

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

@@ -12,7 +12,7 @@ import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.FlowGdykdxApproveSetupEnum;
+import com.qmth.teachcloud.common.enums.FlowApproveSetupEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.JacksonUtil;
@@ -66,13 +66,13 @@ public class DirectorApproveListener implements TaskListener {
         // 发送审核短信
         // 发送审核短信
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(Long.valueOf(flowId));
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(Long.valueOf(flowId));
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
-                && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
+                && tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
         }
         }
 
 
         // 驳回短信(驳回给主任)
         // 驳回短信(驳回给主任)
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT)
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT)
-                && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
+                && tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_REJECT);
         }
         }
     }
     }

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

@@ -13,7 +13,7 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.FlowGdykdxApproveSetupEnum;
+import com.qmth.teachcloud.common.enums.FlowApproveSetupEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.service.SysUserService;
 import com.qmth.teachcloud.common.util.JacksonUtil;
 import com.qmth.teachcloud.common.util.JacksonUtil;
@@ -73,7 +73,7 @@ public class PresidentApproveListener implements TaskListener {
         // 发送审核短信
         // 发送审核短信
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(Long.valueOf(flowId));
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(Long.valueOf(flowId));
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
-                && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup())) {
+                && tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.SECOND_APPROVE.getSetup())) {
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);
         }
         }
     }
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/FlowTaskApproveParam.java

@@ -22,7 +22,7 @@ public class FlowTaskApproveParam implements Serializable {
     @NotNull(message = "流程任务id不能为空")
     @NotNull(message = "流程任务id不能为空")
     private String taskId;
     private String taskId;
 
 
-    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    @ApiModelProperty(value = "流程审核操作")
     private FlowApprovePassEnum approvePass;
     private FlowApprovePassEnum approvePass;
 
 
     @ApiModelProperty(value = "流程审核意见")
     @ApiModelProperty(value = "流程审核意见")

+ 2 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApprove.java

@@ -1,15 +1,13 @@
 package com.qmth.distributed.print.business.entity;
 package com.qmth.distributed.print.business.entity;
 
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.enums.FlowModelEnum;
 import com.qmth.distributed.print.business.enums.FlowModelEnum;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.enums.FlowGdykdxApproveSetupEnum;
+import com.qmth.teachcloud.common.enums.FlowApproveSetupEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import com.qmth.teachcloud.common.enums.FlowStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -67,7 +65,7 @@ public class TFFlowApprove extends BaseEntity implements Serializable {
         this.approveId = approveId;
         this.approveId = approveId;
         this.status = status;
         this.status = status;
         insertInfo(userId);
         insertInfo(userId);
-        this.setup = FlowGdykdxApproveSetupEnum.SUBMIT.getSetup();
+        this.setup = FlowApproveSetupEnum.SUBMIT.getSetup();
         this.model = model;
         this.model = model;
     }
     }
 
 

+ 53 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/FlowSchoolCodeEnum.java

@@ -0,0 +1,53 @@
+package com.qmth.distributed.print.business.enums;
+
+import java.util.Objects;
+
+/**
+ * @Description: 学校流程code enum
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2021/11/10
+ */
+public enum FlowSchoolCodeEnum {
+
+//    GDYKDX("广东医科大学", "gdpu"),
+//
+//    JXZYYDX("江西中医药大学", "jxutcm");
+
+    GDYKDX("广东医科大学", "test-school-2"),
+
+    JXZYYDX("江西中医药大学", "test-school-1");
+
+    private String title;
+
+    private String code;
+
+    private FlowSchoolCodeEnum(String title, String code) {
+        this.title = title;
+        this.code = code;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * 状态转换 toName
+     *
+     * @param title
+     * @return
+     */
+    public static String convertToName(String title) {
+        for (FlowSchoolCodeEnum e : FlowSchoolCodeEnum.values()) {
+            if (Objects.equals(title, e.getTitle())) {
+                return e.name();
+            }
+        }
+        return null;
+    }
+}

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ActivitiService.java

@@ -40,6 +40,13 @@ public interface ActivitiService {
      */
      */
     public ProcessInstance startActivity(String processKey, Map<String, Object> map);
     public ProcessInstance startActivity(String processKey, Map<String, Object> map);
 
 
+    /**
+     * 启动流程
+     *
+     * @param map
+     */
+    public ProcessInstance flowStart(Map<String, Object> map);
+
     /**
     /**
      * 流程终止
      * 流程终止
      *
      *

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

@@ -12,9 +12,11 @@ import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.enums.FlowModelEnum;
 import com.qmth.distributed.print.business.enums.FlowModelEnum;
+import com.qmth.distributed.print.business.enums.FlowSchoolCodeEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.*;
@@ -140,6 +142,25 @@ public class ActivitiServiceImpl implements ActivitiService {
         return processInstance;
         return processInstance;
     }
     }
 
 
+    /**
+     * 启动流程
+     *
+     * @param map
+     * @return
+     */
+    @Override
+    public ProcessInstance flowStart(Map<String, Object> map) {
+        BasicSchool basicSchool = (BasicSchool) ServletUtil.getRequestSchool();
+        ProcessInstance processInstance = null;
+        //广东医科大学
+        if (Objects.equals(basicSchool.getCode(), FlowSchoolCodeEnum.GDYKDX.getCode())) {
+            processInstance = this.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+        } else if (Objects.equals(basicSchool.getCode(), FlowSchoolCodeEnum.JXZYYDX.getCode())) {//江西中医药大学
+            processInstance = this.startActivity(SystemConstant.JXZYY_FLOW_KEY, map);
+        }
+        return processInstance;
+    }
+
     /**
     /**
      * 根据流程id直接结束流程
      * 根据流程id直接结束流程
      *
      *
@@ -155,7 +176,7 @@ public class ActivitiServiceImpl implements ActivitiService {
         try {
         try {
             Task task = taskService.createTaskQuery().processInstanceId(flowId).singleResult();
             Task task = taskService.createTaskQuery().processInstanceId(flowId).singleResult();
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-            runtimeService.deleteProcessInstance(flowId, FlowGdykdxApproveSetupEnum.END.getTitle());
+            runtimeService.deleteProcessInstance(flowId, FlowApproveSetupEnum.END.getTitle());
             //流程审批
             //流程审批
             QueryWrapper<TFFlowApprove> tfFlowApproveQueryWrapper = new QueryWrapper<>();
             QueryWrapper<TFFlowApprove> tfFlowApproveQueryWrapper = new QueryWrapper<>();
             tfFlowApproveQueryWrapper.lambda().eq(TFFlowApprove::getFlowId, Long.parseLong(flowId));
             tfFlowApproveQueryWrapper.lambda().eq(TFFlowApprove::getFlowId, Long.parseLong(flowId));
@@ -166,16 +187,16 @@ public class ActivitiServiceImpl implements ActivitiService {
                 tfFlowApprove = new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), sysUser.getId(), FlowStatusEnum.END, sysUser.getId(), count == 0 ? FlowModelEnum.CHOOSE : FlowModelEnum.SYSTEM);
                 tfFlowApprove = new TFFlowApprove(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), sysUser.getId(), FlowStatusEnum.END, sysUser.getId(), count == 0 ? FlowModelEnum.CHOOSE : FlowModelEnum.SYSTEM);
             } else {
             } else {
                 tfFlowApprove.setStatus(FlowStatusEnum.END);
                 tfFlowApprove.setStatus(FlowStatusEnum.END);
-                tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
+                tfFlowApprove.setSetup(FlowApproveSetupEnum.END.getSetup());
                 tfFlowApprove.updateInfo(sysUser.getId());
                 tfFlowApprove.updateInfo(sysUser.getId());
             }
             }
             tfFlowApproveService.saveOrUpdate(tfFlowApprove);
             tfFlowApproveService.saveOrUpdate(tfFlowApprove);
 
 
             //流程流水日志
             //流程流水日志
             ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(flowId));
             ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(flowId));
-            TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId(), FlowGdykdxApproveSetupEnum.END.getTitle());
+            TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId(), FlowApproveSetupEnum.END.getTitle());
             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
-            tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.END.getSetup());
+            tfFlowLog.setApproveSetup(FlowApproveSetupEnum.END.getSetup());
             tfFlowLogService.save(tfFlowLog);
             tfFlowLogService.save(tfFlowLog);
 
 
             if (Objects.nonNull(task)) {
             if (Objects.nonNull(task)) {
@@ -187,33 +208,37 @@ public class ActivitiServiceImpl implements ActivitiService {
                 FlowNode currFlow = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currActivityId);
                 FlowNode currFlow = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currActivityId);
                 if (currFlow instanceof UserTask) {
                 if (currFlow instanceof UserTask) {
                     UserTask userTask = (UserTask) currFlow;
                     UserTask userTask = (UserTask) currFlow;
+                    //流程审批记录
+                    QueryWrapper<TFFlowApproveLog> tfFlowApproveLogQueryWrapper = new QueryWrapper<>();
+                    tfFlowApproveLogQueryWrapper.lambda().eq(TFFlowApproveLog::getFlowId, Long.parseLong(flowId))
+                            .eq(TFFlowApproveLog::getTaskId, examTask.getId());
+                    TFFlowApproveLog tfFlowApproveLog = tfFlowApproveLogService.getOne(tfFlowApproveLogQueryWrapper);
+                    if (Objects.isNull(tfFlowApproveLog)) {
+                        tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId());
+                    }
+                    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)) {
-                        //流程审批记录
-                        QueryWrapper<TFFlowApproveLog> tfFlowApproveLogQueryWrapper = new QueryWrapper<>();
-                        tfFlowApproveLogQueryWrapper.lambda().eq(TFFlowApproveLog::getFlowId, Long.parseLong(flowId))
-                                .eq(TFFlowApproveLog::getTaskId, examTask.getId());
-                        TFFlowApproveLog tfFlowApproveLog = tfFlowApproveLogService.getOne(tfFlowApproveLogQueryWrapper);
-                        if (Objects.isNull(tfFlowApproveLog)) {
-                            tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(flowId), examTask.getId(), sysUser.getId(), sysUser.getId());
-                        }
-
-                        FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
-                        if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题
-                            tfFlowApproveLog.setStartId(sysUser.getId());
-                            tfFlowApproveLog.setRemark(FlowGdykdxApproveSetupEnum.SUBMIT.getTitle() + FlowApproveOperationEnum.END.getTitle());
-                        } else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任
-                            tfFlowApproveLog.setPrimaryApproveId(sysUser.getId());
-                            tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.END);
-                            tfFlowApproveLog.setPrimaryApproveRemark(FlowApproveOperationEnum.END.getTitle());
-                        } else if (setupEnum == FlowGdykdxApproveSetupEnum.SECOND_APPROVE) {//院长
+                        if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题
+                            assignFlowEnd(tfFlowApproveLog, sysUser);
+                        } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任
+                            directorFlowEnd(tfFlowApproveLog, sysUser);
+                        } else if (setupEnum == FlowApproveSetupEnum.SECOND_APPROVE) {//院长
                             tfFlowApproveLog.setSecondApproveId(sysUser.getId());
                             tfFlowApproveLog.setSecondApproveId(sysUser.getId());
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.END);
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.END);
                             tfFlowApproveLog.setSecondApproveRemark(FlowApproveOperationEnum.END.getTitle());
                             tfFlowApproveLog.setSecondApproveRemark(FlowApproveOperationEnum.END.getTitle());
                         }
                         }
-                        tfFlowApproveLog.updateInfo(sysUser.getId());
-                        tfFlowApproveLogService.saveOrUpdate(tfFlowApproveLog);
                     }
                     }
+                    //江西中医药大学
+                    else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
+                        if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题
+                            assignFlowEnd(tfFlowApproveLog, sysUser);
+                        } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任
+                            directorFlowEnd(tfFlowApproveLog, sysUser);
+                        }
+                    }
+                    tfFlowApproveLog.updateInfo(sysUser.getId());
+                    tfFlowApproveLogService.saveOrUpdate(tfFlowApproveLog);
                 }
                 }
             }
             }
 
 
@@ -241,15 +266,10 @@ public class ActivitiServiceImpl implements ActivitiService {
      */
      */
     public void flowApproveStart(Map<String, Object> map) {
     public void flowApproveStart(Map<String, Object> map) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
-        if (Objects.isNull(map.get(SystemConstant.FLOW_ID))) {
-            throw ExceptionResultEnum.ERROR.exception("流程id不能为空");
-        }
+        Optional.ofNullable(map.get(SystemConstant.FLOW_ID)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程id不能为空"));
         Long flowId = Long.parseLong(map.get(SystemConstant.FLOW_ID).toString());
         Long flowId = Long.parseLong(map.get(SystemConstant.FLOW_ID).toString());
 
 
-        if (Objects.isNull(map.get(SystemConstant.FLOW_STATUS))) {
-            throw ExceptionResultEnum.ERROR.exception("流程状态不能为空");
-        }
+        Optional.ofNullable(map.get(SystemConstant.FLOW_STATUS)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程状态不能为空"));
         FlowStatusEnum flowStatusEnum = (FlowStatusEnum) map.get(SystemConstant.FLOW_STATUS);
         FlowStatusEnum flowStatusEnum = (FlowStatusEnum) map.get(SystemConstant.FLOW_STATUS);
 
 
         Long approveId = Objects.nonNull(map.get(SystemConstant.APPROVE_ID)) ? Long.parseLong(String.valueOf(map.get(SystemConstant.APPROVE_ID))) : null;
         Long approveId = Objects.nonNull(map.get(SystemConstant.APPROVE_ID)) ? Long.parseLong(String.valueOf(map.get(SystemConstant.APPROVE_ID))) : null;
@@ -268,9 +288,7 @@ public class ActivitiServiceImpl implements ActivitiService {
     public Map<String, Object> taskApprove(Map<String, Object> map) {
     public Map<String, Object> taskApprove(Map<String, Object> map) {
         String flowTaskId = null;
         String flowTaskId = null;
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        if (Objects.isNull(map.get(SystemConstant.FLOW_TASK_ID))) {
-            throw ExceptionResultEnum.ERROR.exception("流程任务id不能为空");
-        }
+        Optional.ofNullable(map.get(SystemConstant.FLOW_TASK_ID)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务id不能为空"));
         flowTaskId = (String) map.get(SystemConstant.FLOW_TASK_ID);
         flowTaskId = (String) map.get(SystemConstant.FLOW_TASK_ID);
         boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_FLOW_TASK_PREFIX + flowTaskId, SystemConstant.REDIS_LOCK_FLOW_TASK_TIME_OUT);
         boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_FLOW_TASK_PREFIX + flowTaskId, SystemConstant.REDIS_LOCK_FLOW_TASK_TIME_OUT);
         if (!lock) {
         if (!lock) {
@@ -278,9 +296,7 @@ public class ActivitiServiceImpl implements ActivitiService {
         }
         }
         try {
         try {
             Task task = taskService.createTaskQuery().taskId(flowTaskId).singleResult();
             Task task = taskService.createTaskQuery().taskId(flowTaskId).singleResult();
-            if (Objects.isNull(task)) {
-                throw ExceptionResultEnum.ERROR.exception("流程任务为空");
-            }
+            Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空"));
             String processInstanceId = task.getProcessInstanceId();
             String processInstanceId = task.getProcessInstanceId();
             ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(processInstanceId));
             ExamTask examTask = examTaskService.findByFlowId(Long.parseLong(processInstanceId));
 
 
@@ -305,45 +321,20 @@ public class ActivitiServiceImpl implements ActivitiService {
             TFFlowLog tfFlowLog = null;
             TFFlowLog tfFlowLog = null;
             if (currFlow instanceof UserTask) {
             if (currFlow instanceof UserTask) {
                 UserTask userTask = (UserTask) currFlow;
                 UserTask userTask = (UserTask) currFlow;
+                String remark = Objects.nonNull(map.get(SystemConstant.APPROVE_REMARK)) ? map.get(SystemConstant.APPROVE_REMARK).toString() : null;
+                //流程流水日志
+                tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
+                FlowApproveSetupEnum setupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
+                if (Objects.isNull(tfFlowApproveLog)) {
+                    tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId());
+                }
                 //广东医科大学流程
                 //广东医科大学流程
                 if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
                 if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
-                    String remark = Objects.nonNull(map.get(SystemConstant.APPROVE_REMARK)) ? map.get(SystemConstant.APPROVE_REMARK).toString() : null;
-                    //流程流水日志
-                    tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
-                    FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
-                    if (setupEnum == FlowGdykdxApproveSetupEnum.SUBMIT) {//命题提交
-                        flowSubmitVaild(task, sysUser.getId());
-                        if (Objects.isNull(tfFlowApproveLog)) {
-                            tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), Long.parseLong(processInstanceId), examTask.getId(), sysUser.getId(), sysUser.getId());
-                        }
-                        tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup());
-                        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.SUBMIT);
-                        tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
-                        tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
-                        map.computeIfAbsent(SystemConstant.APPROVE_DIRECTOR_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
-                    } else if (setupEnum == FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
-                        flowApproveVaild(task, sysUser.getId(), map);
-                        FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
-                        FlowApproveVariableEnum approve = approvePass == FlowApprovePassEnum.PASS ? FlowApproveVariableEnum.PRIMARY_APPROVE : FlowApproveVariableEnum.PRIMARY_REJECT;
-                        tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
-                        tfFlowApproveLog.setPrimaryApproveId(sysUser.getId());
-                        tfFlowApproveLog.setPrimaryApproveRemark(remark);
-                        if (approve == FlowApproveVariableEnum.PRIMARY_REJECT) {//驳回命题
-                            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
-                            tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup());
-                        } else if (approve == FlowApproveVariableEnum.PRIMARY_APPROVE) {//提交
-                            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
-                            tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.APPROVE);
-                            tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
-                            tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup());
-                        } else {
-                            throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
-                        }
-                        map.computeIfAbsent(SystemConstant.APPROVE, v -> approve.getId());
-                        map.computeIfAbsent(SystemConstant.APPROVE_PRESIDENT_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
-                    } else if (setupEnum == FlowGdykdxApproveSetupEnum.SECOND_APPROVE) {//院长提交
+                    if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题提交
+                        this.assignSubmit(task, sysUser, tfFlowApprove, tfFlowLog, map);
+                    } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
+                        this.directorSubmit(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, processDefinitionEntity, map);
+                    } else if (setupEnum == FlowApproveSetupEnum.SECOND_APPROVE) {//院长提交
                         flowApproveVaild(task, sysUser.getId(), map);
                         flowApproveVaild(task, sysUser.getId(), map);
                         FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
                         FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
                         FlowApproveVariableEnum approve = null;
                         FlowApproveVariableEnum approve = null;
@@ -352,41 +343,47 @@ public class ActivitiServiceImpl implements ActivitiService {
                         if (approvePass == FlowApprovePassEnum.PASS) {
                         if (approvePass == FlowApprovePassEnum.PASS) {
                             approve = FlowApproveVariableEnum.SECOND_APPROVE;
                             approve = FlowApproveVariableEnum.SECOND_APPROVE;
                         } else {
                         } else {
-                            if (Objects.isNull(map.get(SystemConstant.APPROVE_SETUP))) {
-                                throw ExceptionResultEnum.ERROR.exception("流程驳回节点不能为空");
-                            }
+                            Optional.ofNullable(map.get(SystemConstant.APPROVE_SETUP)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程驳回节点不能为空"));
                             Integer setup = Integer.parseInt(map.get(SystemConstant.APPROVE_SETUP).toString());
                             Integer setup = Integer.parseInt(map.get(SystemConstant.APPROVE_SETUP).toString());
-                            if (setup.intValue() < FlowGdykdxApproveSetupEnum.SUBMIT.getSetup() || setup.intValue() >= FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup()) {
+                            if (setup.intValue() < FlowApproveSetupEnum.SUBMIT.getSetup() || setup.intValue() >= FlowApproveSetupEnum.SECOND_APPROVE.getSetup()) {
                                 throw ExceptionResultEnum.ERROR.exception("流程驳回节点有误");
                                 throw ExceptionResultEnum.ERROR.exception("流程驳回节点有误");
                             }
                             }
                             approve = setup.intValue() == 1 ? FlowApproveVariableEnum.SECOND_REJECT_ONE : FlowApproveVariableEnum.SECOND_REJECT_TWO;
                             approve = setup.intValue() == 1 ? FlowApproveVariableEnum.SECOND_REJECT_ONE : FlowApproveVariableEnum.SECOND_REJECT_TWO;
                         }
                         }
-                        tfFlowLog.setApproveSetup(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup());
+                        tfFlowLog.setApproveSetup(FlowApproveSetupEnum.SECOND_APPROVE.getSetup());
                         if (approve == FlowApproveVariableEnum.SECOND_REJECT_ONE) {//驳回命题
                         if (approve == FlowApproveVariableEnum.SECOND_REJECT_ONE) {//驳回命题
                             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
                             tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
-                            tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup());
+                            tfFlowApprove.setSetup(FlowApproveSetupEnum.SUBMIT.getSetup());
                         } else if (approve == FlowApproveVariableEnum.SECOND_REJECT_TWO) {//驳回主任
                         } else if (approve == FlowApproveVariableEnum.SECOND_REJECT_TWO) {//驳回主任
                             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
                             tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
                             tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
-                            tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup());
+                            tfFlowApprove.setSetup(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup());
                         } else if (approve == FlowApproveVariableEnum.SECOND_APPROVE) {//提交
                         } else if (approve == FlowApproveVariableEnum.SECOND_APPROVE) {//提交
                             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
                             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.APPROVE);
                             tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.APPROVE);
                             tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
                             tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
-                            tfFlowApprove.setSetup(FlowGdykdxApproveSetupEnum.FINISH.getSetup());
+                            tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
                         } else {
                         } else {
                             throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
                             throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
                         }
                         }
                         FlowApproveVariableEnum finalApprove = approve;
                         FlowApproveVariableEnum finalApprove = approve;
                         map.computeIfAbsent(SystemConstant.APPROVE, v -> finalApprove.getId());
                         map.computeIfAbsent(SystemConstant.APPROVE, v -> finalApprove.getId());
                     }
                     }
-                    tfFlowApprove.updateInfo(sysUser.getId());
-                    tfFlowApproveLog.updateInfo(sysUser.getId());
+                }
+                //江西中医药大学
+                else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
+                    if (setupEnum == FlowApproveSetupEnum.SUBMIT) {//命题提交
+                        this.assignSubmit(task, sysUser, tfFlowApprove, tfFlowLog, map);
+                    } else if (setupEnum == FlowApproveSetupEnum.PRIMARY_APPROVE) {//主任提交
+                        this.directorSubmit(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, processDefinitionEntity, map);
+                    }
                 }
                 }
             }
             }
+            tfFlowApprove.updateInfo(sysUser.getId());
+            tfFlowApproveLog.updateInfo(sysUser.getId());
             tfFlowApprove.setApproveId(sysUser.getId());
             tfFlowApprove.setApproveId(sysUser.getId());
             //当前实例的执行到哪个节点
             //当前实例的执行到哪个节点
             taskService.complete(String.valueOf(flowTaskId), map);
             taskService.complete(String.valueOf(flowTaskId), map);
@@ -437,11 +434,8 @@ public class ActivitiServiceImpl implements ActivitiService {
             if (flowElement instanceof UserTask) {
             if (flowElement instanceof UserTask) {
                 UserTask userTask = (UserTask) flowElement;
                 UserTask userTask = (UserTask) flowElement;
                 if (Objects.nonNull(userTask)) {
                 if (Objects.nonNull(userTask)) {
-                    //广东药科大学流程
-                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
-                        FlowGdykdxApproveSetupEnum flowGdykdxApproveSetupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
-                        flowTaskResultList.add(new FlowTaskResult(Long.parseLong(flowId), userTask.getName(), flowGdykdxApproveSetupEnum.getId(), flowGdykdxApproveSetupEnum.getSetup()));
-                    }
+                    FlowApproveSetupEnum flowApproveSetupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
+                    flowTaskResultList.add(new FlowTaskResult(Long.parseLong(flowId), userTask.getName(), flowApproveSetupEnum.getId(), flowApproveSetupEnum.getSetup()));
                 }
                 }
             }
             }
         }
         }
@@ -483,19 +477,18 @@ public class ActivitiServiceImpl implements ActivitiService {
         List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
         List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
         if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
         if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
             Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
             Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
-            if (Objects.isNull(task)) {
-                throw ExceptionResultEnum.ERROR.exception("流程任务为空");
-            }
+            Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空"));
             flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
             flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
             flowTaskApprovePeopleResultList = new LinkedList();
             flowTaskApprovePeopleResultList = new LinkedList();
             //获取当前流程节点
             //获取当前流程节点
             TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
             TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
-            if (Objects.isNull(tfFlowApprove)) {
-                throw ExceptionResultEnum.ERROR.exception("未找到流程状态记录");
-            }
+            Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程状态记录"));
             if (tfFlowApprove.getSetup() <= 0) {
             if (tfFlowApprove.getSetup() <= 0) {
                 throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
                 throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
             }
             }
+            String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId();
+            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
+
             ExamTask examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
             ExamTask examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
 
 
             IPage<FlowApproveResult> flowApproveResultIPage = tfFlowService.flowApproveList(new Page<>(SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE), null, SystemConstant.getHeadOrUserSchoolId(), null, flowTaskApprovePeopleAllResult.getFlowId());
             IPage<FlowApproveResult> flowApproveResultIPage = tfFlowService.flowApproveList(new Page<>(SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE), null, SystemConstant.getHeadOrUserSchoolId(), null, flowTaskApprovePeopleAllResult.getFlowId());
@@ -506,81 +499,107 @@ public class ActivitiServiceImpl implements ActivitiService {
             List<ApproveUserResult> approveUserMtResult = null;
             List<ApproveUserResult> approveUserMtResult = null;
             switch (tfFlowApprove.getSetup()) {
             switch (tfFlowApprove.getSetup()) {
                 case -1:
                 case -1:
-                    if (Objects.isNull(flowApproveResult)) {
-                        throw ExceptionResultEnum.ERROR.exception("未找到流程审批记录");
+                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
+                    //广东医科大学流程
+                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                        if (Objects.nonNull(flowApproveResult.getStartId())) {
+                            //获取命题已审
+                            approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+                        }
+                        if (Objects.nonNull(flowApproveResult.getPrimaryApproveId())) {
+                            //获取主任已审
+                            List<ApproveUserResult> approveUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
+                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, approveUserDirectorList));
+                        }
+                    }
+                    //江西中医药大学
+                    else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
+
                     }
                     }
-                    if (Objects.nonNull(flowApproveResult.getStartId())) {
+                    break;
+                case 0:
+                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
+                    //广东医科大学流程
+                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
                         //获取命题已审
                         //获取命题已审
                         approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                         approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
-                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
-                    }
-                    if (Objects.nonNull(flowApproveResult.getPrimaryApproveId())) {
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
                         //获取主任已审
                         //获取主任已审
                         List<ApproveUserResult> approveUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
                         List<ApproveUserResult> approveUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
-                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, approveUserDirectorList));
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, approveUserDirectorList));
+                        //获取院长已审
+                        List<ApproveUserResult> approveUserPresidentList = sysUserService.findById(flowApproveResult.getSecondApproveId());
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, approveUserPresidentList));
                     }
                     }
-                    break;
-                case 0:
-                    if (Objects.isNull(flowApproveResult)) {
-                        throw ExceptionResultEnum.ERROR.exception("未找到流程审批记录");
+                    //江西中医药大学
+                    else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
+
                     }
                     }
-                    //获取命题已审
-                    approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
-                    //获取主任已审
-                    List<ApproveUserResult> approveUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, approveUserDirectorList));
-                    //获取院长已审
-                    List<ApproveUserResult> approveUserPresidentList = sysUserService.findById(flowApproveResult.getSecondApproveId());
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), true, approveUserPresidentList));
                     break;
                     break;
                 case 1:
                 case 1:
                     if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
                     if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
-                        flowTaskApprovePeopleResultList = getApproveUserAll(examTask.getCourseCode(), flowTaskApprovePeopleResultList);
+                        flowTaskApprovePeopleResultList = getApproveUserAll(examTask.getCourseCode(), flowTaskApprovePeopleResultList, Objects.nonNull(processDefinitionEntity) ? processDefinitionEntity.getKey() : null);
                     } else {
                     } else {
-                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, new ArrayList<>()));
-                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), false, new ArrayList<>()));
+                        //广东医科大学流程
+                        if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, new ArrayList<>()));
+                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_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<>()));
+                        }
                     }
                     }
                     break;
                     break;
                 case 2:
                 case 2:
-                    if (Objects.isNull(flowApproveResult)) {
-                        throw ExceptionResultEnum.ERROR.exception("未找到流程审批记录");
+                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
+                    //广东医科大学流程
+                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                        //获取命题已审
+                        approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+
+                        if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
+                            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+                            if (Objects.nonNull(sysUser.getOrgId())) {
+                                //获取院长审批人
+                                List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(Arrays.asList(sysUser.getOrgId()), null);
+                                flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, sysUserPresidentList));
+                            }
+                        } else {
+                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, new ArrayList<>()));
+                        }
                     }
                     }
-                    //获取命题已审
-                    approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+                    //江西中医药大学
+                    else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
 
 
-                    if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
-                        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-                        if (Objects.nonNull(sysUser.getOrgId())) {
-                            //获取院长审批人
-                            List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(Arrays.asList(sysUser.getOrgId()), null);
-                            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), false, sysUserPresidentList));
-                        }
-                    } else {
-                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), false, new ArrayList<>()));
                     }
                     }
                     break;
                     break;
                 case 3:
                 case 3:
-                    if (Objects.isNull(flowApproveResult)) {
-                        throw ExceptionResultEnum.ERROR.exception("未找到流程审批记录");
-                    }
+                    Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
                     //获取命题已审
                     //获取命题已审
                     approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
                     approveUserMtResult = sysUserService.findById(flowApproveResult.getStartId());
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SUBMIT.getSetup(), true, approveUserMtResult));
                     //获取主任已审
                     //获取主任已审
                     List<ApproveUserResult> sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
                     List<ApproveUserResult> sysUserDirectorList = sysUserService.findById(flowApproveResult.getPrimaryApproveId());
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), true, sysUserDirectorList));
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
             }
             }
         } else {//获取整个节点审批人
         } else {//获取整个节点审批人
-            if (Objects.isNull(courseCode) || Objects.equals(courseCode, "")) {
-                throw ExceptionResultEnum.ERROR.exception("课程编码为空");
+            BasicSchool basicSchool = (BasicSchool) ServletUtil.getRequestSchool();
+            if (Objects.equals(basicSchool.getCode(), FlowSchoolCodeEnum.GDYKDX.getCode())) {
+                if (Objects.isNull(courseCode) || Objects.equals(courseCode, "")) {
+                    throw ExceptionResultEnum.ERROR.exception("课程编码为空");
+                }
+                flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList, SystemConstant.GDYKDX_FLOW_KEY);
+                flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
+            } else if (Objects.equals(basicSchool.getCode(), FlowSchoolCodeEnum.JXZYYDX.getCode())) {//江西中医药大学
+                flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList, SystemConstant.JXZYY_FLOW_KEY);
+                flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
             }
             }
-            flowTaskApprovePeopleResultList = getApproveUserAll(courseCode, flowTaskApprovePeopleResultList);
-            flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
         }
         }
         flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
         flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
         return flowTaskApprovePeopleAllResult;
         return flowTaskApprovePeopleAllResult;
@@ -597,14 +616,10 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Transactional
     @Transactional
     public boolean taskApproverExchange(String userId, String taskId) {
     public boolean taskApproverExchange(String userId, String taskId) {
         Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
         Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
-        if (Objects.isNull(task)) {
-            throw ExceptionResultEnum.ERROR.exception("流程任务为空");
-        }
+        Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空"));
         Long flowId = Long.parseLong(task.getProcessInstanceId());
         Long flowId = Long.parseLong(task.getProcessInstanceId());
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId);
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId);
-        if (Objects.isNull(tfFlowApprove)) {
-            throw ExceptionResultEnum.ERROR.exception("未找到流程状态记录");
-        }
+        Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程状态记录"));
         if (tfFlowApprove.getSetup() <= 0) {
         if (tfFlowApprove.getSetup() <= 0) {
             throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
             throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
         }
         }
@@ -647,8 +662,6 @@ public class ActivitiServiceImpl implements ActivitiService {
 //        }
 //        }
         ExamTask examTask = examTaskService.findByFlowId(flowId);
         ExamTask examTask = examTaskService.findByFlowId(flowId);
 
 
-        String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId();
-        ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
         //获取当前流程节点
         //获取当前流程节点
         String currActivityId = task.getTaskDefinitionKey();
         String currActivityId = task.getTaskDefinitionKey();
         BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
         BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
@@ -659,11 +672,8 @@ public class ActivitiServiceImpl implements ActivitiService {
         TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, examTask.getId(), sysUser.getId(), sysUser.getRealName() + "转" + exchangeUser.getRealName() + "审批", FlowApproveOperationEnum.EXCHANGE);
         TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, examTask.getId(), sysUser.getId(), sysUser.getRealName() + "转" + exchangeUser.getRealName() + "审批", FlowApproveOperationEnum.EXCHANGE);
         if (currFlow instanceof UserTask) {
         if (currFlow instanceof UserTask) {
             UserTask userTask = (UserTask) currFlow;
             UserTask userTask = (UserTask) currFlow;
-            //广东医科大学流程
-            if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
-                FlowGdykdxApproveSetupEnum setupEnum = FlowGdykdxApproveSetupEnum.convertToInstance(userTask.getId());
-                tfFlowLog.setApproveSetup(setupEnum.getSetup());
-            }
+            FlowApproveSetupEnum setupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
+            tfFlowLog.setApproveSetup(setupEnum.getSetup());
         }
         }
         tfFlowLogService.save(tfFlowLog);
         tfFlowLogService.save(tfFlowLog);
         return true;
         return true;
@@ -680,37 +690,52 @@ public class ActivitiServiceImpl implements ActivitiService {
     public FlowTaskApprovePeopleAllResult taskApproverExchangePeople(String taskId, String realName) {
     public FlowTaskApprovePeopleAllResult taskApproverExchangePeople(String taskId, String realName) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
         Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
-        if (Objects.isNull(task)) {
-            throw ExceptionResultEnum.ERROR.exception("流程任务为空");
-        }
+        Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空"));
         FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
         FlowTaskApprovePeopleAllResult flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
         //获取当前流程节点
         //获取当前流程节点
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
-        if (Objects.isNull(tfFlowApprove)) {
-            throw ExceptionResultEnum.ERROR.exception("未找到流程状态记录");
-        }
+        Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程状态记录"));
         if (tfFlowApprove.getSetup() <= 0) {
         if (tfFlowApprove.getSetup() <= 0) {
             throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
             throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
         }
         }
+        String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId();
+        ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
+
         ExamTask examTask = null;
         ExamTask examTask = null;
         List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = new ArrayList<>();
         List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = new ArrayList<>();
         switch (tfFlowApprove.getSetup()) {
         switch (tfFlowApprove.getSetup()) {
             case 1:
             case 1:
-                //获取命题审批人
-                examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
-                List<ApproveUserResult> approveUserResultList = sysUserService.findByAssignApprove(examTask.getCourseCode(), realName);
+                List<ApproveUserResult> approveUserResultList = null;
+                //广东医科大学流程
+                if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_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);
+                }
                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(approveUserResultList));
                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(approveUserResultList));
                 break;
                 break;
             case 2:
             case 2:
                 examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
                 examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
                 List<ApproveUserResult> sysUserDirectorList = null;
                 List<ApproveUserResult> sysUserDirectorList = null;
-                if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
-                    //获取教研室主任审批人
-                    sysUserDirectorList = sysUserService.findByDirectorApprove(examTask.getCourseCode(), realName);
-                } else {
+                //广东医科大学流程
+                if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                    if (tfFlowApprove.getModel() == FlowModelEnum.SYSTEM) {
+                        //获取教研室主任审批人
+                        sysUserDirectorList = sysUserService.findByDirectorApprove(examTask.getCourseCode(), realName);
+                    } else {
+                        //获取教研室主任审批人
+                        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)) {
                     //获取教研室主任审批人
                     //获取教研室主任审批人
-                    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);
+                    sysUserDirectorList = sysUserService.findByJxzyyDirectorApprove(realName);
                 }
                 }
                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(sysUserDirectorList));
                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(sysUserDirectorList));
                 break;
                 break;
@@ -749,44 +774,59 @@ public class ActivitiServiceImpl implements ActivitiService {
         List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
         List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList = null;
         if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
         if (Objects.nonNull(taskId) && !Objects.equals(taskId, "")) {//说明从已审核的节点开始捞人
             Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
             Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
-            if (Objects.isNull(task)) {
-                throw ExceptionResultEnum.ERROR.exception("流程任务为空");
-            }
+            Optional.ofNullable(task).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程任务为空"));
+
             flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
             flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult(Long.parseLong(task.getProcessInstanceId()));
             //获取当前流程节点
             //获取当前流程节点
             TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
             TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
-            if (Objects.isNull(tfFlowApprove)) {
-                throw ExceptionResultEnum.ERROR.exception("未找到流程状态记录");
-            }
+            Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程状态记录"));
             if (tfFlowApprove.getSetup() <= 0) {
             if (tfFlowApprove.getSetup() <= 0) {
                 throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
                 throw ExceptionResultEnum.ERROR.exception("流程已结束或已终止");
             }
             }
             List<ApproveUserResult> approveUserResultList = null;
             List<ApproveUserResult> approveUserResultList = null;
             flowTaskApprovePeopleResultList = new LinkedList<>();
             flowTaskApprovePeopleResultList = new LinkedList<>();
 
 
+            String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult().getProcessDefinitionId();
+            ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
+
             ExamTask examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
             ExamTask examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
             List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(examTask.getTeachingRoomId(), true, true);
             List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(examTask.getTeachingRoomId(), true, true);
             switch (tfFlowApprove.getSetup()) {
             switch (tfFlowApprove.getSetup()) {
                 case 1:
                 case 1:
-                    //获取教研室主任审批人
-                    approveUserResultList = sysUserService.findByRootApprove(null, sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toList()), null, FlowApproveNameEnum.DIRECTOR);
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, approveUserResultList));
+                    //广东医科大学流程
+                    if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_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);
+                        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, approveUserResultList));
+                    }
                     break;
                     break;
                 case 2:
                 case 2:
                     //获取院长审批人
                     //获取院长审批人
                     approveUserResultList = sysUserService.findByRootApprove(null, sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toList()), null, FlowApproveNameEnum.PRESIDENT);
                     approveUserResultList = sysUserService.findByRootApprove(null, sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toList()), null, FlowApproveNameEnum.PRESIDENT);
-                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), false, approveUserResultList));
+                    flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, approveUserResultList));
                     break;
                     break;
                 default:
                 default:
                     break;
                     break;
             }
             }
         } else {//获取整个节点审批人
         } else {//获取整个节点审批人
-            if (Objects.isNull(courseCode) || Objects.equals(courseCode, "")) {
-                throw ExceptionResultEnum.ERROR.exception("课程编码为空");
+            List<ApproveUserResult> approveUserResultList = null;
+            BasicSchool basicSchool = (BasicSchool) ServletUtil.getRequestSchool();
+            if (Objects.equals(basicSchool.getCode(), FlowSchoolCodeEnum.GDYKDX.getCode())) {
+                if (Objects.isNull(courseCode) || Objects.equals(courseCode, "")) {
+                    throw ExceptionResultEnum.ERROR.exception("课程编码为空");
+                }
+                approveUserResultList = sysUserService.findByRootApprove(courseCode, null, null, FlowApproveNameEnum.DIRECTOR);
+            } else if (Objects.equals(basicSchool.getCode(), FlowSchoolCodeEnum.JXZYYDX.getCode())) {//江西中医药大学
+                approveUserResultList = sysUserService.findByJxzyyDirectorApprove(null);
             }
             }
-            List<ApproveUserResult> approveUserResultList = sysUserService.findByRootApprove(courseCode, null, null, FlowApproveNameEnum.DIRECTOR);
             flowTaskApprovePeopleResultList = new LinkedList<>();
             flowTaskApprovePeopleResultList = new LinkedList<>();
-            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, approveUserResultList));
+            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, approveUserResultList));
             flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
             flowTaskApprovePeopleAllResult = new FlowTaskApprovePeopleAllResult();
         }
         }
         flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
         flowTaskApprovePeopleAllResult.setApproveUserList(flowTaskApprovePeopleResultList);
@@ -802,9 +842,7 @@ public class ActivitiServiceImpl implements ActivitiService {
     private void flowSubmitVaild(Task task, Long userId) {
     private void flowSubmitVaild(Task task, Long userId) {
         if (Objects.isNull(task.getAssignee())) {
         if (Objects.isNull(task.getAssignee())) {
             Task taskUser = taskService.createTaskQuery().taskId(task.getId()).taskAssignee(String.valueOf(userId)).singleResult();
             Task taskUser = taskService.createTaskQuery().taskId(task.getId()).taskAssignee(String.valueOf(userId)).singleResult();
-            if (Objects.isNull(taskUser)) {
-                throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!");
-            }
+            Optional.ofNullable(taskUser).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!"));
         } else {
         } else {
             if (!Objects.equals(task.getAssignee(), String.valueOf(userId))) {
             if (!Objects.equals(task.getAssignee(), String.valueOf(userId))) {
                 throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!");
                 throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!");
@@ -822,17 +860,13 @@ public class ActivitiServiceImpl implements ActivitiService {
     private void flowApproveVaild(Task task, Long userId, Map<String, Object> map) {
     private void flowApproveVaild(Task task, Long userId, Map<String, Object> map) {
         if (Objects.isNull(task.getAssignee())) {
         if (Objects.isNull(task.getAssignee())) {
             Task taskUser = taskService.createTaskQuery().taskId(task.getId()).taskCandidateUser(String.valueOf(userId)).singleResult();
             Task taskUser = taskService.createTaskQuery().taskId(task.getId()).taskCandidateUser(String.valueOf(userId)).singleResult();
-            if (Objects.isNull(taskUser)) {
-                throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!");
-            }
+            Optional.ofNullable(taskUser).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!"));
         } else {
         } else {
             if (!Objects.equals(task.getAssignee(), String.valueOf(userId))) {
             if (!Objects.equals(task.getAssignee(), String.valueOf(userId))) {
                 throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!");
                 throw ExceptionResultEnum.ERROR.exception("不能提交他人的任务或者该任务已被审核,请刷新再试!");
             }
             }
         }
         }
-        if (Objects.isNull(map.get(SystemConstant.APPROVE_OPERATION))) {
-            throw ExceptionResultEnum.ERROR.exception("流程审核操作不能为空");
-        }
+        Optional.ofNullable(map.get(SystemConstant.APPROVE_OPERATION)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程审核操作不能为空"));
     }
     }
 
 
     /**
     /**
@@ -840,16 +874,122 @@ public class ActivitiServiceImpl implements ActivitiService {
      *
      *
      * @param courseCode
      * @param courseCode
      * @param flowTaskApprovePeopleResultList
      * @param flowTaskApprovePeopleResultList
+     * @param processDefinitionEntity
      */
      */
-    private List<FlowTaskApprovePeopleResult> getApproveUserAll(String courseCode, List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList) {
+    private List<FlowTaskApprovePeopleResult> getApproveUserAll(String courseCode, List<FlowTaskApprovePeopleResult> flowTaskApprovePeopleResultList, String processDefinitionEntity) {
         flowTaskApprovePeopleResultList = Objects.isNull(flowTaskApprovePeopleResultList) ? new LinkedList() : flowTaskApprovePeopleResultList;
         flowTaskApprovePeopleResultList = Objects.isNull(flowTaskApprovePeopleResultList) ? new LinkedList() : flowTaskApprovePeopleResultList;
-        //获取教研室主任审批人
-        List<ApproveUserResult> sysUserDirectorList = sysUserService.findByDirectorApprove(courseCode, null);
-        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, sysUserDirectorList));
-        Set<Long> orgIds = sysUserDirectorList.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
-        //获取院长审批人
-        List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds), null);
-        flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowGdykdxApproveSetupEnum.SECOND_APPROVE.getSetup(), false, sysUserPresidentList));
+        //广东医科大学流程
+        if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+            //获取教研室主任审批人
+            List<ApproveUserResult> sysUserDirectorList = sysUserService.findByDirectorApprove(courseCode, null);
+            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, sysUserDirectorList));
+            Set<Long> orgIds = sysUserDirectorList.stream().map(s -> s.getOrgId()).collect(Collectors.toSet());
+            //获取院长审批人
+            List<ApproveUserResult> sysUserPresidentList = sysUserService.findByPresidentApprove(new ArrayList<>(orgIds), null);
+            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), false, sysUserPresidentList));
+        }
+        //江西中医药大学
+        else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.contains(SystemConstant.JXZYY_FLOW_KEY)) {
+            //获取教研室主任审批人
+            List<ApproveUserResult> sysUserDirectorList = sysUserService.findByJxzyyDirectorApprove(null);
+            flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup(), false, sysUserDirectorList));
+        }
         return flowTaskApprovePeopleResultList;
         return flowTaskApprovePeopleResultList;
     }
     }
+
+    /**
+     * 命题提交
+     *
+     * @param task
+     * @param sysUser
+     * @param tfFlowApprove
+     * @param tfFlowLog
+     * @param map
+     */
+    private void assignSubmit(Task task,
+                              SysUser sysUser,
+                              TFFlowApprove tfFlowApprove,
+                              TFFlowLog tfFlowLog,
+                              Map<String, Object> map) {
+        flowSubmitVaild(task, sysUser.getId());
+        tfFlowLog.setApproveSetup(FlowApproveSetupEnum.SUBMIT.getSetup());
+        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.SUBMIT);
+        tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
+        tfFlowApprove.setSetup(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup());
+        map.computeIfAbsent(SystemConstant.APPROVE_DIRECTOR_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
+    }
+
+    /**
+     * 主任提交
+     *
+     * @param task
+     * @param sysUser
+     * @param tfFlowApprove
+     * @param tfFlowApproveLog
+     * @param tfFlowLog
+     * @param remark
+     * @param processDefinitionEntity
+     * @param map
+     */
+    private void directorSubmit(Task task,
+                                SysUser sysUser,
+                                TFFlowApprove tfFlowApprove,
+                                TFFlowApproveLog tfFlowApproveLog,
+                                TFFlowLog tfFlowLog,
+                                String remark,
+                                ProcessDefinitionEntity processDefinitionEntity,
+                                Map<String, Object> map) {
+        flowApproveVaild(task, sysUser.getId(), map);
+        FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
+        FlowApproveVariableEnum approve = approvePass == FlowApprovePassEnum.PASS ? FlowApproveVariableEnum.PRIMARY_APPROVE : FlowApproveVariableEnum.PRIMARY_REJECT;
+        tfFlowLog.setApproveSetup(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup());
+        tfFlowApproveLog.setPrimaryApproveId(sysUser.getId());
+        tfFlowApproveLog.setPrimaryApproveRemark(remark);
+        if (approve == FlowApproveVariableEnum.PRIMARY_REJECT) {//驳回命题
+            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
+            tfFlowApprove.setSetup(FlowApproveSetupEnum.SUBMIT.getSetup());
+        } else if (approve == FlowApproveVariableEnum.PRIMARY_APPROVE) {//提交
+            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
+            tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.APPROVE);
+            //广东医科大学流程
+            if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.GDYKDX_FLOW_KEY)) {
+                tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
+                tfFlowApprove.setSetup(FlowApproveSetupEnum.SECOND_APPROVE.getSetup());
+            }
+            //江西中医药大学
+            else if (Objects.nonNull(processDefinitionEntity) && processDefinitionEntity.getKey().contains(SystemConstant.JXZYY_FLOW_KEY)) {
+                tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
+                tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
+            }
+        } else {
+            throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
+        }
+        map.computeIfAbsent(SystemConstant.APPROVE, v -> approve.getId());
+        map.computeIfAbsent(SystemConstant.APPROVE_PRESIDENT_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
+    }
+
+    /**
+     * 命题终止
+     *
+     * @param tfFlowApproveLog
+     * @param sysUser
+     */
+    private void assignFlowEnd(TFFlowApproveLog tfFlowApproveLog, SysUser sysUser) {
+        tfFlowApproveLog.setStartId(sysUser.getId());
+        tfFlowApproveLog.setRemark(FlowApproveSetupEnum.SUBMIT.getTitle() + FlowApproveOperationEnum.END.getTitle());
+    }
+
+    /**
+     * 主任终止
+     *
+     * @param tfFlowApproveLog
+     * @param sysUser
+     */
+    private void directorFlowEnd(TFFlowApproveLog tfFlowApproveLog, SysUser sysUser) {
+        tfFlowApproveLog.setPrimaryApproveId(sysUser.getId());
+        tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.END);
+        tfFlowApproveLog.setPrimaryApproveRemark(FlowApproveOperationEnum.END.getTitle());
+    }
 }
 }

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

@@ -369,11 +369,10 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         // 不需要审核,直接更新,否则加入待审核列表
         // 不需要审核,直接更新,否则加入待审核列表
         if (examTask.getReview()) {
         if (examTask.getReview()) {
             // 发起新流程
             // 发起新流程
-            //TODO 这里以后要判断学校code来取流程key
             Map<String, Object> map = new HashMap<>();
             Map<String, Object> map = new HashMap<>();
             map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
             map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
             map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
             map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-            ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+            ProcessInstance processInstance = activitiService.flowStart(map);
             Long flowId = Long.parseLong(processInstance.getId());
             Long flowId = Long.parseLong(processInstance.getId());
             UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
             UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
             updateWrapper.lambda().set(ExamTask::getFlowId, flowId).eq(ExamTask::getId, examTaskDetail.getExamTaskId());
             updateWrapper.lambda().set(ExamTask::getFlowId, flowId).eq(ExamTask::getId, examTaskDetail.getExamTaskId());

+ 8 - 15
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -264,11 +264,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
 
             if (Objects.nonNull(examTask.getUserId())) {
             if (Objects.nonNull(examTask.getUserId())) {
                 examStatusEnum = ExamStatusEnum.STAGE;
                 examStatusEnum = ExamStatusEnum.STAGE;
-                //TODO 这里以后要判断学校code来取流程key
                 Map<String, Object> map = new HashMap<>();
                 Map<String, Object> map = new HashMap<>();
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                 map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
                 map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-                ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+                ProcessInstance processInstance = activitiService.flowStart(map);
                 flowId = Long.parseLong(processInstance.getId());
                 flowId = Long.parseLong(processInstance.getId());
             }
             }
         }
         }
@@ -410,11 +409,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examTask.setStatus(ExamStatusEnum.DRAFT);
                 examTask.setStatus(ExamStatusEnum.DRAFT);
             } else if (examTask.getReview()) {
             } else if (examTask.getReview()) {
                 examTask.setStatus(ExamStatusEnum.STAGE);
                 examTask.setStatus(ExamStatusEnum.STAGE);
-                //TODO 这里以后要判断学校code来取流程key
                 Map<String, Object> map = new HashMap<>();
                 Map<String, Object> map = new HashMap<>();
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                 map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
                 map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-                ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+                ProcessInstance processInstance = activitiService.flowStart(map);
                 examTask.setFlowId(Long.parseLong(processInstance.getId()));
                 examTask.setFlowId(Long.parseLong(processInstance.getId()));
             } else if (!examTask.getReview()) {
             } else if (!examTask.getReview()) {
                 examTask.setStatus(ExamStatusEnum.STAGE);
                 examTask.setStatus(ExamStatusEnum.STAGE);
@@ -699,11 +697,10 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         this.saveBatch(list);
         this.saveBatch(list);
         for (ExamTask examTask : list) {
         for (ExamTask examTask : list) {
             if (examTask.getReview() && Objects.nonNull(examTask.getUserId()) && Objects.isNull(examTask.getFlowId())) {
             if (examTask.getReview() && Objects.nonNull(examTask.getUserId()) && Objects.isNull(examTask.getFlowId())) {
-                //TODO 这里以后要判断学校code来取流程key
                 Map<String, Object> map = new HashMap<>();
                 Map<String, Object> map = new HashMap<>();
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                 map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                 map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
                 map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-                ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+                ProcessInstance processInstance = activitiService.flowStart(map);
                 examTask.setFlowId(Long.parseLong(processInstance.getId()));
                 examTask.setFlowId(Long.parseLong(processInstance.getId()));
                 this.updateById(examTask);
                 this.updateById(examTask);
             }
             }
@@ -726,7 +723,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         for (ExamTaskDto record : examTaskDtoIPage.getRecords()) {
         for (ExamTaskDto record : examTaskDtoIPage.getRecords()) {
 //            List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(schoolId,record.getCourseCode(),paperNumber, printPlanStatusEnumList);
 //            List<ExamPackageDetail> examPackageDetailDatasource = this.baseMapper.findExamPackageDetailByPaperNumber(schoolId,record.getCourseCode(),paperNumber, printPlanStatusEnumList);
 //            record.setApproveFormStatus(examPackageDetailDatasource.size() > 0);
 //            record.setApproveFormStatus(examPackageDetailDatasource.size() > 0);
-            if ((record.getReview() && FlowGdykdxApproveSetupEnum.FINISH.name().equals(record.getAuditStatus())
+            if ((record.getReview() && FlowApproveSetupEnum.FINISH.name().equals(record.getAuditStatus())
                     || (!record.getReview()))) {
                     || (!record.getReview()))) {
                 record.setApproveFormStatus(true);
                 record.setApproveFormStatus(true);
             } else {
             } else {
@@ -1018,15 +1015,14 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             throw ExceptionResultEnum.ERROR.exception("审核流程进度丢失,不能撤回");
             throw ExceptionResultEnum.ERROR.exception("审核流程进度丢失,不能撤回");
         }
         }
 
 
-        if (!tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
+        if (!tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
             throw ExceptionResultEnum.ERROR.exception("当前审核节点不能撤回");
             throw ExceptionResultEnum.ERROR.exception("当前审核节点不能撤回");
         }
         }
 
 
-        //TODO 这里以后要判断学校code来取流程key
         Map<String, Object> map = new HashMap<>();
         Map<String, Object> map = new HashMap<>();
         map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(task.getUserId()));
         map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(task.getUserId()));
         map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> task.getTeachingRoomId());
         map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> task.getTeachingRoomId());
-        ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+        ProcessInstance processInstance = activitiService.flowStart(map);
 
 
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
         UpdateWrapper<ExamTask> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.STAGE)
         updateWrapper.lambda().set(ExamTask::getStatus, ExamStatusEnum.STAGE)
@@ -1481,14 +1477,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
 
             examTask.setStatus(ExamStatusEnum.valueOf(examTaskDetail.getOperateType()));
             examTask.setStatus(ExamStatusEnum.valueOf(examTaskDetail.getOperateType()));
             if (Objects.isNull(examTask.getFlowId())) {
             if (Objects.isNull(examTask.getFlowId())) {
-                //TODO 这里以后要判断学校code来取流程key
                 if (basicExamRule.getReview()) {
                 if (basicExamRule.getReview()) {
                     Map<String, Object> map = new HashMap<>();
                     Map<String, Object> map = new HashMap<>();
                     map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                     map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                     map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
                     map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-                    ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+                    ProcessInstance processInstance = activitiService.flowStart(map);
                     examTask.setFlowId(Long.parseLong(processInstance.getId()));
                     examTask.setFlowId(Long.parseLong(processInstance.getId()));
-
                 }
                 }
             }
             }
             this.saveOrUpdate(examTask);
             this.saveOrUpdate(examTask);
@@ -1618,12 +1612,11 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setCreateTime(System.currentTimeMillis());
             examTask.setCreateTime(System.currentTimeMillis());
 
 
             if (Objects.isNull(examTask.getFlowId())) {
             if (Objects.isNull(examTask.getFlowId())) {
-                //TODO 这里以后要判断学校code来取流程key
                 if (basicExamRule.getReview()) {
                 if (basicExamRule.getReview()) {
                     Map<String, Object> map = new HashMap<>();
                     Map<String, Object> map = new HashMap<>();
                     map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                     map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> String.valueOf(examTask.getUserId()));
                     map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
                     map.computeIfAbsent(SystemConstant.TEACHING_ROOM_ID, v -> examTask.getTeachingRoomId());
-                    ProcessInstance processInstance = activitiService.startActivity(SystemConstant.GDYKDX_FLOW_KEY, map);
+                    ProcessInstance processInstance = activitiService.flowStart(map);
                     examTask.setFlowId(Long.parseLong(processInstance.getId()));
                     examTask.setFlowId(Long.parseLong(processInstance.getId()));
                 }
                 }
             }
             }

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

@@ -452,7 +452,7 @@ public class ExamTaskController {
                 if (Objects.nonNull(objectMap)) {
                 if (Objects.nonNull(objectMap)) {
                     TFFlowApprove tfFlowApprove = (TFFlowApprove) objectMap.get("tfFlowApprove");
                     TFFlowApprove tfFlowApprove = (TFFlowApprove) objectMap.get("tfFlowApprove");
                     //审核通过,生成pdf
                     //审核通过,生成pdf
-                    if (Objects.nonNull(tfFlowApprove) && FlowGdykdxApproveSetupEnum.FINISH.getSetup() == tfFlowApprove.getSetup()) {
+                    if (Objects.nonNull(tfFlowApprove) && FlowApproveSetupEnum.FINISH.getSetup() == tfFlowApprove.getSetup()) {
 //                        ExamTask examTask = (ExamTask) objectMap.get("examTask");
 //                        ExamTask examTask = (ExamTask) objectMap.get("examTask");
                         SysUser sysUser = (SysUser) objectMap.get("sysUser");
                         SysUser sysUser = (SysUser) objectMap.get("sysUser");
                         try {
                         try {

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

@@ -177,7 +177,7 @@ public class TFFlowController {
             TFFlowApprove tfFlowApprove = (TFFlowApprove) objectMap.get("tfFlowApprove");
             TFFlowApprove tfFlowApprove = (TFFlowApprove) objectMap.get("tfFlowApprove");
             ExamTask examTask = (ExamTask) objectMap.get("examTask");
             ExamTask examTask = (ExamTask) objectMap.get("examTask");
             //审核通过,生成pdf
             //审核通过,生成pdf
-            if (Objects.nonNull(tfFlowApprove) && FlowGdykdxApproveSetupEnum.FINISH.getSetup() == tfFlowApprove.getSetup()) {
+            if (Objects.nonNull(tfFlowApprove) && FlowApproveSetupEnum.FINISH.getSetup() == tfFlowApprove.getSetup()) {
                 // 取命题老师ID
                 // 取命题老师ID
                 SysUser sysUser = sysUserService.getById(examTask.getUserId());
                 SysUser sysUser = sysUserService.getById(examTask.getUserId());
                 try {
                 try {
@@ -189,7 +189,7 @@ public class TFFlowController {
 
 
             // 驳回短信(驳回给提交老师)
             // 驳回短信(驳回给提交老师)
             if (tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT)
             if (tfFlowApprove.getStatus().equals(FlowStatusEnum.REJECT)
-                    && tfFlowApprove.getSetup().equals(FlowGdykdxApproveSetupEnum.SUBMIT.getSetup())) {
+                    && tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.SUBMIT.getSetup())) {
                 List<SysUser> sysUsers = sysUserService.listByIds(Arrays.asList(examTask.getUserId()));
                 List<SysUser> sysUsers = sysUserService.listByIds(Arrays.asList(examTask.getUserId()));
                 List<ApproveUserResult> sysUserList = new Gson().fromJson(JacksonUtil.parseJson(sysUsers), new TypeToken<List<ApproveUserResult>>() {
                 List<ApproveUserResult> sysUserList = new Gson().fromJson(JacksonUtil.parseJson(sysUsers), new TypeToken<List<ApproveUserResult>>() {
                 }.getType());
                 }.getType());

+ 69 - 0
distributed-print/src/main/resources/processes/JxzyydxPaperApprove.bpmn

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
+  <process id="JxzyyPaperApprove" name="JxzyyPaperApprove" isExecutable="true">
+    <startEvent id="startevent1" name="Start"></startEvent>
+    <userTask id="usertask1" name="提交试卷" activiti:assignee="${approveId}"></userTask>
+    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
+    <endEvent id="endevent1" name="End"></endEvent>
+    <userTask id="usertask2" name="审核试卷">
+      <extensionElements>
+        <activiti:taskListener event="create" class="com.qmth.distributed.print.business.activiti.DirectorApproveByJxzyyListener"></activiti:taskListener>
+      </extensionElements>
+    </userTask>
+    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
+    <exclusiveGateway id="exclusivegateway1" name="审批"></exclusiveGateway>
+    <sequenceFlow id="flow3" sourceRef="usertask2" targetRef="exclusivegateway1"></sequenceFlow>
+    <sequenceFlow id="flow4" name="通过" sourceRef="exclusivegateway1" targetRef="endevent1">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve == 1}]]></conditionExpression>
+    </sequenceFlow>
+    <sequenceFlow id="flow5" name="驳回" sourceRef="exclusivegateway1" targetRef="usertask1">
+      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${approve == 0}]]></conditionExpression>
+    </sequenceFlow>
+  </process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_JxzyyPaperApprove">
+    <bpmndi:BPMNPlane bpmnElement="JxzyyPaperApprove" id="BPMNPlane_JxzyyPaperApprove">
+      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
+        <omgdc:Bounds height="35.0" width="35.0" x="80.0" y="80.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
+        <omgdc:Bounds height="55.0" width="105.0" x="160.0" y="70.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
+        <omgdc:Bounds height="35.0" width="35.0" x="345.0" y="270.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2">
+        <omgdc:Bounds height="55.0" width="105.0" x="310.0" y="70.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="exclusivegateway1" id="BPMNShape_exclusivegateway1">
+        <omgdc:Bounds height="40.0" width="40.0" x="342.0" y="180.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
+        <omgdi:waypoint x="115.0" y="97.0"></omgdi:waypoint>
+        <omgdi:waypoint x="160.0" y="97.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
+        <omgdi:waypoint x="265.0" y="97.0"></omgdi:waypoint>
+        <omgdi:waypoint x="310.0" y="97.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
+        <omgdi:waypoint x="362.0" y="125.0"></omgdi:waypoint>
+        <omgdi:waypoint x="362.0" y="180.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
+        <omgdi:waypoint x="362.0" y="220.0"></omgdi:waypoint>
+        <omgdi:waypoint x="362.0" y="270.0"></omgdi:waypoint>
+        <bpmndi:BPMNLabel>
+          <omgdc:Bounds height="16.0" width="22.0" x="362.0" y="220.0"></omgdc:Bounds>
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
+        <omgdi:waypoint x="342.0" y="200.0"></omgdi:waypoint>
+        <omgdi:waypoint x="212.0" y="199.0"></omgdi:waypoint>
+        <omgdi:waypoint x="212.0" y="125.0"></omgdi:waypoint>
+        <bpmndi:BPMNLabel>
+          <omgdc:Bounds height="16.0" width="22.0" x="342.0" y="200.0"></omgdc:Bounds>
+        </bpmndi:BPMNLabel>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</definitions>

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -194,7 +194,8 @@ public class SystemConstant {
      * activiti
      * activiti
      */
      */
     public static final String PROCESSES = "processes";
     public static final String PROCESSES = "processes";
-    public static final String GDYKDX_FLOW_KEY = "GdykdxPaperApprove";//流程key
+    public static final String GDYKDX_FLOW_KEY = "GdykdxPaperApprove";//广药流程key
+    public static final String JXZYY_FLOW_KEY = "JxzyyPaperApprove";//江西流程key
     public static final String APPROVE_ID = "approveId";//审批id
     public static final String APPROVE_ID = "approveId";//审批id
     public static final String TEACHING_ROOM_ID = "teachingRoomId";//教研室机构id
     public static final String TEACHING_ROOM_ID = "teachingRoomId";//教研室机构id
     public static final String FLOW_ID = "flowId";//流程id
     public static final String FLOW_ID = "flowId";//流程id

+ 5 - 5
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FlowGdykdxApproveSetupEnum.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/FlowApproveSetupEnum.java

@@ -9,7 +9,7 @@ import java.util.Objects;
  * @Author: wangliang
  * @Author: wangliang
  * @Date: 2021/8/2
  * @Date: 2021/8/2
  */
  */
-public enum FlowGdykdxApproveSetupEnum {
+public enum FlowApproveSetupEnum {
 
 
     SUBMIT("提交试卷", "usertask1", 1),
     SUBMIT("提交试卷", "usertask1", 1),
 
 
@@ -27,7 +27,7 @@ public enum FlowGdykdxApproveSetupEnum {
 
 
     private int setup;
     private int setup;
 
 
-    private FlowGdykdxApproveSetupEnum(String title, String id, int setup) {
+    private FlowApproveSetupEnum(String title, String id, int setup) {
         this.title = title;
         this.title = title;
         this.id = id;
         this.id = id;
         this.setup = setup;
         this.setup = setup;
@@ -52,7 +52,7 @@ public enum FlowGdykdxApproveSetupEnum {
      * @return
      * @return
      */
      */
     public static String convertToName(String title) {
     public static String convertToName(String title) {
-        for (FlowGdykdxApproveSetupEnum e : FlowGdykdxApproveSetupEnum.values()) {
+        for (FlowApproveSetupEnum e : FlowApproveSetupEnum.values()) {
             if (Objects.equals(title, e.getTitle())) {
             if (Objects.equals(title, e.getTitle())) {
                 return e.name();
                 return e.name();
             }
             }
@@ -66,8 +66,8 @@ public enum FlowGdykdxApproveSetupEnum {
      * @param id
      * @param id
      * @return
      * @return
      */
      */
-    public static FlowGdykdxApproveSetupEnum convertToInstance(String id) {
-        for (FlowGdykdxApproveSetupEnum e : FlowGdykdxApproveSetupEnum.values()) {
+    public static FlowApproveSetupEnum convertToInstance(String id) {
+        for (FlowApproveSetupEnum e : FlowApproveSetupEnum.values()) {
             if (Objects.equals(id, e.getId())) {
             if (Objects.equals(id, e.getId())) {
                 return e;
                 return e;
             }
             }

+ 17 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -115,6 +115,14 @@ public interface SysUserService extends IService<SysUser> {
      */
      */
     public List<ApproveUserResult> findByAssignApprove(String courseCode, String realName);
     public List<ApproveUserResult> findByAssignApprove(String courseCode, String realName);
 
 
+    /**
+     * 获取命题审批人
+     *
+     * @param realName
+     * @return
+     */
+    public List<ApproveUserResult> findByJxzyyAssignApprove(String realName);
+
     /**
     /**
      * 获取教研室主任审批人
      * 获取教研室主任审批人
      *
      *
@@ -124,6 +132,14 @@ public interface SysUserService extends IService<SysUser> {
      */
      */
     public List<ApproveUserResult> findByDirectorApprove(String courseCode, String realName);
     public List<ApproveUserResult> findByDirectorApprove(String courseCode, String realName);
 
 
+    /**
+     * 获取教研室主任审批人
+     *
+     * @param realName
+     * @return
+     */
+    public List<ApproveUserResult> findByJxzyyDirectorApprove(String realName);
+
     /**
     /**
      * 获取院长审批人
      * 获取院长审批人
      *
      *
@@ -181,7 +197,7 @@ public interface SysUserService extends IService<SysUser> {
      * 用户推送云阅卷服务
      * 用户推送云阅卷服务
      *
      *
      * @param userPushParamList 推送参数
      * @param userPushParamList 推送参数
-     * @param requestUserId       请求的用户id
+     * @param requestUserId     请求的用户id
      * @throws IllegalAccessException
      * @throws IllegalAccessException
      */
      */
     boolean userPushService(List<UserPushParam> userPushParamList, Long requestUserId) throws IllegalAccessException;
     boolean userPushService(List<UserPushParam> userPushParamList, Long requestUserId) throws IllegalAccessException;

+ 33 - 16
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -780,14 +780,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 .eq(BasicCourse::getCode, courseCode)
                 .eq(BasicCourse::getCode, courseCode)
                 .eq(BasicCourse::getEnable, true);
                 .eq(BasicCourse::getEnable, true);
         BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
         BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
-        if (Objects.isNull(basicCourse)) {
-            throw ExceptionResultEnum.ERROR.exception("找不到此课程信息");
-        }
+        Optional.ofNullable(basicCourse).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("课程数据为空"));
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.getTeachingRoomId());
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.getTeachingRoomId());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
         return sysUserService.filterFlowPrivilege(schoolId, orgIds, false, null, realName);
         return sysUserService.filterFlowPrivilege(schoolId, orgIds, false, null, realName);
     }
     }
 
 
+    /**
+     * 获取命题审批人
+     *
+     * @param realName
+     * @return
+     */
+    @Override
+    public List<ApproveUserResult> findByJxzyyAssignApprove(String realName) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(sysUser.getOrgId());
+        Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
+        return sysUserService.filterFlowPrivilege(sysUser.getSchoolId(), orgIds, false, null, realName);
+    }
+
     /**
     /**
      * 获取教研室主任审批人
      * 获取教研室主任审批人
      *
      *
@@ -803,12 +815,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 .eq(BasicCourse::getCode, courseCode);
                 .eq(BasicCourse::getCode, courseCode);
         BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
         BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
 
 
-        if (Objects.isNull(basicCourse)) {
-            throw ExceptionResultEnum.ERROR.exception("课程数据为空");
-        }
-        if (Objects.isNull(basicCourse.getTeachingRoomId())) {
-            throw ExceptionResultEnum.ERROR.exception("课程机构为空");
-        }
+        Optional.ofNullable(basicCourse).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("课程数据为空"));
+        Optional.ofNullable(basicCourse.getTeachingRoomId()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("课程机构为空"));
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.getTeachingRoomId());
         List<SysOrg> sysOrgList = sysOrgService.findByConnectByRootOrgId(basicCourse.getTeachingRoomId());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
         Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
         List<ApproveUserResult> approveUserResultList = sysUserService.filterFlowPrivilege(schoolId, orgIds, true, FlowApproveNameEnum.DIRECTOR, realName);
         List<ApproveUserResult> approveUserResultList = sysUserService.filterFlowPrivilege(schoolId, orgIds, true, FlowApproveNameEnum.DIRECTOR, realName);
@@ -818,6 +826,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return approveUserResultList;
         return approveUserResultList;
     }
     }
 
 
+    /**
+     * 获取教研室主任审批人
+     *
+     * @param realName
+     * @return
+     */
+    @Override
+    public List<ApproveUserResult> findByJxzyyDirectorApprove(String realName) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(sysUser.getOrgId(), true, false);
+        Set<Long> orgIds = sysOrgList.stream().map(s -> s.getId()).collect(Collectors.toSet());
+        return sysUserService.filterFlowPrivilege(sysUser.getSchoolId(), orgIds, true, FlowApproveNameEnum.DIRECTOR, realName);
+    }
+
     /**
     /**
      * 获取院长审批人
      * 获取院长审批人
      *
      *
@@ -862,13 +884,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             basicCourseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId)
             basicCourseQueryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId)
                     .eq(BasicCourse::getCode, courseCode);
                     .eq(BasicCourse::getCode, courseCode);
             BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
             BasicCourse basicCourse = basicCourseService.getOne(basicCourseQueryWrapper);
-
-            if (Objects.isNull(basicCourse)) {
-                throw ExceptionResultEnum.ERROR.exception("课程数据为空");
-            }
-            if (Objects.isNull(basicCourse.getTeachingRoomId())) {
-                throw ExceptionResultEnum.ERROR.exception("课程机构为空");
-            }
+            Optional.ofNullable(basicCourse).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("课程数据为空"));
+            Optional.ofNullable(basicCourse.getTeachingRoomId()).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("课程机构为空"));
             List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(basicCourse.getTeachingRoomId(), true, true);
             List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(basicCourse.getTeachingRoomId(), true, true);
             orgIdsSet.addAll(sysOrgList.stream().map(BaseEntity::getId).collect(Collectors.toSet()));
             orgIdsSet.addAll(sysOrgList.stream().map(BaseEntity::getId).collect(Collectors.toSet()));
         } else {
         } else {