From ddafa0375398053baaafdee8612f68c1b75ff7cb Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 22 八月 2025 13:37:54 +0800
Subject: [PATCH] 机床导入1
---
blade-service/blade-mdm/src/main/java/org/springblade/mdm/flow/controller/FlowMgrController.java | 157 ++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 144 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..1a1a0aa 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,38 @@
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.DateUtil;
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.mdm.flow.service.ApproveRecordService;
+import org.springblade.mdm.flow.service.ApproveTableService;
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.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.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
import java.time.LocalDate;
-import java.util.Collections;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
@Slf4j
@RestController
@@ -34,21 +48,138 @@
@Autowired
private FlowBusinessService businessService;
- /**
- * 寰呭姙浠诲姟鍒楄〃椤�
- */
+ @Autowired
+ private HistoryService historyService;
+ @Autowired
+ private RuntimeService runtimeService;
+ @Autowired
+ private ApproveTableService approveTableService;
+ @Autowired
+ private ApproveRecordService approveRecordService;
+ @Autowired
+ private IUserClient userClient;
@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<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();
+// 鎵规敞淇℃伅
+ 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());
+ }
+
+ vo.setTaskName(hisTask.getName());
+
+ R<User> assigneeObj = userClient.userInfoById(Func.toLong(hisTask.getAssignee()));
+ if(assigneeObj.isSuccess()) {
+ vo.setAssigneeName(assigneeObj.getData().getName());
+ }
+
+ result.add(vo);
+ }
+
+ return R.data(result);
+ }
+
+ @GetMapping("search-list")
+ @ApiOperationSupport(order = 3)
+ @Operation(summary = "娴佺▼鏌ヨ", description = "鏌ヨ杩涜涓殑鎵�鏈夋祦绋�")
+ 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("process-trace")
- public R<List<TaskTraceVO>> processTrace(long processInstanceId){
- return R.data(Collections.emptyList());
+ @GetMapping("finished-list")
+ @ApiOperationSupport(order = 3)
+ @Operation(summary = "鍘嗗彶娴佺▼鏌ヨ", description = "鏌ヨ宸插畬缁撶殑鎵�鏈夋祦绋�")
+ 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);
+ }
+ @PostMapping("delete-instance")
+ @Operation(summary = "娴佺▼鍒犻櫎", description = "鍒犻櫎id鎸囧畾鐨勬祦绋嬪疄渚�")
+ public R<Void> deleteInstance(@Parameter(description = "浠诲姟鍒拌揪鏃堕棿寮�濮�") String processInstanceId) {
+ try {
+ businessService.deleteProcessInstance(processInstanceId);
+
+ } catch (Exception e) {
+ log.error("鍒犻櫎娴佺▼澶辫触",e);
+ return R.fail(e.getMessage());
+ }
+ return R.success();
+ }
+
+ @PostMapping("/export-approve-table")
+ @Operation(summary = "瀵煎嚭瀹℃壒琛�", description = "瀵煎嚭瀹℃壒琛╡xcel")
+ public void exportApproveTable(String processInstanceId, HttpServletResponse response) {
+
+ try {
+
+ String filename = URLEncoder.encode("鏁版帶绋嬪簭缂栧埗瀹℃壒鍗�", StandardCharsets.UTF_8)+ DateUtil.format(DateUtil.now(), "yyyyMMddHHmm")+".pdf";
+
+ response.setHeader("Content-Disposition", "attachment; filename="+filename);
+ response.setContentType("application/octet-stream");
+ approveTableService.exportApproveTable(processInstanceId,response.getOutputStream());
+ } catch (Exception e) {
+ log.error("瀵煎嚭瀹℃壒琛ㄥ紓甯�", e);
+ throw new RuntimeException(e);
+ }
+
+ }
}
--
Gitblit v1.9.3