From dc29f2f4f03cb93367b759c38c7e98c358e1f90e Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 29 一月 2026 16:01:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java |   46 +++++++++++++++++++++++++---------------------
 1 files changed, 25 insertions(+), 21 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
index beb7d39..7d0d324 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ClientServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service.impl;
 
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
@@ -21,7 +22,6 @@
 import java.time.LocalDate;
 import java.time.YearMonth;
 import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -86,9 +86,10 @@
                 .ne(Project::getType, 2) // 在建工程
                 .and(wrapper -> wrapper
                     .eq(Project::getStatus, 1)  // 在建项目
+                        .between(Project::getCreateTime, monthStart, monthEnd)
                     .or(w -> w
                         .eq(Project::getStatus, 2)  // 已完成项目
-                        .ge(Project::getSuccessTime, monthStart)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
+                        .between(Project::getSuccessTime, monthStart,monthEnd)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
                     )
                 );
         if (clientId != null) {
@@ -193,7 +194,7 @@
         calculateMonthlyInspectionForOngoing(vo, projects, projectIds, monthStart, monthEnd);
 
         // 3. 统计大型机械设备数
-        List<MachineryStatisticsVO> machineryStatistics = calculateMachineryStatistics(projectIds);
+        List<MachineryStatisticsVO> machineryStatistics = calculateMachineryStatistics(projectIds, monthStart, monthEnd);
         vo.setMachineryStatistics(machineryStatistics);
 
         // 汇总计算设备总数统计
@@ -229,13 +230,14 @@
         // 查询固定资产项目
         LambdaQueryWrapper<Project> projectWrapper = new LambdaQueryWrapper<>();
         projectWrapper.eq(Project::getDeleted, false)
-                .eq(Project::getType, 2) // 固定资产
+                .eq(Project::getType, 2) // 在建工程
                 .and(wrapper -> wrapper
-                    .eq(Project::getStatus, 1)  // 在建项目
-                    .or(w -> w
-                        .eq(Project::getStatus, 2)  // 已完成项目
-                        .ge(Project::getSuccessTime, monthStart)  // 完成时间 >= 开始日期
-                    )
+                        .eq(Project::getStatus, 1)  // 在建项目
+                        .between(Project::getCreateTime, monthStart, monthEnd)
+                        .or(w -> w
+                                .eq(Project::getStatus, 2)  // 已完成项目
+                                .between(Project::getSuccessTime, monthStart,monthEnd)  // 完成时间 >= 开始日期// 完成时间 <= 结束日期
+                        )
                 );
         if (clientId != null) {
             projectWrapper.eq(Project::getClientId, clientId);
@@ -393,7 +395,7 @@
     /**
      * 统计大型机械设备数(含已检查/未检查)
      */
-    private List<MachineryStatisticsVO> calculateMachineryStatistics(List<Integer> projectIds) {
+    private List<MachineryStatisticsVO> calculateMachineryStatistics(List<Integer> projectIds, Date monthStart, Date monthEnd) {
         if (projectIds.isEmpty()) {
             return new ArrayList<>();
         }
@@ -402,10 +404,10 @@
         LambdaQueryWrapper<DeviceUsage> deviceWrapper = new LambdaQueryWrapper<>();
         deviceWrapper.eq(DeviceUsage::getDeleted, false)
                 .in(DeviceUsage::getProjectId, projectIds);
-        List<DeviceUsage> devices = deviceUsageMapper.selectList(deviceWrapper);
+        List<DeviceUsage> deviceUsages = deviceUsageMapper.selectList(deviceWrapper);
 
         // 批量查询 Device 信息
-        List<Integer> deviceIds = devices.stream()
+        List<Integer> deviceIds = deviceUsages.stream()
                 .map(DeviceUsage::getDeviceId)
                 .filter(Objects::nonNull)
                 .distinct()
@@ -427,7 +429,7 @@
 
         // 按设备类型名称分组统计
         final Map<Integer, Device> finalDeviceMap = deviceMap;
-        Map<String, List<DeviceUsage>> deviceGroupMap = devices.stream()
+        Map<String, List<DeviceUsage>> deviceGroupMap = deviceUsages.stream()
                 .filter(d -> d.getDeviceId() != null)
                 .filter(d -> finalDeviceMap.containsKey(d.getDeviceId()))
                 .collect(Collectors.groupingBy(d -> {
@@ -444,7 +446,7 @@
 
         // 查询设备检查记录
         // 建立 device.id 到 device_usage.id 的映射
-        Map<Integer, List<Integer>> deviceToUsageMap = devices.stream()
+        Map<Integer, List<Integer>> deviceToUsageMap = deviceUsages.stream()
                 .filter(d -> d.getDeviceId() != null)
                 .collect(Collectors.groupingBy(
                         DeviceUsage::getDeviceId,
@@ -457,7 +459,8 @@
             recordWrapper.eq(Record::getRecordType, "error")
                     .isNotNull(Record::getDeviceId)
                     .in(Record::getDeviceId, deviceIds)
-                    .eq(Record::getDeleted, false);
+                    .eq(Record::getDeleted, false)
+                    .between(Record::getCreateTime, monthStart, monthEnd);
             List<Record> records = recordMapper.selectList(recordWrapper);
 
             // 获取已检查的 device.id 集合
@@ -666,11 +669,12 @@
      */
     private Date getStartDate(Date startDate) {
         if (startDate != null) {
-            return startDate;
+            return DateUtil.beginOfDay(startDate);
         }
         // 默认为当前月份第一天
-        YearMonth currentMonth = YearMonth.now();
-        return Date.from(currentMonth.atDay(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
+        Date date = new Date();
+        return DateUtil.beginOfMonth(date);
+
     }
 
     /**
@@ -678,11 +682,11 @@
      */
     private Date getEndDate(Date endDate) {
         if (endDate != null) {
-            return endDate;
+            return DateUtil.endOfDay(endDate);
         }
         // 默认为当前月份最后一天
-        YearMonth currentMonth = YearMonth.now();
-        return Date.from(currentMonth.atEndOfMonth().atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant());
+        Date date = new Date();
+        return DateUtil.endOfMonth(date);
     }
 
     /**

--
Gitblit v1.7.1