1
This commit is contained in:
@@ -938,10 +938,15 @@ private String handleTF(String input) {
|
||||
.append("\n")
|
||||
.append(fullAddress.toString());
|
||||
|
||||
return generateOrderText(sheng.toString());
|
||||
// 传递第三方单号给 generateOrderText
|
||||
return generateOrderText(sheng.toString(), thirdPartyOrderNo);
|
||||
}
|
||||
|
||||
private String generateOrderText(String shengInput) {
|
||||
return generateOrderText(shengInput, null);
|
||||
}
|
||||
|
||||
private String generateOrderText(String shengInput, String providedThirdPartyOrderNo) {
|
||||
String[] split = shengInput.split("\n");
|
||||
// 第一行可能是 生 或 生{备注}
|
||||
String head = split[0].trim();
|
||||
@@ -957,20 +962,22 @@ private String handleTF(String input) {
|
||||
String address = split[5].trim();
|
||||
|
||||
// 第一重判断:从分销标记中提取订单编号进行去重(如 JY202510093195)
|
||||
if (stringRedisTemplate != null) {
|
||||
String orderNumber = extractOrderNumber(fenxiao);
|
||||
if (orderNumber != null && !orderNumber.isEmpty()) {
|
||||
String orderNumberKey = "order_number:" + orderNumber;
|
||||
// 如果提供了第三方单号,也用于去重判断
|
||||
String orderNumberForDedup = providedThirdPartyOrderNo;
|
||||
if (orderNumberForDedup == null || orderNumberForDedup.isEmpty()) {
|
||||
orderNumberForDedup = extractOrderNumber(fenxiao);
|
||||
}
|
||||
if (stringRedisTemplate != null && orderNumberForDedup != null && !orderNumberForDedup.isEmpty()) {
|
||||
String orderNumberKey = "order_number:" + orderNumberForDedup;
|
||||
String existedOrderNumber = stringRedisTemplate.opsForValue().get(orderNumberKey);
|
||||
if (existedOrderNumber != null) {
|
||||
String warn = "[炸弹] [炸弹] [炸弹] 此订单编号(" + orderNumber + ")已经存在,请勿重复生成订单 [炸弹] [炸弹] [炸弹] ";
|
||||
String warn = "[炸弹] [炸弹] [炸弹] 此订单编号(" + orderNumberForDedup + ")已经存在,请勿重复生成订单 [炸弹] [炸弹] [炸弹] ";
|
||||
StringBuilder warnOut = new StringBuilder();
|
||||
warnOut.append(warn).append("\n");
|
||||
return warnOut.toString().trim();
|
||||
}
|
||||
// 记录订单编号,24小时过期
|
||||
stringRedisTemplate.opsForValue().set(orderNumberKey, orderNumber, 1, TimeUnit.DAYS);
|
||||
}
|
||||
stringRedisTemplate.opsForValue().set(orderNumberKey, orderNumberForDedup, 1, TimeUnit.DAYS);
|
||||
}
|
||||
|
||||
// 第二重判断:地址 24 小时去重校验(白名单放行)
|
||||
@@ -1023,8 +1030,11 @@ private String handleTF(String input) {
|
||||
}
|
||||
}
|
||||
|
||||
// 从分销标记中提取第三方单号
|
||||
String thirdPartyOrderNo = extractOrderNumber(fenxiao);
|
||||
// 优先使用提供的第三方单号,如果没有则从分销标记中提取
|
||||
String thirdPartyOrderNo = providedThirdPartyOrderNo;
|
||||
if (thirdPartyOrderNo == null || thirdPartyOrderNo.isEmpty()) {
|
||||
thirdPartyOrderNo = extractOrderNumber(fenxiao);
|
||||
}
|
||||
String thirdPartyOrderNoValue = (thirdPartyOrderNo != null && !thirdPartyOrderNo.isEmpty()) ? thirdPartyOrderNo : "";
|
||||
|
||||
for (int i = 0; i < total; i++) {
|
||||
@@ -1331,11 +1341,16 @@ private String handleTF(String input) {
|
||||
|
||||
// 优先从字段中获取第三方单号,如果没有则从分销标记中提取
|
||||
String thirdPartyOrderNo = fields.getOrDefault("第三方单号", null);
|
||||
if (thirdPartyOrderNo == null || thirdPartyOrderNo.trim().isEmpty()) {
|
||||
if (thirdPartyOrderNo != null) {
|
||||
// 清理换行符和空白字符
|
||||
thirdPartyOrderNo = thirdPartyOrderNo.replaceAll("\\s+", "").trim();
|
||||
}
|
||||
if (thirdPartyOrderNo == null || thirdPartyOrderNo.isEmpty()) {
|
||||
if (distributionMark != null && !distributionMark.isEmpty()) {
|
||||
thirdPartyOrderNo = extractOrderNumber(distributionMark);
|
||||
}
|
||||
}
|
||||
// 保存第三方单号到订单对象
|
||||
order.setThirdPartyOrderNo(thirdPartyOrderNo != null && !thirdPartyOrderNo.trim().isEmpty() ? thirdPartyOrderNo.trim() : null);
|
||||
order.setModelNumber(fields.getOrDefault("型号", null));
|
||||
order.setLink(fields.getOrDefault("链接", null));
|
||||
|
||||
Reference in New Issue
Block a user