From 52e9ef7d0a66500d596c2d4a3e8fc635c9f3e742 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 17 三月 2025 11:50:18 +0800
Subject: [PATCH] 流程图查看,容缺、跳过显示

---
 flowable/src/main/java/com/ycl/domain/dto/FlowViewerDto.java           |   10 ++++++++++
 business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java   |    8 ++++++--
 business/src/main/java/com/ycl/service/ProcessLogService.java          |   18 ++++++++++++++++++
 business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java |   20 ++++++++++++++++++++
 4 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/business/src/main/java/com/ycl/service/ProcessLogService.java b/business/src/main/java/com/ycl/service/ProcessLogService.java
index 8609d33..9c7141e 100644
--- a/business/src/main/java/com/ycl/service/ProcessLogService.java
+++ b/business/src/main/java/com/ycl/service/ProcessLogService.java
@@ -79,6 +79,24 @@
     Boolean taskIsHangup(String taskId, String processInsId);
 
     /**
+     * 妫�鏌ヤ换鍔℃槸鍚﹀缂�
+     *
+     * @param taskId
+     * @param processInsId
+     * @return
+     */
+    Boolean taskIsWait(String taskId, String processInsId);
+
+    /**
+     * 妫�鏌ヤ换鍔℃槸鍚﹁烦杩�
+     *
+     * @param taskId
+     * @param processInsId
+     * @return
+     */
+    Boolean taskIsJump(String taskId, String processInsId);
+
+    /**
      * 妫�鏌ヤ换鍔℃槸鍚﹀崗鍚屽姙鐞嗕簡
      *
      * @param taskId 浠诲姟id
diff --git a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
index 0c2d7a4..d1e99b7 100644
--- a/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/FlowTaskServiceImpl.java
@@ -1336,6 +1336,8 @@
                 if (StringUtils.isBlank(s.getDeleteReason())) {
                     flowViewerList.add(flowViewerDto);
                 }
+                flowViewerDto.setHasJump(processLogService.taskIsJump(s.getTaskId(), procInsId));
+                flowViewerDto.setHasWait(processLogService.taskIsWait(s.getTaskId(), procInsId));
             });
 
             // 鑾峰彇浠e姙鑺傜偣
@@ -1353,8 +1355,10 @@
                 // 鎵╁睍鍐呭 浠e姙鐨勯�氳繃褰撳墠鏃堕棿浣滀负endTime
                 ProcessCoding processCoding = processCodingMap.get(s.getTaskId());
                 //濡傛灉鏈夌洃鎺ф暟鎹� 涓嶅弽鐨勮瘽鍓嶇榛樿鏄繘琛屼腑(钃濊壊)
-                if (processCoding != null && (RED.equals(processCoding.getStatus()) || YELLOW.equals(processCoding.getStatus()))) {
-                    flowViewerDto.setOvertime(processCoding.getStatus());
+                if (Objects.nonNull(processCoding)) {
+                    if (RED.equals(processCoding.getStatus()) || YELLOW.equals(processCoding.getStatus())) {
+                        flowViewerDto.setOvertime(processCoding.getStatus());
+                    }
                 }
                 flowViewerList.add(flowViewerDto);
             });
diff --git a/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
index e3f8512..306abc1 100644
--- a/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
+++ b/business/src/main/java/com/ycl/service/impl/ProcessLogServiceImpl.java
@@ -145,6 +145,26 @@
     }
 
     @Override
+    public Boolean taskIsWait(String taskId, String processInsId) {
+        List<ProcessLog> list = new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(ProcessLog::getProcessInsId, processInsId)
+                .eq(ProcessLog::getTaskId, taskId)
+                .list();
+        return list.stream().anyMatch(log -> ProcessLogEventTypeEnum.WAIT.equals(log.getEventType()))
+                && list.stream().filter(log -> ProcessLogEventTypeEnum.FINISHED.equals(log.getEventType())).count() < 1;
+    }
+
+    @Override
+    public Boolean taskIsJump(String taskId, String processInsId) {
+        List<ProcessLog> list = new LambdaQueryChainWrapper<>(baseMapper)
+                .eq(ProcessLog::getProcessInsId, processInsId)
+                .eq(ProcessLog::getTaskId, taskId)
+                .eq(ProcessLog::getEventType, ProcessLogEventTypeEnum.JUMP)
+                .list();
+        return list.size() > 0;
+    }
+
+    @Override
     public Boolean taskIsTeamwork(String taskId, String processInsId) {
         ProcessLog log = new LambdaQueryChainWrapper<>(baseMapper)
                 .eq(ProcessLog::getProcessInsId, processInsId)
diff --git a/flowable/src/main/java/com/ycl/domain/dto/FlowViewerDto.java b/flowable/src/main/java/com/ycl/domain/dto/FlowViewerDto.java
index 73ba121..9bad65e 100644
--- a/flowable/src/main/java/com/ycl/domain/dto/FlowViewerDto.java
+++ b/flowable/src/main/java/com/ycl/domain/dto/FlowViewerDto.java
@@ -25,4 +25,14 @@
      * 椤圭洰瓒呮椂棰滆壊鐮� green/yellow/red
      */
     private String overtime;
+
+    /**
+     * 鏄惁瀹圭己浜�
+     */
+    private Boolean hasWait;
+
+    /**
+     * 鏄惁璺宠繃浜�
+     */
+    private Boolean hasJump;
 }

--
Gitblit v1.8.0