This commit is contained in:
2026-02-06 18:57:21 +08:00
3 changed files with 37 additions and 44 deletions

View File

@@ -1,18 +1,31 @@
spring:
datasource:
# todo 生产地址
# 生产地址
second:
username: EP_DM
password: ENC(c04rt9Z6Ygz024EU9eWvig==)
jdbc-url: jdbc:mysql://10.122.48.11:13306/easy_project?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
jdbc-url: jdbc:mysql://192.168.30.74:3306/easy_project?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
# todo 第三个数据源生产ip不一样
# 第三个数据源生产ip不一样
third:
username: EP_DM
password: ENC(c04rt9Z6Ygz024EU9eWvig==)
jdbc-url: jdbc:mysql://10.122.48.11:13306/ecn?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
username: ECN_DM
password: ENC(YX2p8EZqmCAqqkj3wTRCsw==)
jdbc-url: jdbc:mysql://192.168.23.64:3306/ecn?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
## 测试环境
# second:
# username: EP_DM
# password: ENC(c04rt9Z6Ygz024EU9eWvig==)
# jdbc-url: jdbc:mysql://10.122.48.11:13306/easy_project?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
# driver-class-name: com.mysql.cj.jdbc.Driver
##
# third:
# username: EP_DM
# password: ENC(c04rt9Z6Ygz024EU9eWvig==)
# jdbc-url: jdbc:mysql://10.122.48.11:13306/ecn?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
# driver-class-name: com.mysql.cj.jdbc.Driver
# 测试开发环境
#appKey : 380ad3deb578424c9ca5178383f732c1
#appSecret : 805c316f35024b8b9566ca67b4991c42

View File

@@ -344,6 +344,18 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
Map<String, List<LyricVTodoEmulationInfoDM>> projectTodoMap = todoInfoList.stream()
.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) {
String projectCode = projectNode.getNodeCode();
List<LyricVTodoEmulationInfoDM> projectTodoList = projectTodoMap.getOrDefault(projectCode, Collections.emptyList());
@@ -355,18 +367,6 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
BatchCreateDirItem projectCreateItem = buildProjectDirItem(projectNode);
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) {
try {
@@ -379,7 +379,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
// 3. 构建需求文件夹节点
demandDirNodeList.add(buildDemandDirNode(demandUuid, projectNode, demandReq.getDemandName()));
// 4. 异步保存需求数据
asyncSaveDemandData(demandReq, memberList, tenantId, jobNumber);
asyncSaveDemandData(demandReq, memberList, tenantId, jobNumber, usernameToUserIdMap);
SimulationDemand demand = new SimulationDemand();
BeanUtils.copyProperties(demandReq, demand);
@@ -611,22 +611,12 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
private void asyncSaveDemandData(SpdmAddDemandReq demandReq,
List<SpdmDemandRelateMemberReq> memberList,
Long tenantId,
Long jobNumber) {
Long jobNumber,
Map<String, Long> usernameToUserIdMap) {
CompletableFuture.runAsync(() -> {
try {
demandMapper.addDemand(demandReq, tenantId, jobNumber);
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) {
Long cidUserId = usernameToUserIdMap.get(String.valueOf(member.getUserId()));
if (cidUserId != null) {

View File

@@ -3242,7 +3242,7 @@ public class NodeServiceImpl extends ServiceImpl<SimulationNodeMapper, Simulatio
demandDirNodeList.add(demandDirNode);
// 4. 异步保存需求和成员信息
saveDemandAndMembersAsync(demandAddReq, memberList, tenantId, currentUserId);
saveDemandAndMembersAsync(demandAddReq, memberList, tenantId, currentUserId, usernameToUserIdMap);
} catch (Exception 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,
List<SpdmDemandRelateMemberReq> memberList,
Long tenantId,
Long currentUserId) {
Long currentUserId,
Map<String, Long> usernameToUserIdMap) {
CompletableFuture.runAsync(() -> {
try {
ThreadLocalContext.setTenantId(tenantId);
ThreadLocalContext.setUserId(currentUserId);
demandMapper.addDemand(demandAddReq, tenantId, currentUserId);
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) {
Long cidUserId = usernameToUserIdMap.get(String.valueOf(member.getUserId()));
if (cidUserId != null) {