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 8d80a47..9c092ed 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 @@ -657,7 +657,19 @@ public class InstructionServiceImpl implements IInstructionService { return outputs.isEmpty() ? Collections.singletonList("无数据") : outputs; } if (input.startsWith("单")) { - return Collections.singletonList(handleDanWriteDb(input, forceGenerate, isFromConsole)); + String primary = handleDanWriteDb(input, forceGenerate, isFromConsole); + String norm = input.trim().replace("元", ""); + if (isNewOrderFormInput(norm)) { + JDOrder parsedForSummary = parseOrderFromText(norm); + String compact = buildNewFormDanCompactSummary(parsedForSummary); + if (compact != null) { + List two = new ArrayList<>(2); + two.add(primary); + two.add(compact); + return two; + } + } + return Collections.singletonList(primary); } return Collections.singletonList(helpText()); } @@ -1284,6 +1296,48 @@ public class InstructionServiceImpl implements IInstructionService { return s.replaceAll("[\\t ]+", " ").replaceAll("\n{3,}", "\n\n").trim(); } + /** 是否与录单表单新模板一致(与 {@link #formatOrderForm} 中判断一致) */ + private boolean isNewOrderFormInput(String originalInput) { + if (originalInput == null) { + return false; + } + return originalInput.contains("—————————") + || originalInput.contains("下单链接(必须用这个):") + || originalInput.contains("下单地址(注意带分机):") + || originalInput.contains("下单人(需填):") + || originalInput.contains("下单付款(注意核对):") + || originalInput.contains("后返金额(注意核对):") + || originalInput.contains("订单号(需填):") + || originalInput.contains("物流链接(需填):") + || originalInput.contains("备注(下单号码有变动/没法带分机号的写这里):"); + } + + /** + * 新模板录单时追加的精简文案:型号、地址、物流(物流为主链接,与解析入库一致)。 + */ + private String buildNewFormDanCompactSummary(JDOrder order) { + if (order == null) { + return null; + } + String model = order.getModelNumber(); + String address = order.getAddress(); + String logistics = order.getLogisticsLink(); + if (isEmpty(model) && isEmpty(address) && isEmpty(logistics)) { + return null; + } + StringBuilder sb = new StringBuilder(); + if (!isEmpty(model)) { + sb.append("型号:").append(model.trim()).append('\n'); + } + if (!isEmpty(address)) { + sb.append("地址:").append(normalizeWhitespace(address.trim())).append('\n'); + } + if (!isEmpty(logistics)) { + sb.append("物流:").append(logistics.trim()); + } + return sb.toString().trim(); + } + // ===== "单 …" 写库 ===== private String handleDanWriteDb(String input) { return handleDanWriteDb(input, false, false); @@ -1436,19 +1490,8 @@ public class InstructionServiceImpl implements IInstructionService { * @param originalInput 原始输入文本,用于提取完整的物流链接 */ private String formatOrderForm(JDOrder order, String originalInput) { - // 检测是否是新格式(包含分隔线"—————————"或新格式字段标签) - boolean isNewFormat = originalInput != null && ( - originalInput.contains("—————————") || - originalInput.contains("下单链接(必须用这个):") || - originalInput.contains("下单地址(注意带分机):") || - originalInput.contains("下单人(需填):") || - originalInput.contains("下单付款(注意核对):") || - originalInput.contains("后返金额(注意核对):") || - originalInput.contains("订单号(需填):") || - originalInput.contains("物流链接(需填):") || - originalInput.contains("备注(下单号码有变动/没法带分机号的写这里):") - ); - + boolean isNewFormat = isNewOrderFormInput(originalInput); + if (isNewFormat) { return formatOrderFormNew(order, originalInput); } else {