zxl
12 小时以前 3b0516a2959e25576e4f3fda697a3b025d06c8c9
ycl-server/src/main/java/com/ycl/calculate/CarInFoAccuracyCalculation.java
@@ -15,6 +15,7 @@
import constant.ApiConstants;
import constant.CheckConstants;
import constant.CheckSnapCountConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@@ -34,7 +35,8 @@
 * 更新或新增
 */
@Component
public class CarInFoAccuracyCalculation extends IndexCalculationServe implements CalculationStrategy<CrossDetailResult> {
@Slf4j
public class CarInFoAccuracyCalculation extends IndexCalculationServe<CrossDetailResult, CarInFoAccuracyCalculation.AreaStats> implements CalculationStrategy<CrossDetailResult> {
    @Autowired
    private CheckIndexCarMapper checkIndexCarMapper;
    @Autowired
@@ -43,37 +45,16 @@
    private ICheckIndexCarService checkIndexCarService;
    //区域车辆信息采集准确率的内部类
    private static class AreaStats {
    protected static class AreaStats {
        int totalSites = 0;
        int qualifySite = 0;
    }
    @Override
    public void calculate(List<CrossDetailResult> list) {
        if (CollectionUtils.isEmpty(list)) {
            return;
        }
        //返回以国标码为key的设备map
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(CrossDetailResult::getExternalIndexCode).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (CrossDetailResult result : list) {
            TMonitorVO monitor = monitorMap.get(result.getExternalIndexCode());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
            updateAreaStats(areaStatsMap, deptId, result);
            // 处理省厅数据
            if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
                String provinceKey = "Province_" + deptId;
                updateAreaStats(areaStatsMap, provinceKey, result);
            }
        }
        //获取分区域的指标数量
        Map<String, CarInFoAccuracyCalculation.AreaStats> areaStatsMap = getAreaStatsMap(list,Boolean.FALSE);
        if (areaStatsMap == null) return;
        // 查询是否index表已经存在今日数据
        List<CheckIndexCar> checkIndexCarList = checkIndexCarMapper.selectToday(DateUtils.getDate());
@@ -94,7 +75,8 @@
    /**
     * 累计总点位数、标注异常点位数
     */
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, CrossDetailResult result) {
    @Override
    public void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, CrossDetailResult result) {
        //返回对象的引用,如果不存在会放入新的key,value
        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
        stats.totalSites++;