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