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