From 7b576cf85cbe0b5312ecf59708063c5486b7846e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=92?= Date: Sun, 5 Oct 2025 01:13:18 +0800 Subject: [PATCH] 1 --- .../service/impl/InstructionServiceImpl.java | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java index 5de4bd4..6ace054 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java @@ -243,19 +243,16 @@ public class InstructionServiceImpl implements IInstructionService { // 全局型号数量和金额统计 Map globalModelCounts = new HashMap<>(); - Map globalModelAmounts = new HashMap<>(); + Map globalPaymentAmounts = new HashMap<>(); + Map globalRebateAmounts = new HashMap<>(); for (Map.Entry> e : dmEntries) { String dm = e.getKey() != null ? e.getKey() : "未提供"; List orders = e.getValue(); Map byModel = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.counting())); - Map modelAmounts = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.summingDouble(o -> { - if (o.getPaymentAmount() != null && o.getRebateAmount() != null) { - return o.getPaymentAmount() - o.getRebateAmount(); - } - return 0.0; - }))); + Map modelPaymentAmounts = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.summingDouble(o -> o.getPaymentAmount() != null ? o.getPaymentAmount() : 0.0))); + Map modelRebateAmounts = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.summingDouble(o -> o.getRebateAmount() != null ? o.getRebateAmount() : 0.0))); int totalCount = 0; StringBuilder summary = new StringBuilder(); @@ -270,8 +267,10 @@ public class InstructionServiceImpl implements IInstructionService { // 累积到全局统计 globalModelCounts.put(model, globalModelCounts.getOrDefault(model, 0) + c); - Double amount = modelAmounts.get(model); - globalModelAmounts.put(model, globalModelAmounts.getOrDefault(model, 0.0) + (amount != null ? amount : 0.0)); + Double paymentAmount = modelPaymentAmounts.get(model); + Double rebateAmount = modelRebateAmounts.get(model); + globalPaymentAmounts.put(model, globalPaymentAmounts.getOrDefault(model, 0.0) + (paymentAmount != null ? paymentAmount : 0.0)); + globalRebateAmounts.put(model, globalRebateAmounts.getOrDefault(model, 0.0) + (rebateAmount != null ? rebateAmount : 0.0)); } summary.append("总计:").append(totalCount).append("\n详情:"); @@ -304,12 +303,22 @@ public class InstructionServiceImpl implements IInstructionService { priceText.append("型号:").append(model).append(" 数量:").append(count).append("\n"); } - // 再输出金额计算 + // 输出金额计算(单台价格-返现) for (Map.Entry entry : sortedEntries) { String model = entry.getKey(); + double paymentAmount = globalPaymentAmounts.getOrDefault(model, 0.0); + double rebateAmount = globalRebateAmounts.getOrDefault(model, 0.0); int count = entry.getValue(); - Double amount = globalModelAmounts.getOrDefault(model, 0.0); - priceText.append(String.format("%.2f", amount)).append("-").append(String.format("%.0f", (double) count * 200)).append("\n"); // 假设每台200元返现 + + // 计算单台价格(总付款金额 / 数量) + double singlePayment = count > 0 ? paymentAmount / count : 0.0; + double singleRebate = count > 0 ? rebateAmount / count : 0.0; + + // 简单格式:单台价格-返现 + priceText.append(String.format("%.1f", singlePayment)) + .append("-") + .append(String.format("%.0f", singleRebate)) + .append("\n"); } outputs.add(priceText.toString().trim());