diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java index 4dd4ad89..b351cebb 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessHandleServiceImpl.java @@ -1,10 +1,13 @@ package com.jero.modules.activiti.process.fb.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.jero.common.api.vo.ResultCommon; 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.entity.ProcessNode; +import com.jero.modules.activiti.entity.ProcessNodeLink; import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.process.common.common.DraftCommon; import com.jero.modules.activiti.process.common.entity.ProcessDraft; @@ -16,10 +19,7 @@ import com.jero.modules.activiti.process.fb.dto.BasicTaskInfoDTO; import com.jero.modules.activiti.process.fb.dto.ProcessDTO; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -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.activiti.service.WorkCenterService; +import com.jero.modules.activiti.service.*; import com.jero.modules.laws.common.util.CurrentUserUtil; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RepositoryService; @@ -61,6 +61,8 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { private ProcessDraftService processDraftService; // 流程草稿表 @Resource private ProcessSnapshotService processSnapshotService; // 流程草稿表 + @Resource + private ProcessNodeService processNodeService; /** * @Author: liao * @Date: 2023/11/2 17:04 @@ -214,6 +216,31 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { log.error(e.getMessage(),e); throw new JeroBootException(e.getMessage()); } + + // 更新节点操作人 + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + String processDefinitionId = task.getProcessDefinitionId(); + 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("数据不存在"); + } + LambdaUpdateWrapper updateProcessNodeLink = new LambdaUpdateWrapper<>(); + updateProcessNodeLink.eq(ProcessNodeLink::getProcessInstanceId,processInstanceId); + updateProcessNodeLink.eq(ProcessNodeLink::getProcessNodeId,processNode.getId()); + updateProcessNodeLink.eq(ProcessNodeLink::getProcessDefinitionId,processDefinitionId); + updateProcessNodeLink.eq(ProcessNodeLink::getUserId,userId); + updateProcessNodeLink.set(ProcessNodeLink::getUserId,toUserId); + processNodeLinkService.update(updateProcessNodeLink); } /** diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/controller/ProcessMarketStandardReleaseController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/controller/ProcessMarketStandardReleaseController.java index 45868b6e..9153a81b 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/controller/ProcessMarketStandardReleaseController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/ms/controller/ProcessMarketStandardReleaseController.java @@ -90,18 +90,6 @@ public class ProcessMarketStandardReleaseController extends JeroController transfer(@RequestBody DelegateTaskParam param) { - processHandleService.transfer(param.getTaskId(), param.getUserId()); - return Result.OK(); - } - /** * 新法规导入流程-办理 * @param taskId 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 f2a140d8..ea276a56 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 @@ -149,10 +149,6 @@ public class ProcessMarketStandardReleaseServiceImpl extends ServiceImpl processInfoVO) { - startProcess(processInfoVO); + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + String taskId = processTask.getTaskId(); + // 获取task + if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException("taskId为空或任务不存在"); + } + // 获取当前节点的id + ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId); + String xmlNodeId = record.getNodeId(); + // 发起节点 更新业务数据 + startNodeBusProcess(processInfoVO); + String userId = actFlowCommonService.getOriginTaskAssignee(taskId); + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 审批节点 + actFlowCommonService.completeTask(taskId, userId); + // 保存快照 + // 获取流程通用数据 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + if(!Objects.isNull(process)){ + BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessName(process.getPrcName()); + basicProcessInfoDTO.setProcessType(process.getPrcType()); + basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId()); + basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId()); + basicProcessInfoDTO.setProcessDescription(process.getPrcMes()); + basicProcessInfoDTO.setProcessDueDate(process.getDueTime()); + processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO,userId); + } } @Override diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/controller/ProcessNewStandardImportController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/controller/ProcessNewStandardImportController.java index 568f530c..49c4adc3 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/controller/ProcessNewStandardImportController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/ni/controller/ProcessNewStandardImportController.java @@ -88,17 +88,6 @@ public class ProcessNewStandardImportController extends JeroController transfer(@RequestBody DelegateTaskParam param) { - processHandleService.transfer(param.getTaskId(), param.getUserId()); - return Result.OK(); - } /** * 新法规导入流程-办理 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 8fb212b1..1368cb8e 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 @@ -27,9 +27,13 @@ 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.ProcessEngine; +import org.activiti.engine.ProcessEngines; 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; @@ -72,6 +76,10 @@ public class ProcessNewStandardImportServiceImpl extends ServiceImpl processInfoVO) { - startProcess(processInfoVO); + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + String taskId = processTask.getTaskId(); + // 获取task + if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException("taskId为空或任务不存在"); + } + //任务Id 查询任务对象 + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if(Objects.isNull(task)){ + throw new JeroBootException("找不到对应任务"); + } + // 人员信息 + Map userInfoMap = processInfoVO.getUserInfoMap(); + // 设置流程变量 + Map actVariables = setVariables(userInfoMap); + String processInstanceId = task.getProcessInstanceId(); + runtimeService.setVariables(processInstanceId,actVariables); + String userId = actFlowCommonService.getOriginTaskAssignee(taskId); + // 发起节点 更新业务数据 + startNodeBusProcess(processInfoVO); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + // 审批节点 + actFlowCommonService.completeTask(taskId, userId); + + // 保存快照 + // 获取流程通用数据 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + if(!Objects.isNull(process)){ + BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); + basicProcessInfoDTO.setProcessName(process.getPrcName()); + basicProcessInfoDTO.setProcessType(process.getPrcType()); + basicProcessInfoDTO.setProcessDefinitionId(process.getProcessDefinitionId()); + basicProcessInfoDTO.setProcessInstanceId(process.getProcessInstanceId()); + basicProcessInfoDTO.setProcessDescription(process.getPrcMes()); + basicProcessInfoDTO.setProcessDueDate(process.getDueTime()); + processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); + // 保存快照 + processHandleService.saveToSnapshot(processInfoVO,userId); + } } @Override