From 4e80dcbaa393c2dc7fb89461d0ddeae7b872c3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=AC=A7=EF=BC=88=E6=9E=97=E5=B9=B3=E5=87=A1?= =?UTF-8?q?=EF=BC=89?= Date: Thu, 28 Aug 2025 10:17:44 +0800 Subject: [PATCH] 1 --- .../jarvis/InstructionController.java | 2 +- .../jarvis/service/IInstructionService.java | 4 +- .../service/impl/InstructionServiceImpl.java | 50 +++++++++---------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/InstructionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/InstructionController.java index a66f771..550f86f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/InstructionController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/InstructionController.java @@ -30,7 +30,7 @@ public class InstructionController extends BaseController { @PostMapping("/execute") public AjaxResult execute(@RequestBody Map body) { String cmd = body != null ? body.get("command") : null; - String result = instructionService.execute(cmd); + java.util.List result = instructionService.execute(cmd); return AjaxResult.success(result); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IInstructionService.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IInstructionService.java index 60e3293..35ab32f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IInstructionService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/IInstructionService.java @@ -7,9 +7,9 @@ public interface IInstructionService { /** * 执行文本指令,返回结果文本 * @param command 指令内容 - * @return 执行结果文本 + * @return 执行结果文本列表(可能为单条或多条) */ - String execute(String command); + java.util.List execute(String command); } 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 4ab2966..e94380d 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 @@ -58,33 +58,33 @@ public class InstructionServiceImpl implements IInstructionService { "\n"; @Override - public String execute(String command) { + public List execute(String command) { if (command == null || command.trim().isEmpty()) { - return "请输入指令"; + return Collections.singletonList("请输入指令"); } String input = command.trim(); // 一级命令分流:京系(统计/订单)、录单/慢单、转链/礼金… if (input.startsWith("京") || menuKeywords().contains(input)) { - return handleJingFen(input.replaceFirst("^京", "")); + return Collections.singletonList(handleJingFen(input.replaceFirst("^京", ""))); } // TF/H/生 生成类指令 if (input.startsWith("TF")) { - return handleTF(input); + return Collections.singletonList(handleTF(input)); } if (input.startsWith("H")) { - return handleH(input); + return Collections.singletonList(handleH(input)); } if (input.startsWith("生")) { - return handleSheng(input); + return Collections.singletonList(handleSheng(input)); } if (input.startsWith("录单") || input.startsWith("慢单") || input.startsWith("慢搜") || input.startsWith("慢查") || input.startsWith("单")) { - return handleRecordLike(input); + return handleRecordLikeMulti(input); } if (input.startsWith("转链") || input.startsWith("文案") || input.startsWith("转")) { - return handleTransferLike(input); + return Collections.singletonList(handleTransferLike(input)); } - return helpText(); + return Collections.singletonList(helpText()); } private Set menuKeywords() { @@ -124,18 +124,18 @@ public class InstructionServiceImpl implements IInstructionService { } } - private String handleRecordLike(String input) { + private List handleRecordLikeMulti(String input) { // 仅实现“慢搜/慢查 关键词”与“录单/慢单 日期范围”的只读输出,避免侵入写库 if (input.startsWith("慢搜") || input.startsWith("慢查")) { String kw = input.replaceFirst("^慢搜|^慢查", "").trim(); - if (kw.isEmpty()) return "请输入搜索关键词"; + if (kw.isEmpty()) return Collections.singletonList("请输入搜索关键词"); List list = jdOrderService.selectJDOrderList(new JDOrder()); if (list == null) list = Collections.emptyList(); String low = kw.toLowerCase(Locale.ROOT); List matched = list.stream().filter(o -> contains(o.getRemark(), low) || contains(o.getOrderId(), low) || contains(o.getModelNumber(), low) || contains(o.getAddress(), low) || contains(o.getBuyer(), low) ).limit(50).collect(Collectors.toList()); - if (matched.isEmpty()) return "未找到匹配的订单"; + if (matched.isEmpty()) return Collections.singletonList("未找到匹配的订单"); StringBuilder sb = new StringBuilder(); int i = 0; for (JDOrder o : matched) { @@ -154,7 +154,7 @@ public class InstructionServiceImpl implements IInstructionService { .append("\n备注:").append(nvl(o.getStatus())) .append("\n━━━━━━━━━━━━\n"); } - return sb.toString(); + return Collections.singletonList(sb.toString()); } if (input.startsWith("录单")) { // 录单导出样式(tab) @@ -168,7 +168,7 @@ public class InstructionServiceImpl implements IInstructionService { List list = jdOrderService.selectJDOrderList(new JDOrder()); if (list == null) list = Collections.emptyList(); List filtered = list.stream().filter(o -> o.getOrderTime()!=null && !o.getOrderTime().before(start) && !o.getOrderTime().after(end)).collect(Collectors.toList()); - if (filtered.isEmpty()) return "今天没有订单。"; + if (filtered.isEmpty()) return Collections.singletonList("今天没有订单。"); // 按 remark 排序 List sorted = filtered.stream().sorted(Comparator.comparing(JDOrder::getRemark, Comparator.nullsFirst(String::compareTo))).collect(Collectors.toList()); StringBuilder sb = new StringBuilder(); @@ -185,7 +185,7 @@ public class InstructionServiceImpl implements IInstructionService { .append(mapDistribution(o.getDistributionMark())).append('\t') .append(nvl(o.getStatus())).append("\n"); } - return sb.toString(); + return Collections.singletonList(sb.toString()); } if (input.startsWith("慢单")) { // 慢单:分销标记分组 -> 型号统计 + 详情 @@ -199,13 +199,12 @@ public class InstructionServiceImpl implements IInstructionService { List list = jdOrderService.selectJDOrderList(new JDOrder()); if (list == null) list = Collections.emptyList(); List filtered = list.stream().filter(o -> o.getOrderTime()!=null && !o.getOrderTime().before(start) && !o.getOrderTime().after(end)).collect(Collectors.toList()); - if (filtered.isEmpty()) return "今天没有订单。"; + if (filtered.isEmpty()) return Collections.singletonList("今天没有订单。"); Map> byDM = filtered.stream() .filter(o -> o.getStatus() == null || !"拍错退款".equals(o.getStatus())) .collect(Collectors.groupingBy(JDOrder::getDistributionMark)); - - StringBuilder out = new StringBuilder(); + List outputs = new ArrayList<>(); List>> dmEntries = new ArrayList<>(byDM.entrySet()); dmEntries.sort(Comparator.comparing(en -> en.getKey() == null ? "" : en.getKey())); for (Map.Entry> e : dmEntries) { @@ -238,17 +237,18 @@ public class InstructionServiceImpl implements IInstructionService { .append("\n地址:").append(o.getAddress() != null ? o.getAddress() : "未提供") .append("\n物流链接:\n").append(o.getLogisticsLink() != null ? o.getLogisticsLink() : "无"); } - - out.append("分销标记:\n").append(dm) - .append(summary) - .append(detail).append("\n"); + StringBuilder single = new StringBuilder(); + single.append("分销标记:\n").append(dm) + .append(summary) + .append(detail).append("\n"); + outputs.add(single.toString().trim()); } - return out.toString().trim(); + return outputs.isEmpty() ? Collections.singletonList("无数据") : outputs; } if (input.startsWith("单")) { - return handleDanWriteDb(input); + return Collections.singletonList(handleDanWriteDb(input)); } - return helpText(); + return Collections.singletonList(helpText()); } // ===== TF/H/生 处理 =====