1
This commit is contained in:
@@ -485,7 +485,7 @@ public class TencentDocController extends BaseController {
|
||||
// 2. 检查订单是否已推送(防止重复推送)
|
||||
JDOrder order = jdOrderService.selectJDOrderByThirdPartyOrderNo(thirdPartyOrderNo);
|
||||
if (order == null) {
|
||||
logOperation(null, null, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, null, null, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "订单不存在");
|
||||
return AjaxResult.error("订单不存在:" + thirdPartyOrderNo);
|
||||
}
|
||||
@@ -494,7 +494,7 @@ public class TencentDocController extends BaseController {
|
||||
if (order.getTencentDocPushed() != null && order.getTencentDocPushed() == 1 && !forceRePush) {
|
||||
String pushTimeStr = order.getTencentDocPushTime() != null ?
|
||||
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(order.getTencentDocPushTime()) : "未知";
|
||||
logOperation(null, null, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, null, null, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"SKIPPED", String.format("订单已推送,推送时间: %s", pushTimeStr));
|
||||
return AjaxResult.error(String.format("该订单已推送到腾讯文档(推送时间:%s),请勿重复操作!如需重新推送,请使用强制推送功能。", pushTimeStr));
|
||||
}
|
||||
@@ -504,7 +504,7 @@ public class TencentDocController extends BaseController {
|
||||
try {
|
||||
accessToken = tencentDocTokenService.getValidAccessToken();
|
||||
} catch (Exception e) {
|
||||
logOperation(null, null, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, null, null, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "访问令牌无效: " + e.getMessage());
|
||||
return AjaxResult.error("访问令牌无效,请先完成授权");
|
||||
}
|
||||
@@ -530,7 +530,7 @@ public class TencentDocController extends BaseController {
|
||||
}
|
||||
|
||||
if (fileId == null || fileId.isEmpty() || sheetId == null || sheetId.isEmpty()) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "文档配置不完整");
|
||||
return AjaxResult.error("文档配置不完整,请先完成配置");
|
||||
}
|
||||
@@ -544,7 +544,7 @@ public class TencentDocController extends BaseController {
|
||||
|
||||
if (!lockAcquired) {
|
||||
log.warn("获取锁失败,该订单正在被其他请求处理:{}", thirdPartyOrderNo);
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "获取分布式锁失败,该订单正在处理中");
|
||||
return AjaxResult.error("该订单正在处理中,请稍后再试");
|
||||
}
|
||||
@@ -558,7 +558,7 @@ public class TencentDocController extends BaseController {
|
||||
|
||||
JSONObject headerData = tencentDocService.readSheetData(accessToken, fileId, sheetId, headerRange);
|
||||
if (headerData == null || !headerData.containsKey("gridData")) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "无法读取表头数据");
|
||||
return AjaxResult.error("无法读取表头数据");
|
||||
}
|
||||
@@ -567,7 +567,7 @@ public class TencentDocController extends BaseController {
|
||||
JSONObject gridData = headerData.getJSONObject("gridData");
|
||||
JSONArray rows = gridData.getJSONArray("rows");
|
||||
if (rows == null || rows.isEmpty()) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "表头数据为空");
|
||||
return AjaxResult.error("表头数据为空");
|
||||
}
|
||||
@@ -593,7 +593,7 @@ public class TencentDocController extends BaseController {
|
||||
}
|
||||
|
||||
if (orderNoColumn == -1 || logisticsColumn == -1) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "未找到'单号'或'物流'列");
|
||||
return AjaxResult.error("未找到'单号'或'物流'列,请检查表头配置");
|
||||
}
|
||||
@@ -605,7 +605,7 @@ public class TencentDocController extends BaseController {
|
||||
JSONObject data = tencentDocService.readSheetData(accessToken, fileId, sheetId, dataRange);
|
||||
|
||||
if (data == null || !data.containsKey("gridData")) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "无法读取数据区域");
|
||||
return AjaxResult.error("无法读取数据区域");
|
||||
}
|
||||
@@ -614,7 +614,7 @@ public class TencentDocController extends BaseController {
|
||||
JSONArray dataRows = dataGridData.getJSONArray("rows");
|
||||
|
||||
if (dataRows == null || dataRows.isEmpty()) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "数据区域为空");
|
||||
return AjaxResult.error("数据区域为空");
|
||||
}
|
||||
@@ -638,7 +638,7 @@ public class TencentDocController extends BaseController {
|
||||
}
|
||||
|
||||
if (targetRow == -1) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, logisticsLink,
|
||||
"FAILED", "未找到单号");
|
||||
return AjaxResult.error("未找到单号: " + thirdPartyOrderNo);
|
||||
}
|
||||
@@ -650,7 +650,7 @@ public class TencentDocController extends BaseController {
|
||||
JSONObject verifyData = tencentDocService.readSheetData(accessToken, fileId, sheetId, verifyRange);
|
||||
|
||||
if (verifyData == null || !verifyData.containsKey("gridData")) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"FAILED", "验证读取失败");
|
||||
return AjaxResult.error("验证读取失败");
|
||||
}
|
||||
@@ -659,7 +659,7 @@ public class TencentDocController extends BaseController {
|
||||
JSONArray verifyRows = verifyGridData.getJSONArray("rows");
|
||||
|
||||
if (verifyRows == null || verifyRows.isEmpty()) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"FAILED", "验证行数据为空");
|
||||
return AjaxResult.error("验证行数据为空");
|
||||
}
|
||||
@@ -669,7 +669,7 @@ public class TencentDocController extends BaseController {
|
||||
|
||||
// 验证单号是否仍然匹配
|
||||
if (verifyCells == null || verifyCells.size() <= orderNoColumn) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"SKIPPED", "验证时单号列为空,行已变化");
|
||||
return AjaxResult.error("验证失败:行数据已变化,单号列为空");
|
||||
}
|
||||
@@ -681,7 +681,7 @@ public class TencentDocController extends BaseController {
|
||||
}
|
||||
|
||||
if (!thirdPartyOrderNo.equals(verifyOrderNo)) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"SKIPPED", String.format("验证失败:单号不匹配,期望 %s,实际 %s", thirdPartyOrderNo, verifyOrderNo));
|
||||
return AjaxResult.error("验证失败:单号不匹配,行数据已变化");
|
||||
}
|
||||
@@ -692,7 +692,7 @@ public class TencentDocController extends BaseController {
|
||||
if (logisticsCell.containsKey("cellValue")) {
|
||||
String existingLogistics = logisticsCell.getJSONObject("cellValue").getString("text");
|
||||
if (existingLogistics != null && !existingLogistics.trim().isEmpty()) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"SKIPPED", String.format("物流链接列已有值:%s", existingLogistics));
|
||||
return AjaxResult.error(String.format("该订单物流链接已存在:%s", existingLogistics));
|
||||
}
|
||||
@@ -705,13 +705,13 @@ public class TencentDocController extends BaseController {
|
||||
JSONObject userInfo = com.ruoyi.jarvis.util.TencentDocApiUtil.getUserInfo(accessToken);
|
||||
JSONObject userData = userInfo.getJSONObject("data");
|
||||
if (userData == null) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"FAILED", "无法获取用户数据");
|
||||
return AjaxResult.error("无法获取用户数据");
|
||||
}
|
||||
String openId = userData.getString("openID");
|
||||
if (openId == null || openId.isEmpty()) {
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"FAILED", "无法获取Open-Id");
|
||||
return AjaxResult.error("无法获取Open-Id");
|
||||
}
|
||||
@@ -729,7 +729,7 @@ public class TencentDocController extends BaseController {
|
||||
);
|
||||
|
||||
// 12. 记录成功日志
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, targetRow, logisticsLink,
|
||||
"SUCCESS", null);
|
||||
|
||||
log.info("✓ 物流链接写入成功 - 单号: {}, 行: {}, 链接: {}", thirdPartyOrderNo, targetRow, logisticsLink);
|
||||
@@ -757,7 +757,7 @@ public class TencentDocController extends BaseController {
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("填充物流链接失败", e);
|
||||
logOperation(fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, null,
|
||||
logOperation(null, fileId, sheetId, "WRITE_SINGLE", thirdPartyOrderNo, null, null,
|
||||
"FAILED", "异常: " + e.getMessage());
|
||||
return AjaxResult.error("填充物流链接失败: " + e.getMessage());
|
||||
} finally {
|
||||
@@ -776,11 +776,12 @@ public class TencentDocController extends BaseController {
|
||||
/**
|
||||
* 记录操作日志到数据库
|
||||
*/
|
||||
private void logOperation(String fileId, String sheetId, String operationType,
|
||||
private void logOperation(String batchId, String fileId, String sheetId, String operationType,
|
||||
String orderNo, Integer targetRow, String logisticsLink,
|
||||
String status, String errorMessage) {
|
||||
try {
|
||||
com.ruoyi.jarvis.domain.TencentDocOperationLog log = new com.ruoyi.jarvis.domain.TencentDocOperationLog();
|
||||
log.setBatchId(batchId);
|
||||
log.setFileId(fileId);
|
||||
log.setSheetId(sheetId);
|
||||
log.setOperationType(operationType);
|
||||
@@ -882,6 +883,9 @@ public class TencentDocController extends BaseController {
|
||||
}
|
||||
}
|
||||
|
||||
// 从参数获取批次ID(如果是批量调用会传入)
|
||||
String batchId = params.get("batchId") != null ? String.valueOf(params.get("batchId")) : null;
|
||||
|
||||
// 从参数或配置中获取文档信息
|
||||
String fileId = (String) params.get("fileId");
|
||||
String sheetId = (String) params.get("sheetId");
|
||||
@@ -1194,7 +1198,7 @@ public class TencentDocController extends BaseController {
|
||||
}
|
||||
|
||||
// 记录同步日志
|
||||
logOperation(fileId, sheetId, "BATCH_SYNC", orderNo, excelRow, existingLogisticsLink,
|
||||
logOperation(batchId, fileId, sheetId, "BATCH_SYNC", orderNo, excelRow, existingLogisticsLink,
|
||||
"SKIPPED", "文档中已有物流链接,已同步订单状态");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -1397,7 +1401,7 @@ public class TencentDocController extends BaseController {
|
||||
}
|
||||
|
||||
// 记录操作日志
|
||||
logOperation(fileId, sheetId, "BATCH_SYNC", expectedOrderNo, row, logisticsLink,
|
||||
logOperation(batchId, fileId, sheetId, "BATCH_SYNC", expectedOrderNo, row, logisticsLink,
|
||||
"SUCCESS", null);
|
||||
} catch (Exception e) {
|
||||
log.error("写入数据失败 - 行: {}", entry.getKey(), e);
|
||||
@@ -1406,7 +1410,7 @@ public class TencentDocController extends BaseController {
|
||||
// 记录失败日志
|
||||
String orderNo = entry.getValue().getString("orderNo");
|
||||
String logisticsLink = entry.getValue().getString("logisticsLink");
|
||||
logOperation(fileId, sheetId, "BATCH_SYNC", orderNo, entry.getKey(), logisticsLink,
|
||||
logOperation(batchId, fileId, sheetId, "BATCH_SYNC", orderNo, entry.getKey(), logisticsLink,
|
||||
"FAILED", "写入异常: " + e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user