1、同步项目时,保存部分数据作为项目拓展字段信息进行保存

This commit is contained in:
2026-02-10 21:09:22 +08:00
parent a613b7ae71
commit ae290f9a3d
2 changed files with 135 additions and 3 deletions

View File

@@ -40,7 +40,7 @@ public class LyricVProjectToDM {
@TableField(value = "client_name")
private String clientName;
@Schema(description = "项目类型")
@Schema(description = "难度类型")
@TableField(value = "difficultyType")
private String difficultyType;

View File

@@ -103,6 +103,16 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
private static final String DATE_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss";
private static final int UUID_LENGTH = 32;
private static final String PROJECT_STAGE = "PROJECT_STAGE";
private static final String SELF_DEVELOP = "self_develop";
private static final String DOMAIN = "domain";
private static final String CLIENT_NAME = "clientName";
private static final String DIFFICULT_TYPE = "difficultType";
private static final String PROGRAM_MANAGER = "programManager";
private static final String PROCESS_SECTION = "processSection";
private static final String PRODUCE_LINE = "produceLine";
private static final String PROGRAM_TEAM = "programTeam";
private static final String REFERENCE_ITEM = "referenceItem";
private static final String PROJECT_UNDERTAKER = "projectUndertaker";
// 同步待办锁
private final ReentrantLock syncTodoInfoLock = new ReentrantLock();
@@ -2127,7 +2137,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
// 查询原始待办数据
// TODO 这里要确认是不是只拉取有限元仿真
List<LyricVTodoEmulationInfoDM> todoInfoList = lyricVTodoInfoService.lambdaQuery()
.in(LyricVTodoEmulationInfoDM::getRelevanceTask, Arrays.asList(DemandTypeEnum.FINITE_ELEMENT_SIMULATION.getName()))
.eq(LyricVTodoEmulationInfoDM::getRelevanceTask, DemandTypeEnum.FINITE_ELEMENT_SIMULATION.getName())
.ge(LyricVTodoEmulationInfoDM::getCreateTime, startTime)
.le(LyricVTodoEmulationInfoDM::getCreateTime, endTime)
.list();
@@ -2136,6 +2146,12 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
return Collections.emptyList();
}
List<LyricVTodoEmulationInfoDM> expTodoInfoList = todoInfoList.stream().filter(todoInfo -> DemandTypeEnum.FINITE_ELEMENT_SIMULATION.getName().equals(todoInfo.getRelevanceTask()))
.toList();
if (CollectionUtils.isNotEmpty(expTodoInfoList)) {
log.error("同步到了异常类型的待办id为{}",expTodoInfoList.stream().map(LyricVTodoEmulationInfoDM::getId).toList());
}
// 过滤已同步的待办
Set<String> existDemandCodeSet = demandMapper.getAllCodeList();
if (CollectionUtils.isEmpty(existDemandCodeSet)) {
@@ -2570,7 +2586,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
spdmProjectNodeEditReq.setTenantId(tenantId);
spdmProjectNodeEditReq.setProjectSource(SYNC_PROJECT_SOURCE);
spdmProjectNodeEditReq.setProjectId(Math.toIntExact(lyricVProjectToDM.getId()));
spdmProjectNodeEditReq.setNodeSubType("self_develop");
spdmProjectNodeEditReq.setNodeSubType(SELF_DEVELOP);
addNodeList.add(spdmProjectNodeEditReq);
// 根据projectId查询项目机台工位信息的视图
List<LyricVProjectStationToDM> projectStationList = new ArrayList<>();
@@ -2721,6 +2737,122 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
return ;
}
// 保存拓展字段
List<SpdmNodeExtraReq> nodeExtraReqList = new ArrayList<>();
// 项目领域
String domain = lyricVProjectToDM.getDomain();
if (StringUtils.isNotBlank(domain)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(DOMAIN);
spdmNodeExtraReq.setPropertyValue(domain);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 客户名称
String clientName = lyricVProjectToDM.getClientName();
if (StringUtils.isNotBlank(clientName)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(CLIENT_NAME);
spdmNodeExtraReq.setPropertyValue(clientName);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 难度类型
String difficultyType = lyricVProjectToDM.getDifficultyType();
if (StringUtils.isNotBlank(difficultyType)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(DIFFICULT_TYPE);
spdmNodeExtraReq.setPropertyValue(difficultyType);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 方案管理人
String programManager = lyricVProjectToDM.getProgramManager();
if (StringUtils.isNotBlank(programManager)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(PROGRAM_MANAGER);
spdmNodeExtraReq.setPropertyValue(programManager);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 产品组
String processSection = lyricVProjectToDM.getProcessSection();
if (StringUtils.isNotBlank(processSection)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(PROCESS_SECTION);
spdmNodeExtraReq.setPropertyValue(processSection);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 产品线
String produceLine = lyricVProjectToDM.getProduceLine();
if (StringUtils.isNotBlank(produceLine)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(PRODUCE_LINE);
spdmNodeExtraReq.setPropertyValue(produceLine);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 方案制作部门
String programTeam = lyricVProjectToDM.getProgramTeam();
if (StringUtils.isNotBlank(domain)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(PROGRAM_TEAM);
spdmNodeExtraReq.setPropertyValue(programTeam);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 参考项目
String referenceItem = lyricVProjectToDM.getReferenceItem();
if (StringUtils.isNotBlank(domain)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(REFERENCE_ITEM);
spdmNodeExtraReq.setPropertyValue(referenceItem);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 项目承接主体
String projectUndertaker = lyricVProjectToDM.getProjectUndertaker();
if (StringUtils.isNotBlank(projectUndertaker)) {
SpdmNodeExtraReq spdmNodeExtraReq = new SpdmNodeExtraReq();
spdmNodeExtraReq.setNodeId(spdmProjectNodeEditReq.getUuid());
spdmNodeExtraReq.setPropertyName(PROJECT_UNDERTAKER);
spdmNodeExtraReq.setPropertyValue(projectUndertaker);
spdmNodeExtraReq.setCreator(jobNumber);
spdmNodeExtraReq.setCreateTime(curDateStr);
nodeExtraReqList.add(spdmNodeExtraReq);
}
// 保存项目拓展信息
if (CollectionUtils.isNotEmpty(nodeExtraReqList)) {
nodeMapper.addNodeExtraBatch(nodeExtraReqList);
}
// 批量创建文件夹
batchCreateNodeDir(addNodeList);