完善加签功能

This commit is contained in:
梁琦涛
2024-07-15 20:31:24 +08:00
parent a1c3e47b97
commit a6fa7c5175
3 changed files with 91 additions and 31 deletions
@@ -2,11 +2,12 @@ package com.jero.modules.activiti.process.ms.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
@@ -18,6 +19,7 @@ import com.jero.modules.activiti.process.ms.entity.ProcessMarketStandardRelease;
import com.jero.modules.activiti.process.ms.mapper.ProcessMarketStandardReleaseMapper;
import com.jero.modules.activiti.process.ms.service.IProcessMarketStandardReleaseService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.laws.marketStandard.entity.LawsMarketStandardDetail;
import com.jero.modules.laws.marketStandard.service.ILawsMarketStandardDetailService;
@@ -28,6 +30,7 @@ import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.DelegationState;
import org.activiti.engine.task.Task;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service;
@@ -66,6 +69,8 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
private ILawsMarketStandardDetailService lawsMarketStandardDetailService;
@Resource
private ILawsMarketStandardService lawsMarketStandardService;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Override
@Transactional(rollbackFor = JeroBootException.class)
@@ -166,24 +171,32 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl<Process
}
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 获取当前流程
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
switch (xmlNodeId) {
// 驳回,结束所有节点
if(!pass){
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
LambdaUpdateWrapper<ProcessApprovalRecord> update = new LambdaUpdateWrapper<>();
update.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
update.ne(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue());
update.eq(ProcessApprovalRecord::getNodeId,xmlNodeId);
update.set(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.COMPLETE.getValue());
update.set(ProcessApprovalRecord::getEndTime,new Date());
processApprovalRecordService.update(update);
}
// 转办修改流程变量逻辑
switch (xmlNodeId) {
}
runtimeService.setVariable(processInstanceId, PASS, pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
// 判断任务是否为委托状态
if (task != null && task.getDelegationState() == DelegationState.PENDING) {
// 任务处于委托状态,应使用resolveTask方法
taskService.resolveTask(taskId);
} else {
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
}
// 保存快照
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
@@ -2,12 +2,14 @@ package com.jero.modules.activiti.process.ni.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.SendMessageAPI;
import com.jero.common.api.dto.message.SendMessageDTO;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
@@ -18,22 +20,19 @@ import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO;
import com.jero.modules.activiti.process.ni.entity.ProcessNewStandardImport;
import com.jero.modules.activiti.process.ni.mapper.ProcessNewStandardImportMapper;
import com.jero.modules.activiti.process.ni.service.IProcessNewStandardImportService;
import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.lang.reflect.Array;
import java.util.*;
import static com.jero.modules.activiti.common.ActivitiCommon.PASS;
@@ -55,7 +54,7 @@ public class ProcessNewStandardImportServiceImpl extends ServiceImpl<ProcessNewS
private ProcessNodeLinkService processNodeLinkService;
@Resource
private TaskService taskService;
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private ProcessAllService processAllService;
@@ -166,25 +165,26 @@ public class ProcessNewStandardImportServiceImpl extends ServiceImpl<ProcessNewS
throw new JeroBootException("taskId为空或任务不存在");
}
String userId = actFlowCommonService.getOriginTaskAssignee(taskId);
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
// 获取当前流程
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
// 更新审批表为完成,填充数据
actFlowCommonService.updateApprovalInfo(processTask, taskId);
switch (xmlNodeId) {
}
// 转办修改流程变量逻辑
switch (xmlNodeId) {
// 驳回,结束所有节点
if(!pass){
// 获取当前节点的id
ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId);
String xmlNodeId = record.getNodeId();
LambdaUpdateWrapper<ProcessApprovalRecord> update = new LambdaUpdateWrapper<>();
update.eq(ProcessApprovalRecord::getProcessInstanceId,processInstanceId);
update.ne(ProcessApprovalRecord::getFinishFlag, FinishFlagEnum.COMPLETE.getValue());
update.eq(ProcessApprovalRecord::getNodeId,xmlNodeId);
update.set(ProcessApprovalRecord::getFinishFlag,FinishFlagEnum.COMPLETE.getValue());
update.set(ProcessApprovalRecord::getEndTime,new Date());
processApprovalRecordService.update(update);
}
runtimeService.setVariable(processInstanceId, PASS, pass);
// 审批节点
actFlowCommonService.completeTask(taskId, userId);
// 保存快照
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
@@ -19,6 +19,7 @@ import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.entity.ProcessNodeLink;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessStatusEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
@@ -27,6 +28,8 @@ import com.jero.modules.activiti.mapper.ProcessAllMapper;
import com.jero.modules.activiti.process.common.common.DraftCommon;
import com.jero.modules.activiti.process.common.entity.ProcessDraft;
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
import com.jero.modules.activiti.process.standardinterpret.common.StandardInterpretCommon;
import com.jero.modules.activiti.util.ActivityCountersign;
import com.jero.modules.activiti.util.SpringContextUtil;
import com.jero.modules.activiti.vo.DelegateTaskParam;
import com.jero.modules.activiti.vo.ResolveTaskParam;
@@ -36,6 +39,7 @@ import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardRecheckPlanService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ManagementService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.task.Task;
@@ -77,6 +81,14 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
private EnterpriseStandardRecheckPlanService esRecheckService;
@Resource
private PushWorkflowIntegrationAPI pushWorkflowIntegrationAPI;
@Resource
private ProcessApprovalRecordService processApprovalRecordService;
@Resource
private ProcessNodeService processNodeService;
@Resource
private ProcessNodeLinkService processNodeLinkService;
@Resource
private ManagementService managementService;
private static final List<Integer> INSPECT_PROCESS = Arrays.asList();
public ProcessAll getByProcessInstanceId(String processInstanceId){
@@ -252,7 +264,7 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
pushWorkflowIntegrationAPI.sendTodoTask(todoAddList);
}
public void delegateTask(DelegateTaskParam param) {
public void delegateTaskA(DelegateTaskParam param) {
String taskId = param.getTaskId();
String userId = param.getUserId();
@@ -284,6 +296,41 @@ public class ProcessAllService extends ServiceImpl<ProcessAllMapper, ProcessAll>
}
public void delegateTask(DelegateTaskParam param) {
String taskId = param.getTaskId();
String userId = param.getUserId();
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String processInstanceId = task.getProcessInstanceId();
String processDefinitionId = task.getProcessDefinitionId();
// 添加流程实例节点关联用户信息
//添加节点操作人
ProcessNodeLink processNodeLink = new ProcessNodeLink();
processNodeLink.setProcessDefinitionId(processDefinitionId);
processNodeLink.setProcessInstanceId(processInstanceId);
LambdaQueryWrapper<ProcessApprovalRecord> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessApprovalRecord::getTaskId,taskId);
ProcessApprovalRecord record = processApprovalRecordService.getOne(wrapper, false);
if(Objects.isNull(record)){
throw new JeroBootException("数据不存在");
}
String xmlNodeId = record.getNodeId();
LambdaQueryWrapper<ProcessNode> queryProcessNode = new LambdaQueryWrapper<>();
queryProcessNode.eq(ProcessNode::getProcessDefinitionId,processDefinitionId);
queryProcessNode.eq(ProcessNode::getXmlNodeId,xmlNodeId);
ProcessNode processNode = processNodeService.getOne(queryProcessNode,false);
if(Objects.isNull(processNode)){
throw new JeroBootException("数据不存在");
}
processNodeLink.setProcessNodeId(processNode.getId());
processNodeLink.setUserId(userId);
processNodeLinkService.save(processNodeLink);
managementService.executeCommand(
new ActivityCountersign(taskId, userId, processNode.getVariableName()));
}
public void resolveTask(ResolveTaskParam param) {
String taskId = param.getTaskId();
String commitText = param.getCommitText();