wangliang 3 жил өмнө
parent
commit
2960967b35

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/StartApproveSubListener.java

@@ -3,9 +3,11 @@ package com.qmth.distributed.print.business.activiti;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.TFFlowApprove;
 import com.qmth.distributed.print.business.entity.TFFlowApproveLog;
+import com.qmth.distributed.print.business.entity.TFFlowLog;
 import com.qmth.distributed.print.business.service.ExamTaskService;
 import com.qmth.distributed.print.business.service.TFFlowApproveLogService;
 import com.qmth.distributed.print.business.service.TFFlowApproveService;
+import com.qmth.distributed.print.business.service.TFFlowLogService;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import org.activiti.engine.delegate.DelegateExecution;
 import org.activiti.engine.delegate.ExecutionListener;
@@ -13,6 +15,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.List;
 import java.util.StringJoiner;
 
 /**
@@ -31,9 +34,11 @@ public class StartApproveSubListener implements ExecutionListener {
         ExamTaskService examTaskService = SpringContextHolder.getBean(ExamTaskService.class);
         TFFlowApproveService tfFlowApproveService = SpringContextHolder.getBean(TFFlowApproveService.class);
         TFFlowApproveLogService tfFlowApproveLogService = SpringContextHolder.getBean(TFFlowApproveLogService.class);
+        TFFlowLogService tfFlowLogService = SpringContextHolder.getBean(TFFlowLogService.class);
 
         TFFlowApprove flowApprove = tfFlowApproveService.findByFlowId(delegateExecution.getRootProcessInstanceId());
         TFFlowApproveLog tfFlowApproveLog = tfFlowApproveLogService.findByFlowId(delegateExecution.getRootProcessInstanceId());
+        List<TFFlowLog> tfFlowLogList = tfFlowLogService.findByFlowId(delegateExecution.getRootProcessInstanceId());
         ExamTask examTask = examTaskService.findByFlowId(delegateExecution.getRootProcessInstanceId());
         String flowIds = new StringJoiner("").add(examTask.getFlowId()).add(",").add(delegateExecution.getProcessInstanceId()).toString();
         examTask.setFlowId(flowIds);
@@ -44,5 +49,8 @@ public class StartApproveSubListener implements ExecutionListener {
 
         tfFlowApproveLog.setFlowId(flowIds);
         tfFlowApproveLogService.updateById(tfFlowApproveLog);
+
+        tfFlowLogList.forEach(s -> s.setFlowId(flowIds));
+        tfFlowLogService.updateBatchById(tfFlowLogList);
     }
 }

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TFFlowLogMapper.java

@@ -2,6 +2,9 @@ package com.qmth.distributed.print.business.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.distributed.print.business.entity.TFFlowLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,11 @@ import com.qmth.distributed.print.business.entity.TFFlowLog;
  */
 public interface TFFlowLogMapper extends BaseMapper<TFFlowLog> {
 
+    /**
+     * 根据流程id查询流程状态
+     *
+     * @param flowId
+     * @return
+     */
+    List<TFFlowLog> findByFlowId(@Param("flowId") String flowId);
 }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TFFlowLogService.java

@@ -3,6 +3,8 @@ package com.qmth.distributed.print.business.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.entity.TFFlowLog;
 
+import java.util.List;
+
 /**
  * <p>
  * 流程流水表 服务类
@@ -13,4 +15,11 @@ import com.qmth.distributed.print.business.entity.TFFlowLog;
  */
 public interface TFFlowLogService extends IService<TFFlowLog> {
 
+    /**
+     * 根据流程id查询流程状态
+     *
+     * @param flowId
+     * @return
+     */
+    List<TFFlowLog> findByFlowId(String flowId);
 }

+ 165 - 97
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -1,6 +1,5 @@
 package com.qmth.distributed.print.business.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -194,7 +193,7 @@ public class ActivitiServiceImpl implements ActivitiService {
 
             //流程流水日志
             ExamTask examTask = examTaskService.findByFlowId(flowId);
-            TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), flowId, examTask.getId(), sysUser.getId(), sysUser.getId(), FlowApproveSetupEnum.END.getTitle());
+            TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), examTask.getFlowId(), examTask.getId(), sysUser.getId(), sysUser.getId(), FlowApproveSetupEnum.END.getTitle());
             tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
             tfFlowLog.setApproveSetup(FlowApproveSetupEnum.END.getSetup());
             tfFlowLogService.save(tfFlowLog);
@@ -318,7 +317,7 @@ public class ActivitiServiceImpl implements ActivitiService {
                 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(), processInstanceId, examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
+                tfFlowLog = new TFFlowLog(sysUser.getSchoolId(), sysUser.getOrgId(), examTask.getFlowId(), examTask.getId(), sysUser.getId(), sysUser.getId(), remark);
                 FlowApproveSetupEnum setupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
                 if (Objects.isNull(tfFlowApproveLog)) {
                     tfFlowApproveLog = new TFFlowApproveLog(sysUser.getSchoolId(), sysUser.getOrgId(), processInstanceId, examTask.getId(), sysUser.getId(), sysUser.getId());
@@ -329,98 +328,20 @@ public class ActivitiServiceImpl implements ActivitiService {
                     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);
+                        this.directorApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, processDefinitionEntity, map);
                     } else if (setupEnum == FlowApproveSetupEnum.SECOND_APPROVE) {//院长提交
-                        flowApproveVaild(task, sysUser.getId(), map);
-                        FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
-                        FlowApproveVariableEnum approve = null;
-                        tfFlowApproveLog.setSecondApproveId(sysUser.getId());
-                        tfFlowApproveLog.setSecondApproveRemark(remark);
-                        if (approvePass == FlowApprovePassEnum.PASS) {
-                            approve = FlowApproveVariableEnum.SECOND_APPROVE;
-                        } else {
-                            Optional.ofNullable(map.get(SystemConstant.APPROVE_SETUP)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程驳回节点不能为空"));
-                            Integer setup = Integer.parseInt(map.get(SystemConstant.APPROVE_SETUP).toString());
-                            if (setup.intValue() < FlowApproveSetupEnum.SUBMIT.getSetup() || setup.intValue() >= FlowApproveSetupEnum.SECOND_APPROVE.getSetup()) {
-                                throw ExceptionResultEnum.ERROR.exception("流程驳回节点有误");
-                            }
-                            approve = setup.intValue() == 1 ? FlowApproveVariableEnum.SECOND_REJECT_ONE : FlowApproveVariableEnum.SECOND_REJECT_TWO;
-                        }
-                        tfFlowLog.setApproveSetup(FlowApproveSetupEnum.SECOND_APPROVE.getSetup());
-                        if (approve == FlowApproveVariableEnum.SECOND_REJECT_ONE) {//驳回命题
-                            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
-                            tfFlowApprove.setSetup(FlowApproveSetupEnum.SUBMIT.getSetup());
-                        } else if (approve == FlowApproveVariableEnum.SECOND_REJECT_TWO) {//驳回主任
-                            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
-                            tfFlowApprove.setSetup(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup());
-                        } else if (approve == FlowApproveVariableEnum.SECOND_APPROVE) {//提交
-                            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
-                            tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.APPROVE);
-                            List<FlowTaskResult> taskTaskAll = getTaskAll(processInstanceId);
-                            if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
-                                tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
-                                tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
-                                objectMap.computeIfAbsent(SystemConstant.APPROVE_PRESIDENT_SYSTEM, v -> true);
-                            } else {
-                                tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
-                                tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
-                            }
-                        } else {
-                            throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
-                        }
-                        FlowApproveVariableEnum finalApprove = approve;
-                        map.computeIfAbsent(SystemConstant.APPROVE, v -> finalApprove.getId());
-                        TFFlowApproveLog finalTfFlowApproveLog = tfFlowApproveLog;
-                        map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> finalTfFlowApproveLog.getStartId());
+                        this.presidentApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, map, objectMap, processInstanceId);
                     } else if (setupEnum == FlowApproveSetupEnum.THREE_APPROVE) {//命题提交
-                        boolean presidentApprove = Objects.nonNull(map.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM)) ? (boolean) map.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM) : false;
-                        Long userId = null;
-                        if (presidentApprove) {
-                            userId = tfFlowApproveLog.getStartId();
-                        } else {
-                            userId = sysUser.getId();
-                        }
-                        flowSubmitVaild(task, userId);
-                        tfFlowLog.setApproveSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
-                        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
-                        tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
-                        tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
-                        tfFlowApproveLog.setStartApproveId(userId);
-                        tfFlowApproveLog.setThreeApproveRemark(remark);
-                        map.computeIfAbsent(SystemConstant.APPROVE_PRINT_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
+                        this.teacherApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, map);
                     } else if (setupEnum == FlowApproveSetupEnum.FOUR_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(FlowApproveSetupEnum.FOUR_APPROVE.getSetup());
-                        tfFlowApproveLog.setFourApproveId(sysUser.getId());
-                        tfFlowApproveLog.setFourApproveRemark(remark);
-                        if (approve == FlowApproveVariableEnum.FOUR_REJECT) {//驳回命题
-                            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApproveLog.setFourApproveOperation(FlowApproveOperationEnum.REJECT);
-                            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
-                            tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
-                        } else if (approve == FlowApproveVariableEnum.FOUR_APPROVE) {//提交
-                            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
-                            tfFlowApproveLog.setFourApproveOperation(FlowApproveOperationEnum.APPROVE);
-                            tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
-                            tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
-                        } else {
-                            throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
-                        }
-                        map.computeIfAbsent(SystemConstant.APPROVE, v -> approve.getId());
+                        this.printApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, map);
                     }
-                }
-                //江西中医药大学
+                }//江西中医药大学
                 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);
+                        this.directorApprove(task, sysUser, tfFlowApprove, tfFlowApproveLog, tfFlowLog, remark, processDefinitionEntity, map);
                     }
                 } else {
                     throw ExceptionResultEnum.ERROR.exception("未配置流程学校code");
@@ -737,7 +658,7 @@ public class ActivitiServiceImpl implements ActivitiService {
 
         SysUser exchangeUser = sysUserService.getById(userId);
         //流程流水日志
-        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(), examTask.getFlowId(), examTask.getId(), sysUser.getId(), sysUser.getRealName() + "转" + exchangeUser.getRealName() + "审批", FlowApproveOperationEnum.EXCHANGE);
         if (currFlow instanceof UserTask) {
             UserTask userTask = (UserTask) currFlow;
             FlowApproveSetupEnum setupEnum = FlowApproveSetupEnum.convertToInstance(userTask.getId());
@@ -999,7 +920,7 @@ public class ActivitiServiceImpl implements ActivitiService {
     }
 
     /**
-     * 主任提交
+     * 主任审核
      *
      * @param task
      * @param sysUser
@@ -1010,14 +931,14 @@ public class ActivitiServiceImpl implements ActivitiService {
      * @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) {
+    private void directorApprove(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;
@@ -1073,4 +994,151 @@ public class ActivitiServiceImpl implements ActivitiService {
         tfFlowApproveLog.setPrimaryApproveOperation(FlowApproveOperationEnum.END);
         tfFlowApproveLog.setPrimaryApproveRemark(FlowApproveOperationEnum.END.getTitle());
     }
+
+    /**
+     * 院长审核
+     *
+     * @param task
+     * @param sysUser
+     * @param tfFlowApprove
+     * @param tfFlowApproveLog
+     * @param tfFlowLog
+     * @param remark
+     * @param map
+     * @param objectMap
+     * @param processInstanceId
+     */
+    private void presidentApprove(Task task,
+                                  SysUser sysUser,
+                                  TFFlowApprove tfFlowApprove,
+                                  TFFlowApproveLog tfFlowApproveLog,
+                                  TFFlowLog tfFlowLog,
+                                  String remark,
+                                  Map<String, Object> map,
+                                  Map<String, Object> objectMap,
+                                  String processInstanceId) {
+        flowApproveVaild(task, sysUser.getId(), map);
+        FlowApprovePassEnum approvePass = (FlowApprovePassEnum) map.get(SystemConstant.APPROVE_OPERATION);
+        FlowApproveVariableEnum approve = null;
+        tfFlowApproveLog.setSecondApproveId(sysUser.getId());
+        tfFlowApproveLog.setSecondApproveRemark(remark);
+        if (approvePass == FlowApprovePassEnum.PASS) {
+            approve = FlowApproveVariableEnum.SECOND_APPROVE;
+        } else {
+            Optional.ofNullable(map.get(SystemConstant.APPROVE_SETUP)).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程驳回节点不能为空"));
+            Integer setup = Integer.parseInt(map.get(SystemConstant.APPROVE_SETUP).toString());
+            if (setup.intValue() < FlowApproveSetupEnum.SUBMIT.getSetup() || setup.intValue() >= FlowApproveSetupEnum.SECOND_APPROVE.getSetup()) {
+                throw ExceptionResultEnum.ERROR.exception("流程驳回节点有误");
+            }
+            approve = setup.intValue() == 1 ? FlowApproveVariableEnum.SECOND_REJECT_ONE : FlowApproveVariableEnum.SECOND_REJECT_TWO;
+        }
+        tfFlowLog.setApproveSetup(FlowApproveSetupEnum.SECOND_APPROVE.getSetup());
+        if (approve == FlowApproveVariableEnum.SECOND_REJECT_ONE) {//驳回命题
+            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
+            tfFlowApprove.setSetup(FlowApproveSetupEnum.SUBMIT.getSetup());
+        } else if (approve == FlowApproveVariableEnum.SECOND_REJECT_TWO) {//驳回主任
+            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
+            tfFlowApprove.setSetup(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup());
+        } else if (approve == FlowApproveVariableEnum.SECOND_APPROVE) {//提交
+            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
+            tfFlowApproveLog.setSecondApproveOperation(FlowApproveOperationEnum.APPROVE);
+            List<FlowTaskResult> taskTaskAll = getTaskAll(processInstanceId);
+            if (Objects.nonNull(taskTaskAll) && taskTaskAll.size() > 3) {
+                tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
+                tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
+                objectMap.computeIfAbsent(SystemConstant.APPROVE_PRESIDENT_SYSTEM, v -> true);
+                TFFlowLog finalTfFlowLog = tfFlowLog;
+                objectMap.computeIfAbsent(SystemConstant.APPROVE_TF_FLOW_LOG, v -> finalTfFlowLog);
+            } else {
+                tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
+                tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
+            }
+        } else {
+            throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
+        }
+        FlowApproveVariableEnum finalApprove = approve;
+        map.computeIfAbsent(SystemConstant.APPROVE, v -> finalApprove.getId());
+        TFFlowApproveLog finalTfFlowApproveLog = tfFlowApproveLog;
+        map.computeIfAbsent(SystemConstant.APPROVE_ID, v -> finalTfFlowApproveLog.getStartId());
+    }
+
+    /**
+     * 命题老师审核
+     *
+     * @param task
+     * @param sysUser
+     * @param tfFlowApprove
+     * @param tfFlowApproveLog
+     * @param tfFlowLog
+     * @param remark
+     * @param map
+     */
+    private void teacherApprove(Task task,
+                                SysUser sysUser,
+                                TFFlowApprove tfFlowApprove,
+                                TFFlowApproveLog tfFlowApproveLog,
+                                TFFlowLog tfFlowLog,
+                                String remark,
+                                Map<String, Object> map) {
+        boolean presidentApprove = Objects.nonNull(map.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM)) ? (boolean) map.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM) : false;
+        Long userId = null;
+        if (presidentApprove) {
+            userId = tfFlowApproveLog.getStartId();
+        } else {
+            userId = sysUser.getId();
+        }
+        flowSubmitVaild(task, userId);
+        tfFlowLog.setApproveSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
+        tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
+        tfFlowLog.setApproveId(userId);
+        tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
+        tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
+        tfFlowApproveLog.setStartApproveId(userId);
+        tfFlowApproveLog.setThreeApproveRemark(remark);
+        map.computeIfAbsent(SystemConstant.APPROVE_PRINT_USER_IDS, v -> map.get(SystemConstant.APPROVE_USER_IDS));
+    }
+
+    /**
+     * 印刷员审核
+     *
+     * @param task
+     * @param sysUser
+     * @param tfFlowApprove
+     * @param tfFlowApproveLog
+     * @param tfFlowLog
+     * @param remark
+     * @param map
+     */
+    private void printApprove(Task task,
+                              SysUser sysUser,
+                              TFFlowApprove tfFlowApprove,
+                              TFFlowApproveLog tfFlowApproveLog,
+                              TFFlowLog tfFlowLog,
+                              String remark,
+                              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.FOUR_APPROVE.getSetup());
+        tfFlowApproveLog.setFourApproveId(sysUser.getId());
+        tfFlowApproveLog.setFourApproveRemark(remark);
+        if (approve == FlowApproveVariableEnum.FOUR_REJECT) {//驳回命题
+            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApproveLog.setFourApproveOperation(FlowApproveOperationEnum.REJECT);
+            tfFlowApprove.setStatus(FlowStatusEnum.REJECT);
+            tfFlowApprove.setSetup(FlowApproveSetupEnum.THREE_APPROVE.getSetup());
+        } else if (approve == FlowApproveVariableEnum.FOUR_APPROVE) {//提交
+            tfFlowLog.setApproveOperation(FlowApproveOperationEnum.APPROVE);
+            tfFlowApproveLog.setFourApproveOperation(FlowApproveOperationEnum.APPROVE);
+            tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
+            tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
+        } else {
+            throw ExceptionResultEnum.ERROR.exception("流程变量值错误");
+        }
+        map.computeIfAbsent(SystemConstant.APPROVE, v -> approve.getId());
+    }
 }

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TFFlowLogServiceImpl.java

@@ -6,6 +6,9 @@ import com.qmth.distributed.print.business.mapper.TFFlowLogMapper;
 import com.qmth.distributed.print.business.service.TFFlowLogService;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 /**
  * <p>
  * 流程流水表 服务实现类
@@ -17,4 +20,17 @@ import org.springframework.stereotype.Service;
 @Service
 public class TFFlowLogServiceImpl extends ServiceImpl<TFFlowLogMapper, TFFlowLog> implements TFFlowLogService {
 
+    @Resource
+    TFFlowLogMapper tfFlowLogMapper;
+
+    /**
+     * 根据流程id查询流程状态
+     *
+     * @param flowId
+     * @return
+     */
+    @Override
+    public List<TFFlowLog> findByFlowId(String flowId) {
+        return tfFlowLogMapper.findByFlowId(flowId);
+    }
 }

+ 3 - 0
distributed-print-business/src/main/resources/mapper/TFFlowLogMapper.xml

@@ -2,4 +2,7 @@
 <!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.TFFlowLogMapper">
 
+    <select id="findByFlowId" resultType="com.qmth.distributed.print.business.entity.TFFlowLog">
+        select * from t_f_flow_log tffl where find_in_set(#{flowId} ,tffl.flow_id)
+    </select>
 </mapper>

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

@@ -13,10 +13,7 @@ import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.bean.result.FlowApproveResult;
 import com.qmth.distributed.print.business.bean.result.FlowTaskApprovePeopleAllResult;
 import com.qmth.distributed.print.business.bean.result.FlowTaskResult;
-import com.qmth.distributed.print.business.entity.ExamTask;
-import com.qmth.distributed.print.business.entity.TFFlow;
-import com.qmth.distributed.print.business.entity.TFFlowApprove;
-import com.qmth.distributed.print.business.entity.TFFlowApproveLog;
+import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.MessageEnum;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
@@ -90,6 +87,9 @@ public class TFFlowController {
     @Resource
     TaskService taskService;
 
+    @Resource
+    TFFlowLogService tfFlowLogService;
+
     @ApiOperation(value = "注册流程")
     @Transactional
     @ApiResponses({@ApiResponse(code = 200, message = "常规信息", response = ResultUtil.class)})
@@ -182,6 +182,7 @@ public class TFFlowController {
             TFFlowApprove tfFlowApprove = (TFFlowApprove) objectMap.get("tfFlowApprove");
             ExamTask examTask = (ExamTask) objectMap.get("examTask");
             boolean presidentApprove = Objects.nonNull(objectMap.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM)) ? (boolean) objectMap.get(SystemConstant.APPROVE_PRESIDENT_SYSTEM) : false;
+            TFFlowLog tfFlowLog = Objects.nonNull(objectMap.get(SystemConstant.APPROVE_TF_FLOW_LOG)) ? (TFFlowLog) objectMap.get(SystemConstant.APPROVE_TF_FLOW_LOG) : null;
             //审核通过,生成pdf
             if (Objects.nonNull(tfFlowApprove) && FlowApproveSetupEnum.FINISH.getSetup() == tfFlowApprove.getSetup()) {
                 // 取命题老师ID
@@ -201,6 +202,10 @@ public class TFFlowController {
                     mapObject.computeIfAbsent(SystemConstant.APPROVE_PRESIDENT_SYSTEM, v -> presidentApprove);
                     activitiService.taskApprove(mapObject);
                 }
+                if (Objects.nonNull(tfFlowLog)) {
+                    tfFlowLog.setFlowId(examTask.getFlowId());
+                    tfFlowLogService.updateById(tfFlowLog);
+                }
             }
 
             // 驳回短信(驳回给提交老师)

+ 2 - 2
distributed-print/src/main/resources/processes/GdykdxPaperApproveSubByPrint.bpmn

@@ -6,9 +6,9 @@
         <activiti:executionListener event="start" class="com.qmth.distributed.print.business.activiti.StartApproveSubListener"></activiti:executionListener>
       </extensionElements>
     </startEvent>
-    <userTask id="usertask4" name="提交试卷" activiti:assignee="${approveId}"></userTask>
+    <userTask id="usertask4" name="提交" activiti:assignee="${approveId}"></userTask>
     <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask4"></sequenceFlow>
-    <userTask id="usertask5" name="审核试卷">
+    <userTask id="usertask5" name="印刷员审核">
       <extensionElements>
         <activiti:taskListener event="create" class="com.qmth.distributed.print.business.activiti.PrintApproveSubListener"></activiti:taskListener>
       </extensionElements>

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

@@ -213,6 +213,7 @@ public class SystemConstant {
     public static final String FLOW_STATUS = "flowStatus";//流程状态
     public static final String APPROVE_REMARK = "approveRemark";//流程审批意见
     public static final String APPROVE_PRESIDENT_SYSTEM = "presidentApprove";//流程院长自动审批
+    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 long REDIS_LOCK_FLOW_TASK_TIME_OUT = 60L * 2;
     public static final String REDIS_LOCK_FLOW_PREFIX = "redis:lock:flow:";//流程锁