zxl
2025-03-03 eb0e29e72049bc65f943cc864929c332b07f25d0
ycl-server/src/main/java/com/ycl/calculate/CarSnapshopDataCalculation.java
@@ -90,11 +90,21 @@
        int provinceTotalSites = 0;
        //区县总点位数
        int countyTotalSites = 0;
        //同期省厅抓拍量
        int lastProvinceSnap = 0;
        //同期区县抓拍量
        int lastCountySnap = 0;
        //从字典里筛选省厅值
        int lastProvinceSnap = Integer.parseInt(lastSnap.stream().filter(sysDictData -> CheckConstants.SNAP_PROVINCE_CAR.equals(sysDictData.getDictLabel())).findFirst().get().getDictValue());
        Optional<SysDictData> first = lastSnap.stream().filter(sysDictData -> CheckConstants.SNAP_PROVINCE_CAR.equals(sysDictData.getDictLabel())).findFirst();
        if (first.isPresent()) {
            lastProvinceSnap = Integer.parseInt(first.get().getDictValue());
        }
        //从字典里筛选区县值
        int lastCountySnap = Integer.parseInt(lastSnap.stream().filter(sysDictData -> CheckConstants.SNAP_COUNTY_CAR.equals(sysDictData.getDictLabel())).findFirst().get().getDictValue());;
        Optional<SysDictData> first2 = lastSnap.stream().filter(sysDictData -> CheckConstants.SNAP_COUNTY_CAR.equals(sysDictData.getDictLabel())).findFirst();
        if (first2.isPresent()) {
            lastCountySnap = Integer.parseInt(first2.get().getDictValue());
        }
        log.info("省厅同期:{},区县同期:{}",lastProvinceSnap,lastCountySnap);
        //计算总数
        for (Map.Entry<String, AreaStats> entry : areaStatsMap.entrySet()) {
            String key = entry.getKey();
@@ -105,6 +115,7 @@
                countyTotalSites += value.totalSites;
            }
        }
        log.info("省厅总数:{},区县总数:{}",provinceTotalSites,countyTotalSites);
        //加权操作,补充同期抓拍量
        for (Map.Entry<String, AreaStats> entry : areaStatsMap.entrySet()) {
            String key = entry.getKey();
@@ -114,16 +125,23 @@
                if (value.totalSites == 0) {
                    value.lastSnapCount = 0;
                } else {
                    value.lastSnapCount = (value.totalSites / provinceTotalSites) * lastProvinceSnap;
                    BigDecimal result = new BigDecimal(value.totalSites)
                            .divide(new BigDecimal(provinceTotalSites), 2, RoundingMode.HALF_UP)
                            .multiply(new BigDecimal(lastProvinceSnap));
                    value.lastSnapCount = result.setScale(0, RoundingMode.HALF_UP).intValue();
                }
            } else {
                //区县
                if (value.totalSites == 0) {
                    value.lastSnapCount = 0;
                } else {
                    value.lastSnapCount = (value.totalSites / countyTotalSites) * lastCountySnap;
                    BigDecimal result = new BigDecimal(value.totalSites)
                            .divide(new BigDecimal(countyTotalSites), 2, RoundingMode.HALF_UP)
                            .multiply(new BigDecimal(lastCountySnap));
                    value.lastSnapCount = result.setScale(0, RoundingMode.HALF_UP).intValue();
                }
            }
            log.info("计算的数据:总点位数:{},总抓拍量:{},同期抓拍量:{}",value.totalSites,value.totalDataSum,value.lastSnapCount);
        }
    }