1
This commit is contained in:
@@ -1018,7 +1018,8 @@ public class TencentDocController extends BaseController {
|
|||||||
// 读取表格数据(先读取表头行用于识别列位置)
|
// 读取表格数据(先读取表头行用于识别列位置)
|
||||||
// 根据官方文档,使用 A1 表示法(Excel格式)
|
// 根据官方文档,使用 A1 表示法(Excel格式)
|
||||||
// 参考:https://docs.qq.com/open/document/app/openapi/v3/sheet/get/get_range.html
|
// 参考:https://docs.qq.com/open/document/app/openapi/v3/sheet/get/get_range.html
|
||||||
String headerRange = String.format("A%d:Z%d", headerRow, headerRow); // 例如:A2:Z2
|
// 与数据区列宽一致,避免「京东下单订单号」在 Z 列之后时无法识别表头
|
||||||
|
String headerRange = String.format("A%d:%s%d", headerRow, DATA_RANGE_COL_END, headerRow);
|
||||||
log.info("读取表头 - 行号: {}, range: {}", headerRow, headerRange);
|
log.info("读取表头 - 行号: {}, range: {}", headerRow, headerRange);
|
||||||
|
|
||||||
JSONObject headerData = null;
|
JSONObject headerData = null;
|
||||||
@@ -1275,10 +1276,8 @@ public class TencentDocController extends BaseController {
|
|||||||
errorCount++;
|
errorCount++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
// 仅要求能读到第三方单号、物流列;京东列常在更右侧且稀疏行可能未返回尾部空列,不能要求 row 长度覆盖京东列
|
||||||
int minDataColIdx = Math.max(orderNoColumn, logisticsLinkColumn);
|
int minDataColIdx = Math.max(orderNoColumn, logisticsLinkColumn);
|
||||||
if (jdPlaceOrderNoColumn != null) {
|
|
||||||
minDataColIdx = Math.max(minDataColIdx, jdPlaceOrderNoColumn);
|
|
||||||
}
|
|
||||||
if (row == null || row.size() <= minDataColIdx) {
|
if (row == null || row.size() <= minDataColIdx) {
|
||||||
continue; // 跳过空行或列数不足的行
|
continue; // 跳过空行或列数不足的行
|
||||||
}
|
}
|
||||||
@@ -1536,7 +1535,7 @@ public class TencentDocController extends BaseController {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
jdId = jdId.trim();
|
jdId = jdId.trim();
|
||||||
String jdVerifyRange = String.format("A%d:Z%d", row, row);
|
String jdVerifyRange = String.format("A%d:%s%d", row, DATA_RANGE_COL_END, row);
|
||||||
JSONObject jdVerifyData = tencentDocService.readSheetData(accessToken, fileId, sheetId, jdVerifyRange);
|
JSONObject jdVerifyData = tencentDocService.readSheetData(accessToken, fileId, sheetId, jdVerifyRange);
|
||||||
if (jdVerifyData == null || !jdVerifyData.containsKey("values")) {
|
if (jdVerifyData == null || !jdVerifyData.containsKey("values")) {
|
||||||
errorCount++;
|
errorCount++;
|
||||||
@@ -1548,8 +1547,8 @@ public class TencentDocController extends BaseController {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
JSONArray jdVerifyRow = jdVerifyRows.getJSONArray(0);
|
JSONArray jdVerifyRow = jdVerifyRows.getJSONArray(0);
|
||||||
int jdNeedIdx = Math.max(orderNoColumn, Math.max(logisticsLinkColumn, jdCol));
|
int jdBaseNeedIdx = Math.max(orderNoColumn, logisticsLinkColumn);
|
||||||
if (jdVerifyRow == null || jdVerifyRow.size() <= jdNeedIdx) {
|
if (jdVerifyRow == null || jdVerifyRow.size() <= jdBaseNeedIdx) {
|
||||||
errorCount++;
|
errorCount++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -1610,8 +1609,8 @@ public class TencentDocController extends BaseController {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 重新读取该行数据,验证单号和物流链接列
|
// 重新读取该行(列宽与批量读取一致,含 Z 列之后的京东单号列)
|
||||||
String verifyRange = String.format("A%d:Z%d", row, row);
|
String verifyRange = String.format("A%d:%s%d", row, DATA_RANGE_COL_END, row);
|
||||||
JSONObject verifyData = tencentDocService.readSheetData(accessToken, fileId, sheetId, verifyRange);
|
JSONObject verifyData = tencentDocService.readSheetData(accessToken, fileId, sheetId, verifyRange);
|
||||||
|
|
||||||
if (verifyData == null || !verifyData.containsKey("values")) {
|
if (verifyData == null || !verifyData.containsKey("values")) {
|
||||||
@@ -1647,11 +1646,8 @@ public class TencentDocController extends BaseController {
|
|||||||
|
|
||||||
JSONArray verifyRow = verifyRows.getJSONArray(0);
|
JSONArray verifyRow = verifyRows.getJSONArray(0);
|
||||||
int verifyMinColIdx = Math.max(orderNoColumn, logisticsLinkColumn);
|
int verifyMinColIdx = Math.max(orderNoColumn, logisticsLinkColumn);
|
||||||
if (jdPlaceOrderNoColumn != null) {
|
|
||||||
verifyMinColIdx = Math.max(verifyMinColIdx, jdPlaceOrderNoColumn);
|
|
||||||
}
|
|
||||||
if (verifyRow == null || verifyRow.size() <= verifyMinColIdx) {
|
if (verifyRow == null || verifyRow.size() <= verifyMinColIdx) {
|
||||||
log.warn("验证失败 - 行 {} 列数不足", row);
|
log.warn("验证失败 - 行 {} 列数不足(需覆盖单号列与物流列)", row);
|
||||||
errorCount++;
|
errorCount++;
|
||||||
|
|
||||||
// 记录错误详情
|
// 记录错误详情
|
||||||
|
|||||||
Reference in New Issue
Block a user