From a10faaa8d2a80f0302c35a5d73dcb7b3fb069133 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 13 二月 2026 11:32:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java |   78 +++++++++++++++++++++++++++++++++------
 1 files changed, 66 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java
index c70bbe1..010dec0 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/MetricStatisticsServiceImpl.java
@@ -59,20 +59,74 @@
 
     public AjaxResult statisticsTable(StatisticsTableDto statisticsTableDto) {
         Map<String, Object> map = new HashMap<>();
-        if (statisticsTableDto.getEntryDateStart() == null || statisticsTableDto.getEntryDateEnd() == null) {
-            Calendar calendar = Calendar.getInstance();
-            // 缁撴潫鏃堕棿榛樿鏄綋鍓嶆椂闂�
-            statisticsTableDto.setEntryDateEnd(new Date());
-            // 寮�濮嬫椂闂撮粯璁ゆ槸6涓湀鍓�
-            calendar.add(Calendar.MONTH, -6);
-            statisticsTableDto.setEntryDateStart(calendar.getTime());
+        Calendar calendar = Calendar.getInstance();
+
+        // 缁撴潫鏃堕棿榛樿鏄綋鍓嶆椂闂�
+        Date endDate = statisticsTableDto.getEntryDateEnd() != null ? statisticsTableDto.getEntryDateEnd() : new Date();
+        statisticsTableDto.setEntryDateEnd(endDate);
+
+        // 寮�濮嬫椂闂撮粯璁ゆ槸12涓湀鍓�
+        Date startDate;
+        if (statisticsTableDto.getEntryDateStart() != null) {
+            startDate = statisticsTableDto.getEntryDateStart();
+        } else {
+            calendar.setTime(endDate);
+            calendar.add(Calendar.MONTH, -11); // 鍑�11涓湀锛屽姞涓婂綋鍓嶆湀鍏�12涓湀
+            calendar.set(Calendar.DAY_OF_MONTH, 1); // 璁句负鏈堝垵
+            startDate = calendar.getTime();
         }
+        statisticsTableDto.setEntryDateStart(startDate);
+
+        // 鏌ヨ鏁版嵁搴撹幏鍙栨湁鏁版嵁鐨勬湀浠�
         List<SalesTrendDto> salesTrendDtos = salesLedgerMapper.statisticsTable(statisticsTableDto);
-        if(CollectionUtils.isEmpty(salesTrendDtos)) return AjaxResult.success(map);
-        map.put("dateList", salesTrendDtos.stream().map(SalesTrendDto::getMonth).collect(Collectors.toList()));
-        map.put("orderCountList", salesTrendDtos.stream().map(SalesTrendDto::getOrderCount).collect(Collectors.toList()));
-        map.put("salesAmountList", salesTrendDtos.stream().map(SalesTrendDto::getSalesAmount).collect(Collectors.toList()));
-        map.put("shippingRateList", salesTrendDtos.stream().map(SalesTrendDto::getShipRate).collect(Collectors.toList()));
+
+        // 鍒涘缓鏈堜唤鍒版暟鎹殑鏄犲皠
+        Map<String, SalesTrendDto> trendMap = new HashMap<>();
+        if (!CollectionUtils.isEmpty(salesTrendDtos)) {
+            for (SalesTrendDto dto : salesTrendDtos) {
+                trendMap.put(dto.getMonth(), dto);
+            }
+        }
+
+        // 鐢熸垚鏈堜唤鍒楄〃
+        List<String> dateList = new ArrayList<>();
+        List<BigDecimal> orderCountList = new ArrayList<>();
+        List<BigDecimal> salesAmountList = new ArrayList<>();
+        List<BigDecimal> shippingRateList = new ArrayList<>();
+
+        Calendar tempCalendar = Calendar.getInstance();
+        tempCalendar.setTime(startDate);
+        tempCalendar.set(Calendar.DAY_OF_MONTH, 1); // 纭繚浠庢湀鍒濆紑濮�
+
+        Calendar endCalendar = Calendar.getInstance();
+        endCalendar.setTime(endDate);
+        endCalendar.set(Calendar.DAY_OF_MONTH, 1); // 纭繚鍒版湀鏈�
+
+        // 寰幆鐢熸垚鏈堜唤鍒楄〃锛岀洿鍒拌揪鍒扮粨鏉熸湀浠�
+        while (!tempCalendar.after(endCalendar)) {
+            String monthStr = String.format("%04d-%02d", tempCalendar.get(Calendar.YEAR), tempCalendar.get(Calendar.MONTH) + 1);
+            dateList.add(monthStr);
+
+            // 鑾峰彇褰撳墠鏈堜唤鐨勬暟鎹紝濡傛灉娌℃湁鍒欎娇鐢ㄩ粯璁ゅ��
+            SalesTrendDto dto = trendMap.get(monthStr);
+            if (dto != null) {
+                orderCountList.add(new BigDecimal(dto.getOrderCount()));
+                salesAmountList.add(dto.getSalesAmount() != null ? dto.getSalesAmount() : BigDecimal.ZERO);
+                shippingRateList.add(new BigDecimal(String.valueOf(dto.getShipRate())));
+            } else {
+                orderCountList.add(BigDecimal.ZERO);
+                salesAmountList.add(BigDecimal.ZERO);
+                shippingRateList.add(BigDecimal.ZERO);
+            }
+
+            // 涓嬩竴涓湀
+            tempCalendar.add(Calendar.MONTH, 1);
+        }
+
+        map.put("dateList", dateList);
+        map.put("orderCountList", orderCountList);
+        map.put("salesAmountList", salesAmountList);
+        map.put("shippingRateList", shippingRateList);
         return AjaxResult.success(map);
     }
 }

--
Gitblit v1.9.3