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