From 61763cc1a182effa7e5535ac72d54a6a56f029eb Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期六, 06 九月 2025 09:52:41 +0800
Subject: [PATCH] word版审批表,确认表

---
 blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java |  100 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 73 insertions(+), 27 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 3c014ac..89f11f7 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,37 +5,35 @@
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.mail.MessagingException;
 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.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.DateUtil;
-import org.springblade.mdm.basesetting.machine.vo.MachineExcelVO;
-import org.springblade.mdm.commons.vo.IdsVO;
-import org.springblade.mdm.flow.service.ApproveRecordService;
-import org.springblade.mdm.flow.service.ApproveTableService;
-import org.springblade.mdm.flow.service.FlowBusinessService;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.UrlUtil;
+import org.springblade.mdm.flow.service.*;
 import org.springblade.mdm.flow.vo.FlowVO;
 import org.springblade.mdm.flow.vo.OvertimeTaskExcelVO;
 import org.springblade.mdm.flow.vo.TaskTraceVO;
+import org.springblade.system.feign.IUserClient;
+import org.springblade.system.pojo.entity.User;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 @Slf4j
@@ -47,13 +45,18 @@
 	private TaskService taskService;
 	@Autowired
 	private FlowBusinessService businessService;
-
+	@Autowired
+	private FlowCommonService flowCommonService;
 	@Autowired
 	private HistoryService historyService;
+
 	@Autowired
-	private RuntimeService runtimeService;
+	private ProgramConfirmTableService programConfirmTableService;
 	@Autowired
-	private ApproveTableService approveTableService;
+	private IUserClient userClient;
+	@Autowired
+	private WIthdrawService withdrawService;
+
 
 	@GetMapping("overtime-list")
 	@ApiOperationSupport(order = 3)
@@ -83,9 +86,22 @@
 	}
 
 
-	@Operation(summary = "娴佺▼鎵ц杞ㄨ抗", description = "娴佺▼鎵ц杞ㄨ抗")
+	@Operation(summary = "娴佺▼鎵ц杞ㄨ抗", description = "娴佺▼鎵ц杞ㄨ抗/瀹℃壒璁板綍")
 	@GetMapping("process-trace")
 	public R<List<TaskTraceVO>> processTrace(String processInstanceId){
+		/*
+		List<ApproveRecord> records = approveRecordService.lambdaQuery().eq(ApproveRecord::getProcessInstanceId,processInstanceId).orderByAsc(ApproveRecord::getCreateTime).list();
+		List<TaskTraceVO> result = new ArrayList<>();
+
+		for (ApproveRecord record : records) {
+			TaskTraceVO vo = new TaskTraceVO();
+			vo.setComment(record.getComment());
+			vo.setCreateTime(record.getCreateTime());
+			vo.setAssigneeName(record.getUserNickname());
+
+			//vo.setEndTime();
+		}*/
+
 		List<TaskTraceVO> result = new ArrayList<>();
 		List<HistoricTaskInstance> hisTasks = historyService.createHistoricTaskInstanceQuery()
 			.processInstanceId(processInstanceId).orderByTaskCreateTime().desc().list();
@@ -98,6 +114,14 @@
 			if(!comments.isEmpty()) {
 				vo.setComment(comments.get(0).getFullMessage());
 			}
+
+			vo.setTaskName(hisTask.getName());
+
+			R<User> assigneeObj = userClient.userInfoById(Func.toLong(hisTask.getAssignee()));
+			if(assigneeObj.isSuccess()) {
+				vo.setAssigneeName(assigneeObj.getData().getName());
+			}
+
 			result.add(vo);
 		}
 
@@ -107,16 +131,24 @@
 	@GetMapping("search-list")
 	@ApiOperationSupport(order = 3)
 	@Operation(summary = "娴佺▼鏌ヨ", description = "鏌ヨ杩涜涓殑鎵�鏈夋祦绋�")
-	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);
+	public R<IPage<FlowVO>> searchList(@Parameter(description = "娴佺▼鍚嶇О")String myProcessName, @Parameter(description = "娴佺▼鏃堕棿寮�濮�") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDate createTimeBegin, @Parameter(description = "娴佺▼鍒涘缓鏃堕棿鎴")@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")LocalDate createTimeEnd, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
+		IPage<FlowVO> pages = businessService.selectSearchPage(Condition.getPage(query),myProcessName,keyword, createTimeBegin,createTimeEnd);
 		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);
+	public R<IPage<FlowVO>> finishedList(@Parameter(description = "娴佺▼鍚嶇О")String myProcessName, @Parameter(description = "娴佺▼鍒涘缓鏃堕棿寮�濮�") LocalDateTime createTimeBegin, @Parameter(description = "娴佺▼鍒涘缓鏃堕棿鎴") LocalDateTime createTimeEnd, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
+		IPage<FlowVO> pages = businessService.selectFinishedPage(Condition.getPage(query), myProcessName,keyword,createTimeBegin,createTimeEnd);
+		return R.data(pages);
+	}
+
+	@GetMapping("exception-list")
+	@ApiOperationSupport(order = 3)
+	@Operation(summary = "寮傚父娴佺▼鏌ヨ", description = "鏌ヨ宸插畬缁撶殑锛屽紓甯告祦绋�")
+	public R<IPage<FlowVO>> exceptionList(@Parameter(description = "娴佺▼鍚嶇О")String myProcessName, @Parameter(description = "娴佺▼鍒涘缓鏃堕棿寮�濮�") LocalDateTime createTimeBegin, @Parameter(description = "娴佺▼鍒涘缓鏃堕棿鎴") LocalDateTime createTimeEnd, @Parameter(description = "鍏抽敭瀛�") String keyword, Query query) {
+		IPage<FlowVO> pages = businessService.selectExceptionPage(Condition.getPage(query), myProcessName,keyword,createTimeBegin,createTimeEnd);
 		return R.data(pages);
 	}
 
@@ -133,21 +165,35 @@
 		return R.success();
 	}
 
-	@PostMapping("/export-approve-table")
-	@Operation(summary = "瀵煎嚭瀹℃壒琛�", description = "瀵煎嚭瀹℃壒琛╡xcel")
-	public void exportApproveTable(String processInstanceId, HttpServletResponse response) {
+
+
+	@PostMapping("/export-confirm-table")
+	@Operation(summary = "瀵煎嚭纭琛�", description = "瀵煎嚭鏁版帶绋嬪簭纭琛╬df")
+	public void exportConfirmTable(String processInstanceId, HttpServletResponse response) {
 
 		try {
-
-			String filename = URLEncoder.encode("鏁版帶绋嬪簭缂栧埗瀹℃壒鍗�", StandardCharsets.UTF_8)+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".pdf";
-
+			FlowProgramProperties props = flowCommonService.getProgramPropertiesFromHis(processInstanceId);
+			String progName = props.getDrawingNo()+"-"+props.getProcessNo()+"-"+props.getProcessEdition();
+			String filename = UrlUtil.encode("鏁版帶绋嬪簭纭琛�"+progName)+".pdf";
 			response.setHeader("Content-Disposition", "attachment; filename="+filename);
 			response.setContentType("application/octet-stream");
-			approveTableService.exportApproveTable(processInstanceId,response.getOutputStream());
+			programConfirmTableService.exportConfirmTable(props,response.getOutputStream());
 		} catch (Exception e) {
-			log.error("瀵煎嚭瀹℃壒琛ㄥ紓甯�", e);
+			log.error("瀵煎嚭鏁版帶绋嬪簭纭琛╬df寮傚父", e);
 			throw new RuntimeException(e);
 		}
 
 	}
+
+	@GetMapping("/withdraw")
+	@Operation(summary = "鎾ゅ洖浠诲姟", description = "浠庡叾浠栦换鍔¤妭鐐圭洿鎺ユ挙鍥炵紪绋嬪憳鑺傜偣")
+	public R<Void> withdraw(String processInstanceId)  {
+		try {
+			withdrawService.withdraw(processInstanceId);
+			return R.success();
+		}catch(Exception e) {
+			log.error("<UNK>", e);
+			return R.fail(e.getMessage());
+		}
+	}
 }

--
Gitblit v1.9.3