From e13dfa1b2313356e0eeba2671f5373c066c24b12 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 10 三月 2026 17:29:29 +0800
Subject: [PATCH] fix:首页质检数量不对

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |   80 +++++++++++++++++++--------------------
 1 files changed, 39 insertions(+), 41 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 f09323d..29a8c37 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -2,17 +2,14 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.mapper.AccountExpenseMapper;
 import com.ruoyi.account.mapper.AccountIncomeMapper;
 import com.ruoyi.account.pojo.AccountExpense;
-import com.ruoyi.home.mapper.HomeMapper;
-import com.ruoyi.account.mapper.AccountExpenseMapper;
 import com.ruoyi.approve.mapper.ApproveProcessMapper;
 import com.ruoyi.approve.pojo.ApproveProcess;
 import com.ruoyi.basic.mapper.CustomerMapper;
 import com.ruoyi.basic.mapper.ProductMapper;
-import com.ruoyi.basic.mapper.ProductModelMapper;
 import com.ruoyi.basic.mapper.SupplierManageMapper;
 import com.ruoyi.basic.pojo.Customer;
 import com.ruoyi.basic.pojo.Product;
@@ -27,19 +24,11 @@
 import com.ruoyi.dto.MapDto;
 import com.ruoyi.framework.security.LoginUser;
 import com.ruoyi.home.dto.*;
+import com.ruoyi.home.mapper.HomeMapper;
 import com.ruoyi.home.service.HomeService;
-import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
-import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
-import com.ruoyi.procurementrecord.utils.StockUtils;
 import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductWorkOrderDto;
-import com.ruoyi.production.mapper.ProductOrderMapper;
-import com.ruoyi.production.mapper.ProductProcessMapper;
-import com.ruoyi.production.mapper.ProductWorkOrderMapper;
-import com.ruoyi.production.mapper.ProductionProductInputMapper;
-import com.ruoyi.production.mapper.ProductionProductOutputMapper;
-import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
-import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.ProductWorkOrder;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
@@ -185,28 +174,31 @@
         LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.ge(PurchaseLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
                 .lt(PurchaseLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
-        // 鎵ц鏌ヨ骞惰绠楁�诲拰
+
         List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(queryWrapper);
         if (!CollectionUtils.isEmpty(purchaseLedgers)) {
-            LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<SalesLedgerProduct>();
-            salesLedgerProductMapperLambdaQueryWrapperCopy.eq(SalesLedgerProduct::getType, 2)
+            LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<>();
+            salesLedgerProductMapperLambdaQueryWrapperCopy.eq(SalesLedgerProduct::getType, 2) // 閲囪喘绫诲瀷
                     .in(SalesLedgerProduct::getSalesLedgerId,
                             purchaseLedgers.stream().map(PurchaseLedger::getId).collect(Collectors.toList()));
+
             List<SalesLedgerProduct> salesLedgerProductsCopy = salesLedgerProductMapper
                     .selectList(salesLedgerProductMapperLambdaQueryWrapperCopy);
-            // 鍚堣鍚堝悓閲戦
+
+            // 鍚堣鍚堝悓鎬婚噾棰�
             BigDecimal receiveAmount = purchaseLedgers.stream()
                     .map(PurchaseLedger::getContractAmount)
                     .filter(Objects::nonNull)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
-            // 鏈紑绁ㄩ噾棰�
+
+            //  寰呬粯娆炬�婚噾棰�
             BigDecimal unReceiptPaymentAmount = salesLedgerProductsCopy.stream()
-                    .map(SalesLedgerProduct::getNoInvoiceAmount)
+                    .map(SalesLedgerProduct::getPendingTicketsTotal)
                     .filter(Objects::nonNull)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
+
             homeBusinessDto.setMonthPurchaseMoney(receiveAmount.setScale(2, RoundingMode.HALF_UP).toString());
-            homeBusinessDto
-                    .setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
+            homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
         }
         // 缁熻搴撳瓨
         BigDecimal stockQuantityTotal = stockInventoryMapper.selectTotal();
@@ -2408,27 +2400,31 @@
         dto.setProcessNum(sumQuantity(qualityInspectList, 1)); // 杩囩▼
         dto.setFactoryNum(sumQuantity(qualityInspectList, 2)); // 鍑哄巶
 
-        // 鍋囪 qualityInspectList 鏄竴涓� List<QualityInspect> 绫诲瀷鐨勯泦鍚�
         Map<String, List<QualityInspect>> groupedByCheckResult = qualityInspectList.stream()
                 .collect(Collectors.groupingBy(QualityInspect::getCheckResult));
-        List<QualityInspect> qualityInspects = groupedByCheckResult.get("涓嶅悎鏍�");
-        if (ObjectUtils.isNull(qualityInspects) || qualityInspects.size() == 0) {
-            return null;
-        }
+
+        List<QualityInspect> qualityInspects = groupedByCheckResult.getOrDefault("涓嶅悎鏍�", new ArrayList<>());
+
         // 4. 澶勭悊鍥捐〃椤� (Item)
         List<QualityStatisticsItem> itemList = new ArrayList<>();
 
-        Map<QualityInspect, LocalDate> dateMap = qualityInspectList.stream()
-                .collect(Collectors.toMap(
-                        i -> i,
-                        i -> i.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()));
+        Map<QualityInspect, LocalDate> dateMap = qualityInspects.isEmpty() ?
+                new HashMap<>() :
+                qualityInspectList.stream()
+                        .collect(Collectors.toMap(
+                                i -> i,
+                                i -> i.getCheckTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(),
+                                (existing, replacement) -> existing));
+
         if (type == 3) {
             // 瀛e害妯″紡锛氭寜鏈堝垎缁�
-            Map<String, List<QualityInspect>> groupByMonth = qualityInspects.stream()
-                    .collect(Collectors.groupingBy(i -> {
-                        LocalDate ld = dateMap.get(i);
-                        return ld.format(DateTimeFormatter.ofPattern("yyyy-MM"));
-                    }));
+            Map<String, List<QualityInspect>> groupByMonth = qualityInspects.isEmpty() ?
+                    new HashMap<>() :
+                    qualityInspects.stream()
+                            .collect(Collectors.groupingBy(i -> {
+                                LocalDate ld = dateMap.get(i);
+                                return ld.format(DateTimeFormatter.ofPattern("yyyy-MM"));
+                            }));
 
             for (int i = 0; i < 3; i++) {
                 LocalDate monthDate = startDate.plusMonths(i);
@@ -2437,11 +2433,13 @@
             }
         } else {
             // 鍛ㄦ垨鏈堟ā寮忥細鎸夊ぉ鍒嗙粍
-            Map<String, List<QualityInspect>> groupByDay = qualityInspects.stream()
-                    .collect(Collectors.groupingBy(i -> {
-                        LocalDate ld = dateMap.get(i);
-                        return ld.format(DateTimeFormatter.ofPattern("MM/dd"));
-                    }));
+            Map<String, List<QualityInspect>> groupByDay = qualityInspects.isEmpty() ?
+                    new HashMap<>() :
+                    qualityInspects.stream()
+                            .collect(Collectors.groupingBy(i -> {
+                                LocalDate ld = dateMap.get(i);
+                                return ld.format(DateTimeFormatter.ofPattern("MM/dd"));
+                            }));
             long days = ChronoUnit.DAYS.between(startDate, endDate);
             for (int i = 0; i <= days; i++) {
                 LocalDate tempDay = startDate.plusDays(i);

--
Gitblit v1.9.3