diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java index bd7ab442b..242a913de 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserShipperMasterDataSyncService.java @@ -70,13 +70,28 @@ public class UserShipperMasterDataSyncService { public void syncMasterData() { LoginUser loginUser = requireLoginUser(); Long organizationId = loginUser.getUserPo().getOrganizationId(); - String lockKey = LOCK_PREFIX + organizationId; - boolean locked = redisLock.tryLock(lockKey, SYNC_LOCK_MINUTES, TimeUnit.MINUTES); - if (!locked) { - throw new ServiceException("当前组织正在同步主数据,请稍后再试"); - } - markSyncInProgress(organizationId); - asyncUserShipperMasterDataSyncService.syncMasterDataAsync(loginUser, lockKey); + new Thread(() -> { + String lockKey = LOCK_PREFIX + organizationId; + try { + boolean locked = redisLock.tryLock(lockKey, SYNC_LOCK_MINUTES, TimeUnit.MINUTES); + if (!locked) { + log.warn("当前组织正在同步主数据,跳过本次同步"); + return; + } + markSyncInProgress(organizationId); + try { + ShipperMasterDataSyncResultVo resultVo = doSync(loginUser); + log.info("MDM同步完成: {}", resultVo); + } catch (Exception e) { + log.error("同步主数据失败, organizationId={}", organizationId, e); + markSyncFailed(organizationId, e.getMessage()); + } finally { + redisLock.unlock(lockKey); + } + } catch (Exception e) { + log.error("获取同步锁失败", e); + } + }, "mdm-sync-thread").start(); } public ShipperMasterDataSyncResultVo executeSync(LoginUser loginUser) { diff --git a/mhd_thrid_party/src/main/java/com/linke/thirdParty/application/server/MdmMasterDataApplicationService.java b/mhd_thrid_party/src/main/java/com/linke/thirdParty/application/server/MdmMasterDataApplicationService.java index 4a6ad3be2..82fcc68e2 100644 --- a/mhd_thrid_party/src/main/java/com/linke/thirdParty/application/server/MdmMasterDataApplicationService.java +++ b/mhd_thrid_party/src/main/java/com/linke/thirdParty/application/server/MdmMasterDataApplicationService.java @@ -40,8 +40,8 @@ public class MdmMasterDataApplicationService { public MdmMerchantQueryResultDTO queryMerchant(MdmMerchantQueryDTO queryDTO) { MdmConfig config = loadConfig(); String requestBody = buildRequestBody(queryDTO); - log.info("MDM客商查询请求 orgNcCode={}, page={}, lastTime={}", - queryDTO.getOrgNcCode(), queryDTO.getCurrentPage(), queryDTO.getLastModifyRecordTime()); + log.info("MDM客商查询请求 orgNcCode={}, page={}, lastTime={}, body={}", + queryDTO.getOrgNcCode(), queryDTO.getCurrentPage(), queryDTO.getLastModifyRecordTime(), requestBody); String responseBody = doPost(config.url, config.usercode, config.password, requestBody); MdmMerchantQueryResultDTO result = parseResponse(responseBody); return result;