From 9e31a333ceb9e6a51d18c808eabffd8cebc8cb4e Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 21 五月 2026 11:35:49 +0800
Subject: [PATCH] refactor(core): 删除销售台账及相关代码中与发票和待付款金额关联的逻辑

---
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java |  356 ++++++++++++++--------------------------------------------
 1 files changed, 89 insertions(+), 267 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..a17c012 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -3,16 +3,12 @@
 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;
-import com.ruoyi.home.mapper.HomeMapper;
-import com.ruoyi.account.mapper.AccountExpenseMapper;
+import com.ruoyi.account.mapper.purchase.AccountPurchasePaymentMapper;
+import com.ruoyi.account.mapper.sales.AccountSalesCollectionMapper;
 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,41 +23,27 @@
 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.pojo.ProductWorkOrder;
+import com.ruoyi.production.bean.dto.ProductionProductOutputDto;
+import com.ruoyi.production.mapper.*;
 import com.ruoyi.project.system.domain.SysDept;
 import com.ruoyi.project.system.mapper.SysDeptMapper;
-import com.ruoyi.purchase.mapper.PaymentRegistrationMapper;
 import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
-import com.ruoyi.purchase.pojo.PaymentRegistration;
 import com.ruoyi.purchase.pojo.PurchaseLedger;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.quality.pojo.QualityUnqualified;
-import com.ruoyi.sales.mapper.ReceiptPaymentMapper;
 import com.ruoyi.sales.mapper.SalesLedgerMapper;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
-import com.ruoyi.sales.pojo.ReceiptPayment;
 import com.ruoyi.sales.pojo.SalesLedger;
 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.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -81,76 +63,51 @@
  */
 @Service
 @Slf4j
+@RequiredArgsConstructor
 public class HomeServiceImpl implements HomeService {
 
-    @Autowired
-    private SalesLedgerMapper salesLedgerMapper;
+    private final SalesLedgerMapper salesLedgerMapper;
 
-    @Autowired
-    private PurchaseLedgerMapper purchaseLedgerMapper;
+    private final PurchaseLedgerMapper purchaseLedgerMapper;
 
-    @Autowired
-    private SalesLedgerProductMapper salesLedgerProductMapper;
+    private final SalesLedgerProductMapper salesLedgerProductMapper;
 
-    @Autowired
-    private StockInventoryMapper stockInventoryMapper;
+    private final StockInventoryMapper stockInventoryMapper;
 
-    @Autowired
-    private QualityInspectMapper qualityStatisticsMapper;
+    private final QualityInspectMapper qualityStatisticsMapper;
 
-    @Autowired
-    private ApproveProcessMapper approveProcessMapper;
+    private final ApproveProcessMapper approveProcessMapper;
 
-    @Autowired
-    private ReceiptPaymentMapper receiptPaymentMapper;
+    private final SysDeptMapper sysDeptMapper;
 
-    @Autowired
-    private PaymentRegistrationMapper paymentRegistrationMapper;
+    private final NoticeMapper noticeMapper;
 
-    @Autowired
-    private SysDeptMapper sysDeptMapper;
+    private final ProductionOrderMapper productionOrderMapper;
 
-    @Autowired
-    private NoticeMapper noticeMapper;
+    private final ProductMapper productMapper;
 
-    @Autowired
-    private ProductOrderMapper productOrderMapper;
+    private final StaffOnJobMapper staffOnJobMapper;
 
-    @Autowired
-    private ProductWorkOrderMapper productWorkOrderMapper;
+    private final CustomerMapper customerMapper;
 
-    @Autowired
-    private ProductMapper productMapper;
+    private final SupplierManageMapper supplierManageMapper;
 
-    @Autowired
-    private StaffOnJobMapper staffOnJobMapper;
+    private final HomeMapper homeMapper;
 
-    @Autowired
-    private CustomerMapper customerMapper;
+    private final ProductionProductOutputMapper productionProductOutputMapper;
 
-    @Autowired
-    private SupplierManageMapper supplierManageMapper;
+    private final QualityInspectMapper qualityInspectMapper;
 
-    @Autowired
-    private HomeMapper homeMapper;
+    private final QualityUnqualifiedMapper qualityUnqualifiedMapper;
 
-    @Autowired
-    private ProductionProductOutputMapper productionProductOutputMapper;
+    private final ProductionOperationTaskMapper productionOperationTaskMapper;
 
-    @Autowired
-    private QualityInspectMapper qualityInspectMapper;
+    private final AccountPurchasePaymentMapper accountPurchasePaymentMapper;
+    private final AccountSalesCollectionMapper accountSalesCollectionMapper;
 
-    @Autowired
-    private QualityUnqualifiedMapper qualityUnqualifiedMapper;
+    private final ProductionAccountMapper productionAccountMapper;
 
-    @Autowired
-    private ProductProcessMapper productProcessMapper;
-    
-    @Autowired
-    private AccountExpenseMapper accountExpenseMapper;
-
-    @Autowired
-    private AccountIncomeMapper accountIncomeMapper;
+    private final ProductionProductInputMapper productionProductInputMapper;
 
     @Override
     public HomeBusinessDto business() {
@@ -174,12 +131,8 @@
                             salesLedgers.stream().map(SalesLedger::getId).collect(Collectors.toList()));
             List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper
                     .selectList(salesLedgerProductMapperLambdaQueryWrapper);
-            // 鏈紑绁ㄩ噾棰�
-            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.setMonthSaleHaveMoney(BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP).toString());
         }
         // 鍒涘缓LambdaQueryWrapper
         LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
@@ -202,14 +155,8 @@
                     .filter(Objects::nonNull)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
 
-            //  寰呬粯娆炬�婚噾棰�
-            BigDecimal unReceiptPaymentAmount = salesLedgerProductsCopy.stream()
-                    .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(BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP).toString());
         }
         // 缁熻搴撳瓨
         BigDecimal stockQuantityTotal = stockInventoryMapper.selectTotal();
@@ -447,6 +394,7 @@
      */
     @Override
     public StatisticsReceivablePayableDto statisticsReceivablePayable(Integer type) {
+        StatisticsReceivablePayableDto statisticsReceivablePayableDto = new StatisticsReceivablePayableDto();
         LocalDate today = LocalDate.now();
         LocalDate startDate = null;
         LocalDate endDate = null;
@@ -473,48 +421,14 @@
                 break;
         }
         // 搴旀敹
-        List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new LambdaQueryWrapper<SalesLedger>()
-                // .ge(SalesLedger::getEntryDate, startDate)
-                // .lt(SalesLedger::getEntryDate, endDate)
-        );
-        // BigDecimal receivableMoney =
-        // salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO,
-        // BigDecimal::add);
-        BigDecimal receivableMoney = sumAmount(salesLedgers, SalesLedger::getContractAmount);
+
         // 搴斾粯
-        List<PurchaseLedger> procurementRecords = purchaseLedgerMapper
-                .selectList(new LambdaQueryWrapper<PurchaseLedger>()
-                        // .ge(PurchaseLedger::getEntryDate, startDate)
-                        // .lt(PurchaseLedger::getEntryDate, endDate)
-                );
-        // BigDecimal payableMoney =
-        // procurementRecords.stream().map(PurchaseLedger::getContractAmount).reduce(BigDecimal.ZERO,
-        // BigDecimal::add);
-        BigDecimal payableMoney = sumAmount(procurementRecords, PurchaseLedger::getContractAmount);
+
         // 棰勬敹
-        List<ReceiptPayment> receiptPayments = receiptPaymentMapper.selectList(new LambdaQueryWrapper<ReceiptPayment>()
-                // .ge(ReceiptPayment::getReceiptPaymentDate, startDate)
-                // .lt(ReceiptPayment::getReceiptPaymentDate, endDate)
-        );
-        // BigDecimal advanceMoney =
-        // receiptPayments.stream().map(ReceiptPayment::getReceiptPaymentAmount).reduce(BigDecimal.ZERO,
-        // BigDecimal::add);
-        BigDecimal advanceMoney = sumAmount(receiptPayments, ReceiptPayment::getReceiptPaymentAmount);
+
         // 棰勪粯
-        List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper
-                .selectList(new LambdaQueryWrapper<PaymentRegistration>()
-                        // .ge(PaymentRegistration::getPaymentDate, startDate)
-                        // .lt(PaymentRegistration::getPaymentDate, endDate)
-                );
-        // BigDecimal prepayMoney =
-        // paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO,
-        // BigDecimal::add);
-        BigDecimal prepayMoney = sumAmount(paymentRegistrations, PaymentRegistration::getCurrentPaymentAmount);
-        StatisticsReceivablePayableDto statisticsReceivablePayableDto = new StatisticsReceivablePayableDto();
-        statisticsReceivablePayableDto.setPayableMoney(payableMoney.subtract(prepayMoney));
-        statisticsReceivablePayableDto.setReceivableMoney(receivableMoney.subtract(advanceMoney));
-        statisticsReceivablePayableDto.setAdvanceMoney(advanceMoney);
-        statisticsReceivablePayableDto.setPrepayMoney(prepayMoney);
+
+
 
         return statisticsReceivablePayableDto;
     }
@@ -527,7 +441,7 @@
                 .reduce(BigDecimal.ZERO, BigDecimal::add);
     }
 
-    @Autowired
+
     private DeviceRepairMapper deviceRepairMapper;
 
     @Override
@@ -560,18 +474,15 @@
     @Override
     public ProductionProgressDto productionProgress() {
         ProductionProgressDto productionProgressDto = new ProductionProgressDto();
-        ProductOrderDto orderDto = new ProductOrderDto();
-        orderDto.setStartTime(LocalDateTime.now().minusMonths(1));
-        orderDto.setEndTime(LocalDateTime.now());
-        List<ProductOrderDto> productOrderDtos = productOrderMapper.pageProductOrder(new Page<>(1, -1), orderDto)
-                .getRecords();
-        productionProgressDto.setCompletedOrderDetails(productOrderDtos);
-        long totalCount = productOrderDtos.size();
-        long count = productOrderDtos.stream().filter(
-                        productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(productOrderDto.getQuantity()) >= 0)
+        List<ProductionProgressOrderDto> orderDetails = productionOrderMapper.selectProgressOrders(
+                LocalDateTime.now().minusMonths(1), LocalDateTime.now());
+        productionProgressDto.setCompletedOrderDetails(orderDetails);
+        long totalCount = orderDetails.size();
+        long count = orderDetails.stream().filter(
+                        item -> defaultDecimal(item.getCompleteQuantity()).compareTo(defaultDecimal(item.getQuantity())) >= 0)
                 .count();
-        long count2 = productOrderDtos.stream()
-                .filter(productOrderDto -> productOrderDto.getCompleteQuantity().compareTo(BigDecimal.ZERO) == 0)
+        long count2 = orderDetails.stream()
+                .filter(item -> defaultDecimal(item.getCompleteQuantity()).compareTo(BigDecimal.ZERO) == 0)
                 .count();
         productionProgressDto.setTotalOrderCount(totalCount);
         productionProgressDto.setCompletedOrderCount(count);
@@ -583,15 +494,11 @@
     @Override
     public ProductionTurnoverDto workInProcessTurnover() {
         ProductionTurnoverDto productionTurnoverDto = new ProductionTurnoverDto();
-        ProductWorkOrderDto workOrder = new ProductWorkOrderDto();
-        workOrder.setPlanStartTime(LocalDate.now().minusMonths(1));
-        workOrder.setPlanEndTime(LocalDate.now());
-        List<ProductWorkOrderDto> productWorkOrders = productWorkOrderMapper
-                .pageProductWorkOrder(new Page<>(1, -1), workOrder).getRecords();
-        long sum = productWorkOrders.stream()
-                .filter(productWorkOrder -> productWorkOrder.getPlanQuantity()
-                        .compareTo(productWorkOrder.getCompleteQuantity()) > 0)
-                .map(ProductWorkOrder::getPlanQuantity)
+        List<ProductionTaskStatisticsDto> taskList = productionOperationTaskMapper
+                .selectTaskStatisticsByDate(LocalDate.now().minusMonths(1), LocalDate.now());
+        long sum = taskList.stream()
+                .filter(task -> defaultDecimal(task.getPlanQuantity()).compareTo(defaultDecimal(task.getCompleteQuantity())) > 0)
+                .map(ProductionTaskStatisticsDto::getPlanQuantity)
                 .mapToLong(BigDecimal::longValue)
                 .sum();
         if (sum == 0)
@@ -600,23 +507,21 @@
         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)
+        long completeQuantity = taskList.stream()
+                .filter(task -> defaultDecimal(task.getCompleteQuantity()).compareTo(defaultDecimal(task.getPlanQuantity())) >= 0)
+                .map(ProductionTaskStatisticsDto::getCompleteQuantity)
                 .mapToLong(BigDecimal::longValue)
                 .sum();
         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));
+        Map<String, List<ProductionTaskStatisticsDto>> map = taskList.stream()
+                .filter(task -> defaultDecimal(task.getPlanQuantity()).compareTo(defaultDecimal(task.getCompleteQuantity())) > 0)
+                .collect(Collectors.groupingBy(ProductionTaskStatisticsDto::getProcessName));
         List<String> strings = new ArrayList<>();
         List<Long> processQuantityDetails = new ArrayList<>();
         map.entrySet().stream().forEach(entry -> {
             String key = entry.getKey();
-            long completeSum = entry.getValue().stream().map(ProductWorkOrderDto::getCompleteQuantity)
+            long completeSum = entry.getValue().stream().map(ProductionTaskStatisticsDto::getCompleteQuantity)
                     .mapToLong(BigDecimal::longValue).sum();
             strings.add(key);
             processQuantityDetails.add(completeSum);
@@ -1206,13 +1111,9 @@
         String endStr = endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 
         // 2. 鏌ヨ鏁版嵁
-        List<IncomeExpenseAnalysisDto> incomeList = accountIncomeMapper.selectIncomeStats(startStr, endStr, dateFormat);
+        List<IncomeExpenseAnalysisDto> incomeList = accountSalesCollectionMapper.selectIncomeStats(startStr, endStr, dateFormat);
+        List<IncomeExpenseAnalysisDto> expenseList = accountPurchasePaymentMapper.selectPayment(startStr, endStr, dateFormat);
 
-        // List<IncomeExpenseAnalysisDto> purchaseList =
-        // purchaseLedgerMapper.selectPurchaseStats(startStr, endStr, dateFormat);
-
-        List<IncomeExpenseAnalysisDto> expenseList = accountExpenseMapper.selectAccountExpenseStats(startStr, endStr,
-                dateFormat);
 
         // 3. 杞� Map锛堣嚜鍔ㄥ悎骞讹級
         Map<String, BigDecimal> incomeMap = incomeList.stream()
@@ -1221,11 +1122,7 @@
                         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(
@@ -1239,18 +1136,12 @@
         for (String dateStr : xAxis) {
             Map<String, Object> item = new HashMap<>();
             item.put("date", dateStr);
-
             // 鏀跺叆
             BigDecimal income = incomeMap.getOrDefault(dateStr, BigDecimal.ZERO);
             item.put("income", income.setScale(2, RoundingMode.HALF_UP));
-
-            // 鏀嚭 = 閲囪喘 + 璐㈠姟鏀嚭
-            // BigDecimal purchase = purchaseMap.getOrDefault(dateStr, BigDecimal.ZERO);
+            // 鏀嚭
             BigDecimal expense = expenseMap.getOrDefault(dateStr, BigDecimal.ZERO);
-            // BigDecimal totalExpense = purchase.add(expense);
-            BigDecimal totalExpense = expense;
-
-            item.put("expense", totalExpense.setScale(2, RoundingMode.HALF_UP));
+            item.put("expense", expense.setScale(2, RoundingMode.HALF_UP));
 
             result.add(item);
         }
@@ -1277,8 +1168,8 @@
         String startStr = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
         String endStr = endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 
-        List<IncomeExpenseAnalysisDto> incomeList = accountIncomeMapper.selectIncomeStats(startStr, endStr, dateFormat);
-        List<IncomeExpenseAnalysisDto> expenseList = accountExpenseMapper.selectAccountExpenseStats(startStr, endStr, dateFormat);
+        List<IncomeExpenseAnalysisDto> incomeList = accountSalesCollectionMapper.selectIncomeStats(startStr, endStr, dateFormat);
+        List<IncomeExpenseAnalysisDto> expenseList = accountPurchasePaymentMapper.selectPayment(startStr, endStr, dateFormat);
 
         Map<String, BigDecimal> incomeMap = incomeList.stream().collect(Collectors
                 .toMap(IncomeExpenseAnalysisDto::getDateStr, IncomeExpenseAnalysisDto::getAmount, BigDecimal::add));
@@ -1314,11 +1205,6 @@
             rawMaterialDto.setName("鍘熸潗鏂�");
             rawMaterialDto.setValue(rawMaterialAmount != null ? rawMaterialAmount.toString() : "0");
             result.add(rawMaterialDto);
-
-            List<MapDto> expenseList = accountExpenseMapper.selectExpenseComposition(null, null);
-            if (expenseList != null) {
-                result.addAll(expenseList);
-            }
         }
 
         BigDecimal total = BigDecimal.ZERO;
@@ -1369,34 +1255,6 @@
             return dto;
         }
 
-        BigDecimal collected = products.stream()
-                .map(SalesLedgerProduct::getInvoiceTotal)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add);
-        dto.setMonthlyIncome(collected);
-
-        BigDecimal overdue = products.stream()
-                .map(SalesLedgerProduct::getPendingInvoiceTotal)
-                .filter(Objects::nonNull)
-                .reduce(BigDecimal.ZERO, BigDecimal::add);
-        dto.setOverdueNum(overdue);
-
-        BigDecimal total = collected.add(overdue);
-
-        if (total.compareTo(BigDecimal.ZERO) > 0) {
-            String collectionRate = collected.divide(total, 4, RoundingMode.HALF_UP)
-                    .multiply(new BigDecimal("100"))
-                    .setScale(2, RoundingMode.HALF_UP)
-                    .toString();
-            dto.setCollectionRate(collectionRate);
-
-            String overdueRate = overdue.divide(total, 4, RoundingMode.HALF_UP)
-                    .multiply(new BigDecimal("100"))
-                    .setScale(2, RoundingMode.HALF_UP)
-                    .toString();
-            dto.setOverdueRate(overdueRate);
-        }
-
         return dto;
     }
 
@@ -1428,38 +1286,14 @@
                 if (p.getTaxInclusiveTotalPrice() != null) {
                     rawMaterialCost = rawMaterialCost.add(p.getTaxInclusiveTotalPrice());
                 }
-
-                if (p.getTicketsTotal() != null) {
-                    paidAmount = paidAmount.add(p.getTicketsTotal());
-                }
-
-                if (p.getPendingTicketsTotal() != null) {
-                    pendingAmount = pendingAmount.add(p.getPendingTicketsTotal());
-                }
             }
         }
 
         // 鍏朵粬璐圭敤
-        LambdaQueryWrapper<AccountExpense> expenseWrapper = new LambdaQueryWrapper<>();
-        expenseWrapper.ge(AccountExpense::getExpenseDate,
-                java.sql.Date.valueOf(currentMonth.atDay(1)));
-        expenseWrapper.le(AccountExpense::getExpenseDate,
-                java.sql.Date.valueOf(currentMonth.atEndOfMonth()));
 
-        List<AccountExpense> expenses = accountExpenseMapper.selectList(expenseWrapper);
-
-        BigDecimal otherExpense = BigDecimal.ZERO;
-        if (!CollectionUtils.isEmpty(expenses)) {
-            for (AccountExpense e : expenses) {
-                if (e.getExpenseMoney() != null) {
-                    otherExpense = otherExpense.add(e.getExpenseMoney());
-                }
-            }
-        }
 
         // 鏈堝害鎬绘敮鍑�
-        // BigDecimal monthlyExpenditure = rawMaterialCost.add(otherExpense);
-        BigDecimal monthlyExpenditure = otherExpense;
+        BigDecimal monthlyExpenditure = BigDecimal.ZERO;
         dto.setMonthlyExpenditure(monthlyExpenditure);
 
         // 宸蹭粯娆� 梅锛堝凡浠樻 + 寰呬粯娆撅級
@@ -1482,13 +1316,6 @@
         List<SalesLedgerProduct> salesProducts = salesLedgerProductMapper.selectList(salesWrapper);
 
         BigDecimal revenue = BigDecimal.ZERO;
-        if (!CollectionUtils.isEmpty(salesProducts)) {
-            for (SalesLedgerProduct s : salesProducts) {
-                if (s.getInvoiceAmount() != null) {
-                    revenue = revenue.add(s.getInvoiceAmount());
-                }
-            }
-        }
 
         // 姣涘埄娑� & 鍒╂鼎鐜�
         if (revenue.compareTo(BigDecimal.ZERO) > 0) {
@@ -1510,9 +1337,6 @@
 
         return dto;
     }
-
-    @Autowired
-    private ProductionProductInputMapper productionProductInputMapper;
 
     @Override
     public List<InputOutputAnalysisDto> inputOutputAnalysis(Integer type) {
@@ -1544,7 +1368,8 @@
         String endStr = endDate.atStartOfDay()
                 .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
 
-        List<Map<String, Object>> inputList = productionProductInputMapper.selectInputStats(startStr, endStr);
+//        List<Map<String, Object>> inputList = productionProductInputMapper.selectInputStats(startStr, endStr);
+        List<Map<String, Object>> inputList = null;
         List<Map<String, Object>> outputList = productionProductOutputMapper.selectDailyOutputStats(startStr, endStr);
 
         Map<String, InputOutputAnalysisDto> dateMap = new HashMap<>();
@@ -1610,12 +1435,7 @@
                 break;
         }
 
-        ProductWorkOrderDto queryDto = new ProductWorkOrderDto();
-        queryDto.setPlanStartTime(startDate);
-        queryDto.setPlanEndTime(endDate);
-
-        List<ProductWorkOrderDto> list = productWorkOrderMapper.pageProductWorkOrder(new Page<>(1, -1), queryDto)
-                .getRecords();
+        List<ProductionTaskStatisticsDto> list = productionOperationTaskMapper.selectTaskStatisticsByDate(startDate, endDate);
 
         if (CollectionUtils.isEmpty(list)) {
             return new ArrayList<>();
@@ -1624,9 +1444,9 @@
         Map<String, BigDecimal> processOutputMap = list.stream()
                 .filter(item -> item.getProcessName() != null && item.getCompleteQuantity() != null)
                 .collect(Collectors.groupingBy(
-                        ProductWorkOrderDto::getProcessName,
+                        ProductionTaskStatisticsDto::getProcessName,
                         Collectors.reducing(BigDecimal.ZERO,
-                                ProductWorkOrderDto::getCompleteQuantity,
+                                ProductionTaskStatisticsDto::getCompleteQuantity,
                                 BigDecimal::add)));
 
         BigDecimal total = processOutputMap.values().stream()
@@ -1680,17 +1500,17 @@
         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"));
 
-        List<ProductWorkOrderDto> startList = productWorkOrderMapper.selectWorkOrderStartStats(startStr, endStr);
+        List<ProductionTaskStatisticsDto> startList = productionOperationTaskMapper.selectTaskStartStats(startStr, endStr);
 
-        List<com.ruoyi.production.dto.ProductionProductOutputDto> outputList = productionProductOutputMapper
+        List<ProductionProductOutputDto> outputList = productionProductOutputMapper
                 .selectOutputStats(startStr, endStr);
 
         Map<String, WorkOrderEfficiencyDto> dateMap = new HashMap<>();
 
         if (!CollectionUtils.isEmpty(startList)) {
-            for (ProductWorkOrderDto item : startList) {
-                if (item.getPlanStartTime() != null) {
-                    String date = item.getPlanStartTime().toString();
+            for (ProductionTaskStatisticsDto item : startList) {
+                if (item.getActualStartTime() != null) {
+                    String date = item.getActualStartTime().toString();
                     WorkOrderEfficiencyDto dto = dateMap.getOrDefault(date, new WorkOrderEfficiencyDto());
                     dto.setDate(date);
                     BigDecimal qty = item.getPlanQuantity() != null ? item.getPlanQuantity() : BigDecimal.ZERO;
@@ -1702,7 +1522,7 @@
 
         // 瀹屽伐鏁伴噺鍜岃壇鍝佺巼
         if (!CollectionUtils.isEmpty(outputList)) {
-            for (com.ruoyi.production.dto.ProductionProductOutputDto item : outputList) {
+            for (ProductionProductOutputDto item : outputList) {
                 if (item.getCreateTime() != null) {
                     String date = item.getCreateTime().toLocalDate().toString();
                     WorkOrderEfficiencyDto dto = dateMap.getOrDefault(date, new WorkOrderEfficiencyDto());
@@ -1775,8 +1595,6 @@
                 .collect(Collectors.toList());
     }
 
-    @Autowired
-    private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
 
     @Override
     public List<ProductionAccountingDto> productionAccountingAnalysis(Integer type) {
@@ -1805,7 +1623,7 @@
 
         String endStr = endDate.plusDays(1).atStartOfDay().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
 
-        List<Map<String, Object>> wagesList = salesLedgerProductionAccountingMapper.selectDailyWagesStats(startStr,
+        List<Map<String, Object>> wagesList = productionAccountMapper.selectDailyWagesStats(startStr,
                 endStr);
 
         if (CollectionUtils.isEmpty(wagesList)) {
@@ -1841,16 +1659,16 @@
         String lastEnd = lastMonthDate.withDayOfMonth(lastMonthDate.lengthOfMonth()).atTime(LocalTime.MAX)
                 .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
 
-        int currentCreated = productOrderMapper.countCreated(currentStart, currentEnd);
-        int lastCreated = productOrderMapper.countCreated(lastStart, lastEnd);
+        int currentCreated = productionOrderMapper.countCreated(currentStart, currentEnd);
+        int lastCreated = productionOrderMapper.countCreated(lastStart, lastEnd);
         MapDto createdDto = createOrderCountDto("鐢熶骇璁㈠崟鏁�", currentCreated, lastCreated);
 
-        int currentCompleted = productOrderMapper.countCompleted(currentStart, currentEnd);
-        int lastCompleted = productOrderMapper.countCompleted(lastStart, lastEnd);
+        int currentCompleted = productionOrderMapper.countCompleted(currentStart, currentEnd);
+        int lastCompleted = productionOrderMapper.countCompleted(lastStart, lastEnd);
         MapDto completedDto = createOrderCountDto("宸插畬鎴愯鍗曟暟", currentCompleted, lastCompleted);
 
-        int currentPending = productOrderMapper.countPending(currentStart, currentEnd);
-        int lastPending = productOrderMapper.countPending(lastStart, lastEnd);
+        int currentPending = productionOrderMapper.countPending(currentStart, currentEnd);
+        int lastPending = productionOrderMapper.countPending(lastStart, lastEnd);
         MapDto pendingDto = createOrderCountDto("寰呯敓浜ц鍗曟暟", currentPending, lastPending);
 
         return Arrays.asList(createdDto, completedDto, pendingDto);
@@ -2510,6 +2328,10 @@
         LocalDateTime startDateTime = startDate.atStartOfDay();
         LocalDateTime endDateTime = endDate.atTime(LocalTime.MAX);
 
-        return productProcessMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
+        return productionOperationTaskMapper.calculateProductionStatistics(startDateTime, endDateTime, userId, processIds);
+    }
+
+    private BigDecimal defaultDecimal(BigDecimal value) {
+        return value == null ? BigDecimal.ZERO : value;
     }
 }

--
Gitblit v1.9.3