录单
This commit is contained in:
@@ -1707,7 +1707,7 @@ public class JDUtil {
|
||||
return;
|
||||
}
|
||||
|
||||
if (order == null || order.trim().isEmpty()) {
|
||||
if (order.trim().isEmpty()) {
|
||||
wxUtil.sendTextMessage(fromWxid, "输入格式为:\n 单\n分销标记\n型号\n转链链接\n数量\n地址", 1, fromWxid, false);
|
||||
return;
|
||||
}
|
||||
@@ -1723,7 +1723,7 @@ public class JDUtil {
|
||||
// 今天的日期
|
||||
String today = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd "));
|
||||
String redisKey = "order_count:" + today;
|
||||
Integer count;
|
||||
int count;
|
||||
|
||||
try {
|
||||
// 从 Redis 获取当前日期的订单计数器
|
||||
@@ -1732,9 +1732,9 @@ public class JDUtil {
|
||||
|
||||
logger.info("sendOrderToWxByOrderD.count beforeFor {}", count);
|
||||
|
||||
Integer num = 1;
|
||||
int num = 1;
|
||||
try {
|
||||
num = Integer.valueOf(split[4].trim());
|
||||
num = Integer.parseInt(split[4].trim());
|
||||
} catch (NumberFormatException e) {
|
||||
logger.error("sendOrderToWxByOrderD 订单数量格式错误,请输入正确的数字", e);
|
||||
wxUtil.sendTextMessage(fromWxid, "订单数量格式错误,请输入正确的数字", 1, fromWxid, false);
|
||||
@@ -2070,7 +2070,7 @@ public class JDUtil {
|
||||
* @return 解析出的 LocalDate 对象,如果没有带日期则返回 null
|
||||
*/
|
||||
private LocalDate parseUserDateIfPresent(String input) {
|
||||
if ((input.startsWith("慢单")|| input.startsWith("录单")) && !input.startsWith("单")) {
|
||||
if ((input.startsWith("慢单") || input.startsWith("录单")) && !input.startsWith("单")) {
|
||||
logger.info("开始解析用户输入的日期 {}", input);
|
||||
String dateStr = input.replaceAll("慢单|录单", "").trim();
|
||||
logger.info("解析出的日期 {}", dateStr);
|
||||
@@ -2291,10 +2291,106 @@ public class JDUtil {
|
||||
order.append("单").append("\n").append("H-TF").append("\n").append(modelNumber).append("\n").append(" ").append("\n").append(quantityStr).append("\n").append(address);
|
||||
sendOrderToWxByOrderD(order.toString(), fromWxid);
|
||||
}
|
||||
} else if (input.startsWith("H")) {
|
||||
/*
|
||||
* 示例输入:
|
||||
* 陆霭杰[9130]
|
||||
* 19592469028
|
||||
* 广东省 广州市 从化区 太平镇康乐东路苏宁易购 (送前电联13922281001)[9130] 115-12lcs
|
||||
* 提取出:
|
||||
* 型号:115-12lcs
|
||||
* 陆霭杰13068923963广东省 广州市 从化区 太平镇康乐东路苏宁易购 (送前电联13922281001)派送安装联系19592469028转9130
|
||||
*/
|
||||
|
||||
// 按换行符切割输入为数组
|
||||
String[] parts = input.replace("H", "").split("\n");
|
||||
|
||||
if (parts.length < 3) {
|
||||
wxUtil.sendTextMessage(fromWxid, "输入格式不正确,请确保包含三行数据", 1, fromWxid, false);
|
||||
return;
|
||||
}
|
||||
|
||||
// 第一行:姓名 + 编号
|
||||
String nameLine = parts[0].trim(); // 如:陆霭杰[9130]
|
||||
|
||||
// 使用正则表达式提取中文字符作为收件人姓名
|
||||
Pattern namePattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
|
||||
Matcher nameMatcher = namePattern.matcher(nameLine);
|
||||
String name = "13068923963";
|
||||
if (nameMatcher.find()) {
|
||||
name = nameMatcher.group() + name;
|
||||
}
|
||||
|
||||
// 提取编号 [9130]
|
||||
String suffix = "";
|
||||
int suffixStart = nameLine.indexOf('[');
|
||||
int suffixEnd = nameLine.indexOf(']');
|
||||
if (suffixStart != -1 && suffixEnd != -1 && suffixEnd > suffixStart) {
|
||||
suffix = nameLine.substring(suffixStart + 1, suffixEnd); // 获取 [] 中的内容
|
||||
}
|
||||
|
||||
// 第二行:电话号码
|
||||
String phone = parts[1].trim(); // 如:19592469028
|
||||
|
||||
// 第三行:地址 + 型号
|
||||
String addressLine = parts[2].trim(); // 如:广东省 广州市 ... [9130] 115-12lcs
|
||||
|
||||
// 使用正则表达式提取中文字符作为地址主体
|
||||
StringBuilder addressBuilder = new StringBuilder();
|
||||
Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]+");
|
||||
Matcher matcher = pattern.matcher(addressLine);
|
||||
|
||||
if (matcher.find()) {
|
||||
addressBuilder.append(matcher.group());
|
||||
}
|
||||
|
||||
for (int i = 3; i < parts.length; i++) {
|
||||
addressBuilder.append(parts[i]);
|
||||
}
|
||||
|
||||
// 提取型号(最后一组非中文字符)
|
||||
String modelNumber = "";
|
||||
String[] addressParts = addressLine.split("\\s+");
|
||||
for (String part : addressParts) {
|
||||
if (!part.matches(".*[\u4E00-\u9FA5].*")) { // 不含中文的字段可能是型号
|
||||
modelNumber = part;
|
||||
}
|
||||
}
|
||||
|
||||
// 清理掉地址中的编号 [9130] 和型号部分
|
||||
String cleanedAddress = addressLine.replaceAll("\\$$.*?\$$", "") // 去除 []
|
||||
.replace(modelNumber, "") // 去除型号
|
||||
.replaceAll("\\s+", " ").trim();
|
||||
|
||||
// 拼接“安装派送联系”字段
|
||||
String deliveryInfo = " 安装派送联系" + phone + "转" + suffix;
|
||||
|
||||
// 最终地址
|
||||
String fullAddress = cleanedAddress + deliveryInfo;
|
||||
|
||||
// 构造最终输出
|
||||
StringBuilder order = new StringBuilder();
|
||||
//单
|
||||
//分销标记
|
||||
//型号
|
||||
//转链链接
|
||||
//数量
|
||||
//地址
|
||||
// 分销标记
|
||||
// 型号
|
||||
// 转链链接
|
||||
// 默认数量为1
|
||||
order.append("单\n")
|
||||
.append("H\n") // 分销标记
|
||||
.append(modelNumber).append("\n") // 型号
|
||||
.append("\n") // 转链链接
|
||||
.append("1\n").append(name).append(fullAddress); // 地址+联系信息
|
||||
|
||||
// 发送给微信
|
||||
sendOrderToWxByOrderD(order.toString(), fromWxid);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user