From ffb1ef9e75bd7b03381496f29d0319c01488997b Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 10 二月 2025 09:22:07 +0800 Subject: [PATCH] 办理期限 --- business/src/main/java/com/ycl/task/FlowableTask.java | 58 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 30 insertions(+), 28 deletions(-) diff --git a/business/src/main/java/com/ycl/task/FlowableTask.java b/business/src/main/java/com/ycl/task/FlowableTask.java index 2e247ae..9112494 100644 --- a/business/src/main/java/com/ycl/task/FlowableTask.java +++ b/business/src/main/java/com/ycl/task/FlowableTask.java @@ -67,40 +67,19 @@ 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()); 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; - } + 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) { @@ -108,12 +87,20 @@ } 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灏忔椂涓轰复鏈�) + } List<String> processInsIds = map.get(status); processInsIds.add(task.getProcessInstanceId()); + processCoding.setStatus(status); + processCoding.setOvertimeStatus(overtimeStatus); list.add(processCoding); } catch (Exception e) { - e.printStackTrace(); log.error(e.getMessage(),"璧嬬爜鏃堕棿鏍煎紡鏈夎"); } } @@ -125,6 +112,21 @@ 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; + } + 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