1、同步EP项目时,专项代表从PDT视图拉取
This commit is contained in:
@@ -227,6 +227,8 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
private static final String STRUCTURE = "结构仿真";
|
||||
private static final String TECHNOLOGY_CENTER = "技术中心";
|
||||
|
||||
private static final String SIMULATION_REPRESENTATIVE = "仿真代表";
|
||||
|
||||
/**
|
||||
* 判断字符串是否可以安全转换为Long类型
|
||||
*
|
||||
@@ -2484,8 +2486,19 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
|
||||
// 关联的项目未在系统
|
||||
// 取项目视图、工位相关视图构建项目树信息(只同步当前阶段)创建任务(不创建任务文件夹,等下发时进行创建)
|
||||
// 将利元亨的用户工号与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));
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(noRelatedProjectVTodoEmulationInfoDMList)) {
|
||||
List<SpdmProjectNodeEditReq> spdmProjectNodeEditReqList = httpSyncHandleNoRelatedProjectTodo(noRelatedProjectVTodoEmulationInfoDMList, tenantId, userId, jobNumber, userName);
|
||||
List<SpdmProjectNodeEditReq> spdmProjectNodeEditReqList = httpSyncHandleNoRelatedProjectTodo(noRelatedProjectVTodoEmulationInfoDMList, tenantId, userId, jobNumber, userName,usernameToUserIdMap);
|
||||
log.info("httpSyncHandleNoRelatedProjectTodo响应值为:{}", spdmProjectNodeEditReqList);
|
||||
for (SpdmProjectNodeEditReq spdmProjectNodeEditReq : spdmProjectNodeEditReqList) {
|
||||
SimulationNode simulationNode = new SimulationNode();
|
||||
@@ -2538,9 +2551,9 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
}
|
||||
|
||||
|
||||
private List<SpdmProjectNodeEditReq> httpSyncHandleNoRelatedProjectTodo(List<LyricVTodoEmulationInfoDM> noRelatedProjectVTodoEmulationInfoDMList, Long tenantId, Long userId, String jobNumber, String userName) {
|
||||
private List<SpdmProjectNodeEditReq> httpSyncHandleNoRelatedProjectTodo(List<LyricVTodoEmulationInfoDM> noRelatedProjectVTodoEmulationInfoDMList, Long tenantId, Long userId, String jobNumber, String userName,Map<String, Long> usernameToUserIdMap) {
|
||||
CompletableFuture<List<SpdmProjectNodeEditReq>> syncHandleNoRelatedProjectTodoFeature = CompletableFuture.supplyAsync(() ->
|
||||
handleNoRelatedProjectTodo(noRelatedProjectVTodoEmulationInfoDMList, tenantId, userId, jobNumber, userName));
|
||||
handleNoRelatedProjectTodo(noRelatedProjectVTodoEmulationInfoDMList, tenantId, userId, jobNumber, userName,usernameToUserIdMap));
|
||||
try {
|
||||
List<SpdmProjectNodeEditReq> spdmProjectNodeEditReqList = syncHandleNoRelatedProjectTodoFeature.get(syncProjectDataWaitSeconds, TimeUnit.SECONDS);
|
||||
return spdmProjectNodeEditReqList;
|
||||
@@ -2559,7 +2572,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
}
|
||||
}
|
||||
|
||||
private List<SpdmProjectNodeEditReq> handleNoRelatedProjectTodo(List<LyricVTodoEmulationInfoDM> noRelatedProjectVTodoEmulationInfoDMList, Long tenantId, Long userId, String jobNumber, String userName) {
|
||||
private List<SpdmProjectNodeEditReq> handleNoRelatedProjectTodo(List<LyricVTodoEmulationInfoDM> noRelatedProjectVTodoEmulationInfoDMList, Long tenantId, Long userId, String jobNumber, String userName,Map<String, Long> usernameToUserIdMap) {
|
||||
// 尝试获取锁(立即返回,不等待)
|
||||
if (!syncTodoInfoProjectLock.tryLock()) {
|
||||
return new ArrayList<>();
|
||||
@@ -2585,15 +2598,33 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
log.info("lyricVProjectToDMList为空");
|
||||
return new ArrayList<>();
|
||||
}
|
||||
// 查询PDT视图中的仿真代表
|
||||
projectNumList = lyricVProjectToDMList.stream().map(LyricVProjectToDM::getProjectNum).toList();
|
||||
List<LyricVPdtToDM> pdtToDMList = lyricVPdtDmService.lambdaQuery().eq(LyricVPdtToDM::getProjectRole, SIMULATION_REPRESENTATIVE)
|
||||
.in(LyricVPdtToDM::getProjectNum, projectNumList).list();
|
||||
Map<String, List<LyricVPdtToDM>> pdtMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(pdtToDMList)) {
|
||||
pdtMap = pdtToDMList.stream().collect(Collectors.groupingBy(LyricVPdtToDM::getProjectNum));
|
||||
}
|
||||
List<SpdmNodeRelateMemberReq> allNodeManagerList = new ArrayList<>();
|
||||
List<LyricVPdtToDM> eachPdtToDMList;
|
||||
for (LyricVProjectToDM lyricVProjectToDM : lyricVProjectToDMList) {
|
||||
SpdmProjectNodeEditReq spdmProjectNodeEditReq = buildProjectForTodoInfo(lyricVProjectToDM, tenantId, userId);
|
||||
SpdmProjectNodeEditReq spdmProjectNodeEditReq = buildProjectForTodoInfo(lyricVProjectToDM, tenantId, userId,pdtMap,usernameToUserIdMap);
|
||||
if (spdmProjectNodeEditReq != null) {
|
||||
eachPdtToDMList = pdtMap.get(spdmProjectNodeEditReq.getNodeCode());
|
||||
spdmProjectNodeEditReqList.add(spdmProjectNodeEditReq);
|
||||
for (Long epFixManagerUserId : epFixManagerUserIdList) {
|
||||
if (CollectionUtils.isEmpty(eachPdtToDMList)) {
|
||||
log.info("项目:{},没有仿真代表",spdmProjectNodeEditReq.getNodeName());
|
||||
continue;
|
||||
}
|
||||
for (LyricVPdtToDM lyricVPdtToDM : eachPdtToDMList) {
|
||||
Long pdtUserId = usernameToUserIdMap.get(lyricVPdtToDM.getUser());
|
||||
if (pdtUserId == null) {
|
||||
continue;
|
||||
}
|
||||
SpdmNodeRelateMemberReq simulationNodeMember = new SpdmNodeRelateMemberReq();
|
||||
simulationNodeMember.setNodeId(spdmProjectNodeEditReq.getUuid());
|
||||
simulationNodeMember.setUserId(epFixManagerUserId);
|
||||
simulationNodeMember.setUserId(pdtUserId);
|
||||
simulationNodeMember.setCreator(userId);
|
||||
simulationNodeMember.setCreateTime(curDateStr);
|
||||
simulationNodeMember.setType(NodeMemberTypeEnum.MANAGER.getCode());
|
||||
@@ -2897,7 +2928,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
log.info("创建节点时,调用批量创建文件夹的返回值为:{}", response);
|
||||
}
|
||||
|
||||
private SpdmProjectNodeEditReq buildProjectForTodoInfo(LyricVProjectToDM lyricVProjectToDM, Long tenantId, Long jobNumber) {
|
||||
private SpdmProjectNodeEditReq buildProjectForTodoInfo(LyricVProjectToDM lyricVProjectToDM, Long tenantId, Long jobNumber,Map<String, List<LyricVPdtToDM>> pdtMap,Map<String, Long> usernameToUserIdMap) {
|
||||
String curDateStr;
|
||||
Date createTime = lyricVProjectToDM.getCreateTime();
|
||||
if (ObjectUtils.isNotEmpty(createTime)) {
|
||||
@@ -3206,8 +3237,16 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
BatchUpdatePermissionReq.FilePermissionItem item = new BatchUpdatePermissionReq.FilePermissionItem();
|
||||
item.setUuid(spdmProjectNodeEditReq.getUuid());
|
||||
Map<Long, Byte> userPermissions = new HashMap<>();
|
||||
for (Long userId : epFixManagerUserIdList) {
|
||||
userPermissions.put(userId, FilePermissionEnum.ALL.getValue());
|
||||
|
||||
List<LyricVPdtToDM> pdtToDMList = pdtMap.get(lyricVProjectToDM.getProjectNum());
|
||||
if (CollectionUtils.isNotEmpty(pdtToDMList)) {
|
||||
for (LyricVPdtToDM lyricVPdtToDM : pdtToDMList) {
|
||||
Long pdtUserId = usernameToUserIdMap.get(lyricVPdtToDM.getUser());
|
||||
if (pdtUserId == null) {
|
||||
continue;
|
||||
}
|
||||
userPermissions.put(pdtUserId, FilePermissionEnum.ALL.getValue());
|
||||
}
|
||||
}
|
||||
item.setUserPermissions(userPermissions);
|
||||
filePermissions.add(item);
|
||||
@@ -4085,17 +4124,41 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
|
||||
List<SpdmProjectNodeEditReq> spdmProjectNodeEditReqList = new ArrayList<>();
|
||||
try {
|
||||
List<SpdmNodeRelateMemberReq> allNodeManagerList = new ArrayList<>();
|
||||
SpdmProjectNodeEditReq spdmProjectNodeEditReq = buildProjectForTodoInfo(lyricVProjectToDM, tenantId, userId);
|
||||
// 将利元亨的用户工号与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));
|
||||
}
|
||||
List<LyricVPdtToDM> pdtToDMList = lyricVPdtDmService.lambdaQuery().eq(LyricVPdtToDM::getProjectNum, lyricVProjectToDM.getProjectNum())
|
||||
.eq(LyricVPdtToDM::getProjectRole, SIMULATION_REPRESENTATIVE)
|
||||
.list();
|
||||
Map<String, List<LyricVPdtToDM>> pdtMap = new HashMap<>();
|
||||
if (CollectionUtils.isNotEmpty(pdtToDMList)) {
|
||||
pdtMap = pdtToDMList.stream().collect(Collectors.groupingBy(LyricVPdtToDM::getProjectNum));
|
||||
}
|
||||
SpdmProjectNodeEditReq spdmProjectNodeEditReq = buildProjectForTodoInfo(lyricVProjectToDM, tenantId, userId,pdtMap,usernameToUserIdMap);
|
||||
if (spdmProjectNodeEditReq != null) {
|
||||
spdmProjectNodeEditReqList.add(spdmProjectNodeEditReq);
|
||||
for (Long epFixManagerUserId : epFixManagerUserIdList) {
|
||||
SpdmNodeRelateMemberReq simulationNodeMember = new SpdmNodeRelateMemberReq();
|
||||
simulationNodeMember.setNodeId(spdmProjectNodeEditReq.getUuid());
|
||||
simulationNodeMember.setUserId(epFixManagerUserId);
|
||||
simulationNodeMember.setCreator(userId);
|
||||
simulationNodeMember.setCreateTime(curDateStr);
|
||||
simulationNodeMember.setType(NodeMemberTypeEnum.MANAGER.getCode());
|
||||
allNodeManagerList.add(simulationNodeMember);
|
||||
if (CollectionUtils.isNotEmpty(pdtToDMList)) {
|
||||
for (LyricVPdtToDM lyricVPdtToDM : pdtToDMList) {
|
||||
Long pdtUserId = usernameToUserIdMap.get(lyricVPdtToDM.getUser());
|
||||
if (pdtUserId == null) {
|
||||
continue;
|
||||
}
|
||||
SpdmNodeRelateMemberReq simulationNodeMember = new SpdmNodeRelateMemberReq();
|
||||
simulationNodeMember.setNodeId(spdmProjectNodeEditReq.getUuid());
|
||||
simulationNodeMember.setUserId(pdtUserId);
|
||||
simulationNodeMember.setCreator(userId);
|
||||
simulationNodeMember.setCreateTime(curDateStr);
|
||||
simulationNodeMember.setType(NodeMemberTypeEnum.MANAGER.getCode());
|
||||
allNodeManagerList.add(simulationNodeMember);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(allNodeManagerList)) {
|
||||
|
||||
Reference in New Issue
Block a user