From d34d3c83500d5a68715a280eee3d930c88291d71 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期日, 07 九月 2025 19:10:05 +0800
Subject: [PATCH] 增加新编程序统计;固化程序统计

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java |   62 +++++++++++++++----------------
 1 files changed, 30 insertions(+), 32 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
index 012db69..c4a1760 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/DoneQueryService.java
@@ -4,33 +4,19 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
 import org.flowable.engine.HistoryService;
-import org.flowable.engine.RuntimeService;
 import org.flowable.engine.TaskService;
 import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.history.HistoricProcessInstanceQuery;
-import org.flowable.engine.task.Comment;
 import org.flowable.task.api.Task;
-import org.flowable.task.api.TaskInfoQuery;
-import org.flowable.task.api.TaskQuery;
-import org.flowable.task.api.history.HistoricTaskInstance;
-import org.flowable.task.api.history.HistoricTaskInstanceQuery;
+import org.flowable.task.api.TaskInfo;
+import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.DateUtil;
 import org.springblade.core.tool.utils.Func;
-import org.springblade.mdm.flow.constants.FlowContants;
 import org.springblade.mdm.flow.entity.FlowProgramFile;
-import org.springblade.mdm.flow.entity.MdmFlowProcess;
 import org.springblade.mdm.flow.mapper.DoneMapper;
-import org.springblade.mdm.flow.util.MdmFlowCache;
 import org.springblade.mdm.flow.vo.DoneQueryVO;
 import org.springblade.mdm.flow.vo.FlowVO;
-import org.springblade.system.feign.IUserClient;
-import org.springblade.system.pojo.entity.User;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDate;
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,38 +30,41 @@
 public class DoneQueryService {
 	private final FlowProgramFileService flowProgramFileService;
 	private final HistoryService historyService;
-	private final IUserClient userClient;
-
+	private final FlowCommonService flowCommonService;
 	private final DoneMapper doneMapper;
-	//
-	public IPage<FlowVO> selectDonePage(IPage<FlowVO> page, String s, LocalDateTime createTimeBegin, LocalDateTime createTimeEnd, String keyword) {
+	private final TaskService taskService;
+	/**
+	 * 鏌ヨ鐢ㄦ埛宸插姙浠诲姟鍒嗛〉鍒楄〃
+	 * @param queryVO 鏌ヨ鍙傛暟
+	 * @return
+ 	 */
+	//public IPage<FlowVO> selectDonePage(IPage<FlowVO> page, LocalDateTime createTimeBegin, LocalDateTime createTimeEnd, String keyword) {
+	public IPage<FlowVO> selectDonePage(DoneQueryVO queryVO) {
 		//宸插姙鏂版煡璇�
 		String userId = "" + AuthUtil.getUserId();
-		DoneQueryVO queryVO = new DoneQueryVO();
-
-		queryVO.setSize(Long.valueOf(page.getSize()).intValue());
-		queryVO.setCurrent(Long.valueOf(page.getCurrent()).intValue());
 		queryVO.setUserId(userId);
-		queryVO.setCreateTimeBegin(createTimeBegin);
-		if(createTimeEnd != null){
-			createTimeEnd = createTimeEnd.plusDays(1);
+		if(queryVO.getCreateTimeEnd() != null){
+			queryVO.setCreateTimeEnd(queryVO.getCreateTimeEnd().plusDays(1));
 		}
-		queryVO.setCreateTimeEnd(createTimeEnd);
-		queryVO.setKeyword(keyword);
-
-		IPage<FlowVO> pageDta = doneMapper.pageQuery(page,queryVO);
+		IPage<FlowVO> pageDta = doneMapper.pageQuery(Condition.getPage(queryVO),queryVO);
 		List<String> instIdList = pageDta.getRecords().stream().map(FlowVO::getProcessInstanceId).toList();
 		if(!instIdList.isEmpty()) {
 			List<HistoricProcessInstance> processList = getHistoricProcessInstances(instIdList);
 			Map<String,Map<String,Object>> varmap = new HashMap<>();
 			for(HistoricProcessInstance inst : processList) {
-
 				varmap.put(inst.getId(),inst.getProcessVariables());
 			}
 
 			pageDta.getRecords().forEach(flowVO->{
 				flowVO.setVariables(varmap.get(flowVO.getProcessInstanceId()));
 				flowVO.setFile(this.getFileString(flowVO.getProcessInstanceId()));
+				/*
+				boolean active = flowCommonService.isProcessInstanceActive(flowVO.getProcessInstanceId());
+				flowVO.setProcessIsFinished((Func.toStr(!active)));
+				 */
+				if(!Func.toBoolean(flowVO.getProcessIsFinished())){
+					flowVO.setCurrentTaskKeys(getCurrentTaskDefKeys(flowVO.getProcessInstanceId()));
+				}
 			});
 		}
 		return pageDta;
@@ -98,4 +87,13 @@
 
 		return result;
 	}
+
+	String getCurrentTaskDefKeys(String processInstanceId) {
+		List<Task> tasks = taskService.createTaskQuery()
+			.processInstanceId(processInstanceId) // 鏍规嵁娴佺▼瀹炰緥ID鏌ヨ
+			.active() // 鏌ヨ娲诲姩鐨勪换鍔�
+			.list();
+		return tasks.stream().map(TaskInfo::getTaskDefinitionKey).collect(Collectors.joining(","));
+
+	}
 }

--
Gitblit v1.9.3