Browse Source

广药子流程find修改

wangliang 3 years ago
parent
commit
c24811b06d
15 changed files with 206 additions and 33 deletions
  1. 11 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveListener.java
  2. 11 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PresidentApproveListener.java
  3. 10 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PrintApproveSubListener.java
  4. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FlowApproveResult.java
  5. 16 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApproveLog.java
  6. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowLog.java
  7. 24 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TExamTaskFlowMapper.java
  8. 10 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TExamTaskFlowService.java
  9. 22 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java
  10. 28 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TExamTaskFlowServiceImpl.java
  11. 11 0
      distributed-print-business/src/main/resources/mapper/TExamTaskFlowMapper.xml
  12. 18 0
      distributed-print-business/src/main/resources/mapper/TFFlowMapper.xml
  13. 10 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  14. 1 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/TFFlowController.java
  15. 1 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

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

@@ -4,10 +4,12 @@ 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.entity.TFFlowLog;
 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.distributed.print.business.service.TFFlowLogService;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -46,7 +48,10 @@ public class DirectorApproveListener implements TaskListener {
         ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
         BasicMessageService basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
         TFFlowApproveService tfFlowApproveService = SpringContextHolder.getBean(TFFlowApproveService.class);
+        TFFlowLogService tfFlowLogService = SpringContextHolder.getBean(TFFlowLogService.class);
         List<Long> approveUserIds = (List<Long>) delegateTask.getVariable(SystemConstant.APPROVE_DIRECTOR_USER_IDS);
+        TFFlowLog tfFlowLog = (TFFlowLog) delegateTask.getVariable(SystemConstant.APPROVE_TF_FLOW_LOG);
+
         Long flowId = SystemConstant.convertIdToLong(delegateTask.getProcessInstanceId());
         ExamTask examTask = examTaskService.findByFlowId(flowId);
         List<ApproveUserResult> sysUserList = null;
@@ -54,15 +59,20 @@ public class DirectorApproveListener implements TaskListener {
             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()));
+            List<String> userIdList = approveUserIds.stream().map(x -> String.valueOf(x)).collect(Collectors.toList());
+            delegateTask.addCandidateUsers(userIdList);
+            tfFlowLog.setPendApproveId(String.join(", ", userIdList));
         } else {
             sysUserList = sysUserService.findByDirectorApprove(examTask.getCourseCode(), 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);
+                tfFlowLog.setPendApproveId(String.join(", ", ids));
             }
         }
+        tfFlowLogService.updateById(tfFlowLog);
+
         // 发送审核短信
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId);
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)

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

@@ -4,10 +4,12 @@ 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.entity.TFFlowLog;
 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.distributed.print.business.service.TFFlowLogService;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -49,7 +51,10 @@ public class PresidentApproveListener implements TaskListener {
         ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
         BasicMessageService basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
         TFFlowApproveService tfFlowApproveService = SpringContextHolder.getBean(TFFlowApproveService.class);
+        TFFlowLogService tfFlowLogService = SpringContextHolder.getBean(TFFlowLogService.class);
         List<Long> approveUserIds = (List<Long>) delegateTask.getVariable(SystemConstant.APPROVE_PRESIDENT_USER_IDS);
+        TFFlowLog tfFlowLog = (TFFlowLog) delegateTask.getVariable(SystemConstant.APPROVE_TF_FLOW_LOG);
+
         Long flowId = SystemConstant.convertIdToLong(delegateTask.getProcessInstanceId());
         ExamTask examTask = examTaskService.findByFlowId(flowId);
         List<ApproveUserResult> sysUserList = null;
@@ -57,7 +62,9 @@ public class PresidentApproveListener implements TaskListener {
             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()));
+            List<String> userIdList = approveUserIds.stream().map(x -> String.valueOf(x)).collect(Collectors.toList());
+            delegateTask.addCandidateUsers(userIdList);
+            tfFlowLog.setPendApproveId(String.join(", ", userIdList));
         } else {
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             if (Objects.isNull(sysUser.getOrgId())) {
@@ -68,8 +75,11 @@ public class PresidentApproveListener implements TaskListener {
                 List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
                 //添加或签的人员,一人通过即可进入下一环节
                 delegateTask.addCandidateUsers(ids);
+                tfFlowLog.setPendApproveId(String.join(", ", ids));
             }
         }
+        tfFlowLogService.updateById(tfFlowLog);
+
         // 发送审核短信
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId);
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)

+ 10 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/PrintApproveSubListener.java

@@ -4,11 +4,9 @@ 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.entity.TFFlowLog;
 import com.qmth.distributed.print.business.enums.MessageEnum;
-import com.qmth.distributed.print.business.service.ActivitiService;
-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.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -50,8 +48,10 @@ public class PrintApproveSubListener implements TaskListener {
         BasicMessageService basicMessageService = SpringContextHolder.getBean(BasicMessageService.class);
         TFFlowApproveService tfFlowApproveService = SpringContextHolder.getBean(TFFlowApproveService.class);
         ActivitiService activitiService = SpringContextHolder.getBean(ActivitiService.class);
+        TFFlowLogService tfFlowLogService = SpringContextHolder.getBean(TFFlowLogService.class);
 
         List<Long> approveUserIds = (List<Long>) delegateTask.getVariable(SystemConstant.APPROVE_PRINT_USER_IDS);
+        TFFlowLog tfFlowLog = (TFFlowLog) delegateTask.getVariable(SystemConstant.APPROVE_TF_FLOW_LOG);
         Long flowId = SystemConstant.convertIdToLong(delegateTask.getProcessInstanceId());
         ExamTask examTask = examTaskService.findByFlowId(flowId);
         List<ApproveUserResult> sysUserList = null;
@@ -59,7 +59,9 @@ public class PrintApproveSubListener implements TaskListener {
             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()));
+            List<String> userIdList = approveUserIds.stream().map(x -> String.valueOf(x)).collect(Collectors.toList());
+            delegateTask.addCandidateUsers(userIdList);
+            tfFlowLog.setPendApproveId(String.join(", ", userIdList));
         } else {
             SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
             if (Objects.isNull(sysUser.getOrgId())) {
@@ -70,9 +72,12 @@ public class PrintApproveSubListener implements TaskListener {
                 List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
                 //添加或签的人员,一人通过即可进入下一环节
                 delegateTask.addCandidateUsers(ids);
+                tfFlowLog.setPendApproveId(String.join(", ", ids));
             }
 //            delegateTask.addCandidateUsers(Arrays.asList("190416459858444288", "190416551696924672"));
         }
+        tfFlowLogService.updateById(tfFlowLog);
+
         // 发送审核短信
         TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId);
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)

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

@@ -29,12 +29,34 @@ public class FlowApproveResult extends TFFlowApproveLog implements Serializable
     @ApiModelProperty(value = "二级审核人名称")
     private String secondApproveName;
 
+    @ApiModelProperty(value = "三级审核人名称")
+    private String threeApproveName;
+
+    @ApiModelProperty(value = "四级审核人名称")
+    private String fourApproveName;
+
     @ApiModelProperty(value = "流程状态")
     private FlowStatusEnum status;
 
     @ApiModelProperty(value = "流程状态")
     private String statusStr;
 
+    public String getThreeApproveName() {
+        return threeApproveName;
+    }
+
+    public void setThreeApproveName(String threeApproveName) {
+        this.threeApproveName = threeApproveName;
+    }
+
+    public String getFourApproveName() {
+        return fourApproveName;
+    }
+
+    public void setFourApproveName(String fourApproveName) {
+        this.fourApproveName = fourApproveName;
+    }
+
     public FlowStatusEnum getStatus() {
         return status;
     }

+ 16 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowApproveLog.java

@@ -68,11 +68,14 @@ public class TFFlowApproveLog extends BaseEntity implements Serializable {
 
     @ApiModelProperty(value = "三级审核人id")
     @JsonSerialize(using = ToStringSerializer.class)
-    private Long startApproveId;
+    private Long threeApproveId;
 
     @ApiModelProperty(value = "三级审核人意见")
     private String threeApproveRemark;
 
+    @ApiModelProperty(value = "三级审核人操作,SUBMIT:提交,APPROVE:审批,REJECT:驳回,END:终止")
+    private FlowApproveOperationEnum threeApproveOperation;
+
     @ApiModelProperty(value = "四级审核人id")
     @JsonSerialize(using = ToStringSerializer.class)
     private Long fourApproveId;
@@ -103,12 +106,20 @@ public class TFFlowApproveLog extends BaseEntity implements Serializable {
         insertInfo(userId);
     }
 
-    public Long getStartApproveId() {
-        return startApproveId;
+    public Long getThreeApproveId() {
+        return threeApproveId;
+    }
+
+    public void setThreeApproveId(Long threeApproveId) {
+        this.threeApproveId = threeApproveId;
+    }
+
+    public FlowApproveOperationEnum getThreeApproveOperation() {
+        return threeApproveOperation;
     }
 
-    public void setStartApproveId(Long startApproveId) {
-        this.startApproveId = startApproveId;
+    public void setThreeApproveOperation(FlowApproveOperationEnum threeApproveOperation) {
+        this.threeApproveOperation = threeApproveOperation;
     }
 
     public String getThreeApproveRemark() {

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TFFlowLog.java

@@ -58,6 +58,9 @@ public class TFFlowLog extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "审批操作,SUBMIT:提交,APPROVE:审批,REJECT:驳回,END:终止,EXCHANGE:转他人审批")
     private FlowApproveOperationEnum approveOperation;
 
+    @ApiModelProperty(value = "待审核人id")
+    private String pendApproveId;
+
     public TFFlowLog() {
 
     }
@@ -84,6 +87,14 @@ public class TFFlowLog extends BaseEntity implements Serializable {
         insertInfo(userId);
     }
 
+    public String getPendApproveId() {
+        return pendApproveId;
+    }
+
+    public void setPendApproveId(String pendApproveId) {
+        this.pendApproveId = pendApproveId;
+    }
+
     public Long getSchoolId() {
         return schoolId;
     }

+ 24 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TExamTaskFlowMapper.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.distributed.print.business.entity.TExamTaskFlow;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +14,27 @@ import com.qmth.distributed.print.business.entity.TExamTaskFlow;
  */
 public interface TExamTaskFlowMapper extends BaseMapper<TExamTaskFlow> {
 
+    /**
+     * 根据考试任务id查找
+     *
+     * @param examTaskId
+     * @return
+     */
+    Integer findByFlowLevel(@Param("examTaskId") Long examTaskId);
+
+    /**
+     * 根据流程id查找
+     *
+     * @param flowId
+     * @return
+     */
+    Long findByRootLevel(@Param("flowId") Long flowId);
+
+    /**
+     * 根据考试任务id查找
+     *
+     * @param examTaskId
+     * @return
+     */
+    Integer findByRootLevelByExamTaskId(@Param("examTaskId") Long examTaskId);
 }

+ 10 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TExamTaskFlowService.java

@@ -23,11 +23,18 @@ public interface TExamTaskFlowService extends IService<TExamTaskFlow> {
     public boolean saveOrUpdate(Map<String, Object> map);
 
     /**
-     * 根据考试任务id和流程level查找
+     * 根据考试任务id查找
      *
      * @param examTaskId
-     * @param level
      * @return
      */
-    public TExamTaskFlow findByFlowLevel(Long examTaskId, Integer level);
+    public TExamTaskFlow findByFlowLevel(Long examTaskId);
+
+    /**
+     * 根据流程id查找
+     *
+     * @param flowId
+     * @return
+     */
+    public TExamTaskFlow findByRootLevel(Long flowId);
 }

+ 22 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -100,6 +100,9 @@ public class ActivitiServiceImpl implements ActivitiService {
     @Resource
     ExamDetailService examDetailService;
 
+    @Resource
+    TExamTaskFlowService tExamTaskFlowService;
+
     /**
      * 注册流程
      *
@@ -359,6 +362,7 @@ public class ActivitiServiceImpl implements ActivitiService {
             tfFlowApprove.updateInfo(sysUser.getId());
             tfFlowApproveLog.updateInfo(sysUser.getId());
             tfFlowApprove.setApproveId(sysUser.getId());
+            map.put(SystemConstant.APPROVE_TF_FLOW_LOG, tfFlowLog);
             //当前实例的执行到哪个节点
             taskService.complete(String.valueOf(flowTaskId), map);
             tfFlowApproveService.saveOrUpdate(tfFlowApprove);
@@ -396,6 +400,12 @@ public class ActivitiServiceImpl implements ActivitiService {
      */
     @Override
     public List<FlowTaskResult> getTaskAll(String flowId) {
+        ExamTask examTask = examTaskService.findByFlowId(SystemConstant.convertIdToLong(flowId));
+        if (examTask.getFlowId().longValue() != SystemConstant.convertIdToLong(flowId).longValue()) {
+            TExamTaskFlow tExamTaskFlow = tExamTaskFlowService.findByRootLevel(SystemConstant.convertIdToLong(flowId));
+            Optional.ofNullable(tExamTaskFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到任何流程信息"));
+            flowId = String.valueOf(tExamTaskFlow.getFlowId());
+        }
         String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(flowId).singleResult().getProcessDefinitionId();
         ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(processDefinitionId);
         BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
@@ -505,9 +515,9 @@ public class ActivitiServiceImpl implements ActivitiService {
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, approveUserPresidentList));
                     }
                     if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
-                        if (Objects.nonNull(flowApproveResult.getStartApproveId())) {
+                        if (Objects.nonNull(flowApproveResult.getThreeApproveId())) {
                             //获取命题已审
-                            List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getStartApproveId());
+                            List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getThreeApproveId());
                             flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), true, approveUserTeacherResult));
                         }
                         if (Objects.nonNull(flowApproveResult.getFourApproveId())) {
@@ -532,9 +542,9 @@ public class ActivitiServiceImpl implements ActivitiService {
                         flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, approveUserPresidentList));
 
                         if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
-                            if (Objects.nonNull(flowApproveResult.getStartApproveId())) {
+                            if (Objects.nonNull(flowApproveResult.getThreeApproveId())) {
                                 //获取命题已审
-                                List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getStartApproveId());
+                                List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getThreeApproveId());
                                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), true, approveUserTeacherResult));
                             }
                             if (Objects.nonNull(flowApproveResult.getFourApproveId())) {
@@ -654,7 +664,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                     sysUserPresidentList = sysUserService.findById(flowApproveResult.getSecondApproveId());
                     flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.SECOND_APPROVE.getSetup(), true, sysUserPresidentList));
                     //获取命题审核已审
-                    List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getStartApproveId());
+                    List<ApproveUserResult> approveUserTeacherResult = sysUserService.findById(flowApproveResult.getThreeApproveId());
                     flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(FlowApproveSetupEnum.THREE_APPROVE.getSetup(), true, approveUserTeacherResult));
                     break;
                 default:
@@ -837,6 +847,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                 break;
             case 4:
                 //获取命题审批人
+                examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
                 approveUserResultList = sysUserService.findByAssignApprove(examTask.getCourseCode(), realName);
                 flowTaskApprovePeopleResultList.add(new FlowTaskApprovePeopleResult(approveUserResultList));
                 break;
@@ -1167,8 +1178,9 @@ public class ActivitiServiceImpl implements ActivitiService {
      * @param sysUser
      */
     private void teacherFlowEnd(TFFlowApproveLog tfFlowApproveLog, SysUser sysUser) {
-        tfFlowApproveLog.setStartApproveId(sysUser.getId());
+        tfFlowApproveLog.setThreeApproveId(sysUser.getId());
         tfFlowApproveLog.setThreeApproveRemark(FlowApproveSetupEnum.THREE_APPROVE.getTitle() + FlowApproveOperationEnum.END.getTitle());
+        tfFlowApproveLog.setThreeApproveOperation(FlowApproveOperationEnum.APPROVE);
     }
 
     /**
@@ -1282,9 +1294,10 @@ public class ActivitiServiceImpl implements ActivitiService {
         tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
         tfFlowLog.setApproveId(userId);
         tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
-        tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
-        tfFlowApproveLog.setStartApproveId(userId);
+        tfFlowApprove.setSetup(FlowApproveSetupEnum.FOUR_APPROVE.getSetup());
+        tfFlowApproveLog.setThreeApproveId(userId);
         tfFlowApproveLog.setThreeApproveRemark(remark);
+        tfFlowApproveLog.setThreeApproveOperation(FlowApproveOperationEnum.APPROVE);
         map.computeIfAbsent(SystemConstant.APPROVE_PRINT_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
     }
 
@@ -1308,7 +1321,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                               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;
+        FlowApproveVariableEnum approve = approvePass == FlowApprovePassEnum.PASS ? FlowApproveVariableEnum.FOUR_APPROVE : FlowApproveVariableEnum.FOUR_REJECT;
         tfFlowLog.setApproveSetup(FlowApproveSetupEnum.FOUR_APPROVE.getSetup());
         tfFlowApproveLog.setFourApproveId(sysUser.getId());
         tfFlowApproveLog.setFourApproveRemark(remark);

+ 28 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TExamTaskFlowServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 
 /**
  * <p>
@@ -30,6 +31,9 @@ public class TExamTaskFlowServiceImpl extends ServiceImpl<TExamTaskFlowMapper, T
     @Resource
     RedisUtil redisUtil;
 
+    @Resource
+    TExamTaskFlowMapper taskFlowMapper;
+
     /**
      * 保存TExamTaskFlow
      *
@@ -70,17 +74,36 @@ public class TExamTaskFlowServiceImpl extends ServiceImpl<TExamTaskFlowMapper, T
     }
 
     /**
-     * 根据考试任务id和流程level查找
+     * 根据考试任务id查找
      *
      * @param examTaskId
-     * @param level
      * @return
      */
     @Override
-    public TExamTaskFlow findByFlowLevel(Long examTaskId, Integer level) {
+    public TExamTaskFlow findByFlowLevel(Long examTaskId) {
+        Integer level = taskFlowMapper.findByFlowLevel(examTaskId);
+        Optional.ofNullable(level).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到子流程信息"));
+        QueryWrapper<TExamTaskFlow> tExamTaskFlowQueryWrapper = new QueryWrapper<>();
+        tExamTaskFlowQueryWrapper.lambda().eq(TExamTaskFlow::getExamTaskId, examTaskId)
+                .eq(TExamTaskFlow::getLevel, level);
+        return this.getOne(tExamTaskFlowQueryWrapper);
+    }
+
+    /**
+     * 根据流程id查找
+     *
+     * @param flowId
+     * @return
+     */
+    @Override
+    public TExamTaskFlow findByRootLevel(Long flowId) {
+        Long examTaskId = taskFlowMapper.findByRootLevel(flowId);
+        Optional.ofNullable(examTaskId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到考试任务id信息"));
+        Integer level = taskFlowMapper.findByRootLevelByExamTaskId(examTaskId);
+        Optional.ofNullable(level).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到主流程信息"));
         QueryWrapper<TExamTaskFlow> tExamTaskFlowQueryWrapper = new QueryWrapper<>();
-        tExamTaskFlowQueryWrapper.lambda().eq(TExamTaskFlow::getExamTaskId,examTaskId)
-                .eq(TExamTaskFlow::getLevel,level);
+        tExamTaskFlowQueryWrapper.lambda().eq(TExamTaskFlow::getExamTaskId, examTaskId)
+                .eq(TExamTaskFlow::getLevel, level);
         return this.getOne(tExamTaskFlowQueryWrapper);
     }
 }

+ 11 - 0
distributed-print-business/src/main/resources/mapper/TExamTaskFlowMapper.xml

@@ -2,4 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.qmth.distributed.print.business.mapper.TExamTaskFlowMapper">
 
+    <select id="findByFlowLevel" resultType="java.lang.Integer">
+        SELECT max(t.level) FROM t_exam_task_flow t WHERE t.exam_task_id = #{examTaskId}
+    </select>
+
+    <select id="findByRootLevel" resultType="java.lang.Long">
+        SELECT t.exam_task_id FROM t_exam_task_flow t WHERE t.flow_id = #{flowId}
+    </select>
+
+    <select id="findByRootLevelByExamTaskId" resultType="java.lang.Integer">
+        SELECT min(t.level) FROM t_exam_task_flow t WHERE t.exam_task_id = #{examTaskId}
+    </select>
 </mapper>

+ 18 - 0
distributed-print-business/src/main/resources/mapper/TFFlowMapper.xml

@@ -43,6 +43,24 @@
             where
                 t.id = tffal.second_approve_id) as secondApproveName,
             tffal.second_approve_remark as secondApproveRemark,
+            tffal.three_approve_id as threeApproveId,
+            tffal.three_approve_remark as threeApproveRemark,
+            (
+            select
+            t.real_name
+            from
+            sys_user t
+            where
+            t.id = tffal.three_approve_id) as threeApproveName,
+            tffal.four_approve_id as fourApproveId,
+            tffal.four_approve_remark as fourApproveRemark,
+            (
+            select
+            t.real_name
+            from
+            sys_user t
+            where
+            t.id = tffal.four_approve_id) as fourApproveName,
             tffa.status
         from
             t_f_flow_approve_log tffal

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

@@ -96,6 +96,9 @@ public class ExamTaskController {
     @Autowired
     ExamTaskApplyTempService examTaskApplyTempService;
 
+    @Resource
+    TExamTaskFlowService tExamTaskFlowService;
+
     /**
      * 命题任务管理-查询
      *
@@ -303,6 +306,13 @@ public class ExamTaskController {
             Task task = taskService.createTaskQuery().processInstanceId(detail.getFlowId()).singleResult();
             if (Objects.nonNull(task)) {
                 detail.setFlowTaskId(task.getId());
+            } else {
+                TExamTaskFlow tExamTaskFlow = tExamTaskFlowService.findByFlowLevel(Long.parseLong(detail.getExamTaskId()));
+                task = taskService.createTaskQuery().processInstanceId(String.valueOf(tExamTaskFlow.getFlowId())).singleResult();
+                if (Objects.nonNull(task)) {
+                    detail.setFlowTaskId(task.getId());
+                    detail.setFlowId(String.valueOf(tExamTaskFlow.getFlowId()));
+                }
             }
         }
         return ResultUtil.ok(detail);

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

@@ -87,9 +87,6 @@ public class TFFlowController {
     @Resource
     TaskService taskService;
 
-    @Resource
-    TFFlowLogService tfFlowLogService;
-
     @Resource
     TExamTaskFlowService tExamTaskFlowService;
 
@@ -195,7 +192,7 @@ public class TFFlowController {
                     throw ExceptionResultEnum.ERROR.exception("生成pdf失败");
                 }
             } else if (Objects.nonNull(tfFlowApprove) && FlowApproveSetupEnum.THREE_APPROVE.getSetup() == tfFlowApprove.getSetup() && presidentApprove) {//命题老师后台提交
-                TExamTaskFlow tExamTaskFlow = tExamTaskFlowService.findByFlowLevel(examTask.getId(), 2);
+                TExamTaskFlow tExamTaskFlow = tExamTaskFlowService.findByFlowLevel(examTask.getId());
                 Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(tExamTaskFlow.getFlowId())).singleResult();
                 if (Objects.nonNull(task)) {
                     Map<String, Object> mapObject = new HashMap<>();

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

@@ -215,6 +215,7 @@ public class SystemConstant {
     public static final String APPROVE_REMARK = "approveRemark";//流程审批意见
     public static final String APPROVE_PRESIDENT_SYSTEM = "presidentApprove";//流程院长自动审批
     public static final String EXAM_TASK_ID = "examTaskId";
+    public static final String APPROVE_TF_FLOW_LOG = "TFFlowLog";//流程院长自动审批
     public static final String REDIS_LOCK_FLOW_TASK_PREFIX = "redis:lock:flow:task:";//流程节点锁
     public static final String REDIS_LOCK_EXAM_TASK_FLOW_PREFIX = "redis:lock:exam:task:flow:";//考试任务流程节点锁
     public static final long REDIS_LOCK_FLOW_TASK_TIME_OUT = 60L * 2;