From b1d446116321bd64bfa6d2aa9d92e0c766c885a9 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Thu, 1 Feb 2024 11:27:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=2080849=20=E6=B3=95=E8=A7=84=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E6=B5=81=E7=A8=8B-=E9=A9=B3=E5=9B=9E=E7=BB=99?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E8=8A=82=E7=82=B9=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=90=8E=E6=8F=90=E4=BA=A4=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E6=95=B0=E6=8D=AE=E5=BA=93=E4=B8=AD=E5=B7=B2=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E8=AF=A5=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/service/ActFlowCommonService.java | 12 ++ .../ProcessFbStandardPurchaseController.java | 130 +++++++++--------- .../ProcessFbStandardPurchaseServiceImpl.java | 111 ++++++++++++--- 3 files changed, 169 insertions(+), 84 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 9d32bc7f..73400547 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 @@ -334,6 +334,18 @@ public class ActFlowCommonService { processAllService.updateById(process); } + public void updateProcessAllWithProjectId(String processInstanceId, String userId, String prcName, String prcMes, + Integer prcType, Date dueTime, String projectId) { + ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId); + process.setCreateUserId(userId); + process.setPrcName(prcName); + process.setPrcMes(prcMes); + process.setDueTime(dueTime); + process.setPrcType(prcType); + process.setProjectId(projectId); + processAllService.updateById(process); + } + public StandTypeVO getStandTypeByStandNo(String standardNo) { LambdaUpdateWrapper espWrapper = new LambdaUpdateWrapper<>(); espWrapper.eq(EnterpriseStandardPlan::getNewEnStandardNo, standardNo); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/controller/ProcessFbStandardPurchaseController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/controller/ProcessFbStandardPurchaseController.java index ca21d916..6c424d24 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/controller/ProcessFbStandardPurchaseController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/controller/ProcessFbStandardPurchaseController.java @@ -24,84 +24,84 @@ import java.util.List; /** * @Description: 法规采购流程表 * @Author: jero-boot - * @Date: 2023-11-14 + * @Date: 2023-11-14 * @Version: V1.0 */ -@Api(tags="法规采购流程表") +@Api(tags = "法规采购流程表") @RestController @RequestMapping("/process/fb/processFbStandardPurchase") @Slf4j public class ProcessFbStandardPurchaseController extends JeroController { - @Autowired - private IProcessFbStandardPurchaseService processFbStandardPurchaseService; + @Autowired + private IProcessFbStandardPurchaseService processFbStandardPurchaseService; - @GetMapping("/queryProcessInfoVO") - @AutoLog(value = "法规采购流程表-查询流程信息") - @ApiImplicitParams({ - @ApiImplicitParam(name = "draftId", value = "草稿id"), - @ApiImplicitParam(name = "processInstanceId", value = "流程实例id"), - @ApiImplicitParam(name = "taskId", value = "任务id") - }) - @ApiOperation("法规采购流程表-查询流程信息") - public Result>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId){ - ProcessInfoVO> processInfoVO = processFbStandardPurchaseService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId); - return Result.OK(processInfoVO); - } + @GetMapping("/queryProcessInfoVO") + @AutoLog(value = "法规采购流程表-查询流程信息") + @ApiImplicitParams({ + @ApiImplicitParam(name = "draftId", value = "草稿id"), + @ApiImplicitParam(name = "processInstanceId", value = "流程实例id"), + @ApiImplicitParam(name = "taskId", value = "任务id") + }) + @ApiOperation("法规采购流程表-查询流程信息") + public Result>> queryProcessInfoVO(String draftId, String processInstanceId, String taskId, String projectId) { + ProcessInfoVO> processInfoVO = processFbStandardPurchaseService.queryProcessInfoVO(draftId, processInstanceId, taskId, projectId); + return Result.OK(processInfoVO); + } - @AutoLog(value = "法规采购流程表-发起流程") - @ApiOperation(value = "法规采购流程表-发起流程", notes = "流程处理-发起流程") - @PostMapping(value = "/startProcess") - public Result startProcess(@Validated @RequestBody ProcessInfoVO> processInfoVO) { - processFbStandardPurchaseService.startProcess(processInfoVO); - return Result.OK(); - } + @AutoLog(value = "法规采购流程表-发起流程") + @ApiOperation(value = "法规采购流程表-发起流程", notes = "流程处理-发起流程") + @PostMapping(value = "/startProcess") + public Result startProcess(@Validated @RequestBody ProcessInfoVO> processInfoVO) { + processFbStandardPurchaseService.startProcess(processInfoVO); + return Result.OK(); + } - @AutoLog(value = "法规采购流程表-同意") - @ApiOperation(value="法规采购流程表-同意", notes="法规采购流程表-同意") - @PostMapping("/agree") - public Result agree(@Validated @RequestBody ProcessInfoVO> processInfoVO) { - processFbStandardPurchaseService.approveTask(processInfoVO, true); - return Result.OK(); - } + @AutoLog(value = "法规采购流程表-同意") + @ApiOperation(value = "法规采购流程表-同意", notes = "法规采购流程表-同意") + @PostMapping("/agree") + public Result agree(@Validated @RequestBody ProcessInfoVO> processInfoVO) { + processFbStandardPurchaseService.approveTask(processInfoVO, true); + return Result.OK(); + } - @AutoLog(value = "法规采购流程表-驳回") - @ApiOperation(value="法规采购流程表-驳回", notes="法规采购流程表-驳回") - @PostMapping("/reject") - public Result reject(@Validated @RequestBody ProcessInfoVO> processInfoVO) { - processFbStandardPurchaseService.approveTask(processInfoVO, false); - return Result.OK(); - } + @AutoLog(value = "法规采购流程表-驳回") + @ApiOperation(value = "法规采购流程表-驳回", notes = "法规采购流程表-驳回") + @PostMapping("/reject") + public Result reject(@Validated @RequestBody ProcessInfoVO> processInfoVO) { + processFbStandardPurchaseService.approveTask(processInfoVO, false); + return Result.OK(); + } - @AutoLog(value = "法规采购流程表-转办") - @ApiOperation(value="法规采购流程表-转办", notes="法规采购流程表-转办") - @PostMapping(value = "/transfer") - public Result transfer(@RequestBody TransferVO transferVO) { - processFbStandardPurchaseService.transfer(transferVO.getTaskId(), transferVO.getUserId()); - return Result.OK(); - } + @AutoLog(value = "法规采购流程表-转办") + @ApiOperation(value = "法规采购流程表-转办", notes = "法规采购流程表-转办") + @PostMapping(value = "/transfer") + public Result transfer(@RequestBody TransferVO transferVO) { + processFbStandardPurchaseService.transfer(transferVO.getTaskId(), transferVO.getUserId()); + return Result.OK(); + } - @AutoLog(value = "法规采购流程表-保存为草稿") - @ApiOperation(value = "法规采购流程表-保存为草稿", notes = "法规采购流程表-保存为草稿") - @PostMapping(value = "/saveToDraft") - public Result saveToDraft(@Validated @RequestBody ProcessInfoVO> processInfoVO) { - processFbStandardPurchaseService.saveToDraft(processInfoVO); - return Result.OK(); - } + @AutoLog(value = "法规采购流程表-保存为草稿") + @ApiOperation(value = "法规采购流程表-保存为草稿", notes = "法规采购流程表-保存为草稿") + @PostMapping(value = "/saveToDraft") + public Result saveToDraft(@Validated @RequestBody ProcessInfoVO> processInfoVO) { + processFbStandardPurchaseService.saveToDraft(processInfoVO); + return Result.OK(); + } - @AutoLog(value = "法规采购流程表-导出") - @ApiOperation(value = "法规采购流程表-导出", notes = "法规采购流程表-导出") - @GetMapping(value = "/exportXls") - public ModelAndView exportXls(@RequestParam(name = "businessId") String businessId) { - return processFbStandardPurchaseService.exportXls(businessId); - } + @AutoLog(value = "法规采购流程表-导出") + @ApiOperation(value = "法规采购流程表-导出", notes = "法规采购流程表-导出") + @GetMapping(value = "/exportXls") + public ModelAndView exportXls(@RequestParam(name = "businessId") String businessId) { + return processFbStandardPurchaseService.exportXls(businessId); + } - @AutoLog(value = "法规采购流程表-抄送") - @ApiOperation(value = "法规采购流程表-抄送", notes = "法规采购流程表-抄送") - @GetMapping(value = "/carbonCopy") - public Result carbonCopy(@RequestParam(name = "processInstanceId") String processInstanceId, - @RequestParam(name = "userIds") String userIds) { - processFbStandardPurchaseService.carbonCopy(processInstanceId, userIds); - return Result.OK(); - } + @AutoLog(value = "法规采购流程表-抄送") + @ApiOperation(value = "法规采购流程表-抄送", notes = "法规采购流程表-抄送") + @GetMapping(value = "/carbonCopy") + public Result carbonCopy(@RequestParam(name = "processInstanceId") String processInstanceId, + @RequestParam(name = "userIds") String userIds) { + processFbStandardPurchaseService.carbonCopy(processInstanceId, userIds); + return Result.OK(); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardPurchaseServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardPurchaseServiceImpl.java index 5b178240..ea2efbf4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardPurchaseServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/fb/service/impl/ProcessFbStandardPurchaseServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.activiti.process.fb.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.api.vo.ResultCommon; @@ -8,18 +9,28 @@ import com.jero.common.system.base.controller.JeroController; import com.jero.common.util.UUIDUtils; import com.jero.modules.activiti.entity.ProcessAll; import com.jero.modules.activiti.enums.ProcessTypeEnum; +import com.jero.modules.activiti.process.common.entity.CommonVO; +import com.jero.modules.activiti.process.common.entity.CounterSignNodeNameConstants; +import com.jero.modules.activiti.process.common.service.ActFlowCommonService; 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.dto.BasicTaskInfoDTO; import com.jero.modules.activiti.process.fb.entity.ProcessFbStandardPurchase; import com.jero.modules.activiti.process.fb.mapper.ProcessFbStandardPurchaseMapper; import com.jero.modules.activiti.process.fb.service.IProcessFbStandardPurchaseService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; import com.jero.modules.activiti.process.fb.vo.ProcessInfoVO; +import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.service.WorkCenterService; import com.jero.modules.activiti.util.SpringContextUtil; import com.jero.modules.laws.common.util.CurrentUserUtil; +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.runtime.ProcessInstance; +import org.activiti.engine.task.Task; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.jeecgframework.poi.excel.def.NormalExcelConstants; @@ -30,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; +import java.util.Date; import java.util.List; import java.util.Map; @@ -37,7 +49,7 @@ import java.util.Map; /** * @Description: 法规采购流程表 * @Author: jero-boot - * @Date: 2023-11-14 + * @Date: 2023-11-14 * @Version: V1.0 */ @Service @@ -52,6 +64,18 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl> processInfoVO) { - String processName = addBusinessInfo(processInfoVO);// 保存业务信息 + addBusinessInfo(processInfoVO);// 保存业务信息 Map userInfoMap = processInfoVO.getUserInfoMap(); // 用户变量map userInfoMap.put("engineer", CurrentUserUtil.getId()); // 第一个任务节点设置成自己 @@ -103,9 +127,9 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl> processInfoVO) { + private void addBusinessInfo(ProcessInfoVO> processInfoVO) { List businessInfoList = processInfoVO.getBusinessInfoDTO(); - if (CollectionUtils.isEmpty(businessInfoList)) return ""; + if (CollectionUtils.isEmpty(businessInfoList)) return; String businessId = businessInfoList.get(0).getBusinessId(); if (StringUtils.isBlank(businessId)) { businessId = UUIDUtils.randomUUID20(); @@ -128,8 +152,6 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl> processInfoVO, boolean pass) { - List businessInfoList = processInfoVO.getBusinessInfoDTO(); - addBusinessInfo(processInfoVO); - processInfoVO.setBusinessId(businessInfoList.get(0).getBusinessId()); - processHandleService.approveTask(processInfoVO, pass); - - BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); - String processInstanceId = basicProcessInfoDTO.getProcessInstanceId(); - // 如果流程结束 - if (pass && processHandleService.isProcessFinish(processInstanceId)) { - log.info("《法规采购流程》结束,流程名称:{}", basicProcessInfoDTO.getProcessName()); + String userId = UserUtils.getUserId(); + CommonVO commonVO = this.transferCommonVo(processInfoVO); + Map flowUser = processInfoVO.getUserInfoMap(); + String taskId = commonVO.getTaskId(); + if (StrUtil.isBlank(taskId) || !actFlowCommonService.taskExists(taskId)) { + throw new JeroBootException(ResultCommon.TASK_NOT_EXISTS); } + // 获取流程实例ID + String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId); + // 获取流程实例对象 + ProcessInstance processInstance = runtimeService.createProcessInstanceQuery() + .processInstanceId(processInstanceId).singleResult(); + // 获取流程定义ID + String processDefinitionId = processInstance.getProcessDefinitionId(); + List data = processInfoVO.getBusinessInfoDTO(); + if (data != null) { + addBusinessInfo(processInfoVO); // 保存业务信息 + // 根据流程实例id更新流程总表 + String prcName = commonVO.getPrcName(); + String prcMes = commonVO.getPrcMes(); + Date dueTime = commonVO.getDueTime(); + Integer prcType = ProcessTypeEnum.FB_STANDARD_PURCHASE.getValue(); + actFlowCommonService.updateProcessAllWithProjectId(processInstanceId, userId, + prcName, prcMes, prcType, dueTime, data.get(0).getBusinessId()); + } + if (flowUser != null) { + Map variables = setVariables(flowUser); + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + // 获取执行id + String executionId = task.getExecutionId(); + // 设置流程变量 + runtimeService.setVariables(executionId, variables); + processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, flowUser); + } + // 设置流程变量 + runtimeService.setVariable(processInstanceId, "pass", pass); + // 更新审批表为完成,填充数据 + actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass); + // 审批节点 + actFlowCommonService.completeTask(taskId, userId); + // 删除草稿 + actFlowCommonService.removeDraft(commonVO); + } + + private CommonVO transferCommonVo(ProcessInfoVO processInfoVO) { + CommonVO commonVO = new CommonVO(); + BasicProcessInfoDTO basicProcessInfoDTO = processInfoVO.getBasicProcessInfoDTO(); + BasicTaskInfoDTO basicTaskInfoDTO = processInfoVO.getBasicTaskInfoDTO(); + commonVO.setTaskId(basicTaskInfoDTO.getTaskId()); + commonVO.setPrcName(basicProcessInfoDTO.getProcessName()); + commonVO.setPrcMes(basicProcessInfoDTO.getProcessDescription()); + commonVO.setDueTime(basicProcessInfoDTO.getProcessDueDate()); + commonVO.setProcessInstanceId(basicProcessInfoDTO.getProcessInstanceId()); + commonVO.setCommitFile(basicTaskInfoDTO.getHandleFile()); + commonVO.setCommitText(basicTaskInfoDTO.getHandleText()); + return commonVO; + } + + private Map setVariables(Map flowUser) { + // 删除所有后缀是“_dictText”的变量 + flowUser.entrySet().removeIf(entry -> entry.getKey().endsWith("_dictText")); + return flowUser; } /** @@ -191,8 +264,8 @@ public class ProcessFbStandardPurchaseServiceImpl extends ServiceImpl() - .eq(ProcessFbStandardPurchase::getBusinessId, processAll.getProjectId())); + .eq(ProcessFbStandardPurchase::getBusinessId, processAll.getProjectId())); } }