From 982e63b981079caaae2be3ad8bb11d29cf9cd97b Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 24 十二月 2024 14:43:36 +0800
Subject: [PATCH] 驳回使用自带驳回,对已完成流程查看流程推进的处理
---
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 62 +++++++++++++++++++++++++++++++
flowable/src/main/java/com/ycl/service/common/TaskCommonService.java | 7 +++
2 files changed, 69 insertions(+), 0 deletions(-)
diff --git a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
index 46d7ee4..ae71ab6 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -483,6 +483,12 @@
List<UserTask> userTasks = allUserTaskElement.subList(startNum, end);
// 鏌ュ嚭娴佺▼
ProcessInstance process = runtimeService.createProcessInstanceQuery().processInstanceId(processInsId).singleResult();
+ if (Objects.isNull(process)) {
+ // 濡傛灉杩愯鏃舵壘涓嶅埌璇存槑鏄凡瀹屾垚鐨勬祦绋嬶紝鐩存帴鏌ュ巻鍙蹭换鍔�
+ List<CustomerTaskVO> vos = this.getFinishedProcessTaskInfo(userTasks, processInsId, processDefinitionId);
+ result.data(vos);
+ return vos;
+ }
// 鍒ゆ柇浠诲姟鐘舵��
List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> {
CustomerTaskVO vo = new CustomerTaskVO();
@@ -573,6 +579,52 @@
}
/**
+ * 鏌ヨ宸插畬鎴愮殑娴佺▼鐨勪换鍔′俊鎭�
+ *
+ * @param userTasks 浠诲姟鑺傜偣鍒楄〃
+ * @param processInsId 娴佺▼瀹炰緥id
+ * @param processDefId 娴佺▼瀹氫箟id
+ * @return
+ */
+ private List<CustomerTaskVO> getFinishedProcessTaskInfo(List<UserTask> userTasks, String processInsId, String processDefId) {
+ HistoricProcessInstance hisProcess = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInsId).singleResult();
+ List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> {
+ CustomerTaskVO vo = new CustomerTaskVO();
+ vo.setProcessInsId(hisProcess.getId());
+ vo.setProcessDefId(processDefId);
+ vo.setDeployId(hisProcess.getDeploymentId());
+ vo.setTaskName(userTask.getName());
+ vo.setProcessName(hisProcess.getProcessDefinitionName());
+
+ // 鏌ュ涓槸鍥犱负椹冲洖鍚庝細鏌ュ嚭涓ゆ潯鍙婁互涓婏紝鍙栨渶鏂颁竴鏉�
+ List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery()
+ .processInstanceId(hisProcess.getId())
+ .taskDefinitionKey(userTask.getId()).includeIdentityLinks()
+ .orderByHistoricTaskInstanceStartTime()
+ .desc()
+ .list();
+
+ vo.setTaskStatus(TaskStatusEnum.FINISHED);
+ // 濡傛灉鏄凡瀹屾垚鐨勶紝淇℃伅闇�瑕佸崟鐙祴鍊�
+ vo.setTaskId(hisTaskList.get(0).getId());
+ vo.setExecutionId(hisTaskList.get(0).getExecutionId());
+ vo.setCreateTime(hisTaskList.get(0).getStartTime());
+ // 鏌ヨ瀹為檯澶勭悊浜�
+ long handlerUserId = Long.parseLong(hisTaskList.get(0).getAssignee());
+ SysUser handlerUser = sysUserService.selectUserById(handlerUserId);
+ if (Objects.nonNull(handlerUser)) {
+ vo.setHandlerId(handlerUserId);
+ vo.setHandlerName(handlerUser.getNickName());
+ }
+ vo.setTaskDefinitionKey(hisTaskList.get(0).getTaskDefinitionKey());
+ this.setPromoterAndHandler(vo, hisTaskList.get(0).getIdentityLinks());
+
+ return vo;
+ }).collect(Collectors.toList());
+ return vos;
+ }
+
+ /**
* 鏌ヨ鍓╀綑浜嬮」锛堟湭寮�濮嬬殑浠诲姟锛�
*
* @param processDefinitionId
@@ -601,6 +653,12 @@
List<UserTask> userTasks = allUserTaskElement.subList(startNum, end);
// 鏌ュ嚭娴佺▼
ProcessInstance process = runtimeService.createProcessInstanceQuery().processInstanceId(processInsId).singleResult();
+ if (Objects.isNull(process)) {
+ // 濡傛灉娴佺▼宸茬粡瀹屾垚锛岄偅涔堟病鏈夊墿浣欎簨椤逛簡
+ List<CustomerTaskVO> vos = new ArrayList<>(1);
+ result.data(vos);
+ return vos;
+ }
// 鍒ゆ柇浠诲姟鐘舵��
List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> {
CustomerTaskVO vo = new CustomerTaskVO();
@@ -681,6 +739,10 @@
List<UserTask> allUserTaskElement = this.getAllUserTaskElement(processDefinitionId);
// 鏌ュ嚭娴佺▼
ProcessInstance process = runtimeService.createProcessInstanceQuery().processInstanceId(processInsId).singleResult();
+ if (Objects.isNull(process)) {
+ // 杩愯鏃舵湭鎵惧埌娴佺▼锛岃鏄庢祦绋嬪凡缁忕粨鏉熶簡
+ return 0L;
+ }
long num = 0L;
// 鍒ゆ柇浠诲姟鐘舵��
for (UserTask userTask : allUserTaskElement) {
diff --git a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
index f46627d..daeef92 100644
--- a/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
+++ b/flowable/src/main/java/com/ycl/service/common/TaskCommonService.java
@@ -2,7 +2,9 @@
import com.alibaba.fastjson2.JSONObject;
import com.ycl.common.constant.ProcessConstants;
+import com.ycl.common.core.domain.entity.SysUser;
import com.ycl.common.enums.FlowComment;
+import com.ycl.common.enums.business.TaskStatusEnum;
import com.ycl.domain.entity.SysForm;
import com.ycl.domain.vo.FormDetailVO;
import com.ycl.flow.FindNextNodeUtil;
@@ -14,6 +16,7 @@
import org.flowable.engine.RepositoryService;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
+import org.flowable.engine.history.HistoricProcessInstance;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;
@@ -290,6 +293,10 @@
taskService.addComment(taskId, processInsId, FlowComment.REJECT.getType(), msg1 + msg);
// TODO 鐩存帴浣跨敤杩欎釜api濂藉儚鏈夐棶棰�
runtimeService.createChangeActivityStateBuilder().processInstanceId(processInsId).moveActivityIdTo(rejectTaskDefKey, rejectedTaskDefKey).changeState();
+ runtimeService.createChangeActivityStateBuilder().processInstanceId(processInsId).moveExecutionToActivityId(rejectTaskDefKey, rejectedTaskDefKey).changeState();
}
+
+
+
}
--
Gitblit v1.8.0