From a10d561fcbc1ad8f7dcd9a93460a638887e08359 Mon Sep 17 00:00:00 2001 From: van Date: Sun, 12 Apr 2026 23:17:56 +0800 Subject: [PATCH] 1 --- .../service/impl/InstructionServiceImpl.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 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 8737f43..c8b0f27 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 @@ -478,11 +478,11 @@ public class InstructionServiceImpl implements IInstructionService { // ==================== 追加:按下单人分组统计 ==================== outputs.add("\n━━━━━━━ 按下单人统计 ━━━━━━━"); - // 按下单人分组(过滤掉拍错退款) + // 按下单人「前缀」分组:取第一个 "-" 之前为同组(如 凡-林、凡-淑玲 → 凡;陈文慧-林、陈文慧-666 → 陈文慧);无 "-" 则按完整下单人 Map> byBuyer = filtered.stream() .filter(o -> o.getStatus() == null || !"拍错退款".equals(o.getStatus())) .filter(o -> o.getBuyer() != null && !o.getBuyer().isEmpty()) - .collect(Collectors.groupingBy(JDOrder::getBuyer)); + .collect(Collectors.groupingBy(o -> buyerGroupKey(o.getBuyer()))); List>> buyerEntries = new ArrayList<>(byBuyer.entrySet()); buyerEntries.sort(Comparator.comparing(en -> en.getKey() == null ? "" : en.getKey())); @@ -2225,6 +2225,25 @@ public class InstructionServiceImpl implements IInstructionService { return ""; } + /** + * 慢单「按下单人统计」分组键:第一个 "-" 前的前缀视为同一对象;无 "-" 时用整段下单人。 + */ + private static String buyerGroupKey(String buyer) { + if (buyer == null) { + return ""; + } + String t = buyer.trim(); + if (t.isEmpty()) { + return ""; + } + int idx = t.indexOf('-'); + if (idx > 0) { + String prefix = t.substring(0, idx).trim(); + return prefix.isEmpty() ? t : prefix; + } + return t; + } + private boolean contains(Object field, String kwLower) { if (field == null) return false; return String.valueOf(field).toLowerCase(Locale.ROOT).contains(kwLower);