diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java index d59976d6..3c204a72 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/service/impl/ProcessMarketStandardReleaseServiceImpl.java @@ -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 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); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java index e6e69bc1..af60f7df 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/service/impl/ProcessNewStandardImportServiceImpl.java @@ -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 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); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java index f378f42a..e478f7ee 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/service/ProcessAllService.java @@ -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 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 INSPECT_PROCESS = Arrays.asList(); public ProcessAll getByProcessInstanceId(String processInstanceId){ @@ -252,7 +264,7 @@ public class ProcessAllService extends ServiceImpl 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 } + 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 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 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();