From 815a9b04ef7e3df21d8b679376603b335656f5e8 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 30 四月 2025 17:09:52 +0800
Subject: [PATCH] 订单下发,订单下发定时任务处理

---
 ycl-server/src/main/java/com/ycl/task/HKTask.java                                       |    8 ---
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                           |   38 +++++++++++++++++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java |    4 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java        |    9 ++++
 ycl-server/src/main/java/com/ycl/task/MonitorTask.java                                  |    4 +-
 ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java                                |   33 ++++++++++++++++
 ycl-server/src/main/java/com/ycl/task/UYTask.java                                       |    1 
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java                   |    3 +
 ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java                 |    2 +
 9 files changed, 93 insertions(+), 9 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
index 85c58bf..765db87 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -16,6 +16,7 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
@@ -122,4 +123,6 @@
     List<WorkOrderVO> getHandleTimeList(@Param("workOrderNos")List<String> workOrderNos);
 
     WorkOrderDetailVO detailByNoButNoDistributeRecord(String workOrderNo);
+
+    List<WorkOrderVO> distributeList(Date startDate, Date endDate);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
index b68349f..cb93a9b 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -16,6 +16,7 @@
 import org.bytedeco.javacv.FFmpegFrameGrabber;
 
 import java.io.IOException;
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -126,6 +127,7 @@
      */
     Result distributePage(DistributeWorkOrderQuery query);
 
+    List<WorkOrderVO> distributeList(Date startDate, Date endDate);
     /**
      * 蹇�熶笅鍙�
      * @param data
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
index b52a9a4..2495202 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
@@ -19,6 +19,7 @@
 import enumeration.general.WorkOrderStatusEnum;
 import lombok.Data;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
@@ -36,6 +37,7 @@
  */
 @Service
 @RequiredArgsConstructor
+@Slf4j
 public class UYErrorTypeCheckServiceImpl implements UYErrorTypeCheckService {
 
     private final WorkOrderService workOrderService;
@@ -187,6 +189,8 @@
             ywThresholdService.check(YwThreadConstants.Video_DiffTime, timeDiff, item.getDeviceNo(), ywThresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.CLOCK_SKEW.getValue());
             return workOrder;
         }).collect(Collectors.toList());
+
+        log.error("osdCheck鑾峰緱鎻掑叆宸ュ崟:{}",workOrderList);
         workOrderService.innerAddWorkOrder(workOrderList);
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index 80dd2b3..c4c9ebc 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -62,6 +62,7 @@
 import pojo.CascadeOption;
 import utils.file.FileUtils;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
@@ -806,6 +807,11 @@
     }
 
     @Override
+    public List<WorkOrderVO> distributeList(Date startDate, Date endDate){
+        return  baseMapper.distributeList(startDate,endDate);
+    }
+
+    @Override
     @Transactional
     public Result distributeFast(DistributeWorkOrderVO data) {
         // 鑾峰彇褰撳墠鏃堕棿
@@ -862,6 +868,9 @@
         }
     }
 
+
+
+
     @Override
     @Transactional
     public Result selectedIdsDistribute(DistributeWorkOrderQuery query) {
diff --git a/ycl-server/src/main/java/com/ycl/task/HKTask.java b/ycl-server/src/main/java/com/ycl/task/HKTask.java
index 15c3684..2c5b495 100644
--- a/ycl-server/src/main/java/com/ycl/task/HKTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -9,13 +9,11 @@
 import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.param.HK.*;
 import com.ycl.platform.domain.result.HK.*;
-import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
 import com.ycl.platform.domain.result.UY.VideoOnlineResult;
 import com.ycl.platform.domain.vo.UpdateOnlineVO;
 import com.ycl.platform.mapper.CheckIndexCarMapper;
 import com.ycl.platform.mapper.CheckIndexFaceMapper;
 import com.ycl.platform.mapper.TMonitorMapper;
-import com.ycl.platform.mapper.WorkOrderMapper;
 import com.ycl.platform.service.*;
 import com.ycl.utils.DateUtils;
 import constant.ApiConstants;
@@ -608,7 +606,6 @@
                     }
                 }
                 log.error("鎵撳嵃hkResultLabels锛歿}",hkResultLabels);
-
             }
         }
         if (faceLabelId == null || carLabelId == null){
@@ -650,7 +647,6 @@
                     //浠ユ壒娆d涓簁ey 鏀惧叆 JSONObject瀵硅薄
                     map.put(Integer.valueOf(batchIdKey),batch);
                     //鎵规id 涓� 鍚勫尯淇℃伅闆嗗悎
-                    log.error("鎵撳嵃鍑篸ata鍐呭涓壒娆d锛歿}锛屼互鍙婂搴旂殑缁撴灉info:{}",batchIdKey,batch);
                 }
                 //鑾峰緱鏈�澶х殑閿��
                 Optional<Integer> maxKey = map.keySet().stream()
@@ -720,7 +716,7 @@
                         //鎵规id 涓� 鍚勫尯淇℃伅闆嗗悎
                         log.error("鎵撳嵃鍑虹渷鍘呬汉鑴竏ata鍐呭涓壒娆d锛歿}锛屼互鍙婂搴旂殑缁撴灉info:{}",batchIdKey,batch);
                     }
-                    //鑾峰緱鏈�澶х殑閿��
+                //鑾峰緱鏈�澶х殑閿��
                     Optional<Integer> maxKey = map.keySet().stream()
                             .max(Integer::compareTo);
                     if (maxKey.isPresent()) {
@@ -785,8 +781,6 @@
         Map<String,List<HkResultInfo>> provincialGroupedByAreaName = provincialList.stream()
                 .collect(Collectors.groupingBy(HkResultInfo::getAreaCode));
         for (Map.Entry<String, List<HkResultInfo>> entry : provincialGroupedByAreaName.entrySet()) {
-            log.error("鏈�鏂版壒娆″唴鐪佸巺鏁版嵁:{}",provincialGroupedByAreaName.get(entry.getKey()).size());
-            log.error("鏈�鏂版壒娆″唴鐪佸巺size:{}",provincialGroupedByAreaName.get(entry.getKey()));
             CheckIndexCar car = new CheckIndexCar();
             CheckIndexFace face = new CheckIndexFace();
             score3Index(provincialGroupedByAreaName.get(entry.getKey()), car, face,entry.getKey());
diff --git a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
index 6b1f82e..c1a3fe2 100644
--- a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -115,7 +115,7 @@
                 monitorList.add(monitor);
                 ywPointList.add(point);
             }
-            log.error("鍚屾mongo鏂皔wpoint鏁版嵁{}",ywPointList);
+
             //娣诲姞鑰佹暟鎹�
             List<String> numbers = CollectionUtils.isEmpty(monitorList) ? new ArrayList<>() : monitorList.stream().map(TMonitor::getSerialNumber).collect(Collectors.toList());
             monitorVOMap.forEach((key, value) -> {
@@ -142,7 +142,7 @@
                     ywPointList.add(value);
                 }
             });
-            log.error("鍚屾mongo鏂板姞鏃wpoint鏁版嵁{}",ywPointList);
+
             log.info("result闆嗗悎{},璁惧闆嗗悎{},鐐逛綅闆嗗悎{}", oneMachineFileResults.size(), monitorList.size(), ywPointList.size());
             //鎻掑叆鏁版嵁搴�
             if (!CollectionUtils.isEmpty(monitorList)) {
diff --git a/ycl-server/src/main/java/com/ycl/task/UYTask.java b/ycl-server/src/main/java/com/ycl/task/UYTask.java
index ce0ccac..1014aee 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -318,6 +318,7 @@
                 .map(TMonitorResult::getWorkOrder)
                 .collect(Collectors.toList());
         if (!CollectionUtils.isEmpty(workOrderList)) {
+            log.error("pointOnline鑾峰緱鎻掑叆宸ュ崟:{}",workOrderList);
             workOrderService.innerAddWorkOrder(workOrderList);
         }
         log.info("鐐逛綅鍦ㄧ嚎鐩戞祴瀹屾垚");
diff --git a/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java b/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java
index e40a3a3..f2d2d09 100644
--- a/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/WorkOrderTask.java
@@ -1,8 +1,12 @@
 package com.ycl.task;
 
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.ycl.platform.domain.entity.WorkOrder;
+import com.ycl.platform.domain.query.DistributeWorkOrderQuery;
+import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.platform.domain.vo.YwPointJobVO;
 import com.ycl.platform.mapper.WorkOrderMapper;
+import com.ycl.platform.service.WorkOrderService;
 import com.ycl.system.domain.SysConfig;
 import com.ycl.system.mapper.SysConfigMapper;
 import com.ycl.utils.DateUtils;
@@ -13,6 +17,8 @@
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -25,6 +31,7 @@
 @Component("workOrderTask")
 public class WorkOrderTask {
 
+    private final WorkOrderService workOrderService;
     private final WorkOrderMapper workOrderMapper;
     private final SysConfigMapper configMapper;
 
@@ -74,4 +81,30 @@
             workOrderMapper.updateById(wo);
         }
     }
+
+    public static List<String> errType = new ArrayList<>(List.of("OSD","ABNORMALPIC","DEVICEOFFLINE"));
+    //宸ュ崟涓嬪彂瀹氭椂浠诲姟锛� 宸ュ崟鍥犱负鏇存柊瀵艰嚧 鐘舵�佸彉涓哄緟涓嬪彂锛屾牴鎹敊璇被鍨嬪皢闇�瑕佺洿鎺ヤ笅鍙戝伐鍗�
+    //绂荤嚎锛屽浘褰㈠紓甯革紝osd閿欒
+    public void workOrderDistribute(){
+        //鏌ヨ浠婃棩寰呬笅鍙戝伐鍗�
+        Date now = new Date();
+        Date startDate = DateUtils.getDayStart(now);
+        Date endDate = DateUtils.getDayEnd(now);
+        //鑾峰緱浠婃棩宸ュ崟
+        List<WorkOrderVO> list = workOrderService.distributeList(startDate,endDate);
+        List<String> worderNos = new ArrayList<>();
+        for (WorkOrderVO workOrderVO : list){
+           for (String errType : workOrderVO.getErrorTypeList()){
+               if (WorkOrderTask.errType.contains(errType)){
+                   //鍒ゆ柇宸ュ崟鏄惁鍖呭惈errType涓殑閿欒绫诲瀷
+                   worderNos.add(workOrderVO.getWorkOrderNo());
+                   break;
+               }
+           }
+        }
+        DistributeWorkOrderQuery distributeWorkOrderQuery = new DistributeWorkOrderQuery();
+        distributeWorkOrderQuery.setWorkOrderNOList(worderNos);
+        //涓嬪彂鎺ュ彛
+        workOrderService.selectedIdsDistribute(distributeWorkOrderQuery);
+    }
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 6c43d09..f5c8a70 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -162,6 +162,44 @@
         p.yw_person_name
         ORDER BY wo.work_order_no DESC
     </select>
+    <select id="distributeList" resultMap="com.ycl.platform.domain.vo.WorkOrderVO">
+        SELECT
+            wo.id,wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, wo.yw_handle_time, wo.yw_result,
+            wo.yw_check_result, wo.overtime, wo.deduct,
+            u.unit_name,
+            p.yw_person_name,
+            yp.serial_number,
+            yp.important_tag,
+            yp.important_command_image_tag,
+            odr.create_time as distributeTime,
+            su.nick_name as realName,
+            tm.name as source,
+            GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR '銆�') AS errorType
+        FROM
+            t_work_order wo
+                INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
+                INNER JOIN t_yw_point yp ON yp.serial_number = wo.serial_number AND yp.deleted = 0
+                INNER JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
+                INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
+                INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
+                LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
+                LEFT JOIN t_work_order_distribute_record odr ON odr.work_order_no = wo.work_order_no AND odr.deleted = 0
+                LEFT JOIN sys_user su ON su.user_id = odr.user_id
+        WHERE
+            wo.deleted = 0
+          AND wo.create_time BETWEEN #{startDate} AND #{endDate}
+        GROUP BY
+            wo.id, wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, tm.name, wo.yw_handle_time,
+            wo.yw_result, wo.yw_check_result, wo.overtime, wo.deduct,
+            u.unit_name,
+            p.yw_person_name,
+            yp.important_tag,
+            yp.important_command_image_tag,
+            odr.create_time,
+            su.nick_name
+        ORDER BY wo.create_time DESC
+    </select>
+
     <select id="distributePage" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
         SELECT
         wo.id,wo.status, wo.work_order_no,wo.create_time, wo.unit_id, wo.yw_people_id, wo.yw_handle_time, wo.yw_result,

--
Gitblit v1.8.0