From 12f73bafbe361f78d68a35de83ca3b3b4d4e0224 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 14 二月 2025 16:27:43 +0800 Subject: [PATCH] 查询待办任务时,判断是否挂起状态 --- business/src/main/java/com/ycl/task/FlowableTask.java | 70 ++++++++++++++++++++++++++-------- 1 files changed, 53 insertions(+), 17 deletions(-) diff --git a/business/src/main/java/com/ycl/task/FlowableTask.java b/business/src/main/java/com/ycl/task/FlowableTask.java index 673230c..b5eb3ec 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; @@ -41,7 +42,7 @@ public void expireTask() { log.info("寮�濮嬭祴鐮�"); //褰撳墠姝e湪杩愯鐨勬墍鏈変换鍔¤妭鐐� - List<Task> taskList = taskService.createTaskQuery().list(); + List<Task> taskList = taskService.createTaskQuery().active().list(); if (CollectionUtils.isEmpty(taskList)) return; List<String> taskIds = taskList.stream().map(TaskInfo::getId).collect(Collectors.toList()); //闇�瑕佺洃鎺х殑璧嬬爜浠诲姟 @@ -66,28 +67,46 @@ String taskId = task.getId(); ProcessCoding processCoding = taskMap.get(taskId); if (processCoding == null) { - //涓嶉渶瑕佺洃鎺х殑浠诲姟鑺傜偣鐩存帴鏀逛负缁胯壊 + //涓嶉渶瑕佺洃鎺х殑浠诲姟鑺傜偣椤圭洰鐮佺洿鎺ユ敼涓虹豢鑹� List<String> processInsIds = map.get(GREEN); processInsIds.add(task.getProcessInstanceId()); continue; } - //鍒ゆ柇鏄惁瓒呮椂 + //鍒ゆ柇璧嬬爜缁熶竴鐢ㄧ浣滀负鍗曚綅 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 redTime = getTime(processCoding.getRedTime()); + Long yellowTime = getTime(processCoding.getYellowTime()); + Long overtime = getTime(processCoding.getOvertime()); + if (startTime == null) continue; + //鑺傜偣澶勭悊鏃堕棿 + long durationDay = (now.getTime() - startTime.getTime()) / 1000; + String status = GREEN; // 榛樿鐘舵�佷负缁胯壊 + if (redTime != null && redTime !=0 && durationDay >= redTime) { + status = RED; // 濡傛灉瓒呰繃绾㈣壊鏃堕棿闃堝�硷紝鍒欑姸鎬佷负绾㈣壊 + } else if (yellowTime != null && yellowTime !=0 && durationDay >= yellowTime) { + status = YELLOW; // 鍚﹀垯锛屽鏋滆秴杩囬粍鑹叉椂闂撮槇鍊硷紝鍒欑姸鎬佷负榛勮壊 + } + //澶勭悊鍔炵悊鏈熼檺 + String overtimeStatus = NORMAL; + if (overtime != null && overtime !=0 && durationDay >= overtime) { + overtimeStatus = OVERTIME; // 濡傛灉瓒呰繃鍔炵悊鏈熼檺 + } + else if (overtime != null && overtime != 0 && durationDay >= (overtime - 12 * 60 * 60)) { + overtimeStatus = WILLOVERTIME; // 濡傛灉涓存湡(鍥哄畾瓒呮椂鍓�12灏忔椂涓轰复鏈�) + } +// else if (overtime != null && overtime != 0 && durationDay >= (overtime - 60)) { +// overtimeStatus = WILLOVERTIME; // 濡傛灉涓存湡(鍥哄畾瓒呮椂鍓�12灏忔椂涓轰复鏈�) +// } + List<String> processInsIds = map.get(status); + processInsIds.add(task.getProcessInstanceId()); + + processCoding.setStatus(status); + processCoding.setOvertimeStatus(overtimeStatus); + list.add(processCoding); + } catch (Exception e) { + 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)); @@ -97,6 +116,23 @@ log.info("缁撴潫璧嬬爜"); } + private Long getTime(String timeStr) { + Long time = null; + if (StringUtils.isNotBlank(timeStr)) { + String[] timeArr = timeStr.split("-"); + // 瑙f瀽澶╂暟鍜屽皬鏃舵暟 + int days = Integer.parseInt(timeArr[0]); + int hours = 0; + if (timeArr.length > 1) { + hours = Integer.parseInt(timeArr[1]); + } + time = (days * 24L + hours) * 3600L; +// //鍒�-绉� +// time= (days * 60L) + hours; + } + return time; + } + private Map<String, Date> getStartTaskList(List<ProcessCoding> processCodingList) { //鏌ュ嚭浠诲姟璁℃椂璧峰鑺傜偣闆嗗悎 List<String> startTaskIds = processCodingList.stream().map(ProcessCoding::getStartTaskId).collect(Collectors.toList()); -- Gitblit v1.8.0