fix:同步待办用户工号转userId

This commit is contained in:
2026-02-06 18:52:23 +08:00
parent a44e6a5562
commit 796bae6d06
2 changed files with 18 additions and 38 deletions

View File

@@ -344,6 +344,18 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
Map<String, List<LyricVTodoEmulationInfoDM>> projectTodoMap = todoInfoList.stream() Map<String, List<LyricVTodoEmulationInfoDM>> projectTodoMap = todoInfoList.stream()
.collect(Collectors.groupingBy(LyricVTodoEmulationInfoDM::getProject)); .collect(Collectors.groupingBy(LyricVTodoEmulationInfoDM::getProject));
// 将利元亨的用户工号与userId映射
Map<String, Long> usernameToUserIdMap = new HashMap<>();
UserListReq userListReq = new UserListReq();
userListReq.setTenantId(tenantId);
userListReq.setCurrent(1);
userListReq.setSize(9999);
SdmResponse<PageDataResp<List<CIDUserResp>>> pageDataRespSdmResponse = sysUserFeignClient.listUser(userListReq);
if (pageDataRespSdmResponse.isSuccess() && pageDataRespSdmResponse.getData().getData() != null) {
List<CIDUserResp> userList = pageDataRespSdmResponse.getData().getData();
usernameToUserIdMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUsername, CIDUserResp::getUserId));
}
for (SimulationNode projectNode : projectNodeList) { for (SimulationNode projectNode : projectNodeList) {
String projectCode = projectNode.getNodeCode(); String projectCode = projectNode.getNodeCode();
List<LyricVTodoEmulationInfoDM> projectTodoList = projectTodoMap.getOrDefault(projectCode, Collections.emptyList()); List<LyricVTodoEmulationInfoDM> projectTodoList = projectTodoMap.getOrDefault(projectCode, Collections.emptyList());
@@ -355,18 +367,6 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
BatchCreateDirItem projectCreateItem = buildProjectDirItem(projectNode); BatchCreateDirItem projectCreateItem = buildProjectDirItem(projectNode);
List<DirNodeInfo> demandDirNodeList = new ArrayList<>(); List<DirNodeInfo> demandDirNodeList = new ArrayList<>();
// 将利元亨的用户工号与userId映射
Map<String, Long> usernameToUserIdMap = new HashMap<>();
UserListReq userListReq = new UserListReq();
userListReq.setTenantId(tenantId);
userListReq.setCurrent(1);
userListReq.setSize(9999);
SdmResponse<PageDataResp<List<CIDUserResp>>> pageDataRespSdmResponse = sysUserFeignClient.listUser(userListReq);
if (pageDataRespSdmResponse.isSuccess() && pageDataRespSdmResponse.getData().getData() != null) {
List<CIDUserResp> userList = pageDataRespSdmResponse.getData().getData();
usernameToUserIdMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUsername, CIDUserResp::getUserId));
}
// 处理当前项目下的所有待办 // 处理当前项目下的所有待办
for (LyricVTodoEmulationInfoDM todo : projectTodoList) { for (LyricVTodoEmulationInfoDM todo : projectTodoList) {
try { try {
@@ -379,7 +379,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
// 3. 构建需求文件夹节点 // 3. 构建需求文件夹节点
demandDirNodeList.add(buildDemandDirNode(demandUuid, projectNode, demandReq.getDemandName())); demandDirNodeList.add(buildDemandDirNode(demandUuid, projectNode, demandReq.getDemandName()));
// 4. 异步保存需求数据 // 4. 异步保存需求数据
asyncSaveDemandData(demandReq, memberList, tenantId, jobNumber); asyncSaveDemandData(demandReq, memberList, tenantId, jobNumber, usernameToUserIdMap);
SimulationDemand demand = new SimulationDemand(); SimulationDemand demand = new SimulationDemand();
BeanUtils.copyProperties(demandReq, demand); BeanUtils.copyProperties(demandReq, demand);
@@ -611,22 +611,12 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
private void asyncSaveDemandData(SpdmAddDemandReq demandReq, private void asyncSaveDemandData(SpdmAddDemandReq demandReq,
List<SpdmDemandRelateMemberReq> memberList, List<SpdmDemandRelateMemberReq> memberList,
Long tenantId, Long tenantId,
Long jobNumber) { Long jobNumber,
Map<String, Long> usernameToUserIdMap) {
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
try { try {
demandMapper.addDemand(demandReq, tenantId, jobNumber); demandMapper.addDemand(demandReq, tenantId, jobNumber);
if (CollectionUtils.isNotEmpty(memberList)) { if (CollectionUtils.isNotEmpty(memberList)) {
// 将利元亨的用户工号与userId映射
Map<String, Long> usernameToUserIdMap = new HashMap<>();
UserListReq userListReq = new UserListReq();
userListReq.setTenantId(tenantId);
userListReq.setCurrent(1);
userListReq.setSize(9999);
SdmResponse<PageDataResp<List<CIDUserResp>>> pageDataRespSdmResponse = sysUserFeignClient.listUser(userListReq);
if (pageDataRespSdmResponse.isSuccess() && pageDataRespSdmResponse.getData().getData() != null) {
List<CIDUserResp> userList = pageDataRespSdmResponse.getData().getData();
usernameToUserIdMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUsername, CIDUserResp::getUserId));
}
for (SpdmDemandRelateMemberReq member : memberList) { for (SpdmDemandRelateMemberReq member : memberList) {
Long cidUserId = usernameToUserIdMap.get(String.valueOf(member.getUserId())); Long cidUserId = usernameToUserIdMap.get(String.valueOf(member.getUserId()));
if (cidUserId != null) { if (cidUserId != null) {

View File

@@ -3242,7 +3242,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
demandDirNodeList.add(demandDirNode); demandDirNodeList.add(demandDirNode);
// 4. 异步保存需求和成员信息 // 4. 异步保存需求和成员信息
saveDemandAndMembersAsync(demandAddReq, memberList, tenantId, currentUserId); saveDemandAndMembersAsync(demandAddReq, memberList, tenantId, currentUserId, usernameToUserIdMap);
} catch (Exception e) { } catch (Exception e) {
log.error("处理待办事项失败待办ID{},错误信息:{}", todoItem.getTodoId(), e.getMessage(), e); log.error("处理待办事项失败待办ID{},错误信息:{}", todoItem.getTodoId(), e.getMessage(), e);
@@ -3432,24 +3432,14 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
private void saveDemandAndMembersAsync(SpdmAddDemandReq demandAddReq, private void saveDemandAndMembersAsync(SpdmAddDemandReq demandAddReq,
List<SpdmDemandRelateMemberReq> memberList, List<SpdmDemandRelateMemberReq> memberList,
Long tenantId, Long tenantId,
Long currentUserId) { Long currentUserId,
Map<String, Long> usernameToUserIdMap) {
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
try { try {
ThreadLocalContext.setTenantId(tenantId); ThreadLocalContext.setTenantId(tenantId);
ThreadLocalContext.setUserId(currentUserId); ThreadLocalContext.setUserId(currentUserId);
demandMapper.addDemand(demandAddReq, tenantId, currentUserId); demandMapper.addDemand(demandAddReq, tenantId, currentUserId);
if (CollectionUtils.isNotEmpty(memberList)) { if (CollectionUtils.isNotEmpty(memberList)) {
// 将利元亨的用户工号与userId映射
Map<String, Long> usernameToUserIdMap = new HashMap<>();
UserListReq userListReq = new UserListReq();
userListReq.setTenantId(tenantId);
userListReq.setCurrent(1);
userListReq.setSize(9999);
SdmResponse<PageDataResp<List<CIDUserResp>>> pageDataRespSdmResponse = sysUserFeignClient.listUser(userListReq);
if (pageDataRespSdmResponse.isSuccess() && pageDataRespSdmResponse.getData().getData() != null) {
List<CIDUserResp> userList = pageDataRespSdmResponse.getData().getData();
usernameToUserIdMap = userList.stream().collect(Collectors.toMap(CIDUserResp::getUsername, CIDUserResp::getUserId));
}
for (SpdmDemandRelateMemberReq member : memberList) { for (SpdmDemandRelateMemberReq member : memberList) {
Long cidUserId = usernameToUserIdMap.get(String.valueOf(member.getUserId())); Long cidUserId = usernameToUserIdMap.get(String.valueOf(member.getUserId()));
if (cidUserId != null) { if (cidUserId != null) {