From dba361bed3d8bfcefccc3c1bb585885476261717 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: Fri, 10 Oct 2025 17:58:30 +0800 Subject: [PATCH] 1 --- .../service/impl/InstructionServiceImpl.java | 57 ++++++++++++------- 1 file changed, 37 insertions(+), 20 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 7d149b2..6b46390 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 @@ -443,9 +443,8 @@ private String handleTF(String input) { * 10.10 腾锋 JY202510093195 ZQD180F-EB200 1 石**[7796] 13243039070 上海市 上海市 普陀区 水泉南路58弄3-12-502[阿15783543077转7796] 1650 有货 2 * 型号,地址,电话的处理逻辑不变,将10.10 腾锋 JY202510093195 设置成分销标识这个字段,比如之前是H-TF,现在改成H-TF(10.10 腾锋 JY202510093195) * */ - if (parts.length >= 3) { - // 新增部分:处理分销标记 - String fenxiaoInfo = ""; + if (parts.length >= 7) { // 至少需要分销信息(3) + 型号(1) + 数量(1) + 姓名(1) + 电话(1) = 7个字段 + // 处理分销标记: 取前3个字段作为分销信息 StringBuilder fenxiaoBuilder = new StringBuilder("H-TF"); StringBuilder extraInfo = new StringBuilder(); for (int i = 0; i < Math.min(3, parts.length); i++) { @@ -459,41 +458,59 @@ private String handleTF(String input) { if (extraInfo.length() > 0) { fenxiaoBuilder.append("(").append(extraInfo).append(")"); } - fenxiaoInfo = fenxiaoBuilder.toString(); + String fenxiaoInfo = fenxiaoBuilder.toString(); - String modelNumber = parts[Math.max(0, parts.length - 5)].replace("\\n", ""); // 型号 - String quantityStr = parts[Math.max(0, parts.length - 4)]; // 数量 - StringBuilder address = new StringBuilder(); - // 使用正则表达式提取中文字符(常用于姓名开头) - Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+"); - String namePart = parts[Math.max(0, parts.length - 3)]; - Matcher matcher = pattern.matcher(namePart); - if (matcher.find()) { - address = new StringBuilder(matcher.group()); - } - String phone = parts[Math.max(0, parts.length - 2)]; + // 提取型号(第4个字段) + String modelNumber = parts[3].replace("\\n", ""); + + // 提取数量(第5个字段) + String quantityStr = parts[4]; + + // 提取姓名部分(第6个字段) + String namePart = parts[5]; + + // 提取电话(第7个字段) + String phone = parts[6]; //从phoneWithTF随机拿一个出来 if ("13243039070".equals(phone)) { phone = phoneWithTF.get(new Random().nextInt(phoneWithTF.size())); } - address.append(phone); - System.out.println(address); - for (int i = Math.max(0, parts.length - 1); i < parts.length; i++) { - address.append(parts[i]); + + // 构建地址:姓名+电话+地址信息 + StringBuilder address = new StringBuilder(); + + // 使用正则表达式提取中文字符(常用于姓名开头) + Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+"); + Matcher matcher = pattern.matcher(namePart); + if (matcher.find()) { + address = new StringBuilder(matcher.group()); } + address.append(phone); + + // 添加地址信息(从第8个字段开始的所有剩余内容) + for (int i = 7; i < parts.length; i++) { + if (!parts[i].trim().isEmpty()) { + // 过滤掉纯数字的价格信息 + if (!parts[i].matches("^\\d+$") && !parts[i].matches("^[有无缺]货$")) { + address.append(parts[i]); + } + } + } + String jf = productJdConfigService.getJdUrlByProductModel(modelNumber); StringBuilder order = new StringBuilder(); order.append("生").append("\n").append(fenxiaoInfo).append("\n").append(modelNumber).append("\n").append(jf).append("\n").append(quantityStr).append("\n").append(address); outputs.add(generateOrderText(order.toString())); } else { - outputs.add("TF 指令格式:TF\t分销信息\t分销信息\t分销信息\t型号\t数量\t地址(可含其它字段) ;也支持多行,每行一条数据"); + outputs.add("TF 指令格式:TF\t分销信息\t分销信息\t分销信息\t型号\t数量\t姓名\t电话\t地址 ;也支持多行,每行一条数据"); } } return String.join("\n\n", outputs); } + private String handleH(String input) { String[] lines = input.replaceFirst("^H", "").split("\n"); if (lines.length < 3) return "H 指令需三行:姓名[后缀]\n电话\n地址 … [后缀] 型号";