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) {
// 保存原始输入,用于返回前端时保留完整物流链接
String originalInput = input.trim().replace("", "");
// 与 JDUtil.parseOrderFromText 一致的模板字段
JDOrder order = parseOrderFromText(input.trim().replace("", ""));
JDOrder order = parseOrderFromText(originalInput);
// 字段校验并返回缺失项
StringBuilder missing = new StringBuilder();
@@ -1226,8 +1228,8 @@ private String handleTF(String input) {
jdOrderService.insertJDOrder(order);
}
// 返回完整的表单格式
return formatOrderForm(order);
// 返回完整的表单格式,使用原始输入保留完整物流链接
return formatOrderForm(order, originalInput);
}
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();
// 从原始输入中提取完整的物流链接
String originalLogisticsLink = extractOriginalLogisticsLink(originalInput);
sb.append("单:\n");
sb.append(order.getRemark() != null ? order.getRemark() : "").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(order.getAddress() != null ? order.getAddress() : "").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(order.getOrderId() != null ? order.getOrderId() : "").append("\n");
sb.append("下单人:\n");
@@ -1266,6 +1274,24 @@ private String handleTF(String input) {
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
private JDOrder parseOrderFromText(String input) {
@@ -1364,16 +1390,8 @@ private String handleTF(String input) {
} catch (Exception ignore) {
}
order.setAddress(fields.getOrDefault("地址", null));
// 保留完整的物流链接,不做清理
String logisticsLink = fields.getOrDefault("物流链接", null);
if (logisticsLink != null) {
logisticsLink = logisticsLink.trim();
// 如果为空字符串设置为null
if (logisticsLink.isEmpty()) {
logisticsLink = null;
}
}
order.setLogisticsLink(logisticsLink);
// 写入数据库时清理物流链接只保留URL
order.setLogisticsLink(extractFirstUrl(fields.getOrDefault("物流链接", "")));
order.setOrderId(fields.getOrDefault("订单号", null));
order.setBuyer(fields.getOrDefault("下单人", null));
// 京粉实际价格不从表单解析而是从数据库order_rows表中查询获取