1
This commit is contained in:
@@ -789,6 +789,34 @@ public class TencentDocController extends BaseController {
|
|||||||
TencentDocController.log.error("记录操作日志失败", e);
|
TencentDocController.log.error("记录操作日志失败", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从备注中提取手机号码
|
||||||
|
* 支持11位手机号码,可能包含空格、横线等分隔符
|
||||||
|
*
|
||||||
|
* @param remark 备注信息
|
||||||
|
* @return 提取到的手机号码,如果没有则返回null
|
||||||
|
*/
|
||||||
|
private String extractPhoneFromRemark(String remark) {
|
||||||
|
if (remark == null || remark.trim().isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除所有空格、横线、括号等分隔符
|
||||||
|
String cleanedRemark = remark.replaceAll("[\\s\\-\\(\\)\\[\\]()\\【\\】]", "");
|
||||||
|
|
||||||
|
// 匹配11位手机号码(1开头的11位数字)
|
||||||
|
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("1[3-9]\\d{9}");
|
||||||
|
java.util.regex.Matcher matcher = pattern.matcher(cleanedRemark);
|
||||||
|
|
||||||
|
if (matcher.find()) {
|
||||||
|
String phone = matcher.group();
|
||||||
|
log.debug("从备注中提取到手机号码: {}", phone);
|
||||||
|
return phone;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量同步物流链接 - 读取表格数据,根据单号查询订单系统中的物流链接,并填充到表格
|
* 批量同步物流链接 - 读取表格数据,根据单号查询订单系统中的物流链接,并填充到表格
|
||||||
@@ -963,6 +991,7 @@ public class TencentDocController extends BaseController {
|
|||||||
Integer logisticsLinkColumn = null; // "物流单号"列
|
Integer logisticsLinkColumn = null; // "物流单号"列
|
||||||
Integer arrangedColumn = null; // "是否安排"列
|
Integer arrangedColumn = null; // "是否安排"列
|
||||||
Integer markColumn = null; // "标记"列
|
Integer markColumn = null; // "标记"列
|
||||||
|
Integer phoneColumn = null; // "下单电话"列
|
||||||
|
|
||||||
JSONArray headerRowData = headerValues.getJSONArray(0);
|
JSONArray headerRowData = headerValues.getJSONArray(0);
|
||||||
if (headerRowData == null || headerRowData.isEmpty()) {
|
if (headerRowData == null || headerRowData.isEmpty()) {
|
||||||
@@ -998,6 +1027,12 @@ public class TencentDocController extends BaseController {
|
|||||||
markColumn = i;
|
markColumn = i;
|
||||||
log.info("✓ 识别到 '标记' 列:第 {} 列(索引{})", i + 1, i);
|
log.info("✓ 识别到 '标记' 列:第 {} 列(索引{})", i + 1, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 识别"下单电话"列(可选)
|
||||||
|
if (phoneColumn == null && (cellValueTrim.contains("下单电话") || cellValueTrim.contains("电话") || cellValueTrim.contains("手机"))) {
|
||||||
|
phoneColumn = i;
|
||||||
|
log.info("✓ 识别到 '下单电话' 列:第 {} 列(索引{})", i + 1, i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1016,9 +1051,12 @@ public class TencentDocController extends BaseController {
|
|||||||
if (markColumn == null) {
|
if (markColumn == null) {
|
||||||
log.warn("未找到'标记'列,将跳过该字段的更新");
|
log.warn("未找到'标记'列,将跳过该字段的更新");
|
||||||
}
|
}
|
||||||
|
if (phoneColumn == null) {
|
||||||
|
log.warn("未找到'下单电话'列,将跳过该字段的更新");
|
||||||
|
}
|
||||||
|
|
||||||
log.info("列位置识别完成 - 单号: {}, 物流单号: {}, 是否安排: {}, 标记: {}",
|
log.info("列位置识别完成 - 单号: {}, 物流单号: {}, 是否安排: {}, 标记: {}, 下单电话: {}",
|
||||||
orderNoColumn, logisticsLinkColumn, arrangedColumn, markColumn);
|
orderNoColumn, logisticsLinkColumn, arrangedColumn, markColumn, phoneColumn);
|
||||||
|
|
||||||
// 读取数据行
|
// 读取数据行
|
||||||
// 使用 A1 表示法(Excel格式)
|
// 使用 A1 表示法(Excel格式)
|
||||||
@@ -1147,18 +1185,34 @@ public class TencentDocController extends BaseController {
|
|||||||
if (order.getLogisticsLink() != null && !order.getLogisticsLink().trim().isEmpty()) {
|
if (order.getLogisticsLink() != null && !order.getLogisticsLink().trim().isEmpty()) {
|
||||||
String logisticsLink = order.getLogisticsLink().trim();
|
String logisticsLink = order.getLogisticsLink().trim();
|
||||||
|
|
||||||
|
// 从备注中提取手机号码
|
||||||
|
String phone = null;
|
||||||
|
if (phoneColumn != null) {
|
||||||
|
phone = extractPhoneFromRemark(order.getRemark());
|
||||||
|
if (phone != null) {
|
||||||
|
log.info("✓ 从备注中提取手机号码 - 单号: {}, 手机号: {}", orderNo, phone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 构建更新请求
|
// 构建更新请求
|
||||||
JSONObject update = new JSONObject();
|
JSONObject update = new JSONObject();
|
||||||
update.put("row", excelRow);
|
update.put("row", excelRow);
|
||||||
update.put("column", logisticsLinkColumn);
|
update.put("column", logisticsLinkColumn);
|
||||||
update.put("orderNo", orderNo);
|
update.put("orderNo", orderNo);
|
||||||
update.put("logisticsLink", logisticsLink);
|
update.put("logisticsLink", logisticsLink);
|
||||||
|
|
||||||
|
// 如果找到手机号码,也添加到更新中
|
||||||
|
if (phone != null && phoneColumn != null) {
|
||||||
|
update.put("phone", phone);
|
||||||
|
update.put("phoneColumn", phoneColumn);
|
||||||
|
}
|
||||||
|
|
||||||
// 注意:不再保存order对象,写入成功后会重新查询以确保数据最新
|
// 注意:不再保存order对象,写入成功后会重新查询以确保数据最新
|
||||||
updates.add(update);
|
updates.add(update);
|
||||||
|
|
||||||
filledCount++;
|
filledCount++;
|
||||||
log.info("找到订单物流链接 - 单号: {}, 物流链接: {}, 行号: {}, 已推送: {}",
|
log.info("找到订单物流链接 - 单号: {}, 物流链接: {}, 手机号: {}, 行号: {}, 已推送: {}",
|
||||||
orderNo, logisticsLink, excelRow,
|
orderNo, logisticsLink, phone != null ? phone : "无", excelRow,
|
||||||
order.getTencentDocPushed() != null && order.getTencentDocPushed() == 1 ? "是" : "否");
|
order.getTencentDocPushed() != null && order.getTencentDocPushed() == 1 ? "是" : "否");
|
||||||
} else {
|
} else {
|
||||||
errorCount++;
|
errorCount++;
|
||||||
@@ -1240,12 +1294,20 @@ public class TencentDocController extends BaseController {
|
|||||||
// 1. 更新物流单号(超链接类型)
|
// 1. 更新物流单号(超链接类型)
|
||||||
requests.add(buildUpdateCellRequest(sheetId, row - 1, logisticsLinkColumn, logisticsLink, true));
|
requests.add(buildUpdateCellRequest(sheetId, row - 1, logisticsLinkColumn, logisticsLink, true));
|
||||||
|
|
||||||
// 2. 更新"是否安排"列(如果存在)
|
// 2. 更新"下单电话"列(如果存在且提取到了手机号码)
|
||||||
|
String phone = update.getString("phone");
|
||||||
|
Integer phoneCol = update.getInteger("phoneColumn");
|
||||||
|
if (phone != null && phoneCol != null) {
|
||||||
|
requests.add(buildUpdateCellRequest(sheetId, row - 1, phoneCol, phone, false));
|
||||||
|
log.info("✓ 准备写入手机号码 - 单号: {}, 手机号: {}, 行: {}, 列: {}", expectedOrderNo, phone, row, phoneCol);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 更新"是否安排"列(如果存在)
|
||||||
if (arrangedColumn != null) {
|
if (arrangedColumn != null) {
|
||||||
requests.add(buildUpdateCellRequest(sheetId, row - 1, arrangedColumn, "2", false));
|
requests.add(buildUpdateCellRequest(sheetId, row - 1, arrangedColumn, "2", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 更新"标记"列(如果存在)
|
// 4. 更新"标记"列(如果存在)
|
||||||
if (markColumn != null) {
|
if (markColumn != null) {
|
||||||
requests.add(buildUpdateCellRequest(sheetId, row - 1, markColumn, today, false));
|
requests.add(buildUpdateCellRequest(sheetId, row - 1, markColumn, today, false));
|
||||||
}
|
}
|
||||||
@@ -1258,7 +1320,11 @@ public class TencentDocController extends BaseController {
|
|||||||
tencentDocService.batchUpdate(accessToken, fileId, batchUpdateBody);
|
tencentDocService.batchUpdate(accessToken, fileId, batchUpdateBody);
|
||||||
successUpdates++;
|
successUpdates++;
|
||||||
|
|
||||||
log.info("✓ 写入成功 - 行: {}, 单号: {}, 物流链接: {}", row, expectedOrderNo, logisticsLink);
|
String logMsg = String.format("✓ 写入成功 - 行: %d, 单号: %s, 物流链接: %s", row, expectedOrderNo, logisticsLink);
|
||||||
|
if (phone != null) {
|
||||||
|
logMsg += String.format(", 手机号: %s", phone);
|
||||||
|
}
|
||||||
|
log.info(logMsg);
|
||||||
|
|
||||||
// 更新订单的推送状态(重新查询订单,避免使用旧对象)
|
// 更新订单的推送状态(重新查询订单,避免使用旧对象)
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user