diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/common/ActivitiCommon.java b/laws-modules/src/main/java/com/jero/modules/activiti/common/ActivitiCommon.java index 2565c812..19ceab12 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/common/ActivitiCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/common/ActivitiCommon.java @@ -6,7 +6,6 @@ package com.jero.modules.activiti.common; */ public class ActivitiCommon { public static final String PASS = "pass"; - public static final String MAIN_INSTANCE_ID = "mainInstanceId"; public static final String PARENT_TASK_ID = "parentTaskId"; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java index 4c083f73..2a46d3fa 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java @@ -31,7 +31,6 @@ import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.impl.identity.Authentication; import org.activiti.engine.repository.ProcessDefinition; -import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; @@ -150,18 +149,6 @@ public class ActFlowCommonService { processApprovalRecordService.updateById(approvalRecord); } - public void updateApprovalInfoWithoutNodeId(String taskId) { - ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId); - if (approvalRecord == null) { - return; - } - approvalRecord.setCommitText(null); - approvalRecord.setCommitFile(null); - approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); - approvalRecord.setEndTime(new Date()); - processApprovalRecordService.updateById(approvalRecord); - } - public ProcessApprovalRecord getNodeIdByTaskId(String taskId) { return processApprovalRecordService.getToDoByTaskId(taskId); } @@ -412,36 +399,6 @@ public class ActFlowCommonService { processApprovalRecordService.update(updateWrapper); } - /** - * 根据指定的执行Id递归获取所有子执行Id - * - * @param executionId 指定的执行Id - * @return 所有子执行Id的列表 - */ - public List getAllChildExecutionIds(String executionId) { - List childExecutionIds = new ArrayList<>(); - Execution execution = runtimeService.createExecutionQuery().executionId(executionId).singleResult(); - if (execution != null) { - String processInstanceId = execution.getProcessInstanceId(); - collectChildExecutionIds(processInstanceId, executionId, childExecutionIds); - } - return childExecutionIds; - } - - private void collectChildExecutionIds(String processInstanceId, String parentExecutionId, List collectedIds) { - List childExecutions = runtimeService.createExecutionQuery() - .processInstanceId(processInstanceId) - .list(); - - for (Execution childExecution : childExecutions) { - if (childExecution.getSuperExecutionId() != null && childExecution.getSuperExecutionId().equals(parentExecutionId)) { - collectedIds.add(childExecution.getId()); - // 递归调用,以获取更深层次的子流程执行Id - collectChildExecutionIds(processInstanceId, childExecution.getId(), collectedIds); - } - } - } - public String getOriginTaskAssignee(String taskId) { ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId); return approvalRecord.getOriginUserId(); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessHandleService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessHandleService.java index 655cea0f..92fc1dd4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessHandleService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/IProcessHandleService.java @@ -2,9 +2,7 @@ package com.jero.modules.activiti.process.fb.service; import com.jero.modules.activiti.process.fb.dto.ProcessDTO; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; -import org.activiti.engine.runtime.ProcessInstance; -import java.util.List; import java.util.Map; /** @@ -22,13 +20,6 @@ public interface IProcessHandleService { String startChildrenProcess(ProcessInfoVO processInfoVO); - /** - * @Author: liao - * @Date: 2023/11/6 11:56 - * @Description: 审批 - **/ - void approveTask(ProcessInfoVO processInfoVO, boolean pass); - /** * @Author: liao * @Date: 2023/11/10 9:44 @@ -50,12 +41,6 @@ public interface IProcessHandleService { **/ void isMyTask(String taskId); - /** - * 超期判断 - * @param taskId - */ - void isOverDue(String taskId); - /** * @Author: liao * @Date: 2023/11/6 14:22 @@ -70,12 +55,6 @@ public interface IProcessHandleService { **/ void updateProcessAll(ProcessInfoVO processInfoVO); - /** - * @Author: caihaohan - * @Date: 2024/1/15 10:45 - * @Description: 更新流程总表 - **/ - void updateProcessAllCustomUserId(ProcessInfoVO processInfoVO, String userId); /** * @Author: liao @@ -84,23 +63,6 @@ public interface IProcessHandleService { **/ void updateApprovalRecord(ProcessInfoVO processInfoVO); - /** - * @Author: liao - * @Date: 2023/11/3 10:29 - * @Description: 保存为草稿 - **/ - String saveToDraft(ProcessInfoVO processInfoVO); - - - void saveToDraftCustomUserId(ProcessInfoVO processInfoVO, String userId); - - /** - * @Author: yjz - * @Date: 2023/11/3 10:29 - * @Description: 保存为草稿 - **/ - void saveToDraft2(ProcessInfoVO processInfoVO); - /** * @Author: liao * @Date: 2023/11/3 11:13 @@ -108,10 +70,6 @@ public interface IProcessHandleService { **/ String getDefinitionIdByKey(String definitionKey); - ProcessInfoVO getDraftByDraftId(String draftId); - - ProcessInfoVO getDraftByTaskId(String taskId); - /** * @Author: liao * @Date: 2023/11/20 16:48 @@ -119,40 +77,4 @@ public interface IProcessHandleService { **/ void deleteMyDraft(String taskId, String businessId, Integer processType); - /** - * @Author: caihaohan - * @Date: 2024/1/15 16:48 - * @Description: 删除自己的草稿 - **/ - void deleteMyDraftCustomUserId(String taskId, String businessId, Integer processType, String userId); - - /** - * @Author: liao - * @Date: 2023/11/8 11:16 - * @Description: 查询流程信息 - **/ - ProcessInfoVO queryProcessInfoVO(String draftId, String processInstanceId, String taskId); - - /** - * @Author: liao - * @Date: 2023/11/8 11:16 - * @Description: 查询流程信息 - **/ - ProcessInfoVO queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId); - - /** - * @Author: liao - * @Date: 2023/11/8 13:36 - * @Description: 判断流程是否结束 - **/ - Boolean isProcessFinish(String processInstanceId); - - /** - * @Author: liao - * @Date: 2023/11/14 11:37 - * @Description: 获取全部子流程实例 - **/ - List subProcessList(String superProcessInstanceId, String subProcessDefinitionKey); - - void saveNodeUserLink(String processInstanceId, String nodeId, List userIdList); } 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 38f3f34d..a341b98e 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,30 +1,25 @@ 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.constant.enums.YesOrNoEnum; 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.CommitFlagEnum; 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; import com.jero.modules.activiti.process.common.service.ProcessDraftService; -import com.jero.modules.activiti.process.fb.common.ConsultationTaskKey; -import com.jero.modules.activiti.process.fb.common.ProcessDefinitionKey; import com.jero.modules.activiti.process.fb.dto.BasicProcessInfoDTO; 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.*; +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.laws.common.util.CurrentUserUtil; import lombok.extern.slf4j.Slf4j; -import org.activiti.engine.HistoryService; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; @@ -32,7 +27,6 @@ import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,16 +48,12 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { @Resource private TaskService taskService; @Resource - private HistoryService historyService; - @Resource private RepositoryService repositoryService; @Resource private ProcessAllService processAllService; // 流程实例总表 @Resource private ProcessApprovalRecordService processApprovalRecordService; // 任务审批表 @Resource - private ProcessNodeService processNodeService; - @Resource private ProcessNodeLinkService processNodeLinkService; // 流程实例节点关联用户表 @Resource private ProcessDraftService processDraftService; // 流程草稿表 @@ -169,86 +159,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { return processInstanceId; } - /** - * @Author: liao - * @Date: 2023/11/6 11:56 - * @Description: 审批 - **/ - @Override - public void approveTask(ProcessInfoVO processInfoVO, boolean pass) { - // 判断是否是自己的任务 - BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - String taskId = basicTaskInfoDTO.getTaskId(); - isMyTask(taskId); - - // 保存 - updateProcessAll(processInfoVO); - updateApprovalRecord(processInfoVO); - - // 删除自己的草稿 - deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType()); - - ProcessDTO processDTO = getProcessDTO(taskId); - String processInstanceId = processDTO.getProcessInstanceId(); - String processDefinitionId = processDTO.getProcessDefinitionId(); - Map userInfoMap = processInfoVO.getUserInfoMap(); - Map variables = setProcessVariables(userInfoMap); - if (!Objects.isNull(userInfoMap) && !userInfoMap.isEmpty()) { - // 保存选人信息 - processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userInfoMap); - } - if (pass) { // 通过 - variables.put("pass", true); - basicTaskInfoDTO.setCommitFlag(CommitFlagEnum.PASS.getValue()); - } else { // 驳回 - variables.put("pass", false); - basicTaskInfoDTO.setCommitFlag(CommitFlagEnum.REJECT.getValue()); - } - // 更新审批记录表 - updateApprovalRecord(processInfoVO); - runtimeService.setVariablesLocal(processInstanceId, variables); - // 完成任务 - taskService.complete(taskId); - - System.out.println("================================启动流程================================="); - System.out.println("流程定义id: " + processDefinitionId); - System.out.println("流程实例id: " + processInstanceId); - System.out.println("任务id: " + taskId); - System.out.println("变量: " + variables); - System.out.println("======================================================================="); - - if (!pass) { - log.info("==========流程驳回,若驳回到的节点之前经过转办,则驳回到转办人手里方法开始=========="); - // 驳回的节点 - List processApprovalRecordList = processApprovalRecordService.list( - new LambdaQueryWrapper() - .eq(ProcessApprovalRecord::getProcessInstanceId, processInstanceId) - .orderByDesc(ProcessApprovalRecord::getCreateTime)); - if (!processApprovalRecordList.isEmpty()) { - ProcessApprovalRecord processApprovalRecord = processApprovalRecordList.get(0); - processApprovalRecordList.remove(0); - Optional optional = processApprovalRecordList.stream().filter(v -> - v.getTaskName().equals(processApprovalRecord.getTaskName()) - && v.getNodeId().equals(processApprovalRecord.getNodeId())).findFirst(); - optional.ifPresent(v -> { - // 是否转办过 - if (StringUtils.isNotBlank(v.getTransferBy())) { - // 转办给转办人 - taskService.setAssignee(processApprovalRecord.getTaskId(), v.getUserId()); - // 更新流程审批记录表 - processApprovalRecordService.update( - new LambdaUpdateWrapper() - .eq(ProcessApprovalRecord::getTaskId, processApprovalRecord.getTaskId()) - .set(ProcessApprovalRecord::getUserId, v.getUserId()) - .set(ProcessApprovalRecord::getOriginUserId, v.getUserId())); - } - }); - } - log.info("==========流程驳回,若驳回到的节点之前经过转办,则驳回到转办人手里方法结束=========="); - } - } - /** * @Author: liao * @Date: 2023/11/10 9:54 @@ -322,17 +232,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { //} } - @Override - public void isOverDue(String taskId) { - // 判断是否超期数据 - ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne( - new LambdaQueryWrapper() - .eq(ProcessApprovalRecord::getTaskId, taskId), false); - if (!Objects.isNull(processApprovalRecord) - && YesOrNoEnum.YES.getValue().equals(processApprovalRecord.getOverDue())){ - throw new JeroBootException(ResultCommon.OVER_DUE); - } - } /** * @Author: liao @@ -379,27 +278,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { processAllService.updateById(process); } - /** - * @Author: liao - * @Date: 2023/11/3 10:46 - * @Description: 更新流程总表 - **/ - @Override - public void updateProcessAllCustomUserId(ProcessInfoVO processInfoVO, String userId) { - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - ProcessAll process = processAllService.getByProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); - if (Objects.isNull(process)) { - process = new ProcessAll(); - } - process.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称 - process.setMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明 - process.setPrcMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明 - process.setDueTime(basicProcessInfoDTO.getProcessDueDate()); // 流程截止时间 - process.setPrcType(basicProcessInfoDTO.getProcessType()); // 流程类型 - process.setProjectId(processInfoVO.getBusinessId()); // 业务id - processAllService.updateById(process); - } - /** * @Author: liao * @Date: 2023/11/3 10:53 @@ -421,105 +299,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { processApprovalRecordService.updateById(approvalRecord); } - /** - * @Author: liao - * @Date: 2023/11/3 10:30 - * @Description: 保存为草稿 - **/ - @Override - public String saveToDraft(ProcessInfoVO processInfoVO) { - return this.saveToDraft(processInfoVO, CurrentUserUtil.getId()); - } - - @Override - public void saveToDraftCustomUserId(ProcessInfoVO processInfoVO, String userId) { - this.saveToDraft(processInfoVO, userId); - } - - private String saveToDraft(ProcessInfoVO processInfoVO, String userId) { - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); - String taskId = null; - String handleText = null; - String handleFile = null; - if (basicTaskInfoDTO != null) { - taskId = basicTaskInfoDTO.getTaskId(); - handleText = basicTaskInfoDTO.getHandleText(); - handleFile = basicTaskInfoDTO.getHandleFile(); - } else { - processInfoVO.setBasicTaskInfoDTO(new BasicTaskInfoDTO()); - } - - // 保存 - updateProcessAllCustomUserId(processInfoVO, userId); - updateApprovalRecord(processInfoVO); - - // 删除自己的草稿 - ProcessDraft processDraft = new ProcessDraft(); - - String draftId = processInfoVO.getDraftId(); - if (StringUtils.isNotBlank(draftId)) { - processDraft.setId(draftId); - //processDraftService.removeById(draftId); - } - // 根据是否有taskId区分保存来源(待办、草稿) - processDraft.setProjectId(processInfoVO.getBusinessId()); // 业务id - processDraft.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); // 流程实例id - processDraft.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称 - processDraft.setPrcType(basicProcessInfoDTO.getProcessType()); // 流程类型 - processDraft.setProcessDueDate(basicProcessInfoDTO.getProcessDueDate()); // 流程信息-截止日期 - processDraft.setProcessDescription(basicProcessInfoDTO.getProcessDescription()); // 流程信息-流程说明 - processDraft.setTaskId(taskId); // 任务id - processDraft.setHandleText(handleText); // 流程审批信息-备注 - processDraft.setHandleFile(handleFile); // 流程审批信息-附件 - processDraft.setUserId(userId); // 用户id - processDraft.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串 - processDraft.setSaveSource(processInfoVO.getSaveSource());//来源(启动流程时有用,用于保存初始业务信息用于强制驳回) - processDraftService.saveOrUpdate(processDraft); - return processDraft.getId(); - } - - @Override - public ProcessInfoVO getDraftByDraftId(String draftId) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessDraft::getUserId, CurrentUserUtil.getId()); - wrapper.eq(ProcessDraft::getId, draftId); - ProcessDraft processDraft = processDraftService.getOne(wrapper); - return generateProcessInfoByDraft(processDraft); - } - - @NotNull - private ProcessInfoVO generateProcessInfoByDraft(ProcessDraft processDraft) { - ProcessInfoVO processInfoVO = new ProcessInfoVO(); - - BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); - BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO(); - - processInfoVO.setBusinessId(processDraft.getProjectId()); // 业务id - basicProcessInfoDTO.setProcessInstanceId(processDraft.getProcessInstanceId()); // 流程实例id - basicProcessInfoDTO.setProcessName(processDraft.getPrcName()); // 流程名称 - basicProcessInfoDTO.setProcessType(processDraft.getPrcType()); // 流程类型 - basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate()); // 流程信息-截止日期 - basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription()); // 流程信息-流程说明 - basicTaskInfoDTO.setTaskId(processDraft.getTaskId()); // 任务id - basicTaskInfoDTO.setHandleText(processDraft.getHandleText()); // 流程审批信息-备注 - basicTaskInfoDTO.setHandleFile(processDraft.getHandleFile()); // 流程审批信息-附件 - processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr());//草稿信息json字符串 - - processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); - processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO); - return processInfoVO; - } - - @Override - public ProcessInfoVO getDraftByTaskId(String taskId) { - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ProcessDraft::getUserId, CurrentUserUtil.getId()); - wrapper.eq(ProcessDraft::getTaskId, taskId); - ProcessDraft processDraft = processDraftService.getOne(wrapper); - return processDraft != null ? generateProcessInfoByDraft(processDraft) : null; - } - /** * @Author: liao * @Date: 2023/11/9 16:46 @@ -547,32 +326,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { } } - /** - * @Author: caihaohan - * @Date: 2024/1/15 16:46 - * @Description: 删除自己的草稿 - **/ - @Override - public void deleteMyDraftCustomUserId(String taskId, String businessId, Integer processType, String userId) { - LambdaQueryWrapper deleteWrapper = new LambdaQueryWrapper<>(); - deleteWrapper.eq(ProcessDraft::getUserId, userId); - if (processType != null) { - deleteWrapper.eq(ProcessDraft::getPrcType, processType); - } - if (StringUtils.isNotBlank(businessId)) { - deleteWrapper.eq(ProcessDraft::getProjectId, businessId); - } - if (StringUtils.isNotBlank(taskId)) { - deleteWrapper.eq(ProcessDraft::getTaskId, taskId); - } - deleteWrapper.and(qw -> qw.ne(ProcessDraft::getSaveSource, DraftCommon.INITIAL_SOURCE) - .or().isNull(ProcessDraft::getSaveSource)); - List processDraftList = processDraftService.list(deleteWrapper); - for (ProcessDraft processDraft : processDraftList) { - processDraftService.removeById(processDraft.getId()); - } - } - /** * @Author: liao * @Date: 2023/11/3 11:14 @@ -586,234 +339,4 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { .singleResult().getId(); } - /** - * @Author: liao - * @Date: 2023/11/8 11:16 - * @Description: 查询流程信息 - **/ - @Override - public ProcessInfoVO queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) { - if (StringUtils.isBlank(draftId) && StringUtils.isBlank(taskId)) { - throw new JeroBootException(ResultCommon.NO_PERMISSION); - } - if (StringUtils.isNotBlank(taskId)) { - isOverDue(taskId); - isMyTask(taskId); - } - - ProcessInfoVO processInfoVO = new ProcessInfoVO(); - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); - processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); - // 审批信息 - BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO(); - processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO); - - // 先查询草稿表是否存储 - ProcessDraft processDraft = processDraftService.getById(draftId); - if (!Objects.isNull(processDraft)) { - // 流程信息 - basicProcessInfoDTO.setProcessInstanceId(processDraft.getProcessInstanceId()); // 流程实例id - basicProcessInfoDTO.setProcessName(processDraft.getPrcName()); // 流程名称 - basicProcessInfoDTO.setProcessType(processDraft.getPrcType()); // 流程类型 - basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate()); // 流程信息-截止日期 - basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription()); // 流程信息 - - // 流程审批信息 - basicTaskInfoDTO.setHandleFile(processDraft.getHandleFile()); - basicTaskInfoDTO.setHandleText(processDraft.getHandleText()); - basicTaskInfoDTO.setTaskId(processDraft.getTaskId()); - processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr()); - } else { - // 流程信息 - ProcessAll processAll = processAllService.getOne(new LambdaQueryWrapper() - .eq(ProcessAll::getProjectId, projectId) - .orderByDesc(ProcessAll::getCreateTime), false); - if (!Objects.isNull(processAll)) { - basicProcessInfoDTO.setProcessInstanceId(processAll.getProcessInstanceId()); - basicProcessInfoDTO.setProcessType(processAll.getPrcType()); - basicProcessInfoDTO.setProcessName(processAll.getPrcName()); - basicProcessInfoDTO.setProcessDescription(processAll.getPrcMes()); - basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime()); - } - - // 流程审批信息 - ProcessApprovalRecord processApprovalRecord = processApprovalRecordService.getOne(new LambdaQueryWrapper() - .eq(ProcessApprovalRecord::getProjectId, projectId) - .eq(StringUtils.isNotBlank(taskId), ProcessApprovalRecord::getTaskId, taskId)); - if (!Objects.isNull(processApprovalRecord)) { - basicTaskInfoDTO.setTaskId(processApprovalRecord.getTaskId()); - basicTaskInfoDTO.setHandleText(processApprovalRecord.getCommitText()); - basicTaskInfoDTO.setHandleFile(processApprovalRecord.getCommitFile()); - } - } - processInfoVO.setDraftId(draftId); - processInfoVO.setBusinessId(projectId); - return processInfoVO; - } - - @Override - public void saveToDraft2(ProcessInfoVO processInfoVO) { - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); - String taskId = null; - String handleText = null; - String handleFile = null; - if (basicTaskInfoDTO != null) { - taskId = basicTaskInfoDTO.getTaskId(); - handleText = basicTaskInfoDTO.getHandleText(); - handleFile = basicTaskInfoDTO.getHandleFile(); - } else { - processInfoVO.setBasicTaskInfoDTO(new BasicTaskInfoDTO()); - } - - // 保存 - updateProcessAll(processInfoVO); - updateApprovalRecord(processInfoVO); - - // 删除自己的草稿 - String draftId = processInfoVO.getDraftId(); - if (StringUtils.isNotBlank(draftId)) { - processDraftService.removeById(draftId); - } - deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType()); - // 根据是否有taskId区分保存来源(待办、草稿) - BasicTaskInfoDTO basicTaskInfoDTO1 = processInfoVO.getBasicTaskInfoDTO(); - // 非发起节点不保存到草稿 - if (StringUtils.isBlank(basicTaskInfoDTO1.getTaskId())) { - ProcessDraft processDraft = new ProcessDraft(); - processDraft.setProjectId(processInfoVO.getBusinessId()); // 业务id - processDraft.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); // 流程实例id - processDraft.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称 - processDraft.setPrcType(basicProcessInfoDTO.getProcessType()); // 流程类型 - processDraft.setProcessDueDate(basicProcessInfoDTO.getProcessDueDate()); // 流程信息-截止日期 - processDraft.setProcessDescription(basicProcessInfoDTO.getProcessDescription()); // 流程信息-流程说明 - processDraft.setTaskId(taskId); // 任务id - processDraft.setHandleText(handleText); // 流程审批信息-备注 - processDraft.setHandleFile(handleFile); // 流程审批信息-附件 - processDraft.setUserId(CurrentUserUtil.getId()); // 用户id - processDraft.setInfoJsonStr(processInfoVO.getInfoJsonStr());//草稿信息json字符串 - processDraft.setSaveSource(processInfoVO.getSaveSource());//来源(启动流程时有用,用于保存初始业务信息用于强制驳回) - processDraftService.save(processDraft); - } - } - - /** - * @Author: liao - * @Date: 2023/11/8 11:16 - * @Description: 查询流程信息 - **/ - @Override - public ProcessInfoVO queryProcessInfoVO(String draftId, String processInstanceId, String taskId) { - if (StringUtils.isBlank(draftId) && StringUtils.isBlank(taskId)) { - throw new JeroBootException(ResultCommon.NO_PERMISSION); - } - if (StringUtils.isNotBlank(taskId)) { - isMyTask(taskId); - } - - ProcessInfoVO processInfoVO = new ProcessInfoVO(); - // 流程信息 - BasicProcessInfoDTO basicProcessInfoDTO = new BasicProcessInfoDTO(); - processInfoVO.setBasicProcessInfoDTO(basicProcessInfoDTO); - // 审批信息 - BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO(); - processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO); - // 流程信息 - if (StringUtils.isNotBlank(processInstanceId)) { - ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); - if (!Objects.isNull(processAll)) { - basicProcessInfoDTO.setProcessInstanceId(processAll.getProcessInstanceId()); - basicProcessInfoDTO.setProcessType(processAll.getPrcType()); - basicProcessInfoDTO.setProcessName(processAll.getPrcName()); - basicProcessInfoDTO.setProcessDescription(processAll.getMes()); - basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime()); - processInfoVO.setBusinessId(processAll.getProjectId()); - } - } - - // 审批信息 - if (StringUtils.isNotBlank(draftId)) { - ProcessDraft processDraft = processDraftService.getById(draftId); - if (!CurrentUserUtil.getId().equals(processDraft.getUserId())) { - throw new JeroBootException(ResultCommon.NO_PERMISSION); - } - if (!Objects.isNull(processDraft)) { - basicTaskInfoDTO.setTaskId(processDraft.getTaskId()); - basicTaskInfoDTO.setHandleText(processDraft.getHandleText()); - basicTaskInfoDTO.setHandleFile(processDraft.getHandleFile()); - processInfoVO.setDraftId(draftId); - basicProcessInfoDTO.setProcessType(processDraft.getPrcType()); - basicProcessInfoDTO.setProcessName(processDraft.getPrcName()); - basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription()); - basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate()); - processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr()); - } - } - - return processInfoVO; - } - - /** - * @Author: liao - * @Date: 2023/11/8 13:37 - * @Description: 判断流程是否结束 - **/ - @Override - public Boolean isProcessFinish(String processInstanceId) { - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() - .processInstanceId(processInstanceId) - .singleResult(); - if (processInstance == null) { - return true; - } - return false; - } - - /** - * @Author: liao - * @Date: 2023/11/14 11:38 - * @Description: 获取全部子流程实例 - **/ - @Override - public List subProcessList(String superProcessInstanceId, String subProcessDefinitionKey) { - return runtimeService.createProcessInstanceQuery() - .superProcessInstanceId(superProcessInstanceId) - .processDefinitionKey(subProcessDefinitionKey) - .list(); - } - - /** - * 保存流程定义节点用户 - * - * @param processInstanceId - * @param nodeId - * @param userIdList - */ - @Override - public void saveNodeUserLink(String processInstanceId, String nodeId, List userIdList) { - String processDefinitionId = runtimeService.createProcessInstanceQuery() - .processInstanceId(processInstanceId).singleResult().getProcessDefinitionId(); - - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ProcessNode::getProcessDefinitionId, processDefinitionId); - queryWrapper.eq(ProcessNode::getIsView, 1); - queryWrapper.eq(ProcessNode::getXmlNodeId, nodeId); - ProcessNode processNode = processNodeService.getOne(queryWrapper, false); - if (processNode == null) { - return; - } - List linkList = new ArrayList<>(); - userIdList.forEach(userId -> { - ProcessNodeLink link = new ProcessNodeLink(); - link.setProcessDefinitionId(processDefinitionId); - link.setProcessNodeId(processNode.getId()); - link.setProcessInstanceId(processInstanceId); - link.setUserId(userId); - linkList.add(link); - }); - if (!linkList.isEmpty()) { - processNodeLinkService.saveBatch(linkList, linkList.size()); - } - } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java index 72540f6c..36dc6edc 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java @@ -1,7 +1,11 @@ package com.jero.modules.activiti.process.standardComplianceCheck.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.jero.common.exception.JeroBootException; import com.jero.modules.activiti.common.ActivitiCommon; +import com.jero.modules.activiti.entity.ProcessAll; +import com.jero.modules.activiti.entity.ProcessApprovalRecord; 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; @@ -16,10 +20,14 @@ import com.jero.modules.activiti.process.standardComplianceCheck.entity.ProcessS import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.ProcessSccVO; import com.jero.modules.activiti.process.standardComplianceCheck.mapper.ProcessStandardComplianceCheckMapper; import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService; +import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.sys.utils.UserUtils; +import org.activiti.engine.RuntimeService; +import org.activiti.engine.TaskService; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.runtime.ProcessInstance; +import org.activiti.engine.task.Task; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -27,6 +35,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static com.jero.modules.activiti.common.ActivitiCommon.PASS; import static com.jero.modules.activiti.process.standardComplianceCheck.common.ProcessStandardComplianceCheckConstants.*; /** @@ -47,6 +56,15 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl processInfoVO) { // 流程Key @@ -103,7 +121,39 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl processInfoVO, boolean pass) { + BasicTaskInfoDTO processTask = processInfoVO.getBasicTaskInfoDTO(); + String taskId = processTask.getTaskId(); + // 获取task + 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(); + // 获取当前节点的id + ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId); + String xmlNodeId = record.getNodeId(); + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + // 获取当前流程 + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + String processDefinitionId = processInstance.getProcessDefinitionId(); + Map userMap = new HashMap<>(); + Map flowUser; + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(processTask, taskId); + String curUserId; + switch (xmlNodeId) { + } + // 转办修改流程变量逻辑 + switch (xmlNodeId) { + + + } + runtimeService.setVariable(processInstanceId, PASS, pass); + // 审批节点 + actFlowCommonService.completeTask(taskId, userId); } @Override @@ -113,7 +163,23 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl getHandleData(String taskId) { - return null; + if (!actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException("任务不存在"); + } + ProcessInfoVO result = new ProcessInfoVO<>(); + String userId = actFlowCommonService.getOriginTaskAssignee(taskId); + String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId(); + // 使用流程引擎根据taskId找到流程实例Id + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + // 获取流程通用数据 + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + ProcessApprovalRecord record = actFlowCommonService.getNodeIdByTaskId(taskId); + String xmlNodeId = record.getNodeId(); + // 设置流程信息 + switch (xmlNodeId) { + //TODO + } + return result; } @Override