From cd0984bff3ac9c4480685671d4e033c8b082bfed Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 04 六月 2026 17:04:39 +0800
Subject: [PATCH] 发货去除库存数量限制,产品库存不足也可以发货,库存数量可以展示为负

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |   36 ++++++++++++++++++++----------------
 1 files changed, 20 insertions(+), 16 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 2d3e608..fbd1e65 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -178,8 +178,8 @@
             BigDecimal noInvoiceAmountTotal = salesLedgerProducts.stream().map(SalesLedgerProduct::getNoInvoiceAmount)
                     .filter(Objects::nonNull)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
-            homeBusinessDto.setMonthSaleMoney(contractAmount.setScale(2, RoundingMode.HALF_UP).toString());
-            homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal.setScale(2, RoundingMode.HALF_UP).toString());
+            homeBusinessDto.setMonthSaleMoney(contractAmount.setScale(3, RoundingMode.HALF_UP).toString());
+            homeBusinessDto.setMonthSaleHaveMoney(noInvoiceAmountTotal.setScale(3, RoundingMode.HALF_UP).toString());
         }
         // 鍒涘缓LambdaQueryWrapper
         LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
@@ -208,16 +208,16 @@
                     .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.setMonthPurchaseMoney(receiveAmount.setScale(3, RoundingMode.HALF_UP).toString());
+            homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(3, RoundingMode.HALF_UP).toString());
         }
         // 缁熻搴撳瓨
         BigDecimal stockQuantityTotal = stockInventoryMapper.selectTotal();
-        homeBusinessDto.setInventoryNum(stockQuantityTotal.setScale(2, RoundingMode.HALF_UP).toString());
+        homeBusinessDto.setInventoryNum(stockQuantityTotal.setScale(3, RoundingMode.HALF_UP).toString());
 
         // 鑾峰彇褰撳ぉ鍏ュ簱鏁伴噺
         BigDecimal bigDecimal = stockInventoryMapper.selectTotalByDate(LocalDate.now());
-        homeBusinessDto.setTodayInventoryNum(bigDecimal.setScale(2, RoundingMode.HALF_UP).toString());
+        homeBusinessDto.setTodayInventoryNum(bigDecimal.setScale(3, RoundingMode.HALF_UP).toString());
         return homeBusinessDto;
     }
 
@@ -298,8 +298,12 @@
         analysisCustomerContractAmountsDto.setChain(chain);
 
         Map<String, BigDecimal> collect = salesLedgers.stream()
-                .collect(Collectors.groupingBy(SalesLedger::getCustomerName, Collectors.reducing(BigDecimal.ZERO,
-                        SalesLedger::getContractAmount, BigDecimal::add)));
+                .collect(Collectors.groupingBy(
+                        salesLedger -> StringUtils.isBlank(salesLedger.getCustomerName()) ? "鏈垎閰嶅鎴�" : salesLedger.getCustomerName(),
+                        Collectors.reducing(BigDecimal.ZERO,
+                                salesLedger -> Objects.nonNull(salesLedger.getContractAmount())
+                                        ? salesLedger.getContractAmount() : BigDecimal.ZERO,
+                                BigDecimal::add)));
         List<MapDto> mapDtos = new ArrayList<>();
         collect.forEach((k, v) -> {
             MapDto mapDto = new MapDto();
@@ -584,8 +588,8 @@
     public ProductionTurnoverDto workInProcessTurnover() {
         ProductionTurnoverDto productionTurnoverDto = new ProductionTurnoverDto();
         ProductWorkOrderDto workOrder = new ProductWorkOrderDto();
-        workOrder.setPlanStartTime(LocalDate.now().minusMonths(1));
-        workOrder.setPlanEndTime(LocalDate.now());
+        workOrder.setPlanStartTime(LocalDateTime.now().minusMonths(1));
+        workOrder.setPlanEndTime(LocalDateTime.now());
         List<ProductWorkOrderDto> productWorkOrders = productWorkOrderMapper
                 .pageProductWorkOrder(new Page<>(1, -1), workOrder).getRecords();
         long sum = productWorkOrders.stream()
@@ -1590,23 +1594,23 @@
     @Override
     public List<MapDto> processOutputAnalysis(Integer type) {
         LocalDate today = LocalDate.now();
-        LocalDate startDate;
-        LocalDate endDate = today;
+        LocalDateTime startDate;
+        LocalDateTime endDate = today.atTime(23, 59, 59);
 
         switch (type) {
             case 1: // 鍛�
-                startDate = today.with(DayOfWeek.MONDAY);
+                startDate = today.with(DayOfWeek.MONDAY).atStartOfDay();
                 break;
             case 2: // 鏈�
-                startDate = today.withDayOfMonth(1);
+                startDate = today.withDayOfMonth(1).atStartOfDay();
                 break;
             case 3: // 瀛e害
                 int currentMonth = today.getMonthValue();
                 int startMonth = ((currentMonth - 1) / 3) * 3 + 1;
-                startDate = LocalDate.of(today.getYear(), startMonth, 1);
+                startDate = LocalDate.of(today.getYear(), startMonth, 1).atStartOfDay();
                 break;
             default:
-                startDate = today.with(DayOfWeek.MONDAY);
+                startDate = today.with(DayOfWeek.MONDAY).atStartOfDay();
                 break;
         }
 

--
Gitblit v1.9.3