From 1da98c8a8207dd062e433242e1567b6418c6ed81 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: 星期六, 06 四月 2024 11:20:29 +0800 Subject: [PATCH] update 优化表单绑定逻辑,移除流程定义配置表单 --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/ActProcessInstanceServiceImpl.java | 270 ++++++++++++++++++++++++----------------------------- 1 files changed, 124 insertions(+), 146 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 e49be0d..9af37f6 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,9 +11,9 @@ 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.common.tenant.helper.TenantHelper; import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.enums.BusinessStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum; @@ -21,17 +21,17 @@ import org.dromara.workflow.domain.bo.ProcessInstanceBo; import org.dromara.workflow.domain.bo.ProcessInvalidBo; import org.dromara.workflow.domain.bo.TaskUrgingBo; -import org.dromara.workflow.domain.vo.ActHistoryInfoVo; -import org.dromara.workflow.domain.vo.GraphicInfoVo; -import org.dromara.workflow.domain.vo.ProcessInstanceVo; -import org.dromara.workflow.domain.vo.TaskVo; +import org.dromara.workflow.domain.vo.*; import org.dromara.workflow.flowable.CustomDefaultProcessDiagramGenerator; -import org.dromara.workflow.flowable.strategy.FlowEventStrategy; import org.dromara.workflow.flowable.cmd.DeleteExecutionCmd; import org.dromara.workflow.flowable.cmd.ExecutionChildByExecutionIdCmd; +import org.dromara.workflow.flowable.strategy.FlowEventStrategy; import org.dromara.workflow.flowable.strategy.FlowProcessEventHandler; import org.dromara.workflow.service.IActHiProcinstService; import org.dromara.workflow.service.IActProcessInstanceService; +import org.dromara.workflow.service.IWfNodeConfigService; +import org.dromara.workflow.service.IWfTaskBackNodeService; +import org.dromara.workflow.utils.QueryUtils; import org.dromara.workflow.utils.WorkflowUtils; import org.flowable.bpmn.model.*; import org.flowable.engine.*; @@ -45,9 +45,7 @@ import org.flowable.engine.task.Attachment; import org.flowable.engine.task.Comment; import org.flowable.task.api.Task; -import org.flowable.task.api.TaskQuery; import org.flowable.task.api.history.HistoricTaskInstance; -import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -60,7 +58,6 @@ import java.util.List; import java.util.*; import java.util.stream.Collectors; - /** * 娴佺▼瀹炰緥 鏈嶅姟灞傚疄鐜� @@ -79,6 +76,8 @@ private final IActHiProcinstService actHiProcinstService; private final ManagementService managementService; private final FlowEventStrategy flowEventStrategy; + private final IWfTaskBackNodeService iWfTaskBackNodeService; + private final IWfNodeConfigService iWfNodeConfigService; @Value("${flowable.activity-font-name}") private String activityFontName; @@ -92,78 +91,96 @@ /** * 鍒嗛〉鏌ヨ姝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 = runtimeService.createProcessInstanceQuery(); - if (TenantHelper.isEnable()) { - query.processInstanceTenantId(TenantHelper.getTenantId()); + ProcessInstanceQuery query = QueryUtils.instanceQuery(); + if (StringUtils.isNotBlank(bo.getName())) { + query.processInstanceNameLikeIgnoreCase("%" + bo.getName() + "%"); } - if (StringUtils.isNotBlank(processInstanceBo.getName())) { - query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%"); + if (StringUtils.isNotBlank(bo.getKey())) { + query.processDefinitionKey(bo.getKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getKey())) { - query.processDefinitionKey(processInstanceBo.getKey()); + if (StringUtils.isNotBlank(bo.getStartUserId())) { + query.startedBy(bo.getStartUserId()); } - if (StringUtils.isNotBlank(processInstanceBo.getStartUserId())) { - query.startedBy(processInstanceBo.getStartUserId()); + if (StringUtils.isNotBlank(bo.getBusinessKey())) { + query.processInstanceBusinessKey(bo.getBusinessKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) { - query.processInstanceBusinessKey(processInstanceBo.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()); processInstanceVo.setBusinessStatusName(BusinessStatusEnum.findByStatus(processInstance.getBusinessStatus())); list.add(processInstanceVo); } + if (CollUtil.isNotEmpty(list)) { + List<String> processDefinitionIds = StreamUtils.toList(list, ProcessInstanceVo::getProcessDefinitionId); + List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds); + for (ProcessInstanceVo processInstanceVo : list) { + if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(processInstanceVo.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(processInstanceVo::setWfNodeConfigVo); + } + } + } long count = query.count(); - return new TableDataInfo<>(list, count); + TableDataInfo<ProcessInstanceVo> build = TableDataInfo.build(); + build.setRows(list); + build.setTotal(count); + return build; } /** * 鍒嗛〉鏌ヨ宸茬粨鏉熺殑娴佺▼瀹炰緥 * - * @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 = historyService.createHistoricProcessInstanceQuery().finished() - .orderByProcessInstanceEndTime().desc(); - if (TenantHelper.isEnable()) { - query.processInstanceTenantId(TenantHelper.getTenantId()); + HistoricProcessInstanceQuery query = QueryUtils.hisInstanceQuery() + .finished().orderByProcessInstanceEndTime().desc(); + if (StringUtils.isNotEmpty(bo.getName())) { + query.processInstanceNameLikeIgnoreCase("%" + bo.getName() + "%"); } - if (StringUtils.isNotEmpty(processInstanceBo.getName())) { - query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%"); + if (StringUtils.isNotBlank(bo.getKey())) { + query.processDefinitionKey(bo.getKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getKey())) { - query.processDefinitionKey(processInstanceBo.getKey()); + if (StringUtils.isNotEmpty(bo.getStartUserId())) { + query.startedBy(bo.getStartUserId()); } - if (StringUtils.isNotEmpty(processInstanceBo.getStartUserId())) { - query.startedBy(processInstanceBo.getStartUserId()); + if (StringUtils.isNotBlank(bo.getBusinessKey())) { + query.processInstanceBusinessKey(bo.getBusinessKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) { - query.processInstanceBusinessKey(processInstanceBo.getBusinessKey()); + if (StringUtils.isNotBlank(bo.getCategoryCode())) { + query.processDefinitionCategory(bo.getCategoryCode()); } - if (StringUtils.isNotBlank(processInstanceBo.getCategoryCode())) { - query.processDefinitionCategory(processInstanceBo.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())); list.add(processInstanceVo); } + if (CollUtil.isNotEmpty(list)) { + List<String> processDefinitionIds = StreamUtils.toList(list, ProcessInstanceVo::getProcessDefinitionId); + List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds); + for (ProcessInstanceVo processInstanceVo : list) { + if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(processInstanceVo.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(processInstanceVo::setWfNodeConfigVo); + } + } + } long count = query.count(); - return new TableDataInfo<>(list, count); + TableDataInfo<ProcessInstanceVo> build = TableDataInfo.build(); + build.setRows(list); + build.setTotal(count); + return build; } /** @@ -173,22 +190,22 @@ */ @SneakyThrows @Override - public String getHistoryProcessImage(String processInstanceId) { + public String getHistoryImage(String processInstanceId) { String processDefinitionId; // 鑾峰彇褰撳墠鐨勬祦绋嬪疄渚� - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult(); // 濡傛灉娴佺▼宸茬粡缁撴潫锛屽垯寰楀埌缁撴潫鑺傜偣 if (Objects.isNull(processInstance)) { - HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + HistoricProcessInstance pi = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); processDefinitionId = pi.getProcessDefinitionId(); } else { // 鏍规嵁娴佺▼瀹炰緥ID鑾峰緱褰撳墠澶勪簬娲诲姩鐘舵�佺殑ActivityId鍚堥泦 - ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + ProcessInstance pi = QueryUtils.instanceQuery(processInstanceId).singleResult(); processDefinitionId = pi.getProcessDefinitionId(); } // 鑾峰緱娲诲姩鐨勮妭鐐� - List<HistoricActivityInstance> highLightedFlowList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); + List<HistoricActivityInstance> highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); List<String> highLightedFlows = new ArrayList<>(); List<String> highLightedNodes = new ArrayList<>(); @@ -228,14 +245,14 @@ * @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 = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + HistoricProcessInstance historicProcessInstance = QueryUtils.hisInstanceQuery(processInstanceId).singleResult(); StringBuilder xml = new StringBuilder(); ProcessDefinition processDefinition = repositoryService.getProcessDefinition(historicProcessInstance.getProcessDefinitionId()); // 鑾峰彇鑺傜偣 - List<HistoricActivityInstance> highLightedFlowList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); + List<HistoricActivityInstance> highLightedFlowList = QueryUtils.hisActivityInstanceQuery(processInstanceId).orderByHistoricActivityInstanceStartTime().asc().list(); for (HistoricActivityInstance tempActivity : highLightedFlowList) { Map<String, Object> task = new HashMap<>(); if (!FlowConstant.SEQUENCE_FLOW.equals(tempActivity.getActivityType()) && @@ -249,7 +266,7 @@ taskList.add(task); } } - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId).singleResult(); if (processInstance != null) { taskList = taskList.stream().filter(e -> !e.get("activityType").equals(FlowConstant.END_EVENT)).collect(Collectors.toList()); } @@ -283,12 +300,13 @@ */ private List<ActHistoryInfoVo> getHistoryTaskList(String processInstanceId) { //鏌ヨ浠诲姟鍔炵悊璁板綍 - List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery().processInstanceId(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); + List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed()); List<ActHistoryInfoVo> actHistoryInfoVoList = new ArrayList<>(); 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())); @@ -321,11 +339,7 @@ public Map<String, Object> getHistoryRecord(String processInstanceId) { Map<String, Object> map = new HashMap<>(); // 鏌ヨ浠诲姟鍔炵悊璁板綍 - HistoricTaskInstanceQuery query = historyService.createHistoricTaskInstanceQuery(); - if (TenantHelper.isEnable()) { - query.taskTenantId(TenantHelper.getTenantId()); - } - List<HistoricTaskInstance> list = query.processInstanceId(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); + List<HistoricTaskInstance> list = QueryUtils.hisTaskInstanceQuery(processInstanceId).orderByHistoricTaskInstanceEndTime().desc().list(); list = StreamUtils.sorted(list, Comparator.comparing(HistoricTaskInstance::getEndTime, Comparator.nullsFirst(Date::compareTo)).reversed()); List<ActHistoryInfoVo> actHistoryInfoVoList = new ArrayList<>(); List<Comment> processInstanceComments = taskService.getProcessInstanceComments(processInstanceId); @@ -461,13 +475,9 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteRuntimeProcessInst(ProcessInvalidBo processInvalidBo) { + public boolean deleteRunInstance(ProcessInvalidBo processInvalidBo) { try { - TaskQuery query = taskService.createTaskQuery(); - if (TenantHelper.isEnable()) { - query.taskTenantId(TenantHelper.getTenantId()); - } - List<Task> list = query.processInstanceId(processInvalidBo.getProcessInstanceId()).list(); + List<Task> list = QueryUtils.taskQuery(processInvalidBo.getProcessInstanceId()).list(); List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); if (CollUtil.isNotEmpty(subTasks)) { subTasks.forEach(e -> taskService.deleteTask(e.getId())); @@ -479,14 +489,8 @@ for (Task task : StreamUtils.filter(list, e -> StringUtils.isBlank(e.getParentTaskId()))) { taskService.addComment(task.getId(), task.getProcessInstanceId(), TaskStatusEnum.INVALID.getStatus(), deleteReason); } - HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery(); - if (TenantHelper.isEnable()) { - query1.processInstanceTenantId(TenantHelper.getTenantId()); - } - HistoricProcessInstance historicProcessInstance = query1.processInstanceId(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()); @@ -507,28 +511,21 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteRuntimeProcessAndHisInst(List<String> processInstanceIds) { + public boolean deleteRunAndHisInstance(List<String> processInstanceIds) { try { // 1.鍒犻櫎杩愯涓祦绋嬪疄渚� - TaskQuery query = taskService.createTaskQuery(); - if (TenantHelper.isEnable()) { - query.taskTenantId(TenantHelper.getTenantId()); - } - List<Task> list = query.processInstanceIdIn(processInstanceIds).list(); + List<Task> list = QueryUtils.taskQuery(processInstanceIds).list(); List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); if (CollUtil.isNotEmpty(subTasks)) { subTasks.forEach(e -> taskService.deleteTask(e.getId())); } runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "鍒犻櫎浜嗗綋鍓嶆祦绋嬬敵璇�"); // 2.鍒犻櫎鍘嗗彶璁板綍 - HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery(); - if (TenantHelper.isEnable()) { - query1.processInstanceTenantId(TenantHelper.getTenantId()); - } - List<HistoricProcessInstance> historicProcessInstanceList = query1.processInstanceIds(new HashSet<>(processInstanceIds)).list(); + List<HistoricProcessInstance> historicProcessInstanceList = QueryUtils.hisInstanceQuery(new HashSet<>(processInstanceIds)).list(); if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { historyService.bulkDeleteHistoricProcessInstances(processInstanceIds); } + iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; } catch (Exception e) { e.printStackTrace(); @@ -543,7 +540,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); @@ -552,25 +549,18 @@ return false; } List<String> processInstanceIds = StreamUtils.toList(actHiProcinsts, ActHiProcinst::getId); - TaskQuery query = taskService.createTaskQuery(); - if (TenantHelper.isEnable()) { - query.taskTenantId(TenantHelper.getTenantId()); - } - List<Task> list = query.processInstanceIdIn(processInstanceIds).list(); + List<Task> list = QueryUtils.taskQuery(processInstanceIds).list(); List<Task> subTasks = StreamUtils.filter(list, e -> StringUtils.isNotBlank(e.getParentTaskId())); if (CollUtil.isNotEmpty(subTasks)) { subTasks.forEach(e -> taskService.deleteTask(e.getId())); } runtimeService.bulkDeleteProcessInstances(processInstanceIds, LoginHelper.getUserId() + "鍒犻櫎浜嗗綋鍓嶆祦绋嬬敵璇�"); // 2.鍒犻櫎鍘嗗彶璁板綍 - HistoricProcessInstanceQuery query1 = historyService.createHistoricProcessInstanceQuery(); - if (TenantHelper.isEnable()) { - query1.processInstanceTenantId(TenantHelper.getTenantId()); - } - List<HistoricProcessInstance> historicProcessInstanceList = query1.processInstanceIds(new HashSet<>(processInstanceIds)).list(); + List<HistoricProcessInstance> historicProcessInstanceList = QueryUtils.hisInstanceQuery(new HashSet<>(processInstanceIds)).list(); if (ObjectUtil.isNotEmpty(historicProcessInstanceList)) { historyService.bulkDeleteHistoricProcessInstances(processInstanceIds); } + iWfTaskBackNodeService.deleteByInstanceIds(processInstanceIds); return true; } catch (Exception e) { e.printStackTrace(); @@ -585,9 +575,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(); @@ -604,11 +595,7 @@ @Transactional(rollbackFor = Exception.class) public boolean cancelProcessApply(String processInstanceId) { try { - ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery(); - if (TenantHelper.isEnable()) { - query.processInstanceTenantId(TenantHelper.getTenantId()); - } - ProcessInstance processInstance = query.processInstanceId(processInstanceId) + ProcessInstance processInstance = QueryUtils.instanceQuery(processInstanceId) .startedBy(String.valueOf(LoginHelper.getUserId())).singleResult(); if (ObjectUtil.isNull(processInstance)) { throw new ServiceException("鎮ㄤ笉鏄祦绋嬪彂璧蜂汉,鎾ら攢澶辫触!"); @@ -616,28 +603,18 @@ if (processInstance.isSuspended()) { throw new ServiceException(FlowConstant.MESSAGE_SUSPENDED); } - if (BusinessStatusEnum.CANCEL.getStatus().equals(processInstance.getBusinessStatus())) { - throw new ServiceException("璇ュ崟鎹凡鎾ら攢锛�"); - } - TaskQuery query1 = taskService.createTaskQuery(); - if (TenantHelper.isEnable()) { - query1.taskTenantId(TenantHelper.getTenantId()); - } - List<Task> taskList = query1.processInstanceId(processInstanceId).list(); + 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 = historyService.createHistoricTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0); + HistoricTaskInstance historicTaskInstance = QueryUtils.hisTaskInstanceQuery().finished().orderByHistoricTaskInstanceEndTime().asc().list().get(0); List<String> nodeIds = StreamUtils.toList(taskList, Task::getTaskDefinitionKey); runtimeService.createChangeActivityStateBuilder() .processInstanceId(processInstanceId) .moveActivityIdsToSingleActivityId(nodeIds, historicTaskInstance.getTaskDefinitionKey()).changeState(); - TaskQuery query2 = taskService.createTaskQuery(); - if (TenantHelper.isEnable()) { - query2.taskTenantId(TenantHelper.getTenantId()); - } - Task task = query2.processInstanceId(processInstanceId).list().get(0); + Task task = QueryUtils.taskQuery(processInstanceId).list().get(0); taskService.setAssignee(task.getId(), historicTaskInstance.getAssignee()); //鑾峰彇骞惰缃戝叧鎵ц鍚庝繚鐣欑殑鎵ц瀹炰緥鏁版嵁 ExecutionChildByExecutionIdCmd childByExecutionIdCmd = new ExecutionChildByExecutionIdCmd(task.getExecutionId()); @@ -662,38 +639,31 @@ /** * 鍒嗛〉鏌ヨ褰撳墠鐧诲綍浜哄崟鎹� * - * @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 = historyService.createHistoricProcessInstanceQuery(); - if (TenantHelper.isEnable()) { - query.processInstanceTenantId(TenantHelper.getTenantId()); + HistoricProcessInstanceQuery query = QueryUtils.hisInstanceQuery(); + query.startedBy(String.valueOf(LoginHelper.getUserId())); + if (StringUtils.isNotBlank(bo.getName())) { + query.processInstanceNameLikeIgnoreCase("%" + bo.getName() + "%"); } - query.startedBy(processInstanceBo.getStartUserId()); - if (StringUtils.isNotBlank(processInstanceBo.getName())) { - query.processInstanceNameLikeIgnoreCase("%" + processInstanceBo.getName() + "%"); + if (StringUtils.isNotBlank(bo.getKey())) { + query.processDefinitionKey(bo.getKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getKey())) { - query.processDefinitionKey(processInstanceBo.getKey()); + if (StringUtils.isNotBlank(bo.getBusinessKey())) { + query.processInstanceBusinessKey(bo.getBusinessKey()); } - if (StringUtils.isNotBlank(processInstanceBo.getBusinessKey())) { - query.processInstanceBusinessKey(processInstanceBo.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); - TaskQuery query1 = taskService.createTaskQuery(); - if (TenantHelper.isEnable()) { - query1.taskTenantId(TenantHelper.getTenantId()); - } - List<Task> taskList = query1.processInstanceIdIn(processInstanceIds).list(); + List<Task> taskList = QueryUtils.taskQuery(processInstanceIds).list(); for (Task task : taskList) { taskVoList.add(BeanUtil.toBean(task, TaskVo.class)); } @@ -707,8 +677,20 @@ } list.add(processInstanceVo); } + if (CollUtil.isNotEmpty(list)) { + List<String> processDefinitionIds = StreamUtils.toList(list, ProcessInstanceVo::getProcessDefinitionId); + List<WfNodeConfigVo> wfNodeConfigVoList = iWfNodeConfigService.selectByDefIds(processDefinitionIds); + for (ProcessInstanceVo processInstanceVo : list) { + if (CollUtil.isNotEmpty(wfNodeConfigVoList)) { + wfNodeConfigVoList.stream().filter(e -> e.getDefinitionId().equals(processInstanceVo.getProcessDefinitionId()) && FlowConstant.TRUE.equals(e.getApplyUserTask())).findFirst().ifPresent(processInstanceVo::setWfNodeConfigVo); + } + } + } long count = query.count(); - return new TableDataInfo<>(list, count); + TableDataInfo<ProcessInstanceVo> build = TableDataInfo.build(); + build.setRows(list); + build.setTotal(count); + return build; } /** @@ -720,11 +702,7 @@ @Transactional(rollbackFor = Exception.class) public boolean taskUrging(TaskUrgingBo taskUrgingBo) { try { - ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery(); - if (TenantHelper.isEnable()) { - query.processInstanceTenantId(TenantHelper.getTenantId()); - } - ProcessInstance processInstance = query.processInstanceId(taskUrgingBo.getProcessInstanceId()).singleResult(); + ProcessInstance processInstance = QueryUtils.instanceQuery(taskUrgingBo.getProcessInstanceId()).singleResult(); if (processInstance == null) { throw new ServiceException("浠诲姟宸茬粨鏉燂紒"); } @@ -732,7 +710,7 @@ if (StringUtils.isBlank(message)) { message = "鎮ㄧ殑銆�" + processInstance.getName() + "銆戝崟鎹繕鏈鎵癸紝璇锋偍鍙婃椂澶勭悊銆�"; } - List<Task> list = taskService.createTaskQuery().processInstanceId(taskUrgingBo.getProcessInstanceId()).list(); + List<Task> list = QueryUtils.taskQuery(taskUrgingBo.getProcessInstanceId()).list(); WorkflowUtils.sendMessage(list, processInstance.getName(), taskUrgingBo.getMessageType(), message); } catch (ServiceException e) { throw new ServiceException(e.getMessage()); -- Gitblit v1.9.3