From 161c5e12e3d7f5e2f4345ed3609fe05037ea2b23 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期一, 25 五月 2026 17:15:05 +0800
Subject: [PATCH]   feat: 大屏调整

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |  112 +++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 102 insertions(+), 10 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 7dea6df..174d0b6 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -258,6 +258,96 @@
         return analysisCustomerContractAmountsDto;
     }
 
+    @Override
+    public AnalysisCustomerContractAmountsDto analysisSupplierContractAmounts() {
+        List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(null);
+        // 鍚堣鍚堝悓閲戦
+        BigDecimal contractAmount = purchaseLedgers.stream().map(PurchaseLedger::getContractAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        // 璁$畻鍛ㄥ悓姣�
+        // 鑾峰彇褰撳墠鏃堕棿
+        LocalDate today = LocalDate.now();
+
+        // 鑾峰彇鏈懆鍛ㄤ竴
+        LocalDate startOfWeek = today.with(DayOfWeek.MONDAY);
+
+        // 鑾峰彇鏈懆鍛ㄦ棩
+        LocalDate endOfWeek = today.with(DayOfWeek.SUNDAY);
+        List<PurchaseLedger> purchaseLedgers1 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+                .ge(PurchaseLedger::getEntryDate, startOfWeek)  // 澶т簬绛変簬鏈懆鍛ㄤ竴
+                .lt(PurchaseLedger::getEntryDate, endOfWeek.plusDays(1))); // 浣跨敤 lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
+        BigDecimal weekContractAmount = purchaseLedgers1.stream().map(PurchaseLedger::getContractAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        // 鑾峰彇鍘诲勾鏈懆鏃堕棿
+        LocalDate lastYearStartOfWeek = today.minusYears(1).with(DayOfWeek.MONDAY);
+        LocalDate lastYearEndOfWeek = today.minusYears(1).with(DayOfWeek.SUNDAY);
+        List<PurchaseLedger> purchaseLedgers2 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+                .ge(PurchaseLedger::getEntryDate, lastYearStartOfWeek)  // 澶т簬绛変簬鍘诲勾鏈懆鍛ㄤ竴
+                .lt(PurchaseLedger::getEntryDate, lastYearEndOfWeek.plusDays(1))); // 浣跨敤 lt 骞跺姞涓婁竴澶╂潵鍖呭惈鍛ㄦ棩
+        BigDecimal lastYearWeekContractAmount = purchaseLedgers2.stream().map(PurchaseLedger::getContractAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal subtract = weekContractAmount.subtract(lastYearWeekContractAmount);
+        String weekYny = "";
+        // 鍛ㄥ悓姣�
+        if(subtract.compareTo(BigDecimal.ZERO) == 0 || lastYearWeekContractAmount.compareTo(BigDecimal.ZERO) == 0){
+            weekYny = "0.00";
+        }else{
+            weekYny = String.format("%.2f", subtract.divide(lastYearWeekContractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
+        }
+
+        // 璁$畻鏃ョ幆姣�
+        LocalDate yesterday = today.minusDays(1);
+        LocalDate plusDays = today.plusDays(1);
+        List<PurchaseLedger> purchaseLedgers3 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+                .ge(PurchaseLedger::getEntryDate, today)  // 澶т簬绛変簬浠婂ぉ
+                .lt(PurchaseLedger::getEntryDate, plusDays)); // 浣跨敤 lt 骞跺姞涓婁竴澶╂潵鍖呭惈褰撳ぉ
+        BigDecimal todayContractAmount = purchaseLedgers3.stream().map(PurchaseLedger::getContractAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        List<PurchaseLedger> purchaseLedgers4 = purchaseLedgerMapper.selectList(new LambdaQueryWrapper<PurchaseLedger>()
+                .ge(PurchaseLedger::getEntryDate, yesterday)  // 澶т簬绛変簬鏄ㄥぉ
+                .lt(PurchaseLedger::getEntryDate, today)); // 浣跨敤 lt
+        BigDecimal yesterdayContractAmount = purchaseLedgers4.stream().map(PurchaseLedger::getContractAmount)
+                .filter(Objects::nonNull)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal subtract1 = todayContractAmount.subtract(yesterdayContractAmount);
+        // 鏃ョ幆姣�
+        String chain = "";
+        if(subtract1.compareTo(BigDecimal.ZERO) == 0 || yesterdayContractAmount.compareTo(BigDecimal.ZERO) == 0){
+            chain = "0.00";
+        }else{
+            chain = String.format("%.2f", subtract1.divide(yesterdayContractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100")));
+        }
+
+        AnalysisCustomerContractAmountsDto analysisCustomerContractAmountsDto = new AnalysisCustomerContractAmountsDto();
+        // 灏嗗悎鍚岄噾棰濅繚鐣欎袱浣嶅皬鏁�
+        analysisCustomerContractAmountsDto.setSum(contractAmount.setScale(2, RoundingMode.HALF_UP).toString());
+        analysisCustomerContractAmountsDto.setYny(weekYny);
+        analysisCustomerContractAmountsDto.setChain(chain);
+
+        // 鎸変緵搴斿晢鍚嶇О鍒嗙粍缁熻
+        Map<String, BigDecimal> collect = purchaseLedgers.stream().collect(Collectors.groupingBy(PurchaseLedger::getSupplierName, Collectors.reducing(BigDecimal.ZERO,
+                PurchaseLedger::getContractAmount, BigDecimal::add)));
+        List<MapDto> mapDtos = new ArrayList<>();
+        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){
+                mapDto.setRate("0");
+            }else{
+                mapDto.setRate(String.format("%.2f", v.divide(contractAmount, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
+            }
+            mapDtos.add(mapDto);
+        });
+        analysisCustomerContractAmountsDto.setItem(mapDtos);
+        return analysisCustomerContractAmountsDto;
+    }
+
 
     @Override
     public QualityStatisticsDto qualityStatistics() {
@@ -374,29 +464,31 @@
         }
         // 搴旀敹
         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, BigDecimal::add);
         // 搴斾粯
         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, BigDecimal::add);
         // 棰勬敹
         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, BigDecimal::add);
         // 棰勪粯
         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, BigDecimal::add);
         StatisticsReceivablePayableDto statisticsReceivablePayableDto = new StatisticsReceivablePayableDto();
-        statisticsReceivablePayableDto.setPayableMoney(payableMoney);
-        statisticsReceivablePayableDto.setReceivableMoney(receivableMoney);
+        statisticsReceivablePayableDto.setPayableMoney(payableMoney.subtract(prepayMoney));
+        statisticsReceivablePayableDto.setReceivableMoney(receivableMoney.subtract(advanceMoney));
         statisticsReceivablePayableDto.setAdvanceMoney(advanceMoney);
         statisticsReceivablePayableDto.setPrepayMoney(prepayMoney);
 

--
Gitblit v1.9.3