Browse Source

Merge branch 'dev/2024/0807/update-admin-Y' of Harper/feifan-backend-zx-admin into master

平台查看统计图
Yangzw 7 months ago
parent
commit
59ea825e7c

+ 3 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderCountWithMoney.java

@@ -2,12 +2,15 @@ package cn.newfeifan.mall.module.trade.service.order;
 
 
 import lombok.Data;
 import lombok.Data;
 
 
+import java.time.LocalDate;
+
 /**
 /**
  * 订单状态数量统计
  * 订单状态数量统计
  */
  */
 
 
 @Data
 @Data
 public class TradeOrderCountWithMoney {
 public class TradeOrderCountWithMoney {
+    private String date;
 
 
     private Integer count;
     private Integer count;
     private Long money;
     private Long money;

+ 11 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java

@@ -7,7 +7,6 @@ import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.common.pojo.echarts.EChartsResult;
 import cn.newfeifan.mall.framework.common.pojo.echarts.EChartsResult;
-import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
 import cn.newfeifan.mall.module.distri.dal.mysql.ordersettlement.OrderSettlementMapper;
 import cn.newfeifan.mall.module.distri.dal.mysql.ordersettlement.OrderSettlementMapper;
 import cn.newfeifan.mall.module.distri.mq.message.order.DistriOrderMessage;
 import cn.newfeifan.mall.module.distri.mq.message.order.DistriOrderMessage;
 import cn.newfeifan.mall.module.distri.mq.message.order.OrderCalcMessage;
 import cn.newfeifan.mall.module.distri.mq.message.order.OrderCalcMessage;
@@ -368,10 +367,20 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
             endTime = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); // 获取本周的结束日期
             endTime = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); // 获取本周的结束日期
         }
         }
         List<LocalDate> weekDates = generateWeekDates(startTime, endTime); // 生成本周的日期数组
         List<LocalDate> weekDates = generateWeekDates(startTime, endTime); // 生成本周的日期数组
+        List<EChartsResult.Series> series = weekDates.stream().map(ignored -> new EChartsResult.Series().setCount(0).setMoney(0L)).collect(Collectors.toList());
+
+        List<TradeOrderCountWithMoney> result = tradeOrderMapper.selectOrderCountWithTime(startTime, endTime);
+        for (int i = 0; i < weekDates.size(); i++) {
+            for (TradeOrderCountWithMoney tradeOrderCountWithMoney : result) {
+                if (weekDates.get(i).toString().equals(tradeOrderCountWithMoney.getDate())) {
+                    series.get(i).setCount(tradeOrderCountWithMoney.getCount()).setMoney(tradeOrderCountWithMoney.getMoney());
+                }
+            }
+        }
         return EChartsResult.builder()
         return EChartsResult.builder()
                 .xaxis(new EChartsResult.Axis()
                 .xaxis(new EChartsResult.Axis()
                         .setData(weekDates))
                         .setData(weekDates))
-                .series(BeanUtils.toBean(tradeOrderMapper.selectOrderCountWithTime(startTime, endTime), EChartsResult.Series.class))
+                .series(series)
                 .build()
                 .build()
                 ;
                 ;
     }
     }

+ 13 - 15
feifan-module-mall/feifan-module-trade-biz/src/main/resources/mapper/order/BrokerageUserMapper.xml

@@ -87,21 +87,19 @@
     </select>
     </select>
     <select id="selectOrderCountWithTime"
     <select id="selectOrderCountWithTime"
             resultType="cn.newfeifan.mall.module.trade.service.order.TradeOrderCountWithMoney">
             resultType="cn.newfeifan.mall.module.trade.service.order.TradeOrderCountWithMoney">
-        WITH RECURSIVE date_series AS (
-        SELECT #{start} AS date_val
-        UNION ALL
-        SELECT DATE_ADD(date_val, INTERVAL 1 DAY)
-        FROM date_series
-        WHERE date_val &lt; #{end}
-        )
         SELECT
         SELECT
-        ds.date_val AS order_date,
-        COUNT(o.id) AS count,
-        IFNULL(SUM(o.pay_rmb) + (SUM(o.pay_integral) / 10000), 0) AS money
-        FROM date_series ds
-        LEFT JOIN trade_order o ON DATE(o.create_time) = ds.date_val and o.pay_status = 1
-        WHERE ds.date_val BETWEEN #{start} AND #{end}
-        GROUP BY ds.date_val
-        ORDER BY ds.date_val;
+            DATE(o.create_time) `date`,
+            SUM(o.pay_rmb) + (SUM(o.pay_integral) / 10000) money,
+            count(*) count
+        FROM
+            trade_order o
+        WHERE
+            o.create_time BETWEEN #{start} AND #{end} AND o.pay_status = 1
+        GROUP BY
+            DATE(o.create_time)
+        ORDER BY
+            `date`;
     </select>
     </select>
+
 </mapper>
 </mapper>
+