From 72dd95fdcde21b4641162d418d6fe8423bb74507 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 01 十一月 2024 02:05:52 +0800 Subject: [PATCH] 数据中心优化完成、车辆url算法优化、大图可用算法优化 --- ycl-server/src/main/java/com/ycl/calculate/CarUrlCalculation.java | 93 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 93 insertions(+), 0 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/calculate/CarUrlCalculation.java b/ycl-server/src/main/java/com/ycl/calculate/CarUrlCalculation.java new file mode 100644 index 0000000..73d081f --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/calculate/CarUrlCalculation.java @@ -0,0 +1,93 @@ +package com.ycl.calculate; + +import com.ycl.platform.domain.entity.CheckIndexCar; +import com.ycl.platform.domain.result.HK.PicAccessResult; +import com.ycl.platform.domain.result.HK.VehicleDeviceSamplingResult; +import com.ycl.platform.mapper.CheckIndexCarMapper; +import com.ycl.platform.service.ICheckIndexCarService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import utils.DateUtils; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 璁$畻杞﹁締鎶撴媿鏁版嵁鍑嗙‘鎬с�乽rl鍙敤鎬с�佸ぇ鍥惧彲鐢ㄦ�� + * 杞﹁締鏁版嵁鎶芥鎺ュ彛 + * 鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId + * 鏇存柊鎴栨柊澧� + */ +@Component +@Slf4j +public class CarUrlCalculation extends IndexCalculationServe<PicAccessResult, CarUrlCalculation.AreaStats> implements CalculationStrategy<PicAccessResult> { + @Autowired + private CheckIndexCarMapper checkIndexCarMapper; + @Autowired + private ICheckIndexCarService checkIndexCarService; + + //鍖哄煙杞﹁締鎶芥鎸囨爣 + protected static class AreaStats { + int totalSites = 0; + //url鍙闂殑鐐逛綅鏁� + int urlUsabilitySites = 0; + } + + @Override + public void calculate(List<PicAccessResult> list) { + //鑾峰彇鍒嗗尯鍩熺殑鎸囨爣鏁伴噺 + Map<String, CarUrlCalculation.AreaStats> areaStatsMap = getAreaStatsMap(list,Boolean.FALSE); + if (areaStatsMap == null) return; + + // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹� + List<CheckIndexCar> checkIndexCarList = checkIndexCarMapper.selectToday(DateUtils.getDate()); + List<CheckIndexCar> checkIndexCars = new ArrayList<>(); + areaStatsMap.forEach((deptId, stats) -> { + if (stats.totalSites > 0) { + CheckIndexCar checkIndexCar = createOrUpdateCheckIndexCar(deptId, stats, checkIndexCarList); + if (checkIndexCar != null) { + checkIndexCars.add(checkIndexCar); + } + } + }); + + checkIndexCarService.saveOrUpdateBatch(checkIndexCars); + } + + /** + * 绱鎶撴媿鏁版嵁鍑嗙‘璁惧鏁板拰璁惧鎬绘暟锛屽尯鍒嗛噸鐐圭偣浣� + */ + @Override + public void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, PicAccessResult result) { + //杩斿洖瀵硅薄鐨勫紩鐢紝濡傛灉涓嶅瓨鍦ㄤ細鏀惧叆鏂扮殑key,value + AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); + stats.totalSites++; + //鍥剧墖璁块棶鐜�>=90% 瑙嗕负鍚堟牸 + if (PicAccessResult.calUrl(result).compareTo(new BigDecimal("0.9")) >= 0) { + stats.urlUsabilitySites++; + } + } + + /** + * 杞﹁締url鍙敤鎬� + */ + private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList) { + CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class); + if (checkIndexCar == null) { + return null; + } + //璋冪敤url鍙敤鎬ц绠楁柟娉� + Map<String, Object> urlParam = new HashMap<>(); + urlParam.put("totalSites", stats.totalSites); + urlParam.put("urlQualifySites", stats.urlUsabilitySites); + BigDecimal urlUsability = urlUsability(urlParam); + checkIndexCar.setVehicleUrlAvailability(urlUsability); + return checkIndexCar; + } + + +} -- Gitblit v1.8.0