Răsfoiți Sursa

江西中医药流程修改

wangliang 3 ani în urmă
părinte
comite
9d7a81b90a

+ 41 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/activiti/DirectorApproveByJxzyyListener.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;
@@ -17,11 +19,16 @@ 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.bpmn.model.BpmnModel;
+import org.activiti.bpmn.model.FlowNode;
+import org.activiti.bpmn.model.UserTask;
+import org.activiti.engine.RepositoryService;
 import org.activiti.engine.delegate.DelegateTask;
 import org.activiti.engine.delegate.TaskListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -47,25 +54,47 @@ public class DirectorApproveByJxzyyListener 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);
+        RepositoryService repositoryService = SpringContextHolder.getBean(RepositoryService.class);
+
         List<Long> approveUserIds = (List<Long>) delegateTask.getVariable(SystemConstant.APPROVE_DIRECTOR_USER_IDS);
         Long flowId = SystemConstant.convertIdToLong(delegateTask.getProcessInstanceId());
         ExamTask examTask = examTaskService.findByFlowId(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()));
+        TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(flowId, examTask.getSchoolId());
+        TFFlowLog tfFlowLog = (TFFlowLog) delegateTask.getVariable(SystemConstant.APPROVE_TF_FLOW_LOG);
+
+        String currActivityId = delegateTask.getTaskDefinitionKey();
+        BpmnModel bpmnModel = repositoryService.getBpmnModel(delegateTask.getProcessDefinitionId());
+        FlowNode currFlow = (UserTask) bpmnModel.getMainProcess().getFlowElement(currActivityId);
+        UserTask userTask = (UserTask) currFlow;
+        String approveExchangeUserId = (String) delegateTask.getVariable(SystemConstant.APPROVE_EXCHANGE_USER_ID + userTask.getId());
+        List<ApproveUserResult> sysUserList = new ArrayList<>();
+
+        if (tfFlowApprove.getStatus() == FlowStatusEnum.REJECT && Objects.nonNull(approveExchangeUserId)) {
+            sysUserList.addAll(sysUserService.findById(Long.parseLong(approveExchangeUserId)));
+            delegateTask.addCandidateUsers(sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList()));
+            tfFlowLog.setPendApproveId(approveExchangeUserId);
         } else {
-            sysUserList = sysUserService.findByJxzyyDirectorApprove(null, FlowApproveNameEnum.DIRECTOR);
-            if (Objects.nonNull(sysUserList) && sysUserList.size() > 0) {
-                List<String> ids = sysUserList.stream().map(s -> String.valueOf(s.getId())).collect(Collectors.toList());
-                //添加或签的人员,一人通过即可进入下一环节
-                delegateTask.addCandidateUsers(ids);
+            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());
+                List<String> userIdList = approveUserIds.stream().map(x -> String.valueOf(x)).collect(Collectors.toList());
+                delegateTask.addCandidateUsers(userIdList);
+                tfFlowLog.setPendApproveId(String.join(", ", userIdList));
+            } else {
+                sysUserList = sysUserService.findByJxzyyDirectorApprove(null, FlowApproveNameEnum.DIRECTOR);
+                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, examTask.getSchoolId());
         if (tfFlowApprove.getStatus().equals(FlowStatusEnum.AUDITING)
                 && tfFlowApprove.getSetup().equals(FlowApproveSetupEnum.PRIMARY_APPROVE.getSetup())) {
             basicMessageService.sendNoticeTaskAuditFlow(examTask, sysUserList, MessageEnum.NOTICE_OF_AUDIT_CREATED);

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ActivitiServiceImpl.java

@@ -486,7 +486,9 @@ public class ActivitiServiceImpl implements ActivitiService {
             ExamTask examTask = examTaskService.findByFlowId(flowTaskApprovePeopleAllResult.getFlowId());
 
             FlowApproveResult flowApproveResult = tfFlowService.flowApproveUserList(SystemConstant.getHeadOrUserSchoolId(), flowTaskApprovePeopleAllResult.getFlowId());
-            Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
+            if (tfFlowApprove.getSetup() != 1) {
+                Optional.ofNullable(flowApproveResult).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到流程审批记录"));
+            }
             List<FlowTaskResult> taskTaskAll = getTaskAll(task.getProcessInstanceId());
             switch (tfFlowApprove.getSetup()) {
                 case -1: