From 6f5a368c86c3818b968ad1055f5215f86c989084 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期四, 21 三月 2024 21:02:16 +0800 Subject: [PATCH] add 添加流程表单配置 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java | 108 +++++++++++++++++++++++++++-------------------------- 1 files changed, 55 insertions(+), 53 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java index 0b18e9f..b348216 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java @@ -11,6 +11,7 @@ import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.workflow.common.constant.FlowConstant; @@ -31,6 +32,7 @@ import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; import org.dromara.workflow.service.IActHiProcinstService; import org.dromara.workflow.service.IActProcessInstanceService; +import org.dromara.workflow.service.IWfTaskBackNodeService; import org.dromara.workflow.utils.QueryUtils; import org.dromara.workflow.utils.WorkflowUtils; import org.flowable.bpmn.model.*; @@ -59,7 +61,6 @@ import java.util.*; import java.util.stream.Collectors; - /** * 娴佺▼瀹炰緥 鏈嶅姟灞傚疄鐜� * @@ -77,6 +78,7 @@ private final IActHiProcinstService actHiProcinstService; private final ManagementService managementService; private final FlowEventStrategy flowEventStrategy; + private final IWfTaskBackNodeService iWfTaskBackNodeService; @Value("${flowable.activity-font-name}") private String activityFontName; @@ -90,29 +92,29 @@ /** * 鍒嗛〉鏌ヨ姝e湪杩愯鐨勬祦绋嬪疄渚� * - * @param processInstanceBo 鍙傛暟 + * @param bo 鍙傛暟 */ @Override - public TableDataInfo<ProcessInstanceVo> getProcessInstanceRunningByPage(ProcessInstanceBo processInstanceBo) { + public TableDataInfo<ProcessInstanceVo> getPageByRunning(ProcessInstanceBo bo, PageQuery pageQuery) { List<ProcessInstanceVo> list = new ArrayList<>(); ProcessInstanceQuery query = QueryUtils.instanceQuery(); - if (StringUtils.isNotBlank(processInstanceBo.getName())) { - query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%"); + if (StringUtils.isNotBlank(bo.getName())) { + query.processInstanceNameLikeIgnoreCase("%" + bo.getName() + "%"); } - if (StringUtils.isNotBlank(processInstanceBo.getKey())) { - query.processDefinitionKey(processInstanceBo.getKey()); + if (StringUtils.isNotBlank(bo.getKey())) { + query.processDefinitionKey(bo.getKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getStartUserId())) { - query.startedBy(processInstanceBo.getStartUserId()); + if (StringUtils.isNotBlank(bo.getStartUserId())) { + query.startedBy(bo.getStartUserId()); } - if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) { - query.processInstanceBusinessKey(processInstanceBo.getBusinessKey()); + if (StringUtils.isNotBlank(bo.getBusinessKey())) { + query.processInstanceBusinessKey(bo.getBusinessKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getCategoryCode())) { - query.processDefinitionCategory(processInstanceBo.getCategoryCode()); + if (StringUtils.isNotBlank(bo.getCategoryCode())) { + query.processDefinitionCategory(bo.getCategoryCode()); } query.orderByStartTime().desc(); - List<ProcessInstance> processInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize()); + List<ProcessInstance> processInstances = query.listPage(pageQuery.getFirstNum(), pageQuery.getPageSize()); for (ProcessInstance processInstance : processInstances) { ProcessInstanceVo processInstanceVo = BeanUtil.toBean(processInstance, ProcessInstanceVo.class); processInstanceVo.setIsSuspended(processInstance.isSuspended()); @@ -126,29 +128,29 @@ /** * 鍒嗛〉鏌ヨ宸茬粨鏉熺殑娴佺▼瀹炰緥 * - * @param processInstanceBo 鍙傛暟 + * @param bo 鍙傛暟 */ @Override - public TableDataInfo<ProcessInstanceVo> getProcessInstanceFinishByPage(ProcessInstanceBo processInstanceBo) { + public TableDataInfo<ProcessInstanceVo> getPageByFinish(ProcessInstanceBo bo, PageQuery pageQuery) { List<ProcessInstanceVo> list = new ArrayList<>(); HistoricProcessInstanceQuery query = QueryUtils.hisInstanceQuery() .finished().orderByProcessInstanceEndTime().desc(); - if (StringUtils.isNotEmpty(processInstanceBo.getName())) { - query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%"); + if (StringUtils.isNotEmpty(bo.getName())) { + query.processInstanceNameLikeIgnoreCase("%" + bo.getName() + "%"); } - if (StringUtils.isNotBlank(processInstanceBo.getKey())) { - query.processDefinitionKey(processInstanceBo.getKey()); + if (StringUtils.isNotBlank(bo.getKey())) { + query.processDefinitionKey(bo.getKey()); } - if (StringUtils.isNotEmpty(processInstanceBo.getStartUserId())) { - query.startedBy(processInstanceBo.getStartUserId()); + if (StringUtils.isNotEmpty(bo.getStartUserId())) { + query.startedBy(bo.getStartUserId()); } - if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) { - query.processInstanceBusinessKey(processInstanceBo.getBusinessKey()); + if (StringUtils.isNotBlank(bo.getBusinessKey())) { + query.processInstanceBusinessKey(bo.getBusinessKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getCategoryCode())) { - query.processDefinitionCategory(processInstanceBo.getCategoryCode()); + if (StringUtils.isNotBlank(bo.getCategoryCode())) { + query.processDefinitionCategory(bo.getCategoryCode()); } - List<HistoricProcessInstance> historicProcessInstances = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize()); + List<HistoricProcessInstance> historicProcessInstances = query.listPage(pageQuery.getFirstNum(), pageQuery.getPageSize()); for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) { ProcessInstanceVo processInstanceVo = BeanUtil.toBean(historicProcessInstance, ProcessInstanceVo.class); processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(historicProcessInstance.getBusinessStatus())); @@ -165,7 +167,7 @@ */ @SneakyThrows @Override - public String getHistoryProcessImage(String processInstanceId) { + public String getHistoryImage(String processInstanceId) { String processDefinitionId; // 鑾峰彇褰撳墠鐨勬祦绋嬪疄渚� ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult(); @@ -220,7 +222,7 @@ * @param processInstanceId 娴佺▼瀹炰緥id */ @Override - public Map<String, Object> getHistoryProcessList(String processInstanceId) { + public Map<String, Object> getHistoryList(String processInstanceId) { Map<String, Object> map = new HashMap<>(); List<Map<String, Object>> taskList = new ArrayList<>(); HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); @@ -281,6 +283,7 @@ for (HistoricTaskInstance historicTaskInstance : list) { ActHistoryInfoVo actHistoryInfoVo = new ActHistoryInfoVo(); BeanUtils.copyProperties(historicTaskInstance, actHistoryInfoVo); + actHistoryInfoVo.setAssignee(StringUtils.isNotBlank(historicTaskInstance.getAssignee()) ? Long.valueOf(historicTaskInstance.getAssignee()) : null); actHistoryInfoVo.setStatus(actHistoryInfoVo.getEndTime() == null ? "寰呭鐞�" : "宸插鐞�"); if (ObjectUtil.isNotEmpty(historicTaskInstance.getDurationInMillis())) { actHistoryInfoVo.setRunDuration(getDuration(historicTaskInstance.getDurationInMillis())); @@ -449,7 +452,7 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) { + public boolean deleteRunInstance(ProcessInvalidBo processInvalidBo) { try { List<Task> list = QueryUtils.taskQuery(processInvalidBo.getProcessInstanceId()).list(); List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); @@ -463,10 +466,8 @@ for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) { taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason); } - HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult(); - if (ObjectUtil.isNotEmpty(historicProcessInstance) && BusinessStatusEnum.FINISH.getStatus().equals(historicProcessInstance.getBusinessStatus())) { - throw new ServiceException("璇ュ崟鎹凡瀹屾垚鐢宠锛�"); - } + HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInvalidBo.getProcessInstanceId()).singleResult(); + BusinessStatusEnum.checkInvalidStatus(historicProcessInstance.getBusinessStatus()); runtimeService.updateBusinessStatus(processInvalidBo.getProcessInstanceId(), BusinessStatusEnum.INVALID.getStatus()); runtimeService.deleteProcessInstance(processInvalidBo.getProcessInstanceId(), deleteReason); FlowProcessEventHandler processHandler = flowEventStrategy.getProcessHandler(historicProcessInstance.getProcessDefinitionKey()); @@ -487,7 +488,7 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteRuntimeProcessAndHisInst(List<String> processInstanceIds) { + public boolean deleteRunAndHisInstance(List<String> processInstanceIds) { try { // 1.鍒犻櫎杩愯涓祦绋嬪疄渚� List<Task> list = QueryUtils.taskQuery(processInstanceIds).list(); @@ -501,6 +502,7 @@ if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { historyService.bulkDeleteHistoricProcessInstances(processInstanceIds); } + iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; } catch (Exception e) { e.printStackTrace(); @@ -515,7 +517,7 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteRuntimeProcessAndHisInstByBusinessKeys(List<String> businessKeys) { + public boolean deleteRunAndHisInstanceByBusinessKeys(List<String> businessKeys) { try { // 1.鍒犻櫎杩愯涓祦绋嬪疄渚� List<ActHiProcinst> actHiProcinsts = actHiProcinstService.selectByBusinessKeyIn(businessKeys); @@ -535,6 +537,7 @@ if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { historyService.bulkDeleteHistoricProcessInstances(processInstanceIds); } + iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; } catch (Exception e) { e.printStackTrace(); @@ -549,9 +552,10 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteFinishProcessAndHisInst(List<String> processInstanceIds) { + public boolean deleteFinishAndHisInstance(List<String> processInstanceIds) { try { historyService.bulkDeleteHistoricProcessInstances(processInstanceIds); + iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; } catch (Exception e) { e.printStackTrace(); @@ -576,12 +580,10 @@ if (processInstance.isSuspended()) { throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED); } - if (BusinessStatusEnum.CANCEL.getStatus().equals(processInstance.getBusinessStatus())) { - throw new ServiceException("璇ュ崟鎹凡鎾ら攢锛�"); - } + BusinessStatusEnum.checkCancelStatus(processInstance.getBusinessStatus()); List<Task> taskList = QueryUtils.taskQuery(processInstanceId).list(); for (Task task : taskList) { - taskService.setAssignee(task.getId(), String.valueOf(LoginHelper.getUserId())); + taskService.setAssignee(task.getId(), null); taskService.addComment(task.getId(), processInstanceId, TaskStatusEnum.CANCEL.getStatus(), LoginHelper.getLoginUser().getNickname() + "锛氭挙閿�鐢宠"); } HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0); @@ -614,27 +616,27 @@ /** * 鍒嗛〉鏌ヨ褰撳墠鐧诲綍浜哄崟鎹� * - * @param processInstanceBo 鍙傛暟 + * @param bo 鍙傛暟 */ @Override - public TableDataInfo<ProcessInstanceVo> getCurrentSubmitByPage(ProcessInstanceBo processInstanceBo) { + public TableDataInfo<ProcessInstanceVo> getPageByCurrent(ProcessInstanceBo bo, PageQuery pageQuery) { List<ProcessInstanceVo> list = new ArrayList<>(); HistoricProcessInstanceQuery query = QueryUtils.hisInstanceQuery(); - query.startedBy(processInstanceBo.getStartUserId()); - if (StringUtils.isNotBlank(processInstanceBo.getName())) { - query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%"); + query.startedBy(String.valueOf(LoginHelper.getUserId())); + if (StringUtils.isNotBlank(bo.getName())) { + query.processInstanceNameLikeIgnoreCase("%" + bo.getName() + "%"); } - if (StringUtils.isNotBlank(processInstanceBo.getKey())) { - query.processDefinitionKey(processInstanceBo.getKey()); + if (StringUtils.isNotBlank(bo.getKey())) { + query.processDefinitionKey(bo.getKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) { - query.processInstanceBusinessKey(processInstanceBo.getBusinessKey()); + if (StringUtils.isNotBlank(bo.getBusinessKey())) { + query.processInstanceBusinessKey(bo.getBusinessKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getCategoryCode())) { - query.processDefinitionCategory(processInstanceBo.getCategoryCode()); + if (StringUtils.isNotBlank(bo.getCategoryCode())) { + query.processDefinitionCategory(bo.getCategoryCode()); } query.orderByProcessInstanceStartTime().desc(); - List<HistoricProcessInstance> historicProcessInstanceList = query.listPage(processInstanceBo.getPageNum(), processInstanceBo.getPageSize()); + List<HistoricProcessInstance> historicProcessInstanceList = query.listPage(pageQuery.getFirstNum(), pageQuery.getPageSize()); List<TaskVo> taskVoList = new ArrayList<>(); if (CollUtil.isNotEmpty(historicProcessInstanceList)) { List<String> processInstanceIds = StreamUtils.toList(historicProcessInstanceList, HistoricProcessInstance::getId); -- Gitblit v1.9.3