From fcc7b77cbf6890b95ebacd7a252e215363f6a323 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Wed, 22 Nov 2023 11:21:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=AB=8B=E9=A1=B9=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E8=8D=89=E7=A8=BF=E5=92=8C=E8=8D=89=E7=A8=BF=E5=8A=9E=E7=90=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/service/ActFlowCommonService.java | 82 ++++++++++++++++++ .../ProcessESInitChangeController.java | 15 ++++ .../entity/ProcessEsInitChange.java | 6 ++ .../service/ProcessEsInitChangeService.java | 8 ++ .../impl/ProcessEsInitChangeServiceImpl.java | 83 ++++++++++--------- 5 files changed, 154 insertions(+), 40 deletions(-) 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 f901741b..8622aa3b 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 @@ -1,5 +1,7 @@ package com.jero.modules.activiti.process.common.service; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.jero.common.exception.JeroBootException; import com.jero.common.system.vo.LoginUser; @@ -7,13 +9,17 @@ import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.entity.ProcessApprovalRecord; import com.jero.modules.activiti.enums.CommitFlagEnum; import com.jero.modules.activiti.enums.FinishFlagEnum; +import com.jero.modules.activiti.enums.ProcessTypeEnum; import com.jero.modules.activiti.mapper.ProcessNodeMapper; import com.jero.modules.activiti.process.common.entity.CommonVO; +import com.jero.modules.activiti.process.common.entity.ProcessDraft; import com.jero.modules.activiti.process.common.entity.StandTypeVO; import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.enterprise.entity.EnterpriseStandardPlan; import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; +import com.jero.modules.sys.utils.UserUtils; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; @@ -60,6 +66,9 @@ public class ActFlowCommonService { @Resource private EnterpriseStandardPlanService espService; + @Resource + private ProcessDraftService processDraftService; + /** * 启动流程实例 */ @@ -150,6 +159,15 @@ public class ActFlowCommonService { processApprovalRecordService.updateById(approvalRecord); } + public String getNodeIdByTaskId(String taskId) { + ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId); + if (approvalRecord == null) { + throw new JeroBootException("找不到对应的审批记录"); + } else { + return approvalRecord.getNodeId(); + } + } + /** * 完成提交任务 */ @@ -273,6 +291,9 @@ public class ActFlowCommonService { } public String getProcessInstanceIdByTaskId(String taskId) { + if (StrUtil.isBlank(taskId)) { + return null; + } // 使用流程引擎根据taskId找到流程实例Id Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); return task.getProcessInstanceId(); @@ -322,4 +343,65 @@ public class ActFlowCommonService { } return standTypeVO; } + + public String getNewBusinessId() { + return UUID.randomUUID().toString().replace("-", ""); + } + + public ProcessDraft getExistDraft(String draftId, String businessId, ProcessTypeEnum processTypeEnum) { + String userId = UserUtils.getUserId(); + LambdaQueryWrapper draftWrapper = new LambdaQueryWrapper<>(); + draftWrapper.eq(ProcessDraft::getPrcType, ProcessTypeEnum.ES_INIT_CHANGE.getValue()); + draftWrapper.eq(ProcessDraft::getUserId, userId); + draftWrapper.eq(ProcessDraft::getId, draftId); + draftWrapper.eq(ProcessDraft::getProjectId, businessId); + return processDraftService.getOne(draftWrapper); + } + + public ProcessDraft getExistDraftAndRemove(CommonVO common, ProcessTypeEnum processTypeEnum) { + String taskId = common.getTaskId(); + String userId = UserUtils.getUserId(); + String processInstanceId = common.getProcessInstanceId(); + LambdaQueryWrapper draftWrapper = new LambdaQueryWrapper<>(); + draftWrapper.eq(ProcessDraft::getPrcType, processTypeEnum.getValue()); + draftWrapper.eq(ProcessDraft::getUserId, userId); + draftWrapper.eq(StrUtil.isNotBlank(processInstanceId), ProcessDraft::getProcessInstanceId, processInstanceId); + draftWrapper.eq(StrUtil.isNotBlank(taskId), ProcessDraft::getTaskId, taskId); + ProcessDraft draft = processDraftService.getOne(draftWrapper); + // 删除草稿表数据 + processDraftService.remove(draftWrapper); + return draft; + } + + public void addDraft(CommonVO common, ProcessTypeEnum processTypeEnum, String newBusinessId) { + String taskId = common.getTaskId(); + String processInstanceId = common.getProcessInstanceId(); + // 新增草稿表数据 + ProcessDraft draft = new ProcessDraft(); + if (StrUtil.isNotBlank(taskId) && StrUtil.isNotBlank(processInstanceId)) { + draft.setProcessInstanceId(processInstanceId); + draft.setTaskId(taskId); + } + draft.setPrcName(common.getPrcName()); + draft.setPrcType(processTypeEnum.getValue()); + draft.setHandleText(common.getCommitText()); // 流程审批信息-备注 + draft.setHandleFile(common.getCommitFile()); // 流程审批信息-附件 + draft.setUserId(CurrentUserUtil.getId()); // 用户id + draft.setProjectId(newBusinessId); + processDraftService.save(draft); + } + + public CommonVO getDraftCommon(ProcessDraft draft) { + String taskId = draft.getTaskId(); + CommonVO commonVO = new CommonVO(); + commonVO.setPrcName(draft.getPrcName()); + commonVO.setCommitText(draft.getHandleText()); + commonVO.setCommitFile(draft.getHandleFile()); + commonVO.setTaskId(taskId); + commonVO.setProcessInstanceId(draft.getProcessInstanceId()); + if (StrUtil.isNotBlank(taskId)) { + commonVO.setNodeId(this.getNodeIdByTaskId(taskId)); + } + return commonVO; + } } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/controller/ProcessESInitChangeController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/controller/ProcessESInitChangeController.java index 4bb9167a..cbea053e 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/controller/ProcessESInitChangeController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/controller/ProcessESInitChangeController.java @@ -14,6 +14,7 @@ import com.jero.modules.laws.enterprise.service.EnterpriseStandardPlanService; import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -96,6 +97,20 @@ public class ProcessESInitChangeController { return Result.OK(initChangeService.getHandleData(taskId)); } + /** + * 保存到待办 + * @param draftId + * @param projectId + */ + @AutoLog(value = "企标立项变更流程-草稿办理") + @ApiOperation(value="企标立项变更流程-草稿办理", notes="企标立项变更流程-草稿办理") + @GetMapping("/draftHandle") + @Translation + public Result draftHandle(@RequestParam("draftId") @ApiParam("草稿Id") String draftId, + @RequestParam("projectId") @ApiParam("业务数据Id") String projectId) { + return Result.OK(initChangeService.getDraftData(draftId, projectId)); + } + /** * 同意 * diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java index e4007a11..7f6418ee 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/entity/ProcessEsInitChange.java @@ -534,6 +534,12 @@ public class ProcessEsInitChange implements Serializable { @ApiModelProperty(value = "配合单位") private String cooperationUnit; + /** + * 流程业务统一Id + */ + @ApiModelProperty(value = "流程业务统一Id") + private String businessId; + @TableField(exist = false) private static final long serialVersionUID = 1781238971297838971L; } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/ProcessEsInitChangeService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/ProcessEsInitChangeService.java index 922fb457..fb2ee887 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/ProcessEsInitChangeService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/ProcessEsInitChangeService.java @@ -47,4 +47,12 @@ public interface ProcessEsInitChangeService extends IService e.setProcessInstanceId(processInstanceId)); + // 生成唯一的businessId + String newBusinessId = actFlowCommonService.getNewBusinessId(); + // 新增业务表数据 + esInitChangeList.forEach(e -> e.setBusinessId(newBusinessId)); // 保存到业务流程表 saveBatch(esInitChangeList); // 保存选人信息 @@ -143,7 +143,8 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -154,6 +155,25 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(ProcessEsInitChange::getBusinessId, businessId); + lambdaQueryWrapper.eq(ProcessEsInitChange::getDelFlag, YesOrNoEnum.NO.getValue()); + List dataList = list(lambdaQueryWrapper); + initChangeDataVO.setDataList(dataList); + return initChangeDataVO; + } + return null; + } + @Override public void approvalInitChange(InitChangeDataVO initChangeDataVO, boolean pass) { String userId = UserUtils.getUserId(); @@ -189,43 +209,26 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl esInitChange = initChangeData.getDataList(); - saveOrUpdateBatch(esInitChange); + List dataList = initChangeData.getDataList(); + // 先删后增 - LambdaUpdateWrapper draftWrapper = new LambdaUpdateWrapper<>(); - if (StrUtil.isBlank(taskId)) { - // 第一个节点点击保存没有taskId - List draftList = new ArrayList<>(); - for (ProcessEsInitChange esInitChangeItem : esInitChange) { - ProcessDraft draft = new ProcessDraft(); - draft.setProjectId(esInitChangeItem.getId()); - draft.setPrcName(commonVO.getPrcName()); - draft.setPrcType(ProcessTypeEnum.ES_INIT_CHANGE.getValue()); - draft.setHandleText(commonVO.getCommitText()); // 流程审批信息-备注 - draft.setHandleFile(commonVO.getCommitFile()); // 流程审批信息-附件 - draftList.add(draft); - } - processDraftService.saveBatch(draftList); - } else { - String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); - draftWrapper.in(ProcessDraft::getProjectId, esInitChange.stream().map(ProcessEsInitChange::getId).collect(Collectors.toList())); - processDraftService.remove(draftWrapper); - List draftList = new ArrayList<>(); - for (ProcessEsInitChange esInitChangeItem : esInitChange) { - ProcessDraft draft = new ProcessDraft(); - draft.setProjectId(esInitChangeItem.getId()); - draft.setProcessInstanceId(processInstanceId); - draft.setPrcName(commonVO.getPrcName()); - draft.setPrcType(ProcessTypeEnum.ES_INIT_CHANGE.getValue()); - draft.setTaskId(taskId); // 任务id - draft.setHandleText(commonVO.getCommitText()); // 流程审批信息-备注 - draft.setHandleFile(commonVO.getCommitFile()); // 流程审批信息-附件 - draft.setUserId(CurrentUserUtil.getId()); // 用户id - draftList.add(draft); - } - processDraftService.saveBatch(draftList); + // 先找到原来的businessId + ProcessDraft existDraft = actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_INIT_CHANGE); + if (existDraft != null) { + // 根据原来的businessId删除业务主表数据 + String businessId = existDraft.getProjectId(); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(ProcessEsInitChange::getBusinessId, businessId); + updateWrapper.set(ProcessEsInitChange::getDelFlag, YesOrNoEnum.YES.getValue()); + update(updateWrapper); } + // 生成唯一的businessId + String newBusinessId = actFlowCommonService.getNewBusinessId(); + // 新增业务表数据 + dataList.forEach(e -> e.setBusinessId(newBusinessId)); + saveBatch(dataList); + // 新增草稿表数据 + actFlowCommonService.addDraft(commonVO, ProcessTypeEnum.ES_INIT_CHANGE, newBusinessId); } public void startRunTask(InitChangeDataVO initChangeData) {