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-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java |  154 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 95 insertions(+), 59 deletions(-)

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);
                         }

--
Gitblit v1.8.0