1
This commit is contained in:
@@ -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表中查询获取
|
||||||
|
|||||||
Reference in New Issue
Block a user