From 640177684128c04331167f9cf23f641fb09773d9 Mon Sep 17 00:00:00 2001 From: Van0313 <60689272+Van0313@users.noreply.github.com> Date: Thu, 29 May 2025 20:01:08 +0800 Subject: [PATCH] 1 --- .../java/cn/van/business/util/JDUtil.java | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index e3c4871..31382fd 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -1935,30 +1935,39 @@ public class JDUtil { return; } - // 按 remark 升序排序 - todayOrders.sort(Comparator.comparing(JDOrder::getRemark)); + // 按 remark 升序排序(null 值排最后) + todayOrders.sort(Comparator.comparing( + JDOrder::getRemark, + Comparator.nullsLast(String::compareTo) + )); // 先按 distributionMark 分组,再按 modelNumber 分组 Map>> groupedOrders = todayOrders.stream() .collect(Collectors.groupingBy(JDOrder::getDistributionMark, Collectors.groupingBy(JDOrder::getModelNumber))); - // 对每个 distributionMark 分组分别构建并发送消息 - groupedOrders.forEach((distributionMark, modelGroups) -> { + // 遍历每个 distributionMark 分组,生成独立的消息内容并发送 + for (Map.Entry>> entry : groupedOrders.entrySet()) { + String distributionMark = entry.getKey(); + Map> modelGroups = entry.getValue(); + StringBuilder resultBuilder = new StringBuilder(); resultBuilder.append("【").append(distributionMark).append("】").append("\n"); - modelGroups.forEach((modelNumber, orders) -> { + for (Map.Entry> modelEntry : modelGroups.entrySet()) { + String modelNumber = modelEntry.getKey(); + List orders = modelEntry.getValue(); + int count = orders.size(); double totalPaymentAmount = orders.stream() - .mapToDouble(JDOrder::getPaymentAmount) + .mapToDouble(order -> order.getPaymentAmount() != null ? order.getPaymentAmount() : 0.0) .sum(); double totalRebateAmount = orders.stream() - .mapToDouble(JDOrder::getRebateAmount) + .mapToDouble(order -> order.getRebateAmount() != null ? order.getRebateAmount() : 0.0) .sum(); - resultBuilder.append("型号:").append(modelNumber) + resultBuilder.append("型号:").append(modelNumber != null ? modelNumber : "未知") .append("\n数量:").append(count) .append("\n总支付金额:").append(String.format("%.2f", totalPaymentAmount)) .append(" 元") @@ -1967,21 +1976,21 @@ public class JDUtil { .append("\n────────────\n"); for (JDOrder order : orders) { - resultBuilder.append("单:").append(order.getRemark()) - .append("\n型号:").append(order.getModelNumber()) - .append("\n下单付款:").append(order.getPaymentAmount()) + resultBuilder.append("单:").append(order.getRemark() != null ? order.getRemark() : "未提供") + .append("\n型号:").append(order.getModelNumber() != null ? order.getModelNumber() : "未提供") + .append("\n下单付款:").append(order.getPaymentAmount() != null ? String.format("%.2f", order.getPaymentAmount()) : "0.00") .append(" 元") - .append("\n后返金额:").append(order.getRebateAmount()) + .append("\n后返金额:").append(order.getRebateAmount() != null ? String.format("%.2f", order.getRebateAmount()) : "0.00") .append(" 元") - .append("\n地址:").append(order.getAddress()) - .append("\n物流链接:").append(order.getLogisticsLink()) + .append("\n地址:").append(order.getAddress() != null ? order.getAddress() : "未提供") + .append("\n物流链接:").append(order.getLogisticsLink() != null ? order.getLogisticsLink() : "无") .append("\n────────────\n"); } - }); + } // 发送每条分组的消息到微信 wxUtil.sendTextMessage(fromWxid, resultBuilder.toString(), 1, fromWxid, true); - }); + } } else { // 生成当前日期 2025-02-05 String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));