This commit is contained in:
2025-11-06 16:04:24 +08:00
parent c99088ff57
commit 041d47e9ba
5 changed files with 45 additions and 8 deletions

View File

@@ -50,6 +50,9 @@ public class TencentDocConfig {
/** 工作表IDH-TF订单的目标工作表ID */
private String sheetId;
/** 起始行号从第几行开始搜索匹配单号默认为3即第3行开始为数据行 */
private Integer startRow = 3;
/**
* 配置初始化后验证
*/
@@ -150,5 +153,13 @@ public class TencentDocConfig {
public void setSheetId(String sheetId) {
this.sheetId = sheetId;
}
public Integer getStartRow() {
return startRow;
}
public void setStartRow(Integer startRow) {
this.startRow = startRow;
}
}

View File

@@ -55,7 +55,7 @@ public interface ITencentDocService {
* @param order 订单信息
* @return 上传结果
*/
JSONObject appendLogisticsToSheet(String accessToken, String fileId, String sheetId, JDOrder order);
JSONObject appendLogisticsToSheet(String accessToken, String fileId, String sheetId, Integer startRow, JDOrder order);
/**
* 读取表格数据

View File

@@ -1664,9 +1664,10 @@ private String handleTF(String input) {
return;
}
// 2. 从Redis获取文档配置fileIdsheetId
// 2. 从Redis获取文档配置fileIdsheetId 和 startRow
String fileId = redisCache.getCacheObject(REDIS_KEY_PREFIX + "fileId");
String sheetId = redisCache.getCacheObject(REDIS_KEY_PREFIX + "sheetId");
Integer startRow = redisCache.getCacheObject(REDIS_KEY_PREFIX + "startRow");
// 如果Redis中没有则使用配置文件中的默认值
if (fileId == null || fileId.isEmpty()) {
@@ -1675,19 +1676,23 @@ private String handleTF(String input) {
if (sheetId == null || sheetId.isEmpty()) {
sheetId = tencentDocConfig.getSheetId();
}
if (startRow == null) {
startRow = tencentDocConfig.getStartRow();
}
// 3. 验证配置是否完整
if (fileId == null || fileId.isEmpty() || sheetId == null || sheetId.isEmpty()) {
System.err.println("✗ H-TF订单文档配置不完整跳过自动写入。" +
"\n 提示:请通过 POST /jarvis/tencentDoc/config 接口配置文档ID和工作表ID" +
"\n fileId: " + (fileId != null && !fileId.isEmpty() ? fileId : "未配置") +
"\n sheetId: " + (sheetId != null && !sheetId.isEmpty() ? sheetId : "未配置"));
"\n sheetId: " + (sheetId != null && !sheetId.isEmpty() ? sheetId : "未配置") +
"\n startRow: " + (startRow != null ? startRow : "默认3"));
return;
}
// 4. 调用腾讯文档服务追加订单数据
com.alibaba.fastjson2.JSONObject result = tencentDocService.appendLogisticsToSheet(
accessToken, fileId, sheetId, order);
accessToken, fileId, sheetId, startRow, order);
if (result != null) {
System.out.println("✓ H-TF订单已自动追加到腾讯文档" +

View File

@@ -168,12 +168,17 @@ public class TencentDocServiceImpl implements ITencentDocService {
}
@Override
public JSONObject appendLogisticsToSheet(String accessToken, String fileId, String sheetId, JDOrder order) {
public JSONObject appendLogisticsToSheet(String accessToken, String fileId, String sheetId, Integer startRow, JDOrder order) {
try {
if (order == null) {
throw new IllegalArgumentException("订单信息不能为空");
}
// startRow 参数用于标识从第几行开始是数据行(预留给未来的搜索匹配功能)
// 当前使用 append 方式追加数据,暂不使用 startRow
log.debug("追加订单到腾讯文档 - fileId: {}, sheetId: {}, startRow配置: {}, 订单: {}",
fileId, sheetId, startRow, order.getRemark());
// 获取用户信息包含Open-Id
// 官方响应格式:{ "ret": 0, "msg": "Succeed", "data": { "openID": "xxx", ... } }
JSONObject userInfo = TencentDocApiUtil.getUserInfo(accessToken);