From 1cf91e355038837f30f2d727507b2229263d7de7 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期二, 27 一月 2026 17:49:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |   50 +++++++++++++++++++++++---------------------------
 1 files changed, 23 insertions(+), 27 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 6085d2d..83948ce 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -52,6 +52,7 @@
 import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import com.ruoyi.staff.mapper.StaffOnJobMapper;
 import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.stock.mapper.StockInventoryMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -124,6 +125,7 @@
     private SysUserMapper sysUserMapper;
     @Autowired
     private SysUserDeptMapper sysUserDeptMapper;
+    private StockInventoryMapper stockInventoryMapper;
 
     @Override
     public HomeBusinessDto business() {
@@ -136,7 +138,7 @@
         salesLedgerLambdaQueryWrapper.ge(SalesLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay())  // 澶т簬绛変簬鏈湀绗竴澶�
                 .lt(SalesLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
         List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(salesLedgerLambdaQueryWrapper);
-        if(!CollectionUtils.isEmpty(salesLedgers)){
+        if (!CollectionUtils.isEmpty(salesLedgers)) {
             // 鍚堣鍚堝悓閲戦
             BigDecimal contractAmount = salesLedgers.stream().map(SalesLedger::getContractAmount)
                     .filter(Objects::nonNull)
@@ -158,7 +160,7 @@
                 .lt(PurchaseLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
         // 鎵ц鏌ヨ骞惰绠楁�诲拰
         List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(queryWrapper);
-        if(!CollectionUtils.isEmpty(purchaseLedgers)){
+        if (!CollectionUtils.isEmpty(purchaseLedgers)) {
             LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<SalesLedgerProduct>();
             salesLedgerProductMapperLambdaQueryWrapperCopy.eq(SalesLedgerProduct::getType, 2)
                     .in(SalesLedgerProduct::getSalesLedgerId, purchaseLedgers.stream().map(PurchaseLedger::getId).collect(Collectors.toList()));
@@ -194,17 +196,9 @@
 //                .filter(Objects::nonNull)
 //                .reduce(BigDecimal.ZERO, BigDecimal::add);
 //        BigDecimal stock = stockAmount.add(customStockAmount).subtract(outboundAmount);
-        IPage<ProductModel> productModelIPage = productModelMapper.listPageProductModel(new Page<>(1, -1), new ProductModel());
-        if(!CollectionUtils.isEmpty(productModelIPage.getRecords())){
-            //鑾峰彇瑙勬牸id
-            List<Long> modelIds = productModelIPage.getRecords().stream().map(ProductModel::getId).collect(Collectors.toList());
-            BigDecimal stockQuantityTotal = modelIds.stream()
-                    .map(stockUtils::getStockQuantity)
-                    .map(map -> map.get("stockQuantity"))
-                    .filter(Objects::nonNull)
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
-            homeBusinessDto.setInventoryNum(stockQuantityTotal.setScale(2, RoundingMode.HALF_UP).toString());
-        }
+        BigDecimal stockQuantityTotal = stockInventoryMapper.selectTotal();
+        homeBusinessDto.setInventoryNum(stockQuantityTotal.setScale(2, RoundingMode.HALF_UP).toString());
+
 
         // 鑾峰彇褰撳ぉ鍏ュ簱鏁伴噺
         LambdaQueryWrapper<ProcurementRecordStorage> procurementRecordStorageLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -254,9 +248,9 @@
         BigDecimal subtract = weekContractAmount.subtract(lastYearWeekContractAmount);
         String weekYny = "";
         // 鍛ㄥ悓姣�
-        if(subtract.compareTo(BigDecimal.ZERO) == 0 || lastYearWeekContractAmount.compareTo(BigDecimal.ZERO) == 0){
+        if (subtract.compareTo(BigDecimal.ZERO) == 0 || lastYearWeekContractAmount.compareTo(BigDecimal.ZERO) == 0) {
             weekYny = "0.00";
-        }else{
+        } else {
             weekYny = String.format("%.2f", subtract.divide(lastYearWeekContractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
 
         }
@@ -279,9 +273,9 @@
         BigDecimal subtract1 = todayContractAmount.subtract(lastYearYesterdayContractAmount); // 淇敼锛氫娇鐢� todayContractAmount 鑰屼笉鏄� yesterdayContractAmount
         // 鏃ョ幆姣�
         String chain = "";
-        if(subtract1.compareTo(BigDecimal.ZERO) == 0 || lastYearYesterdayContractAmount.compareTo(BigDecimal.ZERO) == 0){
+        if (subtract1.compareTo(BigDecimal.ZERO) == 0 || lastYearYesterdayContractAmount.compareTo(BigDecimal.ZERO) == 0) {
             chain = "0.00";
-        }else{
+        } else {
             chain = String.format("%.2f", subtract1.divide(lastYearYesterdayContractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
         }
 
@@ -295,14 +289,14 @@
         Map<String, BigDecimal> collect = salesLedgers.stream().collect(Collectors.groupingBy(SalesLedger::getCustomerName, Collectors.reducing(BigDecimal.ZERO,
                 SalesLedger::getContractAmount, BigDecimal::add)));
         List<MapDto> mapDtos = new ArrayList<>();
-        collect.forEach((k,v)->{
+        collect.forEach((k, v) -> {
             MapDto mapDto = new MapDto();
             mapDto.setName(k);
             // 淇敼锛氬皢閲戦鍊间繚鐣欎袱浣嶅皬鏁�
             mapDto.setValue(v.setScale(2, RoundingMode.HALF_UP).toString());
-            if(contractAmount.compareTo(new BigDecimal(0)) == 0){
+            if (contractAmount.compareTo(new BigDecimal(0)) == 0) {
                 mapDto.setRate("0");
-            }else{
+            } else {
                 mapDto.setRate(String.format("%.2f", v.divide(contractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
             }
             mapDtos.add(mapDto);
@@ -348,7 +342,7 @@
                     .filter(inspect -> inspect.getInspectType().equals(1))
                     .map(QualityInspect::getQuantity)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
-            processNum= processNum.add(reduce1);
+            processNum = processNum.add(reduce1);
             BigDecimal reduce2 = monthInspects.stream()
                     .filter(inspect -> inspect.getInspectType().equals(2))
                     .map(QualityInspect::getQuantity)
@@ -435,7 +429,6 @@
     }
 
     /**
-     *
      * @param type 1-鍛� 2-鏈� 3-瀛e害
      * @return
      */
@@ -444,7 +437,7 @@
         LocalDate today = LocalDate.now();
         LocalDate startDate = null;
         LocalDate endDate = null;
-        switch (type){
+        switch (type) {
             case 1:
                 // 鑾峰彇鏈懆鍛ㄤ竴
                 startDate = today.with(DayOfWeek.MONDAY);
@@ -502,6 +495,7 @@
 
         return statisticsReceivablePayableDto;
     }
+
     public static <T> BigDecimal sumAmount(List<T> list, java.util.function.Function<T, BigDecimal> amountExtractor) {
         return list.stream()
                 // 鎻愬彇閲戦鏃讹紝灏唍ull鏇挎崲涓築igDecimal.ZERO
@@ -509,6 +503,7 @@
                 // 绱姞锛屽垵濮嬪�间负0锛岄伩鍏嶇┖娴侀棶棰�
                 .reduce(BigDecimal.ZERO, BigDecimal::add);
     }
+
     @Autowired
     private DeviceRepairMapper deviceRepairMapper;
 
@@ -551,9 +546,10 @@
         productionProgressDto.setTotalOrderCount(totalCount);
         productionProgressDto.setCompletedOrderCount(count);
         productionProgressDto.setUncompletedOrderCount(count2);
-        productionProgressDto.setPartialCompletedOrderCount(totalCount-count-count2);
+        productionProgressDto.setPartialCompletedOrderCount(totalCount - count - count2);
         return productionProgressDto;
     }
+
     @Override
     public ProductionTurnoverDto workInProcessTurnover() {
         ProductionTurnoverDto productionTurnoverDto = new ProductionTurnoverDto();
@@ -566,15 +562,15 @@
                 .map(ProductWorkOrder::getPlanQuantity)
                 .mapToLong(BigDecimal::longValue)
                 .sum();
-        if (sum == 0)return null;
+        if (sum == 0) return null;
         productionTurnoverDto.setTotalOrderCount(sum);//鎬诲湪鍒跺搧鏁伴噺
-        productionTurnoverDto.setAverageTurnoverDays(BigDecimal.valueOf(sum).divide(BigDecimal.valueOf(ChronoUnit.DAYS.between(LocalDateTime.now().minusMonths(1), LocalDateTime.now())),2,RoundingMode.HALF_UP));
+        productionTurnoverDto.setAverageTurnoverDays(BigDecimal.valueOf(sum).divide(BigDecimal.valueOf(ChronoUnit.DAYS.between(LocalDateTime.now().minusMonths(1), LocalDateTime.now())), 2, RoundingMode.HALF_UP));
         long completeQuantity = productWorkOrders.stream()
                 .filter(productWorkOrder -> productWorkOrder.getCompleteQuantity().compareTo(productWorkOrder.getPlanQuantity()) >= 0)
                 .map(ProductWorkOrder::getCompleteQuantity)
                 .mapToLong(BigDecimal::longValue)
                 .sum();
-        productionTurnoverDto.setTurnoverEfficiency(BigDecimal.valueOf(completeQuantity).divide(BigDecimal.valueOf(sum),2,RoundingMode.HALF_UP));
+        productionTurnoverDto.setTurnoverEfficiency(BigDecimal.valueOf(completeQuantity).divide(BigDecimal.valueOf(sum), 2, RoundingMode.HALF_UP));
         Map<String, List<ProductWorkOrderDto>> map = productWorkOrders.stream()
                 .filter(productWorkOrder -> productWorkOrder.getPlanQuantity().compareTo(productWorkOrder.getCompleteQuantity()) > 0)
                 .collect(Collectors.groupingBy(ProductWorkOrderDto::getProcessName));

--
Gitblit v1.9.3