From 73a30f7dd65af02bf37b516cc6689ca453fcc2ca Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 02 八月 2024 16:29:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java |   73 +++++++++++++++++++++++++++---------
 1 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarAttrRecognitionCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
similarity index 60%
rename from ycl-server/src/main/java/com/ycl/calculate/CarAttrRecognitionCalculation.java
rename to ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
index 71911f4..4f275ab 100644
--- a/ycl-server/src/main/java/com/ycl/calculate/CarAttrRecognitionCalculation.java
+++ b/ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
@@ -14,6 +14,7 @@
 import utils.DateUtils;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -22,13 +23,13 @@
 import java.util.stream.Collectors;
 
 /**
- * 璁$畻杞﹁締灞炴�ц瘑鍒噯纭巼
- * 閲囩敤杞﹁締鎶芥鎸囨爣鎺ュ彛鏁版嵁
+ * 杞﹁締鏁版嵁鎶芥鎺ュ彛
+ * 璁$畻杞﹁締灞炴�ц瘑鍒噯纭巼銆乽rl鍙敤鎬с�佸ぇ鍥惧彲鐢ㄦ��
  * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
  * 鏇存柊鎴栨柊澧�
  */
 @Component
-public class CarAttrRecognitionCalculation extends IndexCalculationServe implements CalculationStrategy<VehicleDeviceSamplingResult> {
+public class CarDeviceSampleCalculation extends IndexCalculationServe implements CalculationStrategy<VehicleDeviceSamplingResult> {
     @Autowired
     private CheckIndexCarMapper checkIndexCarMapper;
     @Autowired
@@ -36,12 +37,18 @@
     @Autowired
     private ICheckIndexCarService checkIndexCarService;
 
-    //鍖哄煙杞﹁締灞炴�ц瘑鍒噯纭巼
+    //鍖哄煙杞﹁締鎶芥鎸囨爣
     private static class AreaStats {
         int totalSites = 0;
         int importantTotalSites = 0;
+        //灞炴�ц瘑鍒噯纭殑鐐逛綅鏁�
         int accuracySites = 0;
-        int importantAccuracySitesSites = 0;
+        //灞炴�ц瘑鍒噯纭殑閲嶇偣鐐逛綅鏁�
+        int importantAccuracySites = 0;
+        //url鍙闂殑鐐逛綅鏁�
+        int urlUsabilitySites = 0;
+        //鍥剧墖鍙敤鐨勭偣浣嶆暟
+        int picUsabilitySites = 0;
     }
 
     @Override
@@ -78,7 +85,9 @@
         areaStatsMap.forEach((deptId, stats) -> {
             if (stats.totalSites > 0) {
                 CheckIndexCar checkIndexCar = createOrUpdateCheckIndexCar(deptId, stats, checkIndexCarList);
-                checkIndexCars.add(checkIndexCar);
+                if (checkIndexCar != null) {
+                    checkIndexCars.add(checkIndexCar);
+                }
             }
         });
 
@@ -92,33 +101,61 @@
         //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value
         AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
         VehicleDeviceSamplingResult.VehicleDifference vehDiff = result.getVehDiff();
+        VehicleDeviceSamplingResult.BigUsefulness bigUseful = result.getBigUseful();
         stats.totalSites++;
         //90%鍙婁互涓婃暟鎹悎鏍煎垯姝よ溅杈嗗崱鍙h澶囪瑙嗕负鎶撴媿鏁版嵁鍑嗙‘
-        if(vehDiff.getMajorConPercent() >= 0.9){
+        if (vehDiff.getMajorConPercent() >= 0.9) {
             stats.accuracySites++;
         }
         //閲嶇偣鐐逛綅涓哄叚椤瑰睘鎬�
-        if(importantIds.contains(key)){
+        if (importantIds.contains(key)) {
             stats.importantTotalSites++;
-            if(vehDiff.getImportantConPercent() >= 0.9){
-                stats.importantAccuracySitesSites++;
+            if (vehDiff.getImportantConPercent() >= 0.9) {
+                stats.importantAccuracySites++;
             }
+        }
+        //澶у浘鍙敤鐜囧ぇ浜�90%瑙嗕负鍚堟牸
+        if (bigUseful.getBigUsefulPercent() >= 0.9) {
+            stats.picUsabilitySites++;
+        }
+        //鍥剧墖璁块棶姝e父閲� = 鎶芥閲�-寮傚父閲�
+        BigDecimal picNormalCount = new BigDecimal(bigUseful.getSampleCount() - bigUseful.getBigPicExpCount());
+        //鍥剧墖鎶芥閲�
+        BigDecimal sampleCount = new BigDecimal(bigUseful.getSampleCount());
+        //鍥剧墖璁块棶鐜�>=90% 瑙嗕负鍚堟牸
+        if (picNormalCount.divide(sampleCount, 4, RoundingMode.HALF_UP).compareTo(new BigDecimal("0.9")) >= 0) {
+            stats.urlUsabilitySites++;
         }
     }
 
     /**
-     * 杞﹁締淇℃伅閲囬泦姝g‘鐜�
+     * 杞﹁締淇℃伅閲囬泦姝g‘鐜囥�乽rl鍙敤鎬с�佸ぇ鍥惧彲鐢ㄦ��
      */
     private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList) {
         CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class);
-        //璋冪敤璁$畻鏂规硶
-        Map<String, Object> param = new HashMap<>();
-        param.put("totalSites", stats.totalSites);
-        param.put("importantTotalSites", stats.importantTotalSites);
-        param.put("accuracySites", stats.accuracySites);
-        param.put("importantAccuracySites", stats.importantAccuracySitesSites);
-        BigDecimal dataAccuracy = dataAccuracy(param);
+        if (checkIndexCar == null) {
+            return null;
+        }
+        //璋冪敤淇℃伅閲囬泦姝g‘鐜囪绠楁柟娉�
+        Map<String, Object> accuracyParam = new HashMap<>();
+        accuracyParam.put("totalSites", stats.totalSites);
+        accuracyParam.put("importantTotalSites", stats.importantTotalSites);
+        accuracyParam.put("accuracySites", stats.accuracySites);
+        accuracyParam.put("importantAccuracySites", stats.importantAccuracySites);
+        BigDecimal dataAccuracy = dataAccuracy(accuracyParam);
         checkIndexCar.setVehicleCaptureAccuracy(dataAccuracy);
+        //璋冪敤url鍙敤鎬ц绠楁柟娉�
+        Map<String, Object> urlParam = new HashMap<>();
+        urlParam.put("totalSites", stats.totalSites);
+        urlParam.put("urlQualifySites", stats.urlUsabilitySites);
+        BigDecimal urlUsability = urlUsability(urlParam);
+        checkIndexCar.setVehicleUrlAvailability(urlUsability);
+        //璋冪敤澶у浘鍙敤鎬ц绠楁柟娉�
+        Map<String, Object> usabilityParam = new HashMap<>();
+        urlParam.put("totalSites", stats.totalSites);
+        urlParam.put("picUsabilitySites", stats.picUsabilitySites);
+        BigDecimal picUsability = picUsability(usabilityParam);
+        checkIndexCar.setVehiclePictureAvailability(picUsability);
         return checkIndexCar;
     }
 

--
Gitblit v1.8.0