From 0ecd5acd3b9f320a487c68df2ea6234b4dacb12c Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期日, 20 七月 2025 13:24:54 +0800
Subject: [PATCH] 增加流程查询接口

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java |   92 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 79 insertions(+), 13 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 1375348..1dee81f 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
@@ -5,24 +5,32 @@
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
+import org.flowable.engine.HistoryService;
+import org.flowable.engine.RuntimeService;
 import org.flowable.engine.TaskService;
+import org.flowable.engine.task.Comment;
+import org.flowable.task.api.history.HistoricTaskInstance;
+import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.support.Kv;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.StringUtil;
-import org.springblade.flow.core.pojo.entity.BladeFlow;
+import org.springblade.core.tool.utils.DateUtil;
+import org.springblade.mdm.basesetting.machine.vo.MachineExcelVO;
+import org.springblade.mdm.flow.service.ApproveRecordService;
 import org.springblade.mdm.flow.service.FlowBusinessService;
+import org.springblade.mdm.flow.vo.FlowVO;
+import org.springblade.mdm.flow.vo.OvertimeTaskExcelVO;
 import org.springblade.mdm.flow.vo.TaskTraceVO;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDate;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 
 @Slf4j
 @RestController
@@ -34,20 +42,78 @@
 	@Autowired
 	private FlowBusinessService businessService;
 
-	/**
-	 * 寰呭姙浠诲姟鍒楄〃椤�
-	 */
+	@Autowired
+	private HistoryService historyService;
+	@Autowired
+	private RuntimeService runtimeService;
+
 	@GetMapping("overtime-list")
 	@ApiOperationSupport(order = 3)
 	@Operation(summary = "瓒呮椂鏌ヨ", description = "鏌ヨ鎵�鏈夎秴鏃朵换鍔�")
-	public R<IPage<BladeFlow>> overtimeList(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") LocalDate createTimeBegin, @Parameter(description = "浠诲姟鍒拌揪鏃堕棿鎴")LocalDate createTimeEnd, @Parameter(description = "鎵ц浜哄憳") String assigneeName, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
-		IPage<BladeFlow> pages = businessService.selectOvertimePage(Condition.getPage(query), createTimeBegin,createTimeEnd,assigneeName,keyword);
+	public R<IPage<FlowVO>> overtimeList(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") LocalDate createTimeBegin, @Parameter(description = "浠诲姟鍒拌揪鏃堕棿鎴")LocalDate createTimeEnd, @Parameter(description = "鎵ц浜哄憳") String assigneeName, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
+		IPage<FlowVO> pages = businessService.selectOvertimePage(Condition.getPage(query), createTimeBegin,createTimeEnd,assigneeName,keyword);
+		return R.data(pages);
+	}
+	@GetMapping("overtime-export")
+	@ApiOperationSupport(order = 3)
+	@Operation(summary = "瓒呮椂瀵煎嚭", description = "瓒呮椂浠诲姟瀵煎嚭")
+	public void overtimeExport(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") LocalDate createTimeBegin, @Parameter(description = "浠诲姟鍒拌揪鏃堕棿鎴")LocalDate createTimeEnd, @Parameter(description = "鎵ц浜哄憳") String assigneeName, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query, HttpServletResponse response) {
+		query.setCurrent(1);
+		query.setSize(Integer.MAX_VALUE);
+		IPage<FlowVO> pages = businessService.selectOvertimePage(Condition.getPage(query), createTimeBegin,createTimeEnd,assigneeName,keyword);
+
+		List<OvertimeTaskExcelVO> list = new ArrayList<>();
+		pages.getRecords().forEach(data ->{
+			//data.get
+			OvertimeTaskExcelVO excelVO = new OvertimeTaskExcelVO();
+			BeanUtils.copyProperties(data, excelVO);
+
+			list.add(excelVO);
+		});
+
+		ExcelUtil.export(response, "瓒呮椂浠诲姟" + DateUtil.time(), "瓒呮椂浠诲姟琛�", list, OvertimeTaskExcelVO.class);
+	}
+
+
+	@Operation(summary = "娴佺▼鎵ц杞ㄨ抗", description = "娴佺▼鎵ц杞ㄨ抗")
+	@GetMapping("process-trace")
+	public R<List<TaskTraceVO>> processTrace(String processInstanceId){
+		List<TaskTraceVO> result = new ArrayList<>();
+		List<HistoricTaskInstance> hisTasks = historyService.createHistoricTaskInstanceQuery()
+			.processInstanceId(processInstanceId).orderByTaskCreateTime().desc().list();
+// 鎵规敞淇℃伅
+		List<Comment> comments;
+		for (HistoricTaskInstance hisTask : hisTasks) {
+			TaskTraceVO vo = new TaskTraceVO();
+			BeanUtils.copyProperties(hisTask, vo);
+			comments = taskService.getTaskComments(hisTask.getId());
+			if(!comments.isEmpty()) {
+				vo.setComment(comments.get(0).getFullMessage());
+			}
+			result.add(vo);
+		}
+
+		return R.data(result);
+	}
+
+	@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) {
+		IPage<FlowVO> pages = businessService.selectSearchPage(Condition.getPage(query), createTimeBegin,createTimeEnd,keyword);
 		return R.data(pages);
 	}
 
-	@GetMapping("process-trace")
-	public R<List<TaskTraceVO>> processTrace(long processInstanceId){
-		return R.data(Collections.emptyList());
+	@PostMapping("delete-instance")
+	@Operation(summary = "娴佺▼鍒犻櫎", description = "鍒犻櫎id鎸囧畾鐨勬祦绋嬪疄渚�")
+	public R<Void> deleteInstance(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") String processInstancesId) {
+		try {
+			runtimeService.deleteProcessInstance(processInstancesId, "娴佺▼鏌ヨ-鍒犻櫎");
+		} catch (Exception e) {
+			log.error("鍒犻櫎娴佺▼澶辫触",e);
+			return R.fail(e.getMessage());
+		}
+		return R.success();
 	}
 
 

--
Gitblit v1.9.3