客商主数据查询BUG修改1

This commit is contained in:
秦鸿展
2026-06-13 14:28:07 +08:00
parent c83596a5e0
commit 578e3b34d4
2 changed files with 30 additions and 2 deletions
@@ -1,5 +1,7 @@
package com.mhd.user.application.service;
import com.mhd.common.core.constant.SecurityConstants;
import com.mhd.common.core.context.SecurityContextHolder;
import com.mhd.common.redis.service.RedisLock;
import com.mhd.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
@@ -23,12 +25,34 @@ public class AsyncUserShipperMasterDataSyncService {
public void syncMasterDataAsync(LoginUser loginUser, String lockKey) {
Long organizationId = loginUser.getUserPo().getOrganizationId();
try {
bindLoginUser(loginUser);
userShipperMasterDataSyncService.executeSync(loginUser);
} catch (Exception e) {
log.error("异步同步主数据失败, organizationId={}", organizationId, e);
userShipperMasterDataSyncService.markSyncFailed(organizationId, e.getMessage());
} finally {
SecurityContextHolder.remove();
redisLock.unlock(lockKey);
}
}
/**
* 异步线程无 HTTP 请求上下文,需手动注入 LoginUser 供 addUser/authShipper 等使用。
*/
private void bindLoginUser(LoginUser loginUser) {
SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser);
if (loginUser.getUserid() != null) {
SecurityContextHolder.setUserId(String.valueOf(loginUser.getUserid()));
} else if (loginUser.getUserPo() != null && loginUser.getUserPo().getUserId() != null) {
SecurityContextHolder.setUserId(String.valueOf(loginUser.getUserPo().getUserId()));
}
if (loginUser.getUsername() != null) {
SecurityContextHolder.setUserName(loginUser.getUsername());
} else if (loginUser.getUserPo() != null) {
SecurityContextHolder.setUserName(loginUser.getUserPo().getUserAccount());
}
if (loginUser.getToken() != null) {
SecurityContextHolder.setUserKey(loginUser.getToken());
}
}
}
@@ -237,10 +237,14 @@ public class UserShipperMasterDataSyncService {
}
entity.setLastSyncTime(syncTime);
entity.setSyncStatus(resultVo.getFailCount() > 0 ? 2 : 1);
entity.setSyncMessage(String.format(
String syncMessage = String.format(
"新增%d,更新%d,跳过%d,失败%d;组织NC=%s;跳过明细[组织不匹配:%d,非客户:%d,停用:%d,其他:%d]",
resultVo.getAddCount(), resultVo.getUpdateCount(), resultVo.getSkipCount(), resultVo.getFailCount(),
orgNcCode, skipOrgMismatch, skipNotCustomer, skipDisabled, skipOther));
orgNcCode, skipOrgMismatch, skipNotCustomer, skipDisabled, skipOther);
if (resultVo.getFailCount() > 0 && !resultVo.getErrorMessages().isEmpty()) {
syncMessage += "" + resultVo.getErrorMessages().get(0);
}
entity.setSyncMessage(syncMessage);
entity.setUpdateTime(syncTime);
if (entity.getId() == null) {
userShipperMdmSyncMapper.insert(entity);