From 46929f181707162f21eb6e7735350969097fe21d Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期三, 23 七月 2025 20:52:34 +0800
Subject: [PATCH] 增加字典查询接口

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveTableService.java       |    3 +
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java      |   16 ++++++--
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java       |   54 +++++++++++++++++++++++++-
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmSystemController.java |   10 ++++
 4 files changed, 75 insertions(+), 8 deletions(-)

diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
index bfd6ab9..3c014ac 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java
@@ -107,16 +107,24 @@
 	@GetMapping("search-list")
 	@ApiOperationSupport(order = 3)
 	@Operation(summary = "娴佺▼鏌ヨ", description = "鏌ヨ杩涜涓殑鎵�鏈夋祦绋�")
-	public R<IPage<FlowVO>> overtimeList(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") LocalDate createTimeBegin, @Parameter(description = "浠诲姟鍒拌揪鏃堕棿鎴")LocalDate createTimeEnd, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
+	public R<IPage<FlowVO>> searchList(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") LocalDate createTimeBegin, @Parameter(description = "浠诲姟鍒拌揪鏃堕棿鎴")LocalDate createTimeEnd, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
 		IPage<FlowVO> pages = businessService.selectSearchPage(Condition.getPage(query), createTimeBegin,createTimeEnd,keyword);
+		return R.data(pages);
+	}
+
+	@GetMapping("finished-list")
+	@ApiOperationSupport(order = 3)
+	@Operation(summary = "鍘嗗彶娴佺▼鏌ヨ", description = "鏌ヨ宸插畬缁撶殑鎵�鏈夋祦绋�")
+	public R<IPage<FlowVO>> finishedList(@Parameter(description = "娴佺▼绫诲瀷")String processDefinitionKey,@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") LocalDate createTimeBegin, @Parameter(description = "浠诲姟鍒拌揪鏃堕棿鎴")LocalDate createTimeEnd, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
+		IPage<FlowVO> pages = businessService.selectFinishedPage(Condition.getPage(query), processDefinitionKey,createTimeBegin,createTimeEnd,keyword);
 		return R.data(pages);
 	}
 
 	@PostMapping("delete-instance")
 	@Operation(summary = "娴佺▼鍒犻櫎", description = "鍒犻櫎id鎸囧畾鐨勬祦绋嬪疄渚�")
-	public R<Void> deleteInstance(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") String processInstancesId) {
+	public R<Void> deleteInstance(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") String processInstanceId) {
 		try {
-			businessService.deleteProcessInstance(processInstancesId);
+			businessService.deleteProcessInstance(processInstanceId);
 
 		} catch (Exception e) {
 			log.error("鍒犻櫎娴佺▼澶辫触",e);
@@ -137,7 +145,7 @@
 			response.setContentType("application/octet-stream");
 			approveTableService.exportApproveTable(processInstanceId,response.getOutputStream());
 		} catch (Exception e) {
-			log.error("瀵煎嚭DNC寮傚父", e);
+			log.error("瀵煎嚭瀹℃壒琛ㄥ紓甯�", e);
 			throw new RuntimeException(e);
 		}
 
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveTableService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveTableService.java
index 530f8b9..724d012 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveTableService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/ApproveTableService.java
@@ -69,6 +69,9 @@
 		List<ApproveRecord> records = approveRecordService.lambdaQuery().eq(ApproveRecord::getProcessInstanceId, processInstanceId).orderByAsc(ApproveRecord::getCreateTime).list();
 		for(int i=0;i<records.size();i++){
 			ApproveRecord record = records.get(i);
+			if(record.getNcProgramId() ==null){
+				continue;
+			}
 			printStep(document,bfChinese,record);
 			if(i<records.size()-1){
 				document.newPage();
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
index 99126f6..76e3fd8 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/service/FlowBusinessService.java
@@ -7,6 +7,7 @@
 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.TaskQuery;
@@ -80,7 +81,7 @@
 
 		// 鏋勫缓鍒楄〃鏁版嵁
 		FlowVO bladeFlow = new FlowVO();
-		buildFlowTaskList(bladeFlow, flowList, todoQuery);//FlowEngineConstant.STATUS_TODO , "todo"
+		buildFlowTaskList(bladeFlow, flowList, todoQuery);
 		flowList.forEach(flowVO -> {
 			if(flowVO.getVariables().containsKey("machineCode")){
 				//Machine machinemachineService.getByCode((String)flowVO.getVariables().get("machineCode"))
@@ -89,7 +90,7 @@
 		// 璁$畻鎬绘暟
 		long count = todoQuery.count();
 		// 璁剧疆椤垫暟
-		page.setSize(count);
+		//page.setSize(count);
 		// 璁剧疆鎬绘暟
 		page.setTotal(count);
 		// 璁剧疆鏁版嵁
@@ -376,7 +377,7 @@
 		// 璁$畻鎬绘暟
 		long count = todoQuery.count();
 		// 璁剧疆椤垫暟
-		page.setSize(count);
+		//page.setSize(count);
 		// 璁剧疆鎬绘暟
 		page.setTotal(count);
 		// 璁剧疆鏁版嵁
@@ -468,4 +469,51 @@
 		runtimeService.deleteProcessInstance(processInstancesId, "娴佺▼鏌ヨ-鍒犻櫎");
 		//TODO 鍒犻櫎鍑哄叧鑱斿瓧娈�
 	}
+
+	/**
+	 * 宸插畬缁撶殑娴佺▼鍒嗛〉鍒楄〃
+	 * @param page
+	 * @param createTimeBegin
+	 * @param createTimeEnd
+	 * @param keyword
+	 * @return
+	 */
+	public IPage<FlowVO> selectFinishedPage(IPage<FlowVO> page, String processDefinitionKey,LocalDate createTimeBegin, LocalDate createTimeEnd, String keyword) {
+		HistoricProcessInstanceQuery query = this.historyService.createHistoricProcessInstanceQuery().includeProcessVariables();
+			//.finished() // 鍙煡璇㈠凡瀹屾垚鐨勬祦绋�.unfinished() // 鏌ヨ鏈畬鎴愮殑娴佺▼
+		if(Func.isNotEmpty(processDefinitionKey)) {
+			query.processDefinitionKey(processDefinitionKey);
+		}
+		if(createTimeBegin!=null) {
+			query.startedAfter(DateUtil.toDate(createTimeBegin));
+		}
+		if(createTimeEnd!=null) {
+			query.startedBefore(DateUtil.toDate(createTimeEnd));
+		}
+		query.orderByProcessInstanceEndTime().desc(); // 鎸夌粨鏉熸椂闂撮檷搴忔帓鍒�
+		page.setTotal(query.count());
+
+		long firstResult = (page.getCurrent()-1) * page.getSize() + 1;
+		List<HistoricProcessInstance> processes = query
+			.listPage((int)firstResult, (int)page.getSize());
+
+		List<FlowVO> records = new LinkedList<>();
+
+		for(HistoricProcessInstance processInstance : processes) {
+			FlowVO vo = new FlowVO();
+			vo.setProcessDefinitionKey(processInstance.getProcessDefinitionKey());
+			vo.setProcessInstanceId(processInstance.getId());
+			vo.setProcessDefinitionName(processInstance.getProcessDefinitionName());
+			vo.setVariables(processInstance.getProcessVariables());
+
+			vo.setProcessCreateTime(processInstance.getStartTime());
+			vo.setHistoryTaskEndTime(processInstance.getEndTime());
+
+			records.add(vo);
+		}
+
+		page.setRecords(records);
+
+		return page;
+	}
 }
diff --git a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmSystemController.java b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmSystemController.java
index db4b532..1f81c05 100644
--- a/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmSystemController.java
+++ b/blade-service/blade-mdm/src/main/java/org/springblade/mdm/program/controller/MdmSystemController.java
@@ -9,8 +9,10 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
+import org.springblade.system.feign.IDictClient;
 import org.springblade.system.feign.ISysClient;
 import org.springblade.system.pojo.entity.Dept;
+import org.springblade.system.pojo.entity.Dict;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -31,7 +33,7 @@
 @Slf4j
 public class MdmSystemController {
 	private final ISysClient sysClient;
-
+	private final IDictClient dictClient;
 	@GetMapping("/dept/lazy-list")
 	@ApiOperationSupport(order = 2)
 	@Operation(summary = "鎳掑姞杞介儴闂ㄥ垪琛�")
@@ -46,4 +48,10 @@
 		}
 
 	}
+
+	@Operation(summary = "瀛楀吀鍒楄〃")
+	@GetMapping("/dict/dictionary")
+	public R<List<Dict>> dictionary(@Parameter(description = "瀛楀吀缂栫爜") String code) {
+		return dictClient.getList(code);
+	}
 }

--
Gitblit v1.9.3