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