1
This commit is contained in:
@@ -249,26 +249,21 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
List<Map.Entry<String, List<JDOrder>>> dmEntries = new ArrayList<>(byDM.entrySet());
|
||||
dmEntries.sort(Comparator.comparing(en -> en.getKey() == null ? "" : en.getKey()));
|
||||
|
||||
|
||||
// 全局型号数量和金额统计
|
||||
Map<String, Integer> globalModelCounts = new HashMap<>();
|
||||
Map<String, Double> globalPaymentAmounts = new HashMap<>();
|
||||
Map<String, Double> globalRebateAmounts = new HashMap<>();
|
||||
// 记录每个型号的最高单价订单
|
||||
Map<String, JDOrder> globalMaxPriceOrders = new HashMap<>();
|
||||
|
||||
for (Map.Entry<String, List<JDOrder>> e : dmEntries) {
|
||||
String dm = e.getKey() != null ? e.getKey() : "未提供";
|
||||
List<JDOrder> orders = e.getValue();
|
||||
|
||||
Map<String, Long> byModel = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.counting()));
|
||||
Map<String, Double> modelPaymentAmounts = orders.stream().collect(Collectors.groupingBy(JDOrder::getModelNumber, Collectors.summingDouble(o -> o.getPaymentAmount() != null ? o.getPaymentAmount() : 0.0)));
|
||||
Map<String, Double> 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();
|
||||
List<Map.Entry<String, Long>> modelEntries = new ArrayList<>(byModel.entrySet());
|
||||
modelEntries.sort(Comparator.comparing(en -> en.getKey() == null ? "" : en.getKey()));
|
||||
|
||||
// 记录该分组中每个型号的最高单价订单
|
||||
Map<String, JDOrder> groupMaxPriceOrders = new HashMap<>();
|
||||
Map<String, Integer> groupModelCounts = new HashMap<>();
|
||||
|
||||
for (Map.Entry<String, Long> em : modelEntries) {
|
||||
int c = em.getValue().intValue();
|
||||
totalCount += c;
|
||||
@@ -276,21 +271,17 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
|
||||
summary.append("型号:").append(model).append(" 数量:").append(c).append("\n");
|
||||
|
||||
// 累积到全局统计
|
||||
globalModelCounts.put(model, globalModelCounts.getOrDefault(model, 0) + c);
|
||||
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));
|
||||
// 记录该分组的型号数量
|
||||
groupModelCounts.put(model, c);
|
||||
|
||||
// 找到该型号价格最高的订单
|
||||
for (JDOrder order : orders) {
|
||||
if (model.equals(order.getModelNumber())) {
|
||||
JDOrder currentMax = globalMaxPriceOrders.get(model);
|
||||
JDOrder currentMax = groupMaxPriceOrders.get(model);
|
||||
if (currentMax == null ||
|
||||
(order.getPaymentAmount() != null &&
|
||||
(currentMax.getPaymentAmount() == null || order.getPaymentAmount() > currentMax.getPaymentAmount()))) {
|
||||
globalMaxPriceOrders.put(model, order);
|
||||
groupMaxPriceOrders.put(model, order);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -309,14 +300,14 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
StringBuilder infoSingle = new StringBuilder();
|
||||
infoSingle.append("分销标记:").append(dm).append("\n").append(summary).append(detail).append("\n");
|
||||
outputs.add(infoSingle.toString().trim());
|
||||
}
|
||||
|
||||
// 添加算钱文本(全局统计版本)
|
||||
if (!globalModelCounts.isEmpty()) {
|
||||
// 为该分组添加算钱文本
|
||||
if (!groupModelCounts.isEmpty()) {
|
||||
StringBuilder priceText = new StringBuilder();
|
||||
priceText.append("分销标记:").append(dm).append(" - 算钱\n");
|
||||
|
||||
// 先输出型号和数量
|
||||
List<Map.Entry<String, Integer>> sortedEntries = globalModelCounts.entrySet().stream()
|
||||
List<Map.Entry<String, Integer>> sortedEntries = groupModelCounts.entrySet().stream()
|
||||
.sorted(Comparator.comparing(Map.Entry::getKey))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
@@ -338,7 +329,7 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
int count = entry.getValue();
|
||||
|
||||
// 获取该型号最高价格的订单
|
||||
JDOrder maxPriceOrder = globalMaxPriceOrders.get(model);
|
||||
JDOrder maxPriceOrder = groupMaxPriceOrders.get(model);
|
||||
double singlePayment = 0.0;
|
||||
double singleRebate = 0.0;
|
||||
|
||||
@@ -358,7 +349,7 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
if (config != null && config.getCommission() != null) {
|
||||
commission = config.getCommission().doubleValue();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
} catch (Exception ex) {
|
||||
// 如果获取失败,佣金为0
|
||||
}
|
||||
|
||||
@@ -404,6 +395,8 @@ public class InstructionServiceImpl implements IInstructionService {
|
||||
|
||||
outputs.add(priceText.toString().trim());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return outputs.isEmpty() ? Collections.singletonList("无数据") : outputs;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user