feat: scc不分发跑通

This commit is contained in:
2024-07-16 10:26:40 +08:00
parent 6f5e6e9f21
commit 91eb18d39d
3 changed files with 41 additions and 18 deletions
@@ -142,9 +142,6 @@ public class ActFlowCommonService {
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
approvalRecord.setEndTime(new Date());
// 使用流程引擎根据TaskId找到NodeId
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String nodeId = task.getTaskDefinitionKey();
approvalRecord.setNodeId(nodeId);
processApprovalRecordService.updateById(approvalRecord);
}
@@ -295,10 +292,7 @@ public class ActFlowCommonService {
}
}
public void removeDraft(CommonVO commonVO) {
String userId = UserUtils.getUserId();
String taskId = commonVO.getTaskId();
String processInstanceId = commonVO.getProcessInstanceId();
public void removeDraft(String userId, String taskId, String processInstanceId) {
LambdaQueryWrapper<ProcessDraft> draftWrapper = new LambdaQueryWrapper<>();
draftWrapper.eq(ProcessDraft::getUserId, userId);
draftWrapper.eq(StrUtil.isNotBlank(taskId), ProcessDraft::getTaskId, taskId);
@@ -1,18 +1,20 @@
package com.jero.modules.activiti.process.standardComplianceCheck.listener;
import com.jero.modules.activiti.process.demo.service.ProcessDemoService;
import com.jero.modules.activiti.util.SpringContextUtil;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
import org.springframework.stereotype.Component;
/**
* @author liJiaRao
* @date 2023-06-18 15:43
*/
public class ProcessSCCEndListener implements TaskListener {
@Slf4j
@Component
public class ProcessSCCEndListener implements ExecutionListener {
@Override
public void notify(DelegateTask delegateTask) {
ProcessDemoService demoService = SpringContextUtil.getBean(ProcessDemoService.class);
demoService.createAutoTaskListener(delegateTask);
public void notify(DelegateExecution delegateExecution) {
log.info("流程结束");
}
}
@@ -1,5 +1,6 @@
package com.jero.modules.activiti.process.standardComplianceCheck.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -232,6 +233,10 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
processHandleService.saveToSnapshot(processInfoVO, curUserId);
// 审批节点
actFlowCommonService.completeTask(taskId, curUserId);
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
// 删除草稿
actFlowCommonService.removeDraft(curUserId, taskId, processInstanceId);
}
@Override
@@ -242,7 +247,6 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("taskId为空或任务不存在");
}
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 获取执行id
String executionId = task.getExecutionId();
@@ -256,11 +260,19 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
ProcessSccVO businessInfoDTO = processInfoVO.getBusinessInfoDTO();
ProcessStandardComplianceCheck standardInfo = businessInfoDTO.getStandardInfo();
List<ProcessStandardComplianceCheckDetail> detailInfoList = businessInfoDTO.getDetailInfoList();
// 根据流程实例Id获取流程定义ID
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
// 获取流程实例ID
String processDefinitionId = processInstance.getProcessDefinitionId();
Map<String, Object> userMap = new HashMap<>();
switch (xmlNodeId) {
case DEPT_USER_DISTRIBUTE:
// 设置主排查人
String mainCheckUser = businessInfoDTO.getStandardInfo().getMainCheckUser();
runtimeService.setVariable(processInstanceId, MAIN_CHECK_USER, mainCheckUser);
// 保存选人信息
userMap.put(MAIN_CHECK_USER, mainCheckUser);
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
break;
case MAIN_CHECK_USER_DISTRIBUTE:
// 驳回
@@ -299,13 +311,20 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
// 先删后增
sccDetailService.removeByIds(ids);
sccDetailService.saveBatch(needAddDetailInfoList);
runtimeService.setVariable(processInstanceId, DESIGNER_LIST, designEngineerList);
runtimeService.setVariable(processInstanceId, DESIGNER_LIST, String.join(",", designEngineerList));
userMap.put(DESIGNER_LIST, standardInfo.getSeniorManager());
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
} else {
// 不分发直接设置后续审批节点的人员变量
List<String> counterSignUserList = Arrays.asList(standardInfo.getCountersignUser().split(","));
runtimeService.setVariable(processInstanceId, COUNTERSIGN_USER_LIST, counterSignUserList);
runtimeService.setVariable(processInstanceId, MANAGER, standardInfo.getManager());
runtimeService.setVariable(processInstanceId, SENIOR_MANAGER, standardInfo.getSeniorManager());
// 保存选人信息
userMap.put(COUNTERSIGN_USER_LIST, standardInfo.getCountersignUser());
userMap.put(MANAGER, standardInfo.getManager());
userMap.put(SENIOR_MANAGER, standardInfo.getSeniorManager());
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
}
// 保存数据
sccDetailService.updateBatchById(detailInfoList);
@@ -318,8 +337,13 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
case MAIN_CHECK_USER_COLLECT:
break;
}
runtimeService.setVariable(processInstanceId, PASS, true);
// 审批节点
actFlowCommonService.completeTask(taskId, curUserId);
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
// 删除草稿
actFlowCommonService.removeDraft(curUserId, taskId, processInstanceId);
}
@Override
@@ -343,7 +367,6 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
ProcessInfoVO<ProcessSccVO> result = new ProcessInfoVO<>();
ProcessSccVO processSccVO = new ProcessSccVO();
result.setBasicProcessInfoDTO(actFlowCommonService.getProcessInfo(taskId));
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId();
// 使用流程引擎根据taskId找到流程实例Id
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
@@ -366,6 +389,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
case MAIN_CHECK_USER_COLLECT:
case COUNTERSIGN:
case MANAGER_APPROVAL:
case SENIOR_MANAGER_APPROVAL:
processSccVO.setDetailInfoList(detailList);
break;
case MAIN_CHECK_USER_DISTRIBUTE:
@@ -407,6 +431,9 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
case AUTO_TASK_1:
case AUTO_TASK_3:
List<String> designerList = (List<String>) delegateTask.getVariable(DESIGNER_LIST);
if (CollUtil.isEmpty(designerList)) {
return;
}
String checkId = (String) delegateTask.getVariable(CHECK_ID);
for (String designer : designerList) {
userInfoMap.put(DESIGNER, designer);