1
This commit is contained in:
@@ -2667,30 +2667,51 @@ public class JDUtil {
|
||||
// 生成当前日期
|
||||
JDOrder jdOrder = parseOrderFromText(input.trim().replace("元", ""));
|
||||
|
||||
if (Util.isAnyEmpty(jdOrder.getOrderId(), jdOrder.getBuyer(), jdOrder.getOrderTime(), jdOrder.getPaymentAmount(), jdOrder.getRebateAmount(), jdOrder.getAddress(), jdOrder.getLogisticsLink(), jdOrder.getModelNumber(), jdOrder.getLink(), jdOrder.getOrderId(), jdOrder.getBuyer())) {
|
||||
// 警告缺少的字段getOrderId
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (Util.isEmpty(jdOrder.getOrderId())) {
|
||||
sb.append("单号\n");
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getBuyer())) {
|
||||
sb.append("下单人\n");
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getPaymentAmount())) {
|
||||
sb.append("下单价格\n");
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getRebateAmount())) {
|
||||
sb.append("后返金额\n");
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getLogisticsLink())) {
|
||||
sb.append("物流链接\n");
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getAddress())) {
|
||||
sb.append("收货地址\n");
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getModelNumber())) {
|
||||
sb.append("型号\n");
|
||||
}
|
||||
// 验证必填字段(根据新模板格式)
|
||||
// 单号存储在remark字段中,订单号存储在orderId字段中
|
||||
StringBuilder sb = new StringBuilder();
|
||||
boolean hasError = false;
|
||||
|
||||
if (Util.isEmpty(jdOrder.getRemark())) {
|
||||
sb.append("单号\n");
|
||||
hasError = true;
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getBuyer())) {
|
||||
sb.append("下单人\n");
|
||||
hasError = true;
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getPaymentAmount())) {
|
||||
sb.append("下单价格\n");
|
||||
hasError = true;
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getRebateAmount())) {
|
||||
sb.append("后返金额\n");
|
||||
hasError = true;
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getLogisticsLink())) {
|
||||
sb.append("物流链接\n");
|
||||
hasError = true;
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getAddress())) {
|
||||
sb.append("收货地址\n");
|
||||
hasError = true;
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getModelNumber())) {
|
||||
sb.append("型号\n");
|
||||
hasError = true;
|
||||
}
|
||||
if (Util.isEmpty(jdOrder.getOrderTime())) {
|
||||
sb.append("下单时间\n");
|
||||
hasError = true;
|
||||
}
|
||||
|
||||
if (hasError) {
|
||||
// 添加调试信息:打印解析到的字段值
|
||||
logger.warn("录单解析失败,解析到的字段值: remark={}, buyer={}, paymentAmount={}, rebateAmount={}, logisticsLink={}, address={}, modelNumber={}, orderTime={}",
|
||||
jdOrder.getRemark(), jdOrder.getBuyer(), jdOrder.getPaymentAmount(),
|
||||
jdOrder.getRebateAmount(), jdOrder.getLogisticsLink(), jdOrder.getAddress(),
|
||||
jdOrder.getModelNumber(), jdOrder.getOrderTime());
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
wxUtil.sendTextMessage(fromWxid, "[炸弹] [炸弹] [炸弹] 录单警告!!! \n缺少表单字段 \n" + sb, 1, fromWxid, true);
|
||||
}
|
||||
@@ -2917,8 +2938,8 @@ public class JDUtil {
|
||||
}
|
||||
}
|
||||
|
||||
// 调试:打印提取到的字段(可选,生产环境可以注释掉)
|
||||
// logger.debug("解析到的字段: {}", fields);
|
||||
// 调试:打印提取到的字段
|
||||
logger.info("解析到的字段: {}", fields);
|
||||
|
||||
// 构建 JDOrder 对象
|
||||
JDOrder order = new JDOrder();
|
||||
@@ -2982,9 +3003,10 @@ public class JDUtil {
|
||||
String escapedStart = Pattern.quote(startKeyword);
|
||||
String escapedEnd = Pattern.quote(endKeyword);
|
||||
|
||||
// 匹配模式:startKeyword + 可选的空白和换行 + 字段值(非贪婪,支持多行) + 可选的空白和换行 + 后面是endKeyword或分隔线或结束
|
||||
// 匹配模式:startKeyword + 可选的空白和换行 + 字段值(非贪婪,支持多行) + 后面是换行+endKeyword或换行+分隔线或结束
|
||||
// 使用[\s\S]来匹配包括换行在内的所有字符
|
||||
String patternStr = escapedStart + "[\\s\\n]*([\\s\\S]*?)(?=[\\s\\n]*" + escapedEnd + "|[\\s\\n]*—————————|\\Z)";
|
||||
// 改进:更精确地匹配字段值,确保能捕获到换行后的内容
|
||||
String patternStr = escapedStart + "[\\s\\n]*([\\s\\S]*?)(?=\\s*\\n?\\s*" + escapedEnd + "|\\s*\\n?\\s*—————————|\\Z)";
|
||||
Pattern pattern = Pattern.compile(patternStr, Pattern.DOTALL);
|
||||
Matcher matcher = pattern.matcher(input);
|
||||
|
||||
@@ -3001,11 +3023,18 @@ public class JDUtil {
|
||||
String key = startKeyword.replace(":", "").trim();
|
||||
if (!value.isEmpty()) {
|
||||
map.put(key, value);
|
||||
logger.debug("成功提取字段: {} = {}", key, value.length() > 50 ? value.substring(0, 50) + "..." : value);
|
||||
} else {
|
||||
logger.debug("字段值为空: {}", key);
|
||||
}
|
||||
} else {
|
||||
logger.debug("未找到字段值: startKeyword={}", startKeyword);
|
||||
}
|
||||
} else {
|
||||
logger.debug("正则未匹配: startKeyword={}, endKeyword={}", startKeyword, endKeyword);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.warn("提取字段失败: startKeyword={}, endKeyword={}, error={}", startKeyword, endKeyword, e.getMessage());
|
||||
logger.warn("提取字段失败: startKeyword={}, endKeyword={}, error={}", startKeyword, endKeyword, e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user