From 4f4538356403d620b9bd510fd45729a251291942 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期五, 03 七月 2026 18:27:36 +0800
Subject: [PATCH] 功能开发

---
 server/services/src/main/java/com/doumee/service/business/impl/ReportServiceImpl.java |   28 +++++++++++++++++++++++++---
 1 files changed, 25 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..716ba4b 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));
@@ -416,6 +433,8 @@
         IPage<OperationOrderVO> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         OperationOrderQueryDTO model = pageWrap.getModel() == null
                 ? new OperationOrderQueryDTO() : pageWrap.getModel();
+        // 绉熺敤涓�(status=1):闇�杩囨护鎺夋棤楠戣璁板綍鐨勮鍗�(宸叉敮浠樹絾鐢ㄦ埛浠庢湭寮�閿侀獞琛�)
+        boolean queryInProgress = Objects.nonNull(model.getStatus()) && model.getStatus().equals(Constants.ONE);
 
         // 鈹�鈹� 姝ラ1:鍒嗛〉涓绘煡璇� 鈹�鈹�
         // 涓昏〃 goodsorder left join member(鍙栨墜鏈哄彿)+ left join base_param(鍙栫粨绠楄溅鍨嬪悕);
@@ -442,6 +461,9 @@
                 // 璁㈠崟绫诲瀷:鎸夐獞琛岃褰� member_rides.type 绛涢��(鍙��)
                 .inSql(Objects.nonNull(model.getBikeType()), Goodsorder::getId,
                         "select ordre_id from member_rides where isdeleted = 0 and type = " + model.getBikeType())
+                // 绉熺敤涓�(status=1):浠呬繚鐣欏瓨鍦ㄩ獞琛岃褰曠殑璁㈠崟,杩囨护鎺夊凡鏀粯浣嗘棤楠戣璁板綍鐨勬暟鎹�
+                .inSql(queryInProgress, Goodsorder::getId,
+                        "select ordre_id from member_rides where isdeleted = 0")
                 .orderByDesc(Goodsorder::getPayDate);
         IPage<OperationOrderVO> result = goodsorderMapper.selectJoinPage(page, OperationOrderVO.class, wrapper);
         List<OperationOrderVO> records = result.getRecords();

--
Gitblit v1.9.3