1
This commit is contained in:
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user