From f6593a5f6f1138abf09a0ee69fc5119fdce412c9 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期六, 07 十二月 2024 17:52:07 +0800
Subject: [PATCH] 标签bug

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/HKTreeResult.java              |   32 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/TreeParam.java                  |    9 +
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java      |  154 +++++++++++-------
 ycl-server/src/main/java/com/ycl/task/HKTask.java                                       |   24 +++
 ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml                             |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java |   95 ++++++-----
 ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java                                   |  111 +++++++++++++
 ycl-server/src/main/java/com/ycl/task/UYTask.java                                       |    4 
 ycl-server/src/main/java/com/ycl/utils/bean/BeanUtils.java                              |   17 +
 9 files changed, 336 insertions(+), 112 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/TreeParam.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/TreeParam.java
new file mode 100644
index 0000000..a85da52
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/TreeParam.java
@@ -0,0 +1,9 @@
+package com.ycl.platform.domain.param.HK;
+
+import lombok.Data;
+
+@Data
+public class TreeParam extends BaseParam{
+    private String startDate;
+    private String endDate;
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/HKTreeResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/HKTreeResult.java
new file mode 100644
index 0000000..63b4f98
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/HKTreeResult.java
@@ -0,0 +1,32 @@
+package com.ycl.platform.domain.result.HK;
+
+import com.ycl.platform.domain.result.BaseResult;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+//鑰冩牳涓氬姟鏍�
+@Data
+public class HKTreeResult extends BaseResult {
+    //涓氬姟鏍戠被鍨� face/car
+    private String type;
+
+    private List<Tree> treeList;
+
+    /**
+     * 鑰冩牳涓氬姟鏍�
+     */
+    @Data
+    public static class Tree {
+        //涓氬姟鏍戠紪鐮�
+        private String cTreeCode;
+        //涓氬姟鏍戝悕绉�
+        private String cTreeName;
+        private Integer cType;
+        private String open;
+        private String iSystem;
+        private Date dCreateTime;
+
+    }
+}
diff --git a/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java b/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java
index 20beae5..46d442f 100644
--- a/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java
+++ b/ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java
@@ -2,16 +2,20 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.hikvision.artemis.sdk.ArtemisHttpUtil;
 import com.hikvision.artemis.sdk.config.ArtemisConfig;
 import com.ycl.platform.domain.param.HK.BaseParam;
 import com.ycl.platform.domain.param.HK.FaceDetectParam;
 import com.ycl.utils.DateUtils;
+import com.ycl.utils.bean.BeanUtils;
 import constant.ApiConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.util.CollectionUtils;
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -27,7 +31,7 @@
 
 
     /**
-     * 璋冪敤娴峰悍鎺ュ彛
+     * 璋冪敤娴峰悍鎺ュ彛 鍩虹鏁版嵁骞冲彴 Post璇锋眰
      *
      * @param apiUrl 鎺ュ彛鍦板潃锛�/api/dqd/service/rs/v2/data/faceDetect/query
      * @param params 璇锋眰鍙傛暟
@@ -80,6 +84,61 @@
         return dataList;
     }
 
+
+    /**
+     * 璋冪敤娴峰悍鎺ュ彛 鍩虹鏁版嵁骞冲彴 Get璇锋眰
+     *
+     * @param apiUrl 鎺ュ彛鍦板潃锛�
+     * @param params 璇锋眰鍙傛暟
+     * @param resultType 鍝嶅簲缁撴灉鎺ユ敹绫�
+     * @return 璋冪敤缁撴灉
+     */
+    public static <T> List<T> sendGetAPI(String host,String appKey,String appSecret,String apiUrl, BaseParam params, Class<T> resultType) {
+        // STEP1锛氳缃钩鍙板弬鏁帮紝鏍规嵁瀹為檯鎯呭喌,璁剧疆host appkey appsecret 涓変釜鍙傛暟.
+        ArtemisConfig.host = host; // 骞冲彴鐨刬p绔彛
+        ArtemisConfig.appKey = appKey;  // 瀵嗛挜appkey
+        ArtemisConfig.appSecret = appSecret;// 瀵嗛挜appSecret
+
+        // STEP2锛氳缃甇penAPI鎺ュ彛鐨勪笂涓嬫枃
+        final String ARTEMIS_PATH = "/artemis/aaoo";
+
+        // STEP3锛氳缃帴鍙g殑URI鍦板潃
+        final String previewURLsApi = ARTEMIS_PATH + apiUrl;
+        Map<String, String> path = new HashMap<String, String>(2) {
+            {
+                put("https://", previewURLsApi);
+            }
+        };
+
+        // STEP4锛氳缃弬鏁版彁浜ゆ柟寮�
+        // STEP5锛氱粍瑁呰姹傚弬鏁�
+        Map<String, String> queryMap = object2Map(params);
+        log.info("璇锋眰鍙傛暟"+queryMap);
+        // STEP6锛氳皟鐢ㄦ帴鍙�
+        String result = null;
+        List<T> dataList = new ArrayList<>();
+        for (int i = 0; i < 10; i++) {
+            result = ArtemisHttpUtil.doGetArtemis(path, queryMap, null,  null , null);
+            JSONObject jsonObject = JSONObject.parseObject(result);
+            log.info("璇锋眰缁撴灉"+jsonObject);
+            if(jsonObject.getString("code") == null || !ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))){
+                log.error("璇锋眰澶辫触{}",result);
+                dataList = null;
+                break;
+            }
+            List<T> resultList = HkApiUtil.getDataList(JSONObject.parseObject(result), resultType);
+            if(CollectionUtils.isEmpty(resultList) || resultList.size()<ApiConstants.HKPageSize) {
+                dataList.addAll(resultList);
+                break;
+            }else {
+                dataList.addAll(resultList);
+                params.setPageNo(params.getPageNo()+1);
+            }
+        }
+
+        return dataList;
+    }
+
     //瑙f瀽鏁版嵁
     private static <T> List<T> getDataList(JSONObject jsonObject, Class<T> resultClass) {
         if (jsonObject != null && ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))) {
@@ -96,6 +155,56 @@
         return null;
     }
 
+    /**
+     * 瀹炰綋瀵硅薄杞垚Map
+     * @param obj 瀹炰綋瀵硅薄
+     * @return
+     */
+    public static Map<String, String> object2Map(Object obj) {
+        Map<String, String> map = new HashMap<>();
+        if (obj == null) {
+            return map;
+        }
+        Class clazz = obj.getClass();
+        Field[] fields = clazz.getDeclaredFields();
+        try {
+            for (Field field : fields) {
+                field.setAccessible(true);
+                map.put(field.getName(), field.get(obj).toString());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return map;
+    }
 
+    /**
+     * Map杞垚瀹炰綋瀵硅薄
+     * @param map map瀹炰綋瀵硅薄鍖呭惈灞炴��
+     * @param clazz 瀹炰綋瀵硅薄绫诲瀷
+     * @return
+     */
+    public static Object map2Object(Map<String, Object> map, Class<?> clazz) {
+        if (map == null) {
+            return null;
+        }
+        Object obj = null;
+        try {
+            obj = clazz.newInstance();
+
+            Field[] fields = obj.getClass().getDeclaredFields();
+            for (Field field : fields) {
+                int mod = field.getModifiers();
+                if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
+                    continue;
+                }
+                field.setAccessible(true);
+                field.set(obj, map.get(field.getName()));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return obj;
+    }
 }
 
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 6d642bd..d238b64 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
@@ -37,6 +37,7 @@
 
     private final WorkOrderService workOrderService;
     private final IYwThresholdService ywThresholdService;
+
     /**
      * 鍥惧儚妫�娴嬬敓鎴愬伐鍗�
      *
@@ -45,40 +46,40 @@
     @Override
     public void imageDetectionCheck(List<ImageDetectionResult> dataList) {
         List<WorkOrder> workOrderList = dataList.stream().filter(item -> -1 == item.getSignal()
-                || -1 == item.getImage()
-        )
-        .map(item -> {
-            WorkOrder workOrder = new WorkOrder();
-            // 淇″彿缂哄け
-            if (-1 == item.getSigna1() ) {
-                this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId());
-            }
-            // 鐢婚潰鍋忚壊
-            if (-1 == item.getColor()) {
-                this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId());
-            }
-            // 闆姳骞叉壈
-            if (-1 == item.getSnow()) {
-                this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId());
-            }
-            // 鏉$汗骞叉壈
-            if (-1 == item.getStripe()) {
-                this.genWorkOrder(workOrder, ErrorType.STRIPE_INTERFERENCE, item.getDeviceId());
-            }
-            // 鐢婚潰閬尅
-            if (-1 == item.getShade()) {
-                this.genWorkOrder(workOrder, ErrorType.SCREEN_OCCLUSION, item.getDeviceId());
-            }
-            // 娓呮櫚搴﹀紓甯�
-            if (-1 == item.getBlur()) {
-                this.genWorkOrder(workOrder, ErrorType.ABNORMAL_CLARITY, item.getDeviceId());
-            }
+                        || -1 == item.getImage()
+                )
+                .map(item -> {
+                    WorkOrder workOrder = new WorkOrder();
+                    // 淇″彿缂哄け
+                    if (-1 == item.getSigna1()) {
+                        this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId());
+                    }
+                    // 鐢婚潰鍋忚壊
+                    if (-1 == item.getColor()) {
+                        this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId());
+                    }
+                    // 闆姳骞叉壈
+                    if (-1 == item.getSnow()) {
+                        this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId());
+                    }
+                    // 鏉$汗骞叉壈
+                    if (-1 == item.getStripe()) {
+                        this.genWorkOrder(workOrder, ErrorType.STRIPE_INTERFERENCE, item.getDeviceId());
+                    }
+                    // 鐢婚潰閬尅
+                    if (-1 == item.getShade()) {
+                        this.genWorkOrder(workOrder, ErrorType.SCREEN_OCCLUSION, item.getDeviceId());
+                    }
+                    // 娓呮櫚搴﹀紓甯�
+                    if (-1 == item.getBlur()) {
+                        this.genWorkOrder(workOrder, ErrorType.ABNORMAL_CLARITY, item.getDeviceId());
+                    }
 //            // 浜害寮傚父
 //            if (-1 == item.getLight()) {
 //                this.genWorkOrder(workOrder, ErrorType.ABNORMAL_BRIGHTNESS, item.getDeviceId());
 //            }
-            return workOrder;
-        }).collect(Collectors.toList());
+                    return workOrder;
+                }).collect(Collectors.toList());
         workOrderService.innerAddWorkOrder(workOrderList);
     }
 
@@ -91,18 +92,22 @@
     public void monitorQualifyCheck(List<MonitorQualifyResult> dataList) {
         List<WorkOrder> workOrderList = dataList.stream().map(item -> {
             WorkOrder workOrder = new WorkOrder();
-            if (item.getSerialNumber().getError()
-                    || item.getCivilCode().getError()
-                    || item.getIntegrated_device().getError()
-                    || item.getIp().getError()
-                    || item.getJkdwlx().getError()
-                    || item.getLatitude().getError()
-                    || item.getLongitude().getError()
-                    || item.getMacdz().getError()
-                    || item.getSbzt().getError()
-                    || item.getName().getError()
-                    || item.getSxjcjqy().getError()
-                    || item.getSxjgnlx().getError()) {
+            //TODO:寰呬紭浜戜慨澶嶏紝閬垮厤宸ュ崟
+            MonitorQualifyResult.QualifyResult qualifyResult = new MonitorQualifyResult.QualifyResult();
+            qualifyResult.setError(false);
+            item.setIntegrated_device(qualifyResult);
+            if (item.getSerialNumber() == null || item.getSerialNumber().getError() ||
+                    item.getCivilCode() == null || item.getCivilCode().getError() ||
+                    item.getIntegrated_device() == null || item.getIntegrated_device().getError() ||
+                    item.getIp() == null || item.getIp().getError() ||
+                    item.getJkdwlx() == null || item.getJkdwlx().getError() ||
+                    item.getLatitude() == null || item.getLatitude().getError() ||
+                    item.getLongitude() == null || item.getLongitude().getError() ||
+                    item.getMacdz() == null || item.getMacdz().getError() ||
+                    item.getSbzt() == null || item.getSbzt().getError() ||
+                    item.getName() == null || item.getName().getError() ||
+                    item.getSxjcjqy() == null || item.getSxjcjqy().getError() ||
+                    item.getSxjgnlx() == null || item.getSxjgnlx().getError()) {
                 this.genWorkOrder(workOrder, ErrorType.POINT_INFO_ERROR, item.getSerialNumber().getValue());
             }
             return workOrder;
@@ -114,7 +119,7 @@
     public void videoOnlineCheck(List<VideoOnlineResult> dataList) {
         List<WorkOrder> workOrderList = dataList.stream().map(item -> {
             WorkOrder workOrder = new WorkOrder();
-            if (ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus()) ) {
+            if (ApiConstants.UY_OnlineSite_Offline.equals(item.getStatus())) {
                 this.genWorkOrder(workOrder, ErrorType.DEVICE_OFFLINE, item.getDeviceId());
             }
 //            else if (0 == item.getStatus()) {
@@ -160,7 +165,7 @@
             long checkTime = item.getCheckTime().getTime();
             long osdTime = item.getSetTime().getTime();
             Long timeDiff = (checkTime - osdTime) / 1000;
-            ywThresholdService.check(YwThreadConstants.Video_DiffTime,timeDiff ,item.getDeviceNo(),ywThresholdMap,workOrder,CompareType.MORE_THAN_EQ,ErrorType.CLOCK_SKEW.getValue());
+            ywThresholdService.check(YwThreadConstants.Video_DiffTime, timeDiff, item.getDeviceNo(), ywThresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.CLOCK_SKEW.getValue());
             return workOrder;
         }).collect(Collectors.toList());
         workOrderService.innerAddWorkOrder(workOrderList);
@@ -170,7 +175,7 @@
      * 宸ュ崟淇℃伅
      *
      * @param workOrder
-     * @param errorType 鏁呴殰绫诲瀷
+     * @param errorType    鏁呴殰绫诲瀷
      * @param serialNumber 鍥芥爣鐮�
      */
     private void genWorkOrder(WorkOrder workOrder, ErrorType errorType, String serialNumber) {
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
index 0ea3f58..8289811 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
@@ -72,6 +72,7 @@
 
     @Autowired
     private WorkOrderWhiteMapper workOrderWhiteMapper;
+
     /**
      * 鏌ヨ杩愮淮闃堝��
      *
@@ -156,7 +157,7 @@
         // 骞冲彴绂荤嚎鏁呴殰妫�娴�
         if (CollectionUtils.isEmpty(list)) {
             Boolean ping = PingUtil.ping("", 5);
-            if (! ping) {
+            if (!ping) {
 
             }
         }
@@ -197,23 +198,35 @@
             }
             WorkOrder workOrder = new WorkOrder();
             //妫�鏌ユ椂閽熷噯纭巼
-            Float clockPercent = result.getSnapClock().getClockPercent();
-            check(YwThreadConstants.Face_ClockPercent, clockPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.CLOCK_RIGHT.getValue());
+            if (result.getSnapClock() != null) {
+                Float clockPercent = result.getSnapClock().getClockPercent();
+                check(YwThreadConstants.Face_ClockPercent, clockPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.CLOCK_RIGHT.getValue());
+            }
             //妫�鏌ユ暟鎹強鏃剁巼
-            Float timelyPercent = result.getSnapTimely().getTimelyPercent();
-            check(YwThreadConstants.Face_TimelyPercent, timelyPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.DATA_TIMELY_ERROR.getValue());
+            if (result.getSnapTimely() != null) {
+                Float timelyPercent = result.getSnapTimely().getTimelyPercent();
+                check(YwThreadConstants.Face_TimelyPercent, timelyPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.DATA_TIMELY_ERROR.getValue());
+            }
             //妫�鏌ユ寔缁棤鏁版嵁澶╂暟
-            Integer continueNoDataCount = result.getContinueNoDataCount();
-            check(YwThreadConstants.Face_ContinueNoDataCount, continueNoDataCount, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.LONG_DAY_NO_DATA.getValue());
+            if (result.getContinueNoDataCount() != null) {
+                Integer continueNoDataCount = result.getContinueNoDataCount();
+                check(YwThreadConstants.Face_ContinueNoDataCount, continueNoDataCount, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.LONG_DAY_NO_DATA.getValue());
+            }
             //妫�鏌ヤ笉鍞竴鏁版嵁閲�
-            Integer nouniqueCount = result.getSnapUnique().getNouniqueCount();
-            check(YwThreadConstants.Face_NouniqueCount, nouniqueCount, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.NOT_UNIQUE_DATA_VOLUME.getValue());
+            if (result.getSnapUnique() != null) {
+                Integer nouniqueCount = result.getSnapUnique().getNouniqueCount();
+                check(YwThreadConstants.Face_NouniqueCount, nouniqueCount, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.NOT_UNIQUE_DATA_VOLUME.getValue());
+            }
             //妫�鏌ヤ汉鑴镐綆璇勫垎鐜�
-            Float lowScorePercent = result.getSnapValidity().getLowScorePercent();
-            check(YwThreadConstants.Face_LowScorePercent, lowScorePercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.FACE_LOW.getValue());
+            if (result.getSnapValidity() != null) {
+                Float lowScorePercent = result.getSnapValidity().getLowScorePercent();
+                check(YwThreadConstants.Face_LowScorePercent, lowScorePercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.FACE_LOW.getValue());
+            }
             //妫�鏌ュ缓妯″け璐ョ巼
-            Float failPercent = result.getSnapValidity().getFailPercent();
-            check(YwThreadConstants.Face_FailPercent, failPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.MODELING_FAIL.getValue());
+            if (result.getSnapValidity() != null) {
+                Float failPercent = result.getSnapValidity().getFailPercent();
+                check(YwThreadConstants.Face_FailPercent, failPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.MODELING_FAIL.getValue());
+            }
             // 鐐逛綅鍦ㄧ嚎鐜�
             if (2 == result.getSnapResult()) {
                 workOrder.setSerialNumber(result.getExternalIndexCode());
@@ -259,22 +272,32 @@
             Integer continueNoDataCount = result.getContinueNoDataCount();
             check(YwThreadConstants.Car_ContinueNoDataCount, continueNoDataCount, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.LONG_DAY_NO_DATA.getValue());
             //妫�鏌ユ椂閽熷噯纭巼
-            Float clockPercent = result.getSnapClock().getClockPercent();
-            check(YwThreadConstants.Car_ClockPercent, clockPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.CLOCK_RIGHT.getValue());
+            if (result.getSnapClock() != null) {
+                Float clockPercent = result.getSnapClock().getClockPercent();
+                check(YwThreadConstants.Car_ClockPercent, clockPercent, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.CLOCK_RIGHT.getValue());
+            }
             //妫�鏌ユ暟鎹強鏃剁巼
-            Float timelyPercentResult = result.getSnapTimely().getTimelyPercent();
-            check(YwThreadConstants.Car_TimelyPercent, timelyPercentResult, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.DATA_TIMELY_ERROR.getValue());
+            if (result.getSnapTimely() != null) {
+                Float timelyPercentResult = result.getSnapTimely().getTimelyPercent();
+                check(YwThreadConstants.Car_TimelyPercent, timelyPercentResult, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.DATA_TIMELY_ERROR.getValue());
+            }
             //妫�鏌ヤ笉鍞竴鏁版嵁閲�
-            Integer nouniqueCountResult = result.getSnapUnique().getNouniqueCount();
-            check(YwThreadConstants.Car_NouniqueCount, nouniqueCountResult, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.NOT_UNIQUE_DATA_VOLUME.getValue());
+            if (result.getSnapUnique() != null) {
+                Integer nouniqueCountResult = result.getSnapUnique().getNouniqueCount();
+                check(YwThreadConstants.Car_NouniqueCount, nouniqueCountResult, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.NOT_UNIQUE_DATA_VOLUME.getValue());
+            }
             //妫�鏌ョ櫧澶╂湭璇嗗埆閲�
-            Integer dayNoNumberCountResult = result.getSnapPlate().getDayNoNumberCount();
-            check(YwThreadConstants.Car_DayNoNumberCount, dayNoNumberCountResult, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.UNRECOGNIZED_DAY_VOLUME.getValue());
+            if (result.getSnapPlate() != null) {
+                Integer dayNoNumberCountResult = result.getSnapPlate().getDayNoNumberCount();
+                check(YwThreadConstants.Car_DayNoNumberCount, dayNoNumberCountResult, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.MORE_THAN_EQ, ErrorType.UNRECOGNIZED_DAY_VOLUME.getValue());
+            }
             //杞﹁締涓昏灞炴�т竴鑷寸巼
-            Integer noIntegrityCountResult = result.getIntegrity().getMainNoIntegrityCount();
-            Integer dataCount = result.getDataCount();
-            Double integrityRate = ((double)dataCount-noIntegrityCountResult)/dataCount;
-            check(YwThreadConstants.Car_NoIntegrityCount, integrityRate, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.CAR_SIX.getValue());
+            if (result.getIntegrity() != null) {
+                Integer noIntegrityCountResult = result.getIntegrity().getMainNoIntegrityCount();
+                Integer dataCount = result.getDataCount();
+                Double integrityRate = ((double) dataCount - noIntegrityCountResult) / dataCount;
+                check(YwThreadConstants.Car_NoIntegrityCount, integrityRate, result.getExternalIndexCode(), thresholdMap, workOrder, CompareType.LESS_THAN_EQ, ErrorType.CAR_SIX.getValue());
+            }
             // 鐐逛綅鍦ㄧ嚎鐜�
             if (2 == result.getSnapResult()) {
                 workOrder.setSerialNumber(result.getExternalIndexCode());
@@ -316,6 +339,7 @@
 
     /**
      * 鐧藉悕鍗曡鎯�
+     *
      * @param id
      * @return
      */
@@ -326,6 +350,7 @@
         workOrderWhite.setErrorTypeList(errorTypeList);
         return Result.ok().data(workOrderWhite);
     }
+
     /**
      * 宸ュ崟鐧藉悕鍗曞垪琛�
      *
@@ -338,10 +363,10 @@
         IPage<WorkOrderWhite> page = PageUtil.getPage(query, WorkOrderWhite.class);
         workOrderWhiteMapper.page(page, query);
         List<WorkOrderWhite> records = page.getRecords();
-        records.forEach(white-> {
+        records.forEach(white -> {
             List<String> errorTextList = new ArrayList<>();
             List<String> errorTypeList = Arrays.asList(white.getErrorType().split(","));
-            errorTypeList.forEach(error->{
+            errorTypeList.forEach(error -> {
                 String errorText = ErrorType.getDescriptionByValue(error);
                 errorTextList.add(errorText);
             });
@@ -365,12 +390,13 @@
             return Result.error("璇ヨ澶囧凡瀛樺湪鐧藉悕鍗�");
         } else {
             List<String> errorTypeList = workOrderWhite.getErrorTypeList();
-            workOrderWhite.setErrorType(String.join(",",errorTypeList));
+            workOrderWhite.setErrorType(String.join(",", errorTypeList));
             workOrderWhite.setCreateBy(SecurityUtils.getUsername());
             workOrderWhiteMapper.insert(workOrderWhite);
             return Result.ok();
         }
     }
+
     /**
      * 淇敼宸ュ崟鐧藉悕鍗�
      *
@@ -383,7 +409,7 @@
         WorkOrderWhite white = workOrderWhiteMapper.selectBySerialNumber(workOrderWhite.getSerialNumber());
         workOrderWhite.setId(white.getId());
         List<String> errorTypeList = workOrderWhite.getErrorTypeList();
-        workOrderWhite.setErrorType(String.join(",",errorTypeList));
+        workOrderWhite.setErrorType(String.join(",", errorTypeList));
         workOrderWhiteMapper.updateById(workOrderWhite);
         return Result.ok();
     }
@@ -399,8 +425,10 @@
         workOrderWhiteMapper.batchDelete(ids);
         return Result.ok();
     }
+
     /**
      * 鐧藉悕鍗曞鍑�
+     *
      * @param response
      * @throws IOException
      */
@@ -408,10 +436,10 @@
     public void whiteExport(HttpServletResponse response) throws IOException {
         //鐧藉悕鍗曟暟鎹�
         List<WorkOrderWhiteExport> data = workOrderWhiteMapper.whiteExport();
-        data.forEach(white-> {
+        data.forEach(white -> {
             List<String> errorTextList = new ArrayList<>();
             List<String> errorTypeList = Arrays.asList(white.getErrorType().split(","));
-            errorTypeList.forEach(error->{
+            errorTypeList.forEach(error -> {
                 String errorText = ErrorType.getDescriptionByValue(error);
                 errorTextList.add(errorText);
             });
@@ -426,7 +454,7 @@
             errorExports.add(errorExport);
         });
         ExcelWriter excelWriter = null;
-        try(OutputStream outputStream = response.getOutputStream()) {
+        try (OutputStream outputStream = response.getOutputStream()) {
             excelWriter = EasyExcel.write(outputStream).build();
 
             WriteSheet whiteSheet = EasyExcel.writerSheet(0, "宸ュ崟鐧藉悕鍗曟竻鍗�").head(WorkOrderWhiteExport.class).build();
@@ -436,7 +464,7 @@
             excelWriter.write(errorExports, errorSheet);
             excelWriter.finish();
             outputStream.flush();
-        }catch (Exception e) {
+        } catch (Exception e) {
             e.printStackTrace();
         } finally {
             try {
@@ -451,12 +479,13 @@
 
     /**
      * 瀵煎叆宸ュ崟鐧藉悕鍗�
+     *
      * @param file
      * @return
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Result importWhite(MultipartFile file) throws IOException{
+    public Result importWhite(MultipartFile file) throws IOException {
 //        Consumer<List<WorkOrderWhiteExport>> consumer = (dataList) -> {
 //            try {
 //                this.updateWhite(dataList);
@@ -477,15 +506,17 @@
                 // 灏嗚鍙栧埌鐨勬瘡涓�琛屽瓨鍏eportDetails闆嗗悎涓�
                 dataList.add(excel);
             }
+
             @Override
-            public void doAfterAllAnalysed(AnalysisContext analysisContext) {}
+            public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+            }
         }).sheet().doRead();
 
         if (CollectionUtils.isEmpty(dataList)) {
             throw new RuntimeException("瀵煎叆鏁版嵁涓嶈兘涓虹┖");
         }
         boolean duplic = checkDuplic(dataList);
-        if(duplic) throw new RuntimeException("瀛樺湪閲嶅鍥芥爣璁惧");
+        if (duplic) throw new RuntimeException("瀛樺湪閲嶅鍥芥爣璁惧");
         //宸插瓨鍦ㄧ殑鐧藉悕鍗�
         Map<String, WorkOrderWhite> whiteMap = workOrderWhiteMapper.selectList().stream().collect(Collectors.toMap(WorkOrderWhite::getSerialNumber, Function.identity()));
         List<WorkOrderWhite> addList = new ArrayList<>();
@@ -496,34 +527,36 @@
             //澶囨敞
             white.setRemark(item.getRemark());
             String errorType = item.getErrorType();
-            if(StringUtils.isEmpty(errorType)){
-                throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滀笉鑳戒负绌�");
+            if (StringUtils.isEmpty(errorType)) {
+                throw new RuntimeException("鍥芥爣鐮佷负" + item.getSerialNumber() + "鐨勮澶囨晠闅滀笉鑳戒负绌�");
             }
             try {
                 List<String> errorDataList = new ArrayList<>();
                 List<String> errorExcelList = Arrays.asList(item.getErrorType().split(","));
-                errorExcelList.forEach(desc->{
+                errorExcelList.forEach(desc -> {
                     //鎶婁腑鏂囪浆鎹负鏁版嵁搴撳瓨鍌ㄦ牸寮�
                     String errorText = ErrorType.getValueByDescription(desc);
                     //鎵句笉鍒版姏鍑哄紓甯�
-                    if(errorText == null) throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�");
+                    if (errorText == null)
+                        throw new RuntimeException("鍥芥爣鐮佷负" + item.getSerialNumber() + "鐨勮澶囨晠闅滅被鍨嬫湁璇�");
                     errorDataList.add(errorText);
                 });
                 white.setErrorType(String.join(",", errorDataList));
                 //濡傛灉宸插瓨鍦ㄨˉ鍏卛d
                 WorkOrderWhite whiteExsit = whiteMap.get(white.getSerialNumber());
-                if(whiteExsit!=null) white.setId(whiteExsit.getId());
+                if (whiteExsit != null) white.setId(whiteExsit.getId());
                 addList.add(white);
             } catch (Exception e) {
-                throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�");
+                throw new RuntimeException("鍥芥爣鐮佷负" + item.getSerialNumber() + "鐨勮澶囨晠闅滅被鍨嬫湁璇�");
             }
         });
-        if(!CollectionUtils.isEmpty(addList)) {
+        if (!CollectionUtils.isEmpty(addList)) {
             workOrderWhiteMapper.deleteAll();
             workOrderWhiteMapper.insertBatch(addList);
         }
         return Result.ok();
     }
+
     /**
      * 淇敼鐧藉悕鍗�
      *
@@ -545,46 +578,49 @@
             //澶囨敞
             white.setRemark(item.getRemark());
             String errorType = item.getErrorType();
-            if(StringUtils.isEmpty(errorType)){
-                throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滀笉鑳戒负绌�");
+            if (StringUtils.isEmpty(errorType)) {
+                throw new RuntimeException("鍥芥爣鐮佷负" + item.getSerialNumber() + "鐨勮澶囨晠闅滀笉鑳戒负绌�");
             }
             try {
                 List<String> errorDataList = new ArrayList<>();
                 List<String> errorExcelList = Arrays.asList(item.getErrorType().split(","));
-                errorExcelList.forEach(desc->{
+                errorExcelList.forEach(desc -> {
                     //鎶婁腑鏂囪浆鎹负鏁版嵁搴撳瓨鍌ㄦ牸寮�
                     String errorText = ErrorType.getValueByDescription(desc);
                     //鎵句笉鍒版姏鍑哄紓甯�
-                    if(errorText == null) throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�");
+                    if (errorText == null)
+                        throw new RuntimeException("鍥芥爣鐮佷负" + item.getSerialNumber() + "鐨勮澶囨晠闅滅被鍨嬫湁璇�");
                     errorDataList.add(errorText);
                 });
                 white.setErrorType(String.join(",", errorDataList));
-                if(!CollectionUtils.isEmpty(serialNumbers) && serialNumbers.contains(white.getSerialNumber())){
+                if (!CollectionUtils.isEmpty(serialNumbers) && serialNumbers.contains(white.getSerialNumber())) {
                     updateList.add(white);
-                }else {
+                } else {
                     addList.add(white);
                 }
             } catch (Exception e) {
-                throw new RuntimeException("鍥芥爣鐮佷负"+item.getSerialNumber()+"鐨勮澶囨晠闅滅被鍨嬫湁璇�");
+                throw new RuntimeException("鍥芥爣鐮佷负" + item.getSerialNumber() + "鐨勮澶囨晠闅滅被鍨嬫湁璇�");
             }
         });
-        if(!CollectionUtils.isEmpty(addList)) workOrderWhiteMapper.insertBatch(addList);
-        if(!CollectionUtils.isEmpty(updateList)) workOrderWhiteMapper.updateBatch(updateList);
+        if (!CollectionUtils.isEmpty(addList)) workOrderWhiteMapper.insertBatch(addList);
+        if (!CollectionUtils.isEmpty(updateList)) workOrderWhiteMapper.updateBatch(updateList);
     }
 
     /**
      * 妫�鏌ラ槇鍊�
      *
-     * @param key 鏌愰槇鍊兼爣璇�
-     * @param value 鎺ュ彛鑾峰彇鍒扮殑鍊�
+     * @param key          鏌愰槇鍊兼爣璇�
+     * @param value        鎺ュ彛鑾峰彇鍒扮殑鍊�
      * @param serialNumber 鍥芥爣鐮�
-     * @param thresholds 闃堝�兼潯浠秏ap
-     * @param compareType 姣旇緝鏂瑰紡锛�>=    <=
-     * @param errorType 鏁呴殰绫诲瀷
+     * @param thresholds   闃堝�兼潯浠秏ap
+     * @param compareType  姣旇緝鏂瑰紡锛�>=    <=
+     * @param errorType    鏁呴殰绫诲瀷
      * @param <T>
      */
     @Override
-    public <T extends Comparable<T>> void check(String key, T value, String serialNumber, Map<String, YwThreshold> thresholds, WorkOrder workOrder, CompareType compareType,String errorType) {
+    public <T extends Comparable<T>> void check(String key, T value, String
+            serialNumber, Map<String, YwThreshold> thresholds, WorkOrder workOrder, CompareType compareType, String
+                                                        errorType) {
         Optional.ofNullable(value).ifPresentOrElse(
                 v -> {
                     YwThreshold ywThreshold = thresholds.get(key);
@@ -593,7 +629,7 @@
                     T thresholdAutoValue = parseThreshold(ywThreshold.getValueAuto(), value.getClass());
                     //鐩存帴涓嬪彂宸ュ崟闃堝��
                     T thresholdValue = parseThreshold(ywThreshold.getValue(), value.getClass());
-                    if("percent".equals(ywThreshold.getCountType())){
+                    if ("percent".equals(ywThreshold.getCountType())) {
                         if (thresholdAutoValue instanceof Float) {
                             thresholdAutoValue = (T) Float.valueOf(((Float) thresholdAutoValue) / 100f);
                         }
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 993e794..10815fd 100644
--- a/ycl-server/src/main/java/com/ycl/task/HKTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -406,6 +406,30 @@
         log.info("缁撴潫浜鸿劯璁惧鎶芥鎸囨爣鐩戞祴缁撴灉鏁版嵁鍚屾");
     }
 
+    //涓氬姟鏍�
+    public void TreeTask() {
+        log.info("寮�濮嬫墽琛屼笟鍔℃爲鏁版嵁");
+        TreeParam param = new TreeParam();
+        param.setStartDate("2024-12-06");
+        param.setEndDate("2024-12-06");
+        List<HKTreeResult> faceList = HkApiUtil.sendGetAPI(host,appKey,appSecret,"/api/third/timeTree", param, HKTreeResult.class);
+//        if (!CollectionUtils.isEmpty(faceList)) {
+//            //濡傛灉浠婂ぉ瀛樺湪涔嬪墠鐨勬暟鎹厛鍒犻櫎
+//            Query query = new Query(Criteria
+//                    .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
+//            DeleteResult result = mongoTemplate.remove(query, FaceDeviceSamplingResult.class);
+//            faceList.stream().forEach(item -> {
+//                if (Objects.nonNull(item.getExternalIndexCode())) {
+//                    item.setNo(item.getExternalIndexCode());
+//                }
+//            });
+//            pointService.setDeviceTagByGB(faceList,CheckConstants.Rule_Category_Face);
+//            //瀛樻斁鍦╩ongo涓�
+//            mongoTemplate.insertAll(faceList);
+//        }
+        log.info("缁撴潫涓氬姟鏍戞暟鎹�");
+    }
+
     //瑙f瀽鏁版嵁
     private <T> List<T> getDataList(JSONObject jsonObject, Class<T> resultClass, String message) {
         if (jsonObject != null && ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))) {
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 138418e..a0a9369 100644
--- a/ycl-server/src/main/java/com/ycl/task/UYTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -197,7 +197,9 @@
         List<TMonitorResult> monitorList = monitorMapper.getDistinctIP();
         //琛ュ厖閿欒鏃堕棿鐐�
         Query onlineQuery = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
-        Map<String, TMonitorResult> mongoMap = mongoTemplate.find(onlineQuery, TMonitorResult.class).stream().collect(Collectors.toMap(TMonitorResult::getNo, Function.identity()));
+        Map<String, TMonitorResult> mongoMap = mongoTemplate.find(onlineQuery, TMonitorResult.class)
+                .stream()
+                .collect(Collectors.toMap(TMonitorResult::getNo, Function.identity(), (existing, replacement) -> replacement));
         for (TMonitorResult result : monitorList) {
             TMonitorResult mongoData = mongoMap.get(result.getNo());
             if(mongoData!=null){
diff --git a/ycl-server/src/main/java/com/ycl/utils/bean/BeanUtils.java b/ycl-server/src/main/java/com/ycl/utils/bean/BeanUtils.java
index 93cde63..6e5af9e 100644
--- a/ycl-server/src/main/java/com/ycl/utils/bean/BeanUtils.java
+++ b/ycl-server/src/main/java/com/ycl/utils/bean/BeanUtils.java
@@ -1,14 +1,18 @@
 package com.ycl.utils.bean;
 
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 /**
  * Bean 宸ュ叿绫�
- * 
+ *
  * @author ruoyi
  */
 public class BeanUtils extends org.springframework.beans.BeanUtils
@@ -24,7 +28,7 @@
 
     /**
      * Bean灞炴�у鍒跺伐鍏锋柟娉曘��
-     * 
+     *
      * @param dest 鐩爣瀵硅薄
      * @param src 婧愬璞�
      */
@@ -42,7 +46,7 @@
 
     /**
      * 鑾峰彇瀵硅薄鐨剆etter鏂规硶銆�
-     * 
+     *
      * @param obj 瀵硅薄
      * @return 瀵硅薄鐨剆etter鏂规硶鍒楄〃
      */
@@ -70,7 +74,7 @@
 
     /**
      * 鑾峰彇瀵硅薄鐨刧etter鏂规硶銆�
-     * 
+     *
      * @param obj 瀵硅薄
      * @return 瀵硅薄鐨刧etter鏂规硶鍒楄〃
      */
@@ -97,7 +101,7 @@
     /**
      * 妫�鏌ean鏂规硶鍚嶄腑鐨勫睘鎬у悕鏄惁鐩哥瓑銆�<br>
      * 濡俫etName()鍜宻etName()灞炴�у悕涓�鏍凤紝getName()鍜宻etAge()灞炴�у悕涓嶄竴鏍枫��
-     * 
+     *
      * @param m1 鏂规硶鍚�1
      * @param m2 鏂规硶鍚�2
      * @return 灞炴�у悕涓�鏍疯繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse
@@ -107,4 +111,7 @@
     {
         return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX));
     }
+
+
+
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
index 7a95e7d..ae5d9d2 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -232,7 +232,7 @@
         deleted = 0 AND serial_number in
         <foreach collection="gbList" open="(" separator="," close=")" item="no">#{no}</foreach>
         GROUP BY
-        serial_number, province_tag_face,province_tag_car,province_tag_videogetTagsByGB, important_tag, important_command_image_tag, dept_tag
+        serial_number, province_tag_face,province_tag_car,province_tag_video, important_tag, important_command_image_tag, dept_tag
     </select>
 
     <select id="selectToCount" resultType="com.ycl.platform.domain.vo.YwPointVO">

--
Gitblit v1.8.0