This commit is contained in:
2025-10-05 01:13:18 +08:00
parent afa2eb5d8c
commit 7b576cf85c

View File

@@ -243,19 +243,16 @@ public class InstructionServiceImpl implements IInstructionService {
// 全局型号数量和金额统计 // 全局型号数量和金额统计
Map<String, Integer> globalModelCounts = new HashMap<>(); Map<String, Integer> globalModelCounts = new HashMap<>();
Map<String, Double> globalModelAmounts = new HashMap<>(); Map<String, Double> globalPaymentAmounts = new HashMap<>();
Map<String, Double> globalRebateAmounts = new HashMap<>();
for (Map.Entry<String, List<JDOrder>> e : dmEntries) { for (Map.Entry<String, List<JDOrder>> e : dmEntries) {
String dm = e.getKey() != null ? e.getKey() : "未提供"; String dm = e.getKey() != null ? e.getKey() : "未提供";
List<JDOrder> orders = e.getValue(); List<JDOrder> orders = e.getValue();
Map<String, Long> byModel = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.counting())); Map<String, Long> byModel = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.counting()));
Map<String, Double> modelAmounts = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.summingDouble(o -> { Map<String, Double> modelPaymentAmounts = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.summingDouble(o -> o.getPaymentAmount() != null ? o.getPaymentAmount() : 0.0)));
if (o.getPaymentAmount() != null && o.getRebateAmount() != null) { Map<String, Double> modelRebateAmounts = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.summingDouble(o -> o.getRebateAmount() != null ? o.getRebateAmount() : 0.0)));
return o.getPaymentAmount() - o.getRebateAmount();
}
return 0.0;
})));
int totalCount = 0; int totalCount = 0;
StringBuilder summary = new StringBuilder(); StringBuilder summary = new StringBuilder();
@@ -270,8 +267,10 @@ public class InstructionServiceImpl implements IInstructionService {
// 累积到全局统计 // 累积到全局统计
globalModelCounts.put(model, globalModelCounts.getOrDefault(model, 0) + c); globalModelCounts.put(model, globalModelCounts.getOrDefault(model, 0) + c);
Double amount = modelAmounts.get(model); Double paymentAmount = modelPaymentAmounts.get(model);
globalModelAmounts.put(model, globalModelAmounts.getOrDefault(model, 0.0) + (amount != null ? amount : 0.0)); 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详情"); summary.append("总计:").append(totalCount).append("\n详情");
@@ -304,12 +303,22 @@ public class InstructionServiceImpl implements IInstructionService {
priceText.append("型号:").append(model).append(" 数量:").append(count).append("\n"); priceText.append("型号:").append(model).append(" 数量:").append(count).append("\n");
} }
// 输出金额计算 // 输出金额计算(单台价格-返现)
for (Map.Entry<String, Integer> entry : sortedEntries) { for (Map.Entry<String, Integer> entry : sortedEntries) {
String model = entry.getKey(); String model = entry.getKey();
double paymentAmount = globalPaymentAmounts.getOrDefault(model, 0.0);
double rebateAmount = globalRebateAmounts.getOrDefault(model, 0.0);
int count = entry.getValue(); 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()); outputs.add(priceText.toString().trim());