diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/TencentDocController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/TencentDocController.java index c977f4d..ddaf209 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/TencentDocController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/jarvis/TencentDocController.java @@ -513,7 +513,10 @@ public class TencentDocController extends BaseController { // 4. 获取分布式锁(针对该订单单号+文档+工作表) lockKey = TENCENT_DOC_LOCK_KEY + fileId + ":" + sheetId + ":" + thirdPartyOrderNo; - boolean lockAcquired = redisCache.setCacheObject(lockKey, "locked", 30, TimeUnit.SECONDS); + + // 检查锁是否已存在 + String existingLock = redisCache.getCacheObject(lockKey); + boolean lockAcquired = (existingLock == null); if (!lockAcquired) { log.warn("获取锁失败,该订单正在被其他请求处理:{}", thirdPartyOrderNo); @@ -522,6 +525,8 @@ public class TencentDocController extends BaseController { return AjaxResult.error("该订单正在处理中,请稍后再试"); } + // 设置锁 + redisCache.setCacheObject(lockKey, "locked", 30, TimeUnit.SECONDS); log.info("✓ 获取分布式锁成功 - 单号: {}, lockKey: {}", thirdPartyOrderNo, lockKey); // 5. 读取表头(从配置的 headerRow 读取,与 startRow 独立)