zxl
2026-03-25 74e332504d98caaf8fab951d7d24be762b169f49
jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java
@@ -165,7 +165,7 @@
        JSONObject res;
        List<StatDataTableVo> dataList = new ArrayList<>();
        Function<StatDataTableVo, ?> xfunc = null;
        Function<StatDataTableVo, Integer> barfunc = null;
        Function<StatDataTableVo, ?> barfunc = null;
        switch(param.getType()) {
            case 1 :
                dataList = oilRecordMapper.statFanByModel(param);
@@ -187,6 +187,16 @@
                xfunc = StatDataTableVo::getOilPosition;
                barfunc = StatDataTableVo::getOilVolume;
                break;
            case 5 :
                dataList = oilRecordMapper.statFanByOilType(param);
                xfunc = StatDataTableVo::getOilType;
                barfunc = StatDataTableVo::getOilVolume;
                break;
            case 6 :
                dataList = oilRecordMapper.statFanByOilType(param);
                xfunc = StatDataTableVo::getOilType;
                barfunc = StatDataTableVo::getTotalAmount;
                break;
        }
        res = dataTransLists(dataList, xfunc, barfunc, null, "", "");
        return res;
@@ -198,8 +208,8 @@
        JSONObject res;
        List<StatDataTableVo> dataList;
        Function<StatDataTableVo, ?> xfunc;
        Function<StatDataTableVo, Integer> barfunc;
        Function<StatDataTableVo, Integer> linefunc;
        Function<StatDataTableVo, ?> barfunc;
        Function<StatDataTableVo, ?> linefunc;
        String barName = "";
        String lineName = "";
        if (param.getType() == 1) {
@@ -209,12 +219,26 @@
            linefunc = StatDataTableVo::getCarCount;
            barName = "加油数";
            lineName = "车流量";
        } else {
        } else if (param.getType() == 2) {
            dataList = oilRecordMapper.statFanByPosition(param);
            xfunc = StatDataTableVo::getOilPosition;
            barfunc = StatDataTableVo::getOilCount;
            linefunc = StatDataTableVo::getOilVolume;
            barName = "加油数";
            lineName = "油品销量";
        } else if (param.getType() == 3) {
            dataList = oilRecordMapper.statFanByOilType(param);
            xfunc = StatDataTableVo::getOilType;
            barfunc = StatDataTableVo::getOilVolume;
            linefunc = StatDataTableVo::getTotalAmount;
            barName = "油品销量";
            lineName = "销售金额";
        } else {
            dataList = oilRecordMapper.statFanByOilType(param);
            xfunc = StatDataTableVo::getOilType;
            barfunc = StatDataTableVo::getTotalAmount;
            linefunc = StatDataTableVo::getOilVolume;
            barName = "销售金额";
            lineName = "油品销量";
        }
        res = dataTransLists(dataList, xfunc, barfunc, linefunc, barName, lineName);
@@ -236,6 +260,7 @@
                .minus(timeUnit.value(), ChronoUnit.valueOf(timeUnit.name()))
                .with(timeUnit.initField(), 1);
        LocalDateTime timeLimitRight = LocalDateTime.now().with(timeUnit.initField(), 1);
        log.info("打印时间开始: {}, 打印时间结束: {}", timeLimit.toString(), timeLimitRight.toString());
        LambdaQueryWrapper wrapper = new LambdaQueryWrapper<OilRecord>()
                .ge(OilRecord::getStartTime, timeLimit.toString())
                .le(OilRecord::getStartTime, timeLimitRight.toString())
@@ -263,6 +288,7 @@
            statVo.addAppearCount(1);
            if (record.getBehavior().intValue() == SystemConstant.BEHAVIOR_TYPE_OIL) statVo.addOilCount(1);
            if (record.getBehavior().intValue() == SystemConstant.BEHAVIOR_TYPE_OIL) statVo.addOilVolume(record.getOilVolume());
            if (record.getBehavior().intValue() == SystemConstant.BEHAVIOR_TYPE_OIL) statVo.addTotalAmount(record.getTotalAmount());
            statVo.addSumSpand(record.getSpandTime());
        }
        
@@ -455,6 +481,10 @@
                    && (oilRecord.getBehavior() == null || oilRecord.getBehavior().intValue() != SystemConstant.BEHAVIOR_TYPE_OIL)) {
                continue;
            }
            if (trendType == DataStatisReqVo.TrendType.SALES_AMOUNT
                    && (oilRecord.getBehavior() == null || oilRecord.getBehavior().intValue() != SystemConstant.BEHAVIOR_TYPE_OIL)) {
                continue;
            }
            Map<String, Object> row = new LinkedHashMap<>();
            row.put("id", oilRecord.getId());
            row.put("startTime", oilRecord.getStartTime());
@@ -463,6 +493,7 @@
            row.put("behaviorText", behaviorText(oilRecord.getBehavior()));
            row.put("oilPosition", oilRecord.getOilPosition());
            row.put("oilVolume", oilRecord.getOilVolume());
            row.put("totalAmount", oilRecord.getTotalAmount());
            row.put("spandTime", oilRecord.getSpandTime());
            detailList.add(row);
        }
@@ -502,16 +533,21 @@
            String barName,
            String lineName) {
        List xDatas = new ArrayList();
        List<Integer> barDatas = new ArrayList<>();
        List<Object> barDatas = new ArrayList<>();
        List lineDatas = new ArrayList<>();
        int sum = 0;
        double sum = 0;
        for (E statVo : dataList) {
            Object xData = "";
            int barData = 0;
            Object barData = 0;
            Object lineData = 0;
            try {
                xData = xDataMapper.apply(statVo);
                barData = Integer.valueOf(barDataMapper.apply(statVo).toString());
                Object barValue = barDataMapper.apply(statVo);
                if (barValue instanceof java.math.BigDecimal) {
                    barData = ((java.math.BigDecimal) barValue).doubleValue();
                } else {
                    barData = Integer.valueOf(barValue.toString());
                }
                if (lineDataMapper != null) lineData = lineDataMapper.apply(statVo);
            } catch (Exception e) {
                e.printStackTrace();
@@ -521,11 +557,18 @@
            xDatas.add(xData);
            barDatas.add(barData);
            lineDatas.add(lineData);
            sum += barData;
            if (barData instanceof Number) {
                sum += ((Number) barData).doubleValue();
            }
        }
        if (lineDataMapper == null) {
            int finalSum = sum;
            lineDatas = barDatas.stream().map(n -> n*100/ finalSum).collect(Collectors.toList());
            double finalSum = sum;
            lineDatas = barDatas.stream().map(n -> {
                if (n instanceof Number) {
                    return ((Number) n).doubleValue() * 100 / finalSum;
                }
                return 0;
            }).collect(Collectors.toList());
        }
        JSONObject res = new JSONObject();
        res.put("xData", xDatas);