From 310f2ec1d4bc58a911701ba0b902f27a3e17efb6 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 03 一月 2025 16:43:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java |   66 +++++++++++++++------------------
 flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java           |    7 ++-
 business/src/main/java/com/ycl/task/FlowableTask.java                          |    8 ---
 3 files changed, 35 insertions(+), 46 deletions(-)

diff --git a/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java b/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java
index 6fde445..d2e507c 100644
--- a/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java
+++ b/business/src/main/java/com/ycl/listener/flowable/FlowableOverTimeListener.java
@@ -7,6 +7,7 @@
 import com.ycl.mapper.ProcessCodingMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.flowable.common.engine.impl.el.FixedValue;
+import org.flowable.engine.HistoryService;
 import org.flowable.engine.delegate.TaskListener;
 import org.flowable.task.api.history.HistoricTaskInstance;
 import org.flowable.task.service.delegate.DelegateTask;
@@ -19,7 +20,7 @@
 
 /**
  * 浠诲姟鐩戝惉鍣�
- *
+ * <p>
  * create锛堝垱寤猴級:鍦ㄤ换鍔¤鍒涘缓涓旀墍鏈夌殑浠诲姟灞炴�ц缃畬鎴愬悗鎵嶈Е鍙�
  * assignment锛堟寚娲撅級锛氬湪浠诲姟琚垎閰嶇粰鏌愪釜鍔炵悊浜轰箣鍚庤Е鍙�
  * complete锛堝畬鎴愶級锛氬湪閰嶇疆浜嗙洃鍚櫒鐨勪笂涓�涓换鍔″畬鎴愭椂瑙﹀彂
@@ -30,7 +31,7 @@
  */
 @Slf4j
 @Component
-public class FlowableOverTimeListener extends FlowServiceFactory implements TaskListener {
+public class FlowableOverTimeListener implements TaskListener {
     /**
      * 榛勭爜鏃堕棿
      */
@@ -49,6 +50,7 @@
         log.info("瑙﹀彂瓒呮椂鐩戝惉鍣�:{}", delegateTask);
         //Flowable鐨刡ean鑷繁绠$悊鐨勯渶瑕佹墜鍔ㄨ幏鍙�
         ProcessCodingMapper processCodingMapper = SpringUtils.getBean(ProcessCodingMapper.class);
+        HistoryService historyService = SpringUtils.getBean(HistoryService.class);
         //浠诲姟id
         String taskId = delegateTask.getId();
         //娴佺▼瀹炰緥id
@@ -57,40 +59,32 @@
         processCoding.setTaskId(taskId);
         processCoding.setProcessInsId(processInstanceId);
         processCoding.setTaskDefKey(delegateTask.getTaskDefinitionKey());
-        //娑夊強鍒伴┏鍥烇紝闇�瑕佹煡涓�涓嬭繖涓妭鐐规槸鍚﹀凡缁忔坊鍔犺繃浜嗭紝濡傛灉娣诲姞杩囧氨涓嶈繘琛屽悗缁搷浣�
-        List<ProcessCoding> processCodings = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>()
-                .eq("process_ins_id", processInstanceId)
-                .eq("task_def_key", delegateTask.getTaskDefinitionKey()));
-        if (CollectionUtils.isEmpty(processCodings)) {
-            processCoding.setStatus(GREEN);
-            if (yellowTime != null && yellowTime.getValue(delegateTask) != null) {
-                processCoding.setYellowTime(Integer.parseInt(yellowTime.getValue(delegateTask).toString()));
-            }
-            if (redTime != null && redTime.getValue(delegateTask) != null) {
-                processCoding.setRedTime(Integer.parseInt(redTime.getValue(delegateTask).toString()));
-            }
-            if (startTaskId != null && startTaskId.getValue(delegateTask) != null) {
-                String taskDefKey = startTaskId.getValue(delegateTask).toString();
-                //閫氳繃娴佺▼瀹炰緥id鍜岃妭鐐瑰畾涔塱d鎵惧埌瀵瑰簲taskId
-                if (delegateTask.getTaskDefinitionKey().equals(taskDefKey)) {
-                    //褰撳墠鑺傜偣涓哄紑濮嬭鏃惰妭鐐�
-                    processCoding.setStartTaskId(delegateTask.getId());
-                } else {
-                    //寮�濮嬭妭鐐逛粠鍘嗗彶鑺傜偣鏌ヨ 鍙栧鏉′腑鏈�鏃╃殑涓�鏉�
-                    List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
-                            .processInstanceId(processInstanceId)
-                            .taskDefinitionKey(delegateTask.getTaskDefinitionKey())
-                            .orderByHistoricTaskInstanceStartTime()
-                            .asc()
-                            .list();
-                    if (!CollectionUtils.isEmpty(list)) {
-                        HistoricTaskInstance hisTask = list.get(0);
-                        processCoding.setStartTaskId(hisTask.getId());
-                    }
-                }
-            }
-            processCodingMapper.insert(processCoding);
-            log.info("娣诲姞鑺傜偣鍒板畾鏃跺櫒");
+        processCoding.setStatus(GREEN);
+        if (yellowTime != null && yellowTime.getValue(delegateTask) != null) {
+            processCoding.setYellowTime(Integer.parseInt(yellowTime.getValue(delegateTask).toString()));
         }
+        if (redTime != null && redTime.getValue(delegateTask) != null) {
+            processCoding.setRedTime(Integer.parseInt(redTime.getValue(delegateTask).toString()));
+        }
+        //璁剧疆寮�濮嬭妭鐐�
+        if (startTaskId != null && startTaskId.getValue(delegateTask) != null) {
+            String taskDefKey = startTaskId.getValue(delegateTask).toString();
+            //寮�濮嬭妭鐐逛粠鍘嗗彶鑺傜偣鏌ヨ 鍙栧鏉′腑鏈�鏃╃殑涓�鏉�
+            List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
+                    .processInstanceId(processInstanceId)
+                    .taskDefinitionKey(taskDefKey)
+                    .orderByHistoricTaskInstanceStartTime()
+                    .asc()
+                    .list();
+            if (!CollectionUtils.isEmpty(list)) {
+                HistoricTaskInstance hisTask = list.get(0);
+                processCoding.setStartTaskId(hisTask.getId());
+            } else {
+                //濡傛灉涓虹┖锛岃鏄庢祦绋嬮娆¤蛋鍒皌askDefKey鑺傜偣
+                processCoding.setStartTaskId(delegateTask.getId());
+            }
+        }
+        processCodingMapper.insert(processCoding);
+        log.info("娣诲姞鑺傜偣鍒板畾鏃跺櫒");
     }
 }
diff --git a/business/src/main/java/com/ycl/task/FlowableTask.java b/business/src/main/java/com/ycl/task/FlowableTask.java
index 5842b3b..971be1f 100644
--- a/business/src/main/java/com/ycl/task/FlowableTask.java
+++ b/business/src/main/java/com/ycl/task/FlowableTask.java
@@ -96,15 +96,9 @@
     private Map<String, Date> getStartTaskList(List<ProcessCoding> processCodingList) {
         //鏌ュ嚭浠诲姟璁℃椂璧峰鑺傜偣闆嗗悎
         List<String> startTaskIds = processCodingList.stream().map(ProcessCoding::getStartTaskId).collect(Collectors.toList());
-        //鏌ュ嚭璧峰璁℃椂鑺傜偣鏁版嵁 娉ㄦ剰姝e湪杩涜鐨勪换鍔′笉浼氳繘鍏is琛� 缁撴潫浜嗘墠浼氳繘鍏� 鎵�浠ラ渶瑕佹煡涓ゅ紶琛�
+        //鏌ュ嚭璧峰璁℃椂鑺傜偣鏁版嵁
         Map<String, Date> startDateMap = new HashMap<>();
-        List<Task> startTasks = taskService.createTaskQuery().taskIds(startTaskIds).list();
         List<HistoricTaskInstance> hisStartTasks = historyService.createHistoricTaskInstanceQuery().taskIds(startTaskIds).list();
-        if (!CollectionUtils.isEmpty(startTasks)) {
-            startTasks.forEach(task -> {
-                startDateMap.put(task.getId(), task.getCreateTime());
-            });
-        }
         if (!CollectionUtils.isEmpty(hisStartTasks)) {
             hisStartTasks.forEach(hisTask -> {
                 startDateMap.put(hisTask.getId(), hisTask.getStartTime());
diff --git a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index 26a400d..98af018 100644
--- a/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/flowable/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -798,7 +798,6 @@
                     .processInstanceId(procInsId)
                     .orderByHistoricActivityInstanceStartTime()
                     .desc().list();
-            Date now = new Date();
             //鎵╁睍 鑾峰彇杩欎釜娴佺▼瀹炰緥鐨勭洃鎺т俊鎭� key:TaskId value:瀹炰綋绫�
             Map<String, ProcessCoding> processCodingMap = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>().eq("process_ins_id", procInsId))
                     .stream()
@@ -864,6 +863,7 @@
                     //鎵╁睍 鍒ゆ柇鏄惁瓒呮椂
                     ProcessCoding processCoding = processCodingMap.get(histIns.getTaskId());
                     if(processCoding!=null){
+                        //閫氳繃鑰楁椂鍒ゆ柇鏄惁鏄唬鍔炶妭鐐�
                         //濡傛灉浠诲姟鏄唬鍔炶妭鐐�
                         if (flowTask.getDuration() == null) {
                             if(RED.equals(processCoding.getStatus()) || YELLOW.equals(processCoding.getStatus())){
@@ -1129,8 +1129,9 @@
                     .finished()
                     .list();
 
-            //鑾峰彇杩欎釜娴佺▼瀹炰緥鐨勭洃鎺т俊鎭� key:TaskId value:瀹炰綋绫�
-            Map<String, ProcessCoding> processCodingMap = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>().eq("process_ins_id", procInsId))
+            //鎵╁睍 鑾峰彇杩欎釜娴佺▼瀹炰緥鐨勭洃鎺т俊鎭� key:TaskId value:瀹炰綋绫�
+            Map<String, ProcessCoding> processCodingMap = processCodingMapper
+                    .selectList(new QueryWrapper<ProcessCoding>().eq("process_ins_id", procInsId))
                     .stream()
                     .collect(Collectors.toMap(ProcessCoding::getTaskId, Function.identity()));
             // 淇濆瓨宸茬粡瀹屾垚鐨勬祦绋嬭妭鐐圭紪鍙�

--
Gitblit v1.8.0