From 53dde9c7ba6a26d44bfd5ccf0c0cdb37ada9288a Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 16 九月 2026 19:56:41 +0800
Subject: [PATCH] fix: 产品父类名称适配

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |  251 ++++++++++++++++++++++++--------------------------
 1 files changed, 121 insertions(+), 130 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 b0c3cef..eaf062b 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -2,6 +2,7 @@
 
 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.AccountIncomeMapper;
 import com.ruoyi.account.pojo.AccountExpense;
@@ -144,6 +145,12 @@
 
     @Autowired
     private ProductProcessMapper productProcessMapper;
+    
+    @Autowired
+    private AccountExpenseMapper accountExpenseMapper;
+
+    @Autowired
+    private AccountIncomeMapper accountIncomeMapper;
 
     @Override
     public HomeBusinessDto business() {
@@ -178,28 +185,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();
@@ -330,10 +340,10 @@
             // 褰撴湀鐨勭粨鏉熸棩鏈燂紙姣忔湀鏈�鍚庝竴澶╋級
             LocalDate monthEnd = currentMonth.withDayOfMonth(currentMonth.lengthOfMonth());
 
-            // 鏋勫缓褰撴湀鐨勬煡璇㈡潯浠讹紙濡傛灉鎯充竴娆℃�ф煡鍏�4涓湀鏁版嵁鍐嶅唴瀛樼瓫閫夛紝鍙紭鍖栦负鍏堟煡鍏ㄥ啀寰幆绛涢�夛級
+            // 鏋勫缓褰撴湀鐨勬煡璇㈡潯浠�
             LambdaQueryWrapper<QualityInspect> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.ge(QualityInspect::getCheckTime, monthStart)
-                    .le(QualityInspect::getCheckTime, monthEnd); // 绛涢�夊綋鏈堟暟鎹�
+            queryWrapper.ge(QualityInspect::getCheckTime, monthStart.toString())
+                    .le(QualityInspect::getCheckTime, monthEnd.toString());
             List<QualityInspect> monthInspects = qualityStatisticsMapper.selectList(queryWrapper);
             BigDecimal reduce = monthInspects.stream()
                     .filter(inspect -> inspect.getInspectType().equals(0))
@@ -464,8 +474,8 @@
         }
         // 搴旀敹
         List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
-        // .ge(SalesLedger::getEntryDate, startDate)
-        // .lt(SalesLedger::getEntryDate, endDate)
+                // .ge(SalesLedger::getEntryDate, startDate)
+                // .lt(SalesLedger::getEntryDate, endDate)
         );
         // BigDecimal receivableMoney =
         // salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO,
@@ -474,8 +484,8 @@
         // 搴斾粯
         List<PurchaseLedger> procurementRecords = purchaseLedgerMapper
                 .selectList(new LambdaQueryWrapper<PurchaseLedger>()
-                // .ge(PurchaseLedger::getEntryDate, startDate)
-                // .lt(PurchaseLedger::getEntryDate, endDate)
+                        // .ge(PurchaseLedger::getEntryDate, startDate)
+                        // .lt(PurchaseLedger::getEntryDate, endDate)
                 );
         // BigDecimal payableMoney =
         // procurementRecords.stream().map(PurchaseLedger::getContractAmount).reduce(BigDecimal.ZERO,
@@ -483,8 +493,8 @@
         BigDecimal payableMoney = sumAmount(procurementRecords, PurchaseLedger::getContractAmount);
         // 棰勬敹
         List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>()
-        // .ge(ReceiptPayment::getReceiptPaymentDate, startDate)
-        // .lt(ReceiptPayment::getReceiptPaymentDate, endDate)
+                // .ge(ReceiptPayment::getReceiptPaymentDate, startDate)
+                // .lt(ReceiptPayment::getReceiptPaymentDate, endDate)
         );
         // BigDecimal advanceMoney =
         // receiptPayments.stream().map(ReceiptPayment::getReceiptPaymentAmount).reduce(BigDecimal.ZERO,
@@ -493,8 +503,8 @@
         // 棰勪粯
         List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper
                 .selectList(new LambdaQueryWrapper<PaymentRegistration>()
-                // .ge(PaymentRegistration::getPaymentDate, startDate)
-                // .lt(PaymentRegistration::getPaymentDate, endDate)
+                        // .ge(PaymentRegistration::getPaymentDate, startDate)
+                        // .lt(PaymentRegistration::getPaymentDate, endDate)
                 );
         // BigDecimal prepayMoney =
         // paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO,
@@ -558,7 +568,7 @@
         productionProgressDto.setCompletedOrderDetails(productOrderDtos);
         long totalCount = productOrderDtos.size();
         long count = productOrderDtos.stream().filter(
-                productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(productOrderDto.getQuantity()) >= 0)
+                        productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(productOrderDto.getQuantity()) >= 0)
                 .count();
         long count2 = productOrderDtos.stream()
                 .filter(productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(BigDecimal.ZERO) == 0)
@@ -1031,28 +1041,20 @@
 
     @Override
     public List<MapDto> salesPurchaseStorageProductCount() {
-        LocalDate now = LocalDate.now();
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime currentMonthStart = now.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
+        LocalDateTime lastMonth = now.minusMonths(1);
+        LocalDateTime lastMonthStart = lastMonth.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN);
+        LocalDateTime lastMonthEnd = lastMonth.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX);
 
-        String currentMonthStart = now.with(TemporalAdjusters.firstDayOfMonth()).format(dtf);
-        String currentMonthNow = now.format(dtf);
-
-        LocalDate lastMonth = now.minusMonths(1);
-        String lastMonthStart = lastMonth.with(TemporalAdjusters.firstDayOfMonth()).format(dtf);
-        String lastMonthEnd = lastMonth.with(TemporalAdjusters.lastDayOfMonth()).format(dtf);
-
-        // 閿�鍞�
-        int currentSales = salesLedgerProductMapper.selectProductCountByTypeAndDate(1, currentMonthStart,
-                currentMonthNow);
+        //  閿�鍞�
+        int currentSales = salesLedgerProductMapper.selectProductCountByTypeAndDate(1, currentMonthStart, now);
         int lastSales = salesLedgerProductMapper.selectProductCountByTypeAndDate(1, lastMonthStart, lastMonthEnd);
-
-        // 閲囪喘
-        int currentPurchase = salesLedgerProductMapper.selectProductCountByTypeAndDate(2, currentMonthStart,
-                currentMonthNow);
+        //  閲囪喘
+        int currentPurchase = salesLedgerProductMapper.selectProductCountByTypeAndDate(2, currentMonthStart, now);
         int lastPurchase = salesLedgerProductMapper.selectProductCountByTypeAndDate(2, lastMonthStart, lastMonthEnd);
-
-        // 鍌ㄥ瓨
-        int currentStorage = stockInventoryMapper.selectStorageProductCountByDate(currentMonthStart, currentMonthNow);
+        //  鍌ㄥ瓨
+        int currentStorage = stockInventoryMapper.selectStorageProductCountByDate(currentMonthStart, now);
         int lastStorage = stockInventoryMapper.selectStorageProductCountByDate(lastMonthStart, lastMonthEnd);
 
         List<MapDto> list = new ArrayList<>();
@@ -1151,12 +1153,6 @@
     public List<MapDto> productTurnoverDays() {
         return homeMapper.productTurnoverDays();
     }
-
-    @Autowired
-    private AccountExpenseMapper accountExpenseMapper;
-
-    @Autowired
-    private AccountIncomeMapper accountIncomeMapper;
 
     public List<Map<String, Object>> incomeExpenseAnalysis(Integer type) {
 
@@ -1281,36 +1277,21 @@
         String startStr = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         String endStr = endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 
-        // List<IncomeExpenseAnalysisDto> incomeList =
-        // salesLedgerMapper.selectIncomeStats(startStr, endStr, dateFormat);
-        List<IncomeExpenseAnalysisDto> incomeList = new ArrayList<>();
-        List<IncomeExpenseAnalysisDto> purchaseList = purchaseLedgerMapper.selectPurchaseStats(startStr, endStr,
-                dateFormat);
-        List<IncomeExpenseAnalysisDto> expenseList = accountExpenseMapper.selectAccountExpenseStats(startStr, endStr,
-                dateFormat);
+        List<IncomeExpenseAnalysisDto> incomeList = accountIncomeMapper.selectIncomeStats(startStr, endStr, dateFormat);
+        List<IncomeExpenseAnalysisDto> expenseList = accountExpenseMapper.selectAccountExpenseStats(startStr, endStr, dateFormat);
 
         Map<String, BigDecimal> incomeMap = incomeList.stream().collect(Collectors
-                .toMap(IncomeExpenseAnalysisDto::getDateStr, IncomeExpenseAnalysisDto::getAmount, BigDecimal::add));
-        Map<String, BigDecimal> purchaseMap = purchaseList.stream().collect(Collectors
                 .toMap(IncomeExpenseAnalysisDto::getDateStr, IncomeExpenseAnalysisDto::getAmount, BigDecimal::add));
         Map<String, BigDecimal> expenseMap = expenseList.stream().collect(Collectors
                 .toMap(IncomeExpenseAnalysisDto::getDateStr, IncomeExpenseAnalysisDto::getAmount, BigDecimal::add));
 
         List<MapDto> result = new ArrayList<>();
-
         for (String month : months) {
             MapDto dto = new MapDto();
             dto.setName(month);
-
             BigDecimal income = incomeMap.getOrDefault(month, BigDecimal.ZERO);
-
-            BigDecimal purchase = purchaseMap.getOrDefault(month, BigDecimal.ZERO);
-            income = BigDecimal.ZERO;
             BigDecimal expense = expenseMap.getOrDefault(month, BigDecimal.ZERO);
-            BigDecimal totalExpense = purchase.add(expense);
-
-            BigDecimal profit = income.subtract(totalExpense);
-
+            BigDecimal profit = income.subtract(expense);
             dto.setValue(profit.setScale(2, RoundingMode.HALF_UP).toString());
             result.add(dto);
         }
@@ -1916,10 +1897,8 @@
         LocalDate startDate = range[0];
         LocalDate endDate = range[1];
 
-        String startStr = startDate.atStartOfDay()
-                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-        String endStr = endDate.atTime(LocalTime.MAX)
-                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        String startStr = startDate.toString();
+        String endStr = endDate.toString();
 
         List<QualityInspect> list = qualityInspectMapper.selectList(
                 new LambdaQueryWrapper<QualityInspect>()
@@ -1957,7 +1936,7 @@
                 endDate = today.with(DayOfWeek.SUNDAY);
         }
 
-        return new LocalDate[] { startDate, endDate };
+        return new LocalDate[]{startDate, endDate};
     }
 
     private QualityQualifiedAnalysisDto buildQualifiedAnalysis(List<QualityInspect> list) {
@@ -2009,20 +1988,14 @@
 
     @Override
     public QualityInspectionCountDto qualityInspectionCount() {
-        // 鑾峰彇浠婂ぉ鐨勫紑濮嬪拰缁撴潫鏃ユ湡,鍖呭惈鏃跺垎绉�
-        LocalDateTime todayStart = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0);
-        LocalDateTime todayEnd = LocalDateTime.now().withHour(23).withMinute(59).withSecond(59).withNano(0);
-        // 鑾峰彇鍓嶄竴澶╃殑寮�濮嬪拰缁撴潫鏃ユ湡,鍖呭惈鏃跺垎绉�
-        LocalDateTime prevStart = todayStart.minusDays(1);
-        LocalDateTime prevEnd = todayEnd.minusDays(1);
+        String todayStr = LocalDate.now().toString();
+        String prevDayStr = LocalDate.now().minusDays(1).toString();
         // 鏌ヨ鍑烘埅姝粖鏃ョ殑鎬绘楠屾暟
         List<QualityInspect> todayList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
-                // .eq(QualityInspect::getInspectState, 1)
-                .le(QualityInspect::getCheckTime, todayEnd));
+                .le(QualityInspect::getCheckTime, todayStr));
         // 鏌ヨ鍑烘埅姝㈠墠涓�澶╃殑鎬绘楠屾暟
         List<QualityInspect> prevList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
-                // .eq(QualityInspect::getInspectState, 1)
-                .le(QualityInspect::getCheckTime, prevEnd));
+                .le(QualityInspect::getCheckTime, prevDayStr));
         // 璁$畻浠婃棩鐨勬�绘楠屾暟
         BigDecimal todayCount = todayList.stream()
                 .map(QualityInspect::getQuantity)
@@ -2038,14 +2011,12 @@
         // 璁$畻浠婂ぉ鐨勫緟瀹屾垚鏁伴噺
         List<QualityInspect> todayPendingList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
                 .eq(QualityInspect::getInspectState, 0)
-                .ge(QualityInspect::getCheckTime, todayStart)
-                .le(QualityInspect::getCheckTime, todayEnd));
+                .eq(QualityInspect::getCheckTime, todayStr));
 
         // 璁$畻鍓嶄竴澶╃殑寰呭畬鎴愭暟閲�
         List<QualityInspect> prevPendingList = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
                 .eq(QualityInspect::getInspectState, 0)
-                .ge(QualityInspect::getCheckTime, prevStart)
-                .le(QualityInspect::getCheckTime, prevEnd));
+                .eq(QualityInspect::getCheckTime, prevDayStr));
         // 璁$畻浠婂ぉ鐨勫緟瀹屾垚鏁伴噺
         BigDecimal todayPendingCount = todayPendingList.stream()
                 .map(QualityInspect::getQuantity)
@@ -2061,14 +2032,12 @@
         List<QualityInspect> todayCompletedList = qualityInspectMapper
                 .selectList(new LambdaQueryWrapper<QualityInspect>()
                         .eq(QualityInspect::getInspectState, 1)
-                        .ge(QualityInspect::getCheckTime, todayStart)
-                        .le(QualityInspect::getCheckTime, todayEnd));
+                        .eq(QualityInspect::getCheckTime, todayStr));
         // 璁$畻鍓嶄竴澶╃殑宸插畬鎴愭暟閲�
         List<QualityInspect> prevCompletedList = qualityInspectMapper
                 .selectList(new LambdaQueryWrapper<QualityInspect>()
                         .eq(QualityInspect::getInspectState, 1)
-                        .ge(QualityInspect::getCheckTime, prevStart)
-                        .le(QualityInspect::getCheckTime, prevEnd));
+                        .eq(QualityInspect::getCheckTime, prevDayStr));
         // 璁$畻浠婂ぉ鐨勫凡瀹屾垚鏁伴噺
         BigDecimal todayCompletedCount = todayCompletedList.stream()
                 .map(QualityInspect::getQuantity)
@@ -2101,18 +2070,16 @@
 
     @Override
     public NonComplianceWarningDto nonComplianceWarning() {
-
-        // 杩戜竷澶╂椂闂村尯闂�
-        LocalDateTime[] range = lastSevenDaysRange();
-        LocalDateTime startTime = range[0];
-        LocalDateTime endTime = range[1];
+        String[] range = lastSevenDaysDateRange();
+        String startStr = range[0];
+        String endStr = range[1];
 
         // 鏌ヨ杩戜竷澶╁凡澶勭悊涓嶅悎鏍兼暟鎹�
         List<QualityUnqualified> list = qualityUnqualifiedMapper.selectList(
                 new LambdaQueryWrapper<QualityUnqualified>()
                         .eq(QualityUnqualified::getInspectState, 1)
-                        .ge(QualityUnqualified::getCheckTime, startTime)
-                        .le(QualityUnqualified::getCheckTime, endTime));
+                        .ge(QualityUnqualified::getCheckTime, startStr)
+                        .le(QualityUnqualified::getCheckTime, endStr));
 
         NonComplianceWarningDto dto = new NonComplianceWarningDto();
 
@@ -2146,33 +2113,23 @@
                 continue;
             }
 
-            // 鎵惧埌浜у搧澶х被
-            Product parent = product.getParentId() == null
-                    ? product
-                    : productMap.get(product.getParentId());
+            // 鎵惧埌浜у搧搴撴牴鑺傜偣锛堜骇鍝佸ぇ绫伙級
+            Product rootProduct = findRootProduct(product, productMap);
 
-            if (parent == null) {
-                continue;
-            }
+            String categoryTitle = resolveProductCategory(rootProduct.getProductName());
 
-            switch (parent.getProductName()) {
-                case "鍘熸潗鏂�":
-                    rawMaterialCount = rawMaterialCount.add(quantity);
-                    break;
-                case "鍗婃垚鍝�":
-                    semiFinishedCount = semiFinishedCount.add(quantity);
-                    break;
-                case "鎴愬搧":
-                    finishedCount = finishedCount.add(quantity);
-                    break;
-                default:
-                    break;
+            if ("鍘熸潗鏂�".equals(categoryTitle)) {
+                rawMaterialCount = rawMaterialCount.add(quantity);
+            } else if ("鍗婃垚鍝�".equals(categoryTitle)) {
+                semiFinishedCount = semiFinishedCount.add(quantity);
+            } else if ("鎴愬搧".equals(categoryTitle)) {
+                finishedCount = finishedCount.add(quantity);
             }
 
             // 缁勮鏄庣粏
             NonComplianceWarningDto.Item child = new NonComplianceWarningDto.Item();
             // child.setProductTitle(item.getProductName());
-            child.setParentProductTitle(parent.getProductName());
+            child.setParentProductTitle(categoryTitle);
             child.setProductTitle(item.getProductName());
             child.setDescription(item.getDefectivePhenomena());
             child.setDate(formatDate(item.getCheckTime()));
@@ -2189,6 +2146,42 @@
         dto.setChildren(children);
 
         return dto;
+    }
+
+    /**
+     * 鍚戜笂鏌ユ壘浜у搧搴撴牴鑺傜偣锛堜骇鍝佸ぇ绫伙級
+     */
+    private Product findRootProduct(Product product, Map<Long, Product> productMap) {
+        Product current = product;
+        int depth = 0;
+        while (current.getParentId() != null && depth++ < 20) {
+            Product parent = productMap.get(current.getParentId());
+            if (parent == null) {
+                break;
+            }
+            current = parent;
+        }
+        return current;
+    }
+
+    /**
+     * 鏍规嵁浜у搧搴撴牴鑺傜偣鍚嶇О璇嗗埆浜у搧澶х被锛氬師鏉愭枡/鍗婃垚鍝�/鎴愬搧
+     * 娉ㄦ剰鍏堝垽鏂崐鎴愬搧锛岄伩鍏嶈鎴愬搧鍖呭惈
+     */
+    private String resolveProductCategory(String rootName) {
+        if (rootName == null) {
+            return "";
+        }
+        if (rootName.contains("鍗婃垚鍝�")) {
+            return "鍗婃垚鍝�";
+        }
+        if (rootName.contains("鎴愬搧")) {
+            return "鎴愬搧";
+        }
+        if (rootName.contains("鍘熸潗鏂�")) {
+            return "鍘熸潗鏂�";
+        }
+        return rootName;
     }
 
     private BigDecimal calcRate(BigDecimal part, BigDecimal total) {
@@ -2211,29 +2204,24 @@
     }
 
     /**
-     * 鑾峰彇杩戜竷澶╃殑鏃堕棿鍖洪棿锛堝寘鍚粖澶╋級
+     * 鑾峰彇杩戜竷澶╃殑鏃ユ湡鍖洪棿锛堜粎鍚勾鏈堟棩锛�
      */
-    public static LocalDateTime[] lastSevenDaysRange() {
+    public static String[] lastSevenDaysDateRange() {
         LocalDate today = LocalDate.now();
-
-        LocalDateTime startTime = today.minusDays(6).atStartOfDay();
-        LocalDateTime endTime = today.atTime(23, 59, 59);
-
-        return new LocalDateTime[] { startTime, endTime };
+        return new String[]{today.minusDays(6).toString(), today.toString()};
     }
 
     @Override
     public List<CompletedInspectionCountDto> completedInspectionCount() {
-        // 杩戜竷澶╂椂闂村尯闂�
-        LocalDateTime[] range = lastSevenDaysRange();
-        LocalDateTime startTime = range[0];
-        LocalDateTime endTime = range[1];
+        String[] range = lastSevenDaysDateRange();
+        String startStr = range[0];
+        String endStr = range[1];
 
         // 鏌ヨ杩戜竷澶╁凡瀹屾垚鐨勬楠屾暟鎹�
         List<QualityInspect> list = qualityInspectMapper.selectList(new LambdaQueryWrapper<QualityInspect>()
                 .eq(QualityInspect::getInspectState, 1)
-                .ge(QualityInspect::getCheckTime, startTime)
-                .le(QualityInspect::getCheckTime, endTime));
+                .ge(QualityInspect::getCheckTime, startStr)
+                .le(QualityInspect::getCheckTime, endStr));
 
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd");
 
@@ -2440,8 +2428,8 @@
 
         List<QualityInspect> qualityInspectList = qualityInspectMapper
                 .selectList(new LambdaQueryWrapper<QualityInspect>()
-                        .ge(QualityInspect::getCheckTime, startDate)
-                        .le(QualityInspect::getCheckTime, endDate)
+                        .ge(QualityInspect::getCheckTime, startDate.toString())
+                        .le(QualityInspect::getCheckTime, endDate.toString())
                         .eq(QualityInspect::getInspectState, 1));
 
         QualityStatisticsDto dto = new QualityStatisticsDto();
@@ -2453,6 +2441,9 @@
         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;
+        }
         // 4. 澶勭悊鍥捐〃椤� (Item)
         List<QualityStatisticsItem> itemList = new ArrayList<>();
 
@@ -2516,7 +2507,7 @@
 
     @Override
     public List<processDataProductionStatisticsDto> processDataProductionStatistics(Integer type,
-            List<Long> processIds) {
+                                                                                    List<Long> processIds) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         Long userId = SecurityUtils.isAdmin(loginUser.getUserId()) ? null : loginUser.getUserId();
 
@@ -2547,4 +2538,4 @@
 
         return productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3