From 74e332504d98caaf8fab951d7d24be762b169f49 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期三, 25 三月 2026 14:15:14 +0800
Subject: [PATCH] 销售金额

---
 jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java |   65 +++++++++++++++++++++++++++-----
 1 files changed, 54 insertions(+), 11 deletions(-)

diff --git a/jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java b/jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java
index 1e01e1d..3cdf8f9 100644
--- a/jyz-base-start/src/main/java/com/tievd/jyz/service/impl/OilRecordServiceImpl.java
+++ b/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);

--
Gitblit v1.8.0