From e0d938f54896e9247aeeccd3a7fe43cc9fadbfd6 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 21 一月 2025 04:48:18 +0800
Subject: [PATCH] 查询任务时,处理表达式

---
 business/src/main/java/com/ycl/task/FlowableTask.java |   56 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 42 insertions(+), 14 deletions(-)

diff --git a/business/src/main/java/com/ycl/task/FlowableTask.java b/business/src/main/java/com/ycl/task/FlowableTask.java
index 79543d6..e7ddff2 100644
--- a/business/src/main/java/com/ycl/task/FlowableTask.java
+++ b/business/src/main/java/com/ycl/task/FlowableTask.java
@@ -11,6 +11,7 @@
 import com.ycl.mapper.ProjectProcessMapper;
 import com.ycl.service.ProcessCodingService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.flowable.task.api.Task;
 import org.flowable.task.api.TaskInfo;
 import org.flowable.task.api.history.HistoricTaskInstance;
@@ -73,21 +74,48 @@
             }
             //鍒ゆ柇鏄惁瓒呮椂
             Date startTime = startTaskMap.get(processCoding.getStartTaskId());
-            Integer yellowTime = processCoding.getYellowTime();
-            Integer redTime = processCoding.getRedTime();
-            if (startTime == null) continue;
-//                long durationDay = (now.getTime() - startTime.getTime()) / (1000 * 60 * 60 * 24);
-            long durationDay = (now.getTime() - startTime.getTime()) / (1000 * 60);
-            String status = GREEN; // 榛樿鐘舵�佷负缁胯壊
-            if (redTime != null && durationDay >= redTime) {
-                status = RED; // 濡傛灉瓒呰繃绾㈣壊鏃堕棿闃堝�硷紝鍒欑姸鎬佷负绾㈣壊
-            } else if (yellowTime != null && durationDay >= yellowTime) {
-                status = YELLOW; // 鍚﹀垯锛屽鏋滆秴杩囬粍鑹叉椂闂撮槇鍊硷紝鍒欑姸鎬佷负榛勮壊
+            try {
+                Long yellowTime = null;
+                Long redTime = null;
+                String yellowTimeStr = processCoding.getYellowTime();
+                if (StringUtils.isNotBlank(yellowTimeStr)) {
+                    String[] yellowTimeArr = yellowTimeStr.split("-");
+                    // 瑙f瀽澶╂暟鍜屽皬鏃舵暟
+                    int days = Integer.parseInt(yellowTimeArr[0]);
+                    int hours = 0;
+                    // 鍏煎涔嬪墠閰嶇疆鐨勬暣鏁板ぉ
+                    if (yellowTimeArr.length > 1) {
+                        hours = Integer.parseInt(yellowTimeArr[1]);
+                    }
+                    yellowTime = (days * 24L + hours) * 3600L;
+                }
+                String redTimeStr = processCoding.getRedTime();
+                if (StringUtils.isNotBlank(redTimeStr)) {
+                    String[] redTimeArr = redTimeStr.split("-");
+                    // 瑙f瀽澶╂暟鍜屽皬鏃舵暟
+                    int days = Integer.parseInt(redTimeArr[0]);
+                    int hours = 0;
+                    if (redTimeArr.length > 1) {
+                        hours = Integer.parseInt(redTimeArr[1]);
+                    }
+                    redTime = (days * 24L + hours) * 3600L;
+                }
+                if (startTime == null) continue;
+                long durationDay = (now.getTime() - startTime.getTime()) / 1000;
+                String status = GREEN; // 榛樿鐘舵�佷负缁胯壊
+                if (redTime != null && durationDay >= redTime) {
+                    status = RED; // 濡傛灉瓒呰繃绾㈣壊鏃堕棿闃堝�硷紝鍒欑姸鎬佷负绾㈣壊
+                } else if (yellowTime != null && durationDay >= yellowTime) {
+                    status = YELLOW; // 鍚﹀垯锛屽鏋滆秴杩囬粍鑹叉椂闂撮槇鍊硷紝鍒欑姸鎬佷负榛勮壊
+                }
+                List<String> processInsIds = map.get(status);
+                processInsIds.add(task.getProcessInstanceId());
+                processCoding.setStatus(status);
+                list.add(processCoding);
+            } catch (Exception e) {
+                e.printStackTrace();
+                log.error(e.getMessage(),"璧嬬爜鏃堕棿鏍煎紡鏈夎");
             }
-            List<String> processInsIds = map.get(status);
-            processInsIds.add(task.getProcessInstanceId());
-            processCoding.setStatus(status);
-            list.add(processCoding);
         }
         //鏇存柊椤圭洰鐮�
         map.forEach((key, value) -> updateProjectCoding(value, key));

--
Gitblit v1.8.0