From e0ff1778c8fec63cf32345362b457e1c2e97f02e Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 29 十一月 2024 17:26:53 +0800
Subject: [PATCH] 剩余事项查询
---
business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 107 insertions(+), 4 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 ab53566..3dd0831 100644
--- a/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProjectProcessServiceImpl.java
@@ -167,6 +167,7 @@
// 鐘舵�佺粺璁�
taskStatistics.setTotalTaskNum(this.getTotalTaskNum(processDefId));
taskStatistics.setTodoTaskNum(this.getTodoTaskNum(projectProcess.getProcessInsId()));
+ taskStatistics.setRemainingTaskNum(this.getRemainingTaskNum(processDefId, projectProcess.getProcessInsId()));
// taskStatistics.setCurrentTask(this.getCurrentNodeTaskList(projectProcess.getProcessInstanceId()));
taskStatistics.setRemainingTaskNum(this.getNotFinishedTaskNum(projectProcess.getProcessInsId()));
detail.setStatistics(taskStatistics);
@@ -192,19 +193,32 @@
switch (query.getTaskType()) {
case TaskTypeConstant.ALL:
this.getAllUserTask(query.getProcessDefId(), projectProcess.getProcessInsId(), query.getTaskName (), (int)query.getCurrentPage(), (int)query.getPageSize(), ok);
+ break;
case TaskTypeConstant.TODO:
this.getTodoTaskList(projectProcess.getProcessInsId(), query.getTaskName(), (int)query.getPageSize(), (int)query.getCurrentPage(), ok);
+ ok.data(ok.get("taskList"));
+ break;
case TaskTypeConstant.CURRENT:
-
+ break;
case TaskTypeConstant.REMAINING:
-
+ this.getRemainingTask(query.getProcessDefId(), projectProcess.getProcessInsId(), query.getTaskName (), (int)query.getCurrentPage(), (int)query.getPageSize(), ok);
+ break;
default:
-
+ break;
}
return ok;
}
+ /**
+ * 鏌ヨ寰呭姙浠诲姟
+ *
+ * @param processInsId
+ * @param taskName
+ * @param pageSize
+ * @param pageNum
+ * @param result
+ */
private void getTodoTaskList(String processInsId, String taskName, int pageSize, int pageNum, Result result) {
TaskQuery taskQuery = taskService.createTaskQuery()
.active()
@@ -212,7 +226,6 @@
.includeProcessVariables()
.orderByTaskCreateTime().desc();
-// TODO 浼犲叆鍚嶇О鏌ヨ涓嶅埌鏁版嵁?
if (StringUtils.isNotBlank(taskName)) {
taskQuery.processDefinitionNameLike(taskName);
}
@@ -349,6 +362,96 @@
}
/**
+ * 鏌ヨ鍓╀綑浜嬮」锛堟湭寮�濮嬬殑浠诲姟锛�
+ *
+ * @param processDefinitionId
+ * @param processInsId
+ * @param taskName
+ * @param pageNum
+ * @param pageSize
+ * @param result
+ * @return
+ */
+ private List<CustomerTaskVO> getRemainingTask(String processDefinitionId, String processInsId, String taskName, Integer pageNum, Integer pageSize, Result result) {
+ int startNum = pageSize * (pageNum - 1);
+ int endNum = startNum + pageSize;
+ List<UserTask> allUserTaskElement = this.getAllUserTaskElement(processDefinitionId);
+ result.total(allUserTaskElement.size());
+ if (startNum >= allUserTaskElement.size()) {
+ // 濡傛灉璧峰绱㈠紩瓒呭嚭浜嗗垪琛ㄧ殑澶у皬锛岃繑鍥炰竴涓┖鍒楄〃
+ return new ArrayList<>();
+ }
+ if (StringUtils.isNotBlank(taskName)) {
+ // 妯℃嫙妯$硦鏌ヨ
+ allUserTaskElement = allUserTaskElement.stream().filter(taskEl -> taskEl.getName().contains(taskName)).collect(Collectors.toList());
+ }
+ int end = Math.min(endNum, allUserTaskElement.size());
+ List<UserTask> userTasks = allUserTaskElement.subList(startNum, end);
+ // 鏌ュ嚭娴佺▼
+ ProcessInstance process = runtimeService.createProcessInstanceQuery().processInstanceId(processInsId).singleResult();
+ // 鍒ゆ柇浠诲姟鐘舵��
+ List<CustomerTaskVO> vos = userTasks.stream().map(userTask -> {
+ CustomerTaskVO vo = new CustomerTaskVO();
+ vo.setProcessInsId(process.getId());
+ vo.setProcessDefId(processDefinitionId);
+ vo.setDeployId(process.getDeploymentId());
+ vo.setTaskName(userTask.getName());
+ vo.setProcessName(process.getProcessDefinitionName());
+ Task task = taskService.createTaskQuery().processInstanceId(process.getId()).taskDefinitionKey(userTask.getId()).singleResult();
+ if (Objects.isNull(task)) {
+ // 濡傛灉浠诲姟鍦ㄨ繍琛屾椂娌℃壘鍒帮紝閭d箞鍙兘涓烘湭寮�濮嬫垨鑰呭凡瀹屾垚锛屽彧鏌ヨ鏈紑濮嬬殑
+ HistoricTaskInstance historicTask = historyService.createHistoricTaskInstanceQuery()
+ .processInstanceId(process.getProcessInstanceId())
+ .taskDefinitionKey(userTask.getId())
+ .includeIdentityLinks()
+ .singleResult();
+ if (Objects.isNull(historicTask)) {
+ vo.setTaskStatus(TaskStatusEnum.NOT_START);
+ return vo;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }).filter(Objects::nonNull).collect(Collectors.toList());
+ result.data(vos);
+ return vos;
+ }
+
+ /**
+ * 鏌ヨ鍓╀綑浜嬮」锛堟湭寮�濮嬬殑浠诲姟锛夋暟閲�
+ *
+ * @param processDefinitionId 娴佺▼瀹氫箟id
+ * @param processInsId 娴佺▼瀹炰緥id
+ * @return
+ */
+ private Long getRemainingTaskNum(String processDefinitionId, String processInsId) {
+
+ List<UserTask> allUserTaskElement = this.getAllUserTaskElement(processDefinitionId);
+ // 鏌ュ嚭娴佺▼
+ ProcessInstance process = runtimeService.createProcessInstanceQuery().processInstanceId(processInsId).singleResult();
+ long num = 0L;
+ // 鍒ゆ柇浠诲姟鐘舵��
+ for (UserTask userTask : allUserTaskElement) {
+ Task task = taskService.createTaskQuery().processInstanceId(process.getId()).taskDefinitionKey(userTask.getId()).singleResult();
+ if (Objects.isNull(task)) {
+ // 濡傛灉浠诲姟鍦ㄨ繍琛屾椂娌℃壘鍒帮紝閭d箞鍙兘涓烘湭寮�濮嬫垨鑰呭凡瀹屾垚锛屽彧鏌ヨ鏈紑濮嬬殑
+ HistoricTaskInstance historicTask = historyService.createHistoricTaskInstanceQuery()
+ .processInstanceId(process.getProcessInstanceId())
+ .taskDefinitionKey(userTask.getId())
+ .includeIdentityLinks()
+ .singleResult();
+ if (Objects.isNull(historicTask)) {
+ num++;
+ }
+ }
+ }
+ return num;
+ }
+
+
+ /**
* 璁剧疆浠诲姟鐨勫彂璧蜂汉&澶勭悊浜�
*
* @param taskVO
--
Gitblit v1.8.0