From a36c566ee372299b5c19c6e5c0bfc756b1c6635e Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 14 五月 2025 17:52:31 +0800
Subject: [PATCH] art: 设备管理-我的已办-查询修改

---
 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java |   41 ++++++++++++++++++++++++++++++++++++-----
 1 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java
index 99738f1..5fd4330 100644
--- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java
+++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java
@@ -668,6 +668,30 @@
         flowTaskVo.setTaskId(business.getTaskId());
         return findReturnTaskList(flowTaskVo);
     }
+
+    /**
+     * 缁撴潫娴佺▼
+     * @param processInstanceId 娴佺▼瀹炰緥 ID
+     * @param deleteReason 瀹氫箟鍒犻櫎鍘熷洜
+     */
+    public Result<?> end(String processInstanceId, String deleteReason) {
+        try {
+            // 寮哄埗缁撴潫娴佺▼瀹炰緥
+            runtimeService.deleteProcessInstance(processInstanceId, deleteReason);
+            // 鍒犻櫎鍏宠仈娴佺▼鐨勪笟鍔�
+            FlowMyBusiness flowMyBusiness=flowMyBusinessService.getFlowMyBusiness(processInstanceId);
+            flowMyBusinessService.removeById(flowMyBusiness.getId());
+            System.out.println("Process instance with ID " + processInstanceId + " has been forcefully ended.");
+        } catch (Exception e) {
+            System.err.println("Failed to force end process instance: " + e.getMessage());
+        }
+
+        // 鍏抽棴娴佺▼寮曟搸
+        processEngine.close();
+        return Result.OK("娴佺▼宸茬粨鏉�");
+    }
+
+
     /**
      * 鑾峰彇鎵�鏈夊彲鍥為��鐨勮妭鐐�
      *
@@ -1045,11 +1069,18 @@
             HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
                     .processInstanceId(flowTaskDto.getProcInsId())
                     .singleResult();
-            SysUser startUser = iFlowThirdService.getUserByUsername(historicProcessInstance.getStartUserId());
-            flowTaskDto.setStartUserId(startUser.getUsername());
-            flowTaskDto.setStartUserName(startUser.getRealname());
-            List<String> departNamesByUsername = iFlowThirdService.getDepartNamesByUsername(historicProcessInstance.getStartUserId());
-            flowTaskDto.setStartDeptName(CollUtil.join(departNamesByUsername,"锛�"));
+            if(historicProcessInstance != null) {
+                SysUser startUser = iFlowThirdService.getUserByUsername(historicProcessInstance.getStartUserId());
+                if(startUser == null) {
+                    flowTaskDto.setStartUserId("");
+                    flowTaskDto.setStartUserName("");
+                }else {
+                    flowTaskDto.setStartUserId(startUser.getUsername());
+                    flowTaskDto.setStartUserName(startUser.getRealname());
+                }
+                List<String> departNamesByUsername = iFlowThirdService.getDepartNamesByUsername(historicProcessInstance.getStartUserId());
+                flowTaskDto.setStartDeptName(CollUtil.join(departNamesByUsername,"锛�"));
+            }
         });
         IPage<FlowTaskDto> flowTaskDtoIPage = new Page<>();
         flowTaskDtoIPage.setRecords(list);

--
Gitblit v1.9.3