From 8c1b6f26fdd8429b9833211ef69165a0e2ff2712 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 20 七月 2026 22:56:39 +0800
Subject: [PATCH] fix: 补齐平台收入最新月份统计

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java |   28 +++++++++++++++++++++++++---
 1 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 31539c6..ac9be1d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1213,8 +1213,9 @@
         List<Integer> siteIds = resolvePlatformRevenueSiteIds(userId, sysUser, siteId);
         LocalDate sixBefore = PreviousSixMonths.get();
         //通过siteIds进行sql查询统计
-        List<SixChargingDto> sixChargingDtos = generateLastSixMonths();
         List<SixChargingDto> chargingDtos = chargingOrderService.charge(sixBefore, siteIds, partnerView);
+        LocalDate statisticsEndMonth = resolveStatisticsEndMonth(LocalDate.now(), chargingDtos);
+        List<SixChargingDto> sixChargingDtos = generateLastSixMonths(statisticsEndMonth);
         for (SixChargingDto sixChargingDto : sixChargingDtos) {
             for (SixChargingDto chargingDto : chargingDtos) {
                 if (sixChargingDto.getMonth().equals(chargingDto.getMonth())){
@@ -1230,12 +1231,15 @@
 
 
     public static List<SixChargingDto> generateLastSixMonths() {
-        LocalDate today = LocalDate.now();
+        return generateLastSixMonths(LocalDate.now());
+    }
+
+    static List<SixChargingDto> generateLastSixMonths(LocalDate endMonth) {
         List<SixChargingDto> months = new ArrayList<>();
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM");
 
         for (int i = 5; i >= 0; i--) {
-            LocalDate date = today.minusMonths(i);
+            LocalDate date = endMonth.minusMonths(i);
             String month = date.format(formatter);
             SixChargingDto sixChargingDto = new SixChargingDto();
             sixChargingDto.setMonth(month);
@@ -1244,6 +1248,24 @@
 
         return months;
     }
+
+    static LocalDate resolveStatisticsEndMonth(LocalDate currentDate, List<SixChargingDto> statistics) {
+        if (statistics == null || statistics.isEmpty()) {
+            return currentDate;
+        }
+        int nextMonth = currentDate.plusMonths(1).getMonthValue();
+        boolean hasNextMonthData = statistics.stream()
+                .map(SixChargingDto::getMonth)
+                .filter(Objects::nonNull)
+                .anyMatch(month -> {
+                    try {
+                        return Integer.parseInt(month) == nextMonth;
+                    } catch (NumberFormatException ignored) {
+                        return false;
+                    }
+                });
+        return hasNextMonthData ? currentDate.plusMonths(1) : currentDate;
+    }
     
     @RequiresPermissions(value = {"/platformRevenueAnalysis"}, logical = Logical.OR)
     @ResponseBody

--
Gitblit v1.7.1