From cf1d82548a1bd8155ffe9b486df8167aa9e63a7d Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 02 七月 2026 09:19:06 +0800
Subject: [PATCH] 功能开发

---
 server/services/src/main/java/com/doumee/service/business/impl/ReportServiceImpl.java |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ReportServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ReportServiceImpl.java
index 8f85057..500d6d9 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/ReportServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/ReportServiceImpl.java
@@ -155,7 +155,23 @@
             incomeByParam.merge(o.getParamId(), amount, BigDecimal::add);
         }
 
-        // 5. 缁勮缁撴灉:杞﹀瀷鍚� + 澶х被 + 鏀跺叆(鍒嗏啋鍏�,2浣�),鎸夋敹鍏ラ檷搴�
+        // 5. 鎸� paramId 缁熻姣忕被杞﹀瀷鐨勮溅杈嗘暟閲�(bikes 琛ㄦ湭鍒犻櫎),涓�娆″垎缁勬煡璇㈤伩鍏� N 娆� count
+        Map<String, Long> bikeCountByParam;
+        if (incomeByParam.isEmpty()) {
+            // 鏃犳湁鏀跺叆鐨勮溅鍨嬫椂璺宠繃鏌ヨ:绌洪泦鍚堜紶缁� in() 浼氱敓鎴� "IN ()",PostgreSQL 璇硶閿欒
+            bikeCountByParam = Collections.emptyMap();
+        } else {
+            bikeCountByParam = bikesMapper.selectList(
+                    new QueryWrapper<Bikes>().lambda()
+                            .select(Bikes::getParamId)
+                            .eq(Bikes::getIsdeleted, Constants.ZERO)
+                            .in(Bikes::getParamId, incomeByParam.keySet()))
+                    .stream()
+                    .filter(b -> b.getParamId() != null)
+                    .collect(Collectors.groupingBy(Bikes::getParamId, Collectors.counting()));
+        }
+
+        // 6. 缁勮缁撴灉:杞﹀瀷鍚� + 澶х被 + 鏀跺叆(鍒嗏啋鍏�,2浣�)+ 杞﹁締鏁�,鎸夋敹鍏ラ檷搴�
         List<BikeIncomeStatVO> result = new ArrayList<>();
         for (Map.Entry<String, BigDecimal> e : incomeByParam.entrySet()) {
             BaseParam param = paramMap.get(e.getKey());
@@ -164,6 +180,7 @@
             vo.setParamName(param == null ? "鏈煡杞﹀瀷" : param.getName());
             vo.setCategory(param == null ? "鏈煡" : categoryOf(param.getType()));
             vo.setIncome(e.getValue().divide(CENT_PER_YUAN, 2, BigDecimal.ROUND_HALF_UP));
+            vo.setBikeCount(bikeCountByParam.getOrDefault(e.getKey(), 0L));
             result.add(vo);
         }
         result.sort(Comparator.comparing(BikeIncomeStatVO::getIncome).reversed());
@@ -262,7 +279,7 @@
         BigDecimal totalCents = BigDecimal.ZERO;
         for (Goodsorder o : orders) {
             BigDecimal amount = o.getCloseMoney() == null ? BigDecimal.ZERO : o.getCloseMoney();
-            sumByDay.merge(DateUtil.getShortDateStr(o.getPayDate()), amount, BigDecimal::add);
+            sumByDay.merge(DateUtil.getDateLong(o.getPayDate()), amount, BigDecimal::add);
             totalCents = totalCents.add(amount);
         }
 
@@ -272,7 +289,7 @@
         List<IncomeDailyVO> dailyList = new ArrayList<>();
         for (Date d : DateUtil.getDateList(DateUtil.getStartOfDay(start), DateUtil.getStartOfDay(end))) {
             IncomeDailyVO vo = new IncomeDailyVO();
-            vo.setDate(DateUtil.getShortDateStr(d));
+            vo.setDate(DateUtil.getDateLong(d));
             BigDecimal daySum = sumByDay.getOrDefault(vo.getDate(), BigDecimal.ZERO);
             // 鍒嗏啋鍏�,2浣嶅皬鏁�
             vo.setIncome(daySum.divide(CENT_PER_YUAN, 2, BigDecimal.ROUND_HALF_UP));

--
Gitblit v1.9.3