From 22677a0f65d20352cce9b43809f111f4068c7c3a Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Tue, 9 Jan 2024 22:30:33 +0800 Subject: [PATCH] =?UTF-8?q?=20=20=20=20fix(=E6=A0=87=E5=87=86=E6=B3=95?= =?UTF-8?q?=E8=A7=84=E5=85=A5=E5=BA=93/=E5=8F=98=E6=9B=B4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B):=20=E5=BC=BA=E5=88=B6=E6=92=A4=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activiti/enums/ProcessTypeEnum.java | 2 +- .../impl/ProcessFbEntryChangeServiceImpl.java | 58 ++++++++++++++- .../impl/ProcessHandleServiceImpl.java | 72 +++++++++++-------- 3 files changed, 99 insertions(+), 33 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java index cbe5a619..54815cad 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/enums/ProcessTypeEnum.java @@ -12,7 +12,7 @@ import lombok.Getter; public enum ProcessTypeEnum { - FB_ENTRY_CHANGE("标准法规入库/变更流程",1, "com.jero.modules.activiti.process.fb.service.impl.ProcessHandleServiceImpl"), + FB_ENTRY_CHANGE("标准法规入库/变更流程",1, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbEntryChangeServiceImpl"), FB_STANDARD_CONSULTATION("标准征求意见流程",2, "com.jero.modules.activiti.process.fb.service.impl.ProcessFbStandardConsultationServiceImpl"), PROJECT_ASSESS("项目合规评估流程",3, "com.jero.modules.activiti.process.projectassess.service.ProcessProjectAssessService"), PROJECT_NOT_MET("未符合项跟踪流程",4, "com.jero.modules.activiti.process.projectnotmet.service.ProcessProjectNotMetService"), diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbEntryChangeServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbEntryChangeServiceImpl.java index c556d46a..5de473f0 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbEntryChangeServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbEntryChangeServiceImpl.java @@ -9,7 +9,11 @@ import com.jero.common.api.vo.SendMessageAPI; import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.common.exception.JeroBootException; import com.jero.common.util.UUIDUtils; +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.entity.ProcessDraft; +import com.jero.modules.activiti.process.common.service.ProcessDraftService; 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.entity.ProcessFbEntryChange; @@ -17,6 +21,9 @@ import com.jero.modules.activiti.process.fb.mapper.ProcessFbEntryChangeMapper; import com.jero.modules.activiti.process.fb.service.IProcessFbEntryChangeService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.service.ProcessApprovalRecordService; +import com.jero.modules.activiti.service.WorkCenterService; +import com.jero.modules.activiti.util.SpringContextUtil; import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; import com.jero.modules.laws.common.mapper.LawsCommonMapper; @@ -24,6 +31,8 @@ import com.jero.modules.laws.common.service.ILawsCommonService; import com.jero.modules.laws.common.util.CurrentUserUtil; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; +import com.jero.modules.system.entity.SysUser; +import com.jero.modules.system.service.ISysUserService; import com.jero.modules.tag.entity.LawsTag; import com.jero.modules.tag.enums.TableNameEnum; import lombok.extern.slf4j.Slf4j; @@ -45,7 +54,8 @@ import java.util.stream.Collectors; @Service @Transactional(rollbackFor = JeroBootException.class) @Slf4j -public class ProcessFbEntryChangeServiceImpl extends ServiceImpl implements IProcessFbEntryChangeService { +public class ProcessFbEntryChangeServiceImpl extends ServiceImpl + implements IProcessFbEntryChangeService, WorkCenterService { @Resource private IProcessHandleService processHandleService; @@ -58,6 +68,15 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) { ProcessInfoVO processInfoVO = processHandleService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId); - ProcessFbEntryChange processFbEntryChange = getById(processInfoVO.getBusinessId()); + ProcessFbEntryChange processFbEntryChange = getById(projectId); Map map = JSON.parseObject(processFbEntryChange.getBusinessJson(), Map.class); // 处理字典翻译 @@ -340,4 +359,37 @@ public class ProcessFbEntryChangeServiceImpl extends ServiceImpl() + .eq(ProcessApprovalRecord::getProcessInstanceId, processAll.getProcessInstanceId()) + .orderByAsc(ProcessApprovalRecord::getCreateTime) + .last("limit 1")); + + // 处理业务表信息 + IProcessFbEntryChangeService processFbEntryChangeService = SpringContextUtil.getBean(IProcessFbEntryChangeService.class); + ProcessFbEntryChange processFbEntryChange = processFbEntryChangeService.getById(processAll.getProjectId()); + processFbEntryChange.setId(projectId); + processFbEntryChange.setCreateTime(new Date()); + ISysUserService sysUserService = SpringContextUtil.getBean(ISysUserService.class); + SysUser sysUser = sysUserService.getById(processApprovalRecord.getOriginUserId()); + processFbEntryChange.setCreateBy(sysUser.getUsername()); + processFbEntryChangeService.save(processFbEntryChange); + + ProcessDraft processDraft = new ProcessDraft(); + processDraft.setProjectId(projectId); // 业务id + processDraft.setPrcType(processAll.getPrcType()); // 流程类型 + processDraft.setUserId(processApprovalRecord.getOriginUserId()); // 用户id + // 保存草稿 + ProcessDraftService processDraftService = SpringContextUtil.getBean(ProcessDraftService.class); + processDraftService.save(processDraft); + } } 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 307c8baa..2f816663 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 @@ -45,7 +45,7 @@ import java.util.*; @Service @Slf4j @Transactional(rollbackFor = JeroBootException.class) -public class ProcessHandleServiceImpl implements IProcessHandleService { +public class ProcessHandleServiceImpl implements IProcessHandleService{ @Resource private RuntimeService runtimeService; @@ -135,6 +135,10 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { String taskId = basicTaskInfoDTO.getTaskId(); isMyTask(taskId); + // 保存 + updateProcessAll(processInfoVO); + updateApprovalRecord(processInfoVO); + // 删除自己的草稿 deleteMyDraft(taskId, processInfoVO.getBusinessId(), basicProcessInfoDTO.getProcessType()); @@ -289,6 +293,9 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { public void updateProcessAll(ProcessInfoVO processInfoVO) { BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); ProcessAll process = processAllService.getByProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); + if (Objects.isNull(process)){ + process = new ProcessAll(); + } process.setCreateUserId(CurrentUserUtil.getId()); // 流程创建人 process.setPrcName(basicProcessInfoDTO.getProcessName()); // 流程名称 process.setMes(basicProcessInfoDTO.getProcessDescription()); // 流程说明 @@ -308,11 +315,15 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { public void updateApprovalRecord(ProcessInfoVO processInfoVO) { BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(basicTaskInfoDTO.getTaskId()); + if (Objects.isNull(approvalRecord)){ + approvalRecord = new ProcessApprovalRecord(); + } approvalRecord.setCommitFlag(basicTaskInfoDTO.getCommitFlag()); // 审批意见(1通过,2驳回) approvalRecord.setCommitText(basicTaskInfoDTO.getHandleText()); // 审批内容 approvalRecord.setCommitFile(basicTaskInfoDTO.getHandleFile()); // 审批附件 approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue()); // 完成注记(1进行中,2已完成) approvalRecord.setEndTime(new Date()); // 完成时间 + approvalRecord.setProjectId(processInfoVO.getBusinessId()); processApprovalRecordService.updateById(approvalRecord); } @@ -442,39 +453,45 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO(); processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO); - // 流程信息 - if (StringUtils.isNotBlank(processInstanceId)) { - ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); + // 先查询草稿表是否存储 + 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)); 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()); + } + + // 流程审批信息 + 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()); } } - - // 审批信息 - 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); - processInfoVO.setBusinessId(processDraft.getProjectId()); - basicProcessInfoDTO.setProcessType(processDraft.getPrcType()); - basicProcessInfoDTO.setProcessName(processDraft.getPrcName()); - basicProcessInfoDTO.setProcessDescription(processDraft.getProcessDescription()); - basicProcessInfoDTO.setProcessDueDate(processDraft.getProcessDueDate()); - processInfoVO.setInfoJsonStr(processDraft.getInfoJsonStr()); - } - } - + processInfoVO.setDraftId(draftId); + processInfoVO.setBusinessId(projectId); return processInfoVO; } @@ -499,7 +516,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { // 审批信息 BasicTaskInfoDTO basicTaskInfoDTO = new BasicTaskInfoDTO(); processInfoVO.setBasicTaskInfoDTO(basicTaskInfoDTO); - // 流程信息 if (StringUtils.isNotBlank(processInstanceId)) { ProcessAll processAll = processAllService.getByProcessInstanceId(processInstanceId); @@ -509,7 +525,6 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { basicProcessInfoDTO.setProcessName(processAll.getPrcName()); basicProcessInfoDTO.setProcessDescription(processAll.getMes()); basicProcessInfoDTO.setProcessDueDate(processAll.getDueTime()); - processInfoVO.setBusinessId(processAll.getProjectId()); } } @@ -596,5 +611,4 @@ public class ProcessHandleServiceImpl implements IProcessHandleService { processNodeLinkService.saveBatch(linkList, linkList.size()); } } - }