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