This commit is contained in:
2025-11-06 00:00:46 +08:00
parent 23019db757
commit c771c99d6e

View File

@@ -1130,8 +1130,10 @@ private String handleTF(String input) {
// ===== “单 …” 写库 ===== // ===== “单 …” 写库 =====
private String handleDanWriteDb(String input) { private String handleDanWriteDb(String input) {
// 保存原始输入,用于返回前端时保留完整物流链接
String originalInput = input.trim().replace("", "");
// 与 JDUtil.parseOrderFromText 一致的模板字段 // 与 JDUtil.parseOrderFromText 一致的模板字段
JDOrder order = parseOrderFromText(input.trim().replace("", "")); JDOrder order = parseOrderFromText(originalInput);
// 字段校验并返回缺失项 // 字段校验并返回缺失项
StringBuilder missing = new StringBuilder(); StringBuilder missing = new StringBuilder();
@@ -1226,8 +1228,8 @@ private String handleTF(String input) {
jdOrderService.insertJDOrder(order); jdOrderService.insertJDOrder(order);
} }
// 返回完整的表单格式 // 返回完整的表单格式,使用原始输入保留完整物流链接
return formatOrderForm(order); return formatOrderForm(order, originalInput);
} }
private boolean isEmpty(String s) { private boolean isEmpty(String s) {
@@ -1236,10 +1238,15 @@ private String handleTF(String input) {
/** /**
* 格式化订单为完整表单格式 * 格式化订单为完整表单格式
* @param order 订单对象
* @param originalInput 原始输入文本,用于提取完整的物流链接
*/ */
private String formatOrderForm(JDOrder order) { private String formatOrderForm(JDOrder order, String originalInput) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
// 从原始输入中提取完整的物流链接
String originalLogisticsLink = extractOriginalLogisticsLink(originalInput);
sb.append("单:\n"); sb.append("单:\n");
sb.append(order.getRemark() != null ? order.getRemark() : "").append("\n"); sb.append(order.getRemark() != null ? order.getRemark() : "").append("\n");
sb.append("备注:").append(order.getStatus() != null ? order.getStatus() : "").append("\n"); sb.append("备注:").append(order.getStatus() != null ? order.getStatus() : "").append("\n");
@@ -1256,7 +1263,8 @@ private String handleTF(String input) {
sb.append("地址:\n"); sb.append("地址:\n");
sb.append(order.getAddress() != null ? order.getAddress() : "").append("\n"); sb.append(order.getAddress() != null ? order.getAddress() : "").append("\n");
sb.append("物流链接:\n"); sb.append("物流链接:\n");
sb.append(order.getLogisticsLink() != null ? order.getLogisticsLink() : "").append("\n"); // 使用原始输入的完整物流链接,如果没有则使用数据库中的值
sb.append(originalLogisticsLink != null ? originalLogisticsLink : (order.getLogisticsLink() != null ? order.getLogisticsLink() : "")).append("\n");
sb.append("订单号:\n"); sb.append("订单号:\n");
sb.append(order.getOrderId() != null ? order.getOrderId() : "").append("\n"); sb.append(order.getOrderId() != null ? order.getOrderId() : "").append("\n");
sb.append("下单人:\n"); sb.append("下单人:\n");
@@ -1266,6 +1274,24 @@ private String handleTF(String input) {
return sb.toString(); return sb.toString();
} }
/**
* 从原始输入中提取完整的物流链接文本(不做清理)
*/
private String extractOriginalLogisticsLink(String input) {
if (input == null || input.isEmpty()) {
return null;
}
// 提取"物流链接:"到"订单号:"之间的完整内容
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("物流链接:\\s*(.*?)\\s*(?=订单号:|\\Z)", java.util.regex.Pattern.DOTALL);
java.util.regex.Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
String logisticsLink = matcher.group(1).trim();
// 如果为空返回null
return logisticsLink.isEmpty() ? null : logisticsLink;
}
return null;
}
// 参照 JDUtil.parseOrderFromText // 参照 JDUtil.parseOrderFromText
private JDOrder parseOrderFromText(String input) { private JDOrder parseOrderFromText(String input) {
@@ -1364,16 +1390,8 @@ private String handleTF(String input) {
} catch (Exception ignore) { } catch (Exception ignore) {
} }
order.setAddress(fields.getOrDefault("地址", null)); order.setAddress(fields.getOrDefault("地址", null));
// 保留完整的物流链接,不做清理 // 写入数据库时清理物流链接只保留URL
String logisticsLink = fields.getOrDefault("物流链接", null); order.setLogisticsLink(extractFirstUrl(fields.getOrDefault("物流链接", "")));
if (logisticsLink != null) {
logisticsLink = logisticsLink.trim();
// 如果为空字符串设置为null
if (logisticsLink.isEmpty()) {
logisticsLink = null;
}
}
order.setLogisticsLink(logisticsLink);
order.setOrderId(fields.getOrDefault("订单号", null)); order.setOrderId(fields.getOrDefault("订单号", null));
order.setBuyer(fields.getOrDefault("下单人", null)); order.setBuyer(fields.getOrDefault("下单人", null));
// 京粉实际价格不从表单解析而是从数据库order_rows表中查询获取 // 京粉实际价格不从表单解析而是从数据库order_rows表中查询获取