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