From 1519a7c81e6566dd0cbc6acfb1b5e92c3aaba7df Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期日, 02 三月 2025 10:53:57 +0800 Subject: [PATCH] 赋码定时任务只判断超时,且用红码时间判断 --- business/src/main/java/com/ycl/task/FlowableTask.java | 50 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 30 insertions(+), 20 deletions(-) diff --git a/business/src/main/java/com/ycl/task/FlowableTask.java b/business/src/main/java/com/ycl/task/FlowableTask.java index 94a3ef8..02c1455 100644 --- a/business/src/main/java/com/ycl/task/FlowableTask.java +++ b/business/src/main/java/com/ycl/task/FlowableTask.java @@ -1,6 +1,7 @@ package com.ycl.task; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.common.enums.business.ProcessLogEventTypeEnum; import com.ycl.domain.entity.ProcessCoding; @@ -44,6 +45,7 @@ private ProcessLogService processLogService; @Autowired private ProcessLogMapper processLogMapper; + /** * 璧嬬爜浠诲姟 * 涓や釜閫昏緫 鏀归」鐩爜銆佹敼鑺傜偣棰滆壊 @@ -66,12 +68,17 @@ List<String> taskIds = taskList.stream().map(TaskInfo::getId).collect(Collectors.toList()); //鏌ヨ鑺傜偣鎸傝捣鏃ュ織 - Map<String, List<ProcessLog>> hangupLogMap = processLogService.list(new QueryWrapper<ProcessLog>() - .in("event_type", Arrays.asList(HANGUP, CANCEL_HANGUP)) - .in("process_ins_id", taskIds)).stream() + Map<String, List<ProcessLog>> hangupLogMap = new LambdaQueryChainWrapper<>(processLogMapper) + .in(ProcessLog::getEventType, HANGUP, CANCEL_HANGUP) + .in(ProcessLog::getProcessInsId, taskIds) + .list() + .stream() .collect(Collectors.groupingBy(ProcessLog::getTaskId)); + //闇�瑕佺洃鎺х殑璧嬬爜浠诲姟 - List<ProcessCoding> processCodingList = processCodingMapper.selectList(new QueryWrapper<ProcessCoding>().in("task_id", taskIds)); + List<ProcessCoding> processCodingList = new LambdaQueryChainWrapper<>(processCodingMapper) + .in(ProcessCoding::getTaskId, taskIds) + .list(); Map<String, ProcessCoding> taskMap = new HashMap<>(); Map<String, Date> startTaskMap = new HashMap<>(); if (!CollectionUtils.isEmpty(processCodingList)) { @@ -96,43 +103,46 @@ map.get(GREEN).add(task.getProcessInstanceId()); continue; } - //鍒ゆ柇璧嬬爜缁熶竴鐢ㄧ浣滀负鍗曚綅 + //鍒ゆ柇璧嬬爜缁熶竴鐢ㄧ浣滀负鍗曚綅锛屼笖鍙渶鐢ㄧ孩鐮佹椂闂村垽鏂秴鏃讹紝閫氳繃瓒呮椂鍘绘敼鍙橀」鐩殑璧嬬爜鐘舵�侊紝鑺傜偣鏈韩鏃犺祴鐮佺姸鎬� Date startTime = startTaskMap.get(processCoding.getStartTaskId()); try { Long redTime = getTime(processCoding.getRedTime()); - Long yellowTime = getTime(processCoding.getYellowTime()); - Long overtime = getTime(processCoding.getOvertime()); +// Long yellowTime = getTime(processCoding.getYellowTime()); +// Long overtime = getTime(processCoding.getOvertime()); if (startTime == null) continue; //鑺傜偣澶勭悊鏃堕棿 long durationTime = (now.getTime() - startTime.getTime()) / 1000; - //TODO锛氬噺鍘婚」鐩寕璧锋椂闀� + //TODO锛氬噺鍘绘祦绋嬫寕璧锋椂闀� //鍑忓幓鑺傜偣鎸傝捣鏃堕暱 durationTime = subNodeHangupTime(hangupLogMap, task, durationTime); String status = GREEN; // 榛樿鐘舵�佷负缁胯壊 - if (redTime != null && redTime !=0 && durationTime >= redTime) { - status = RED; // 濡傛灉瓒呰繃绾㈣壊鏃堕棿闃堝�硷紝鍒欑姸鎬佷负绾㈣壊 - } else if (yellowTime != null && yellowTime !=0 && durationTime >= yellowTime) { - status = YELLOW; // 鍚﹀垯锛屽鏋滆秴杩囬粍鑹叉椂闂撮槇鍊硷紝鍒欑姸鎬佷负榛勮壊 - } - //澶勭悊鍔炵悊鏈熼檺 String overtimeStatus = NORMAL; - if (overtime != null && overtime !=0 && durationTime >= overtime) { - overtimeStatus = OVERTIME; // 濡傛灉瓒呰繃鍔炵悊鏈熼檺 + if (redTime != null && redTime != 0 && durationTime >= redTime) { + status = RED; // 濡傛灉瓒呰繃绾㈣壊鏃堕棿闃堝�硷紝鍒欒〃鏄庤浠诲姟瓒呮椂 + overtimeStatus = OVERTIME; } - else if (overtime != null && overtime != 0 && durationTime >= (overtime - 12 * 60 * 60)) { - overtimeStatus = WILLOVERTIME; // 濡傛灉涓存湡(鍥哄畾瓒呮椂鍓�12灏忔椂涓轰复鏈�) - } +// else if (yellowTime != null && yellowTime != 0 && durationTime >= yellowTime) { +// status = YELLOW; // 鍚﹀垯锛屽鏋滆秴杩囬粍鑹叉椂闂撮槇鍊硷紝鍒欑姸鎬佷负榛勮壊 +// } +// //澶勭悊鍔炵悊鏈熼檺 +// String overtimeStatus = NORMAL; +// if (overtime != null && overtime != 0 && durationTime >= overtime) { +// overtimeStatus = OVERTIME; // 濡傛灉瓒呰繃鍔炵悊鏈熼檺 +// } else if (overtime != null && overtime != 0 && durationTime >= (overtime - 12 * 60 * 60)) { +// overtimeStatus = WILLOVERTIME; // 濡傛灉涓存湡(鍥哄畾瓒呮椂鍓�12灏忔椂涓轰复鏈�) +// } // else if (overtime != null && overtime != 0 && durationDay >= (overtime - 60)) { // overtimeStatus = WILLOVERTIME; // 濡傛灉涓存湡(鍥哄畾瓒呮椂鍓�12灏忔椂涓轰复鏈�) // } map.get(status).add(task.getProcessInstanceId()); processCoding.setStatus(status); processCoding.setOvertimeStatus(overtimeStatus); + processCoding.setStartTaskTime(task.getCreateTime()); list.add(processCoding); } catch (Exception e) { - log.error(e.getMessage(),"璧嬬爜鏃堕棿鏍煎紡鏈夎"); + log.error(e.getMessage(), "璧嬬爜鏃堕棿鏍煎紡鏈夎"); } } //鏇存柊椤圭洰鐮� -- Gitblit v1.8.0