From e0296ea7a882b58e8ff44d0288846279dc99b7e0 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 14 十月 2026 14:48:25 +0800
Subject: [PATCH] fix: 周、月、季度计算修改

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |   67 +++++++++++++++++----------------
 1 files changed, 35 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index bc4d9b6..0f854d1 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -61,6 +61,7 @@
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
@@ -497,9 +498,20 @@
 
     @Override
     public ProductionProgressDto productionProgress() {
+        LocalDateTime now = LocalDateTime.now();
+
+        LocalDateTime startOfMonth = now
+                .with(TemporalAdjusters.firstDayOfMonth())
+                .with(LocalTime.MIN);
+
+        LocalDateTime endOfMonth = now
+                .with(TemporalAdjusters.lastDayOfMonth())
+                .with(LocalTime.MAX);
+
+
         ProductionProgressDto productionProgressDto = new ProductionProgressDto();
-        List<ProductionProgressOrderDto> orderDetails = productionOrderMapper.selectProgressOrders(
-                LocalDateTime.now().minusMonths(1), LocalDateTime.now());
+        List<ProductionProgressOrderDto> orderDetails = productionOrderMapper
+                .selectProgressOrders(startOfMonth, endOfMonth);
         productionProgressDto.setCompletedOrderDetails(orderDetails);
         long totalCount = orderDetails.size();
         long count = orderDetails.stream().filter(
@@ -1147,7 +1159,6 @@
                         BigDecimal::add));
 
 
-
         Map<String, BigDecimal> expenseMap = expenseList.stream()
                 .collect(Collectors.toMap(
                         IncomeExpenseAnalysisDto::getDateStr,
@@ -1625,16 +1636,16 @@
     @Override
     public List<MapDto> orderCount() {
         LocalDate now = LocalDate.now();
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
-        String currentStart = now.withDayOfMonth(1).atStartOfDay()
-                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-        String currentEnd = now.atTime(LocalTime.MAX).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        LocalDateTime startDateTime = now.with(TemporalAdjusters.firstDayOfMonth()).atStartOfDay();
+        LocalDateTime endDateTime = now.with(TemporalAdjusters.lastDayOfMonth()).atTime(LocalTime.MAX);
 
-        LocalDate lastMonthDate = now.minusMonths(1);
-        String lastStart = lastMonthDate.withDayOfMonth(1).atStartOfDay()
-                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-        String lastEnd = lastMonthDate.withDayOfMonth(lastMonthDate.lengthOfMonth()).atTime(LocalTime.MAX)
-                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        String currentStart = startDateTime.format(dateTimeFormatter);
+        String currentEnd = endDateTime.format(dateTimeFormatter);
+
+        String lastStart = startDateTime.minusMonths(1).format(dateTimeFormatter);
+        String lastEnd = endDateTime.format(dateTimeFormatter);
 
         int currentCreated = productionOrderMapper.countCreated(currentStart, currentEnd);
         int lastCreated = productionOrderMapper.countCreated(lastStart, lastEnd);
@@ -1693,45 +1704,37 @@
         LocalDate endDate = range[1];
 
         String startStr = startDate.toString();
-        String endStr = endDate.toString();
+        String endStr = endDate.plusDays(1).toString();
 
         List<QualityInspect> list = qualityInspectMapper.selectList(
                 new LambdaQueryWrapper<QualityInspect>()
                         .eq(QualityInspect::getInspectType, inspectType)
                         .eq(QualityInspect::getInspectState, 1)
                         .ge(QualityInspect::getCheckTime, startStr)
-                        .le(QualityInspect::getCheckTime, endStr));
+                        .lt(QualityInspect::getCheckTime, endStr));
 
         return buildQualifiedAnalysis(list);
     }
 
     private LocalDate[] calcDateRange(Integer type) {
-        LocalDate today = LocalDate.now();
+        int rangeType = (type == null) ? 1 : type;
+        LocalDate anchor = LocalDate.now();
         LocalDate startDate;
-        LocalDate endDate;
 
-        switch (type) {
-            case 1: // 鍛�
-                startDate = today.with(DayOfWeek.MONDAY);
-                endDate = today.with(DayOfWeek.SUNDAY);
+        switch (rangeType) {
+            case 2: // 杩戜竴鏈�
+                startDate = anchor.minusMonths(1).plusDays(1);
                 break;
-            case 2: // 鏈�
-                startDate = today.with(TemporalAdjusters.firstDayOfMonth());
-                endDate = today.with(TemporalAdjusters.lastDayOfMonth());
+            case 3: // 杩戜竴瀛e害
+                startDate = anchor.minusMonths(3).plusDays(1);
                 break;
-            case 3: // 瀛e害
-                int currentMonth = today.getMonthValue();
-                int startMonth = ((currentMonth - 1) / 3) * 3 + 1;
-                startDate = LocalDate.of(today.getYear(), startMonth, 1);
-                endDate = LocalDate.of(today.getYear(), startMonth + 2, 1)
-                        .with(TemporalAdjusters.lastDayOfMonth());
-                break;
+            case 1: // 杩戜竴鍛�
             default:
-                startDate = today.with(DayOfWeek.MONDAY);
-                endDate = today.with(DayOfWeek.SUNDAY);
+                startDate = anchor.minusDays(6);
+                break;
         }
 
-        return new LocalDate[]{startDate, endDate};
+        return new LocalDate[]{startDate, anchor};
     }
 
     private QualityQualifiedAnalysisDto buildQualifiedAnalysis(List<QualityInspect> list) {

--
Gitblit v1.9.3