1、利元亨现场问题修改4

This commit is contained in:
2026-03-06 15:29:45 +08:00
parent 9491e7a7a6
commit afc4a6f4a5
3 changed files with 123 additions and 104 deletions

View File

@@ -740,68 +740,68 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
// 批量创建文件夹
if (CollectionUtils.isNotEmpty(createDirItemList)) {
// project的uuidcreateDirItemList中每一项project的uuid都一样取第一个即可
String projectNodeId = createDirItemList.get(0).getParentDirNodeInfo().getUuId();
if (StringUtils.isBlank(projectNodeId)) {
log.error("projectNodeId为空createDirItemList{}", createDirItemList);
return;
}
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(projectNodeId, NodeTypeEnum.PROJECT.getValue(), 0L);
if (fileMetadataInfoResp.getData() == null) {
log.error("fileMetadataInfoResp为空,projectNodeId为{}", projectNodeId);
return;
}
// 查询需求附件的uuid元数据表中【parentId是project的元数据主键id且originalName为需求附件】
FileMetadataInfoResp projectMetadataInfo = fileMetadataInfoResp.getData();
SdmResponse<List<FileMetadataInfoResp>> listSdmResponse = dataFeignClient.listDir(DirTypeEnum.PROJECT_NODE_DIR.getValue(), projectMetadataInfo.getId());
if (!listSdmResponse.isSuccess() || CollectionUtils.isEmpty(listSdmResponse.getData())) {
log.error("listSdmResponse为空,project的元数据主键id为{}", projectMetadataInfo.getId());
return;
}
List<FileMetadataInfoResp> childrenMetadataInfoList = listSdmResponse.getData();
FileMetadataInfoResp demandAttachFileMetadataInfoResp = childrenMetadataInfoList.stream().filter(metadataInfo -> AttachFileTypeEnum.DEMAND_FILE.getValue().equals(metadataInfo.getOriginalName())).findFirst().orElse(null);
Long demandAttachFileMetadataInfoId;
if (ObjectUtils.isEmpty(demandAttachFileMetadataInfoResp)) {
log.info("未查询到需求附件文件夹,当前项目下的子文件夹为:{}", childrenMetadataInfoList);
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
List<FolderItemReq> demandAttachFolderItemReqList = new ArrayList<>();
BatchCreateNormalDirReq demandAttachBatchCreateNormalDirReq = new BatchCreateNormalDirReq();
demandAttachBatchCreateNormalDirReq.setParentUUId(projectNodeId);
FolderItemReq demandAttachFolderItemReq = new FolderItemReq();
demandAttachFolderItemReq.setFolderName(AttachFileTypeEnum.DEMAND_FILE.getValue());
demandAttachFolderItemReq.setFolderUuid(RandomUtil.generateString(32));
demandAttachFolderItemReqList.add(demandAttachFolderItemReq);
demandAttachBatchCreateNormalDirReq.setFolderItems(demandAttachFolderItemReqList);
demandAttachBatchCreateNormalDirReq.setSkipPermissionCheck(true);
log.info("创建需求附件文件夹请求参数:{}", demandAttachBatchCreateNormalDirReq);
BatchCreateNormalDirResp batchCreateNormalDirResp;
try {
SdmResponse<BatchCreateNormalDirResp> response = dataFeignClient.batchCreateNormalDirs(demandAttachBatchCreateNormalDirReq);
log.info("创建需求附件文件夹响应:{}", response);
if (!response.isSuccess() || ObjectUtils.isEmpty(response.getData())) {
log.error("调用创建需求附件文件夹接口失败,原因为:{}", response.getMessage());
for (BatchCreateDirItem batchCreateDirItem : createDirItemList) {
String projectNodeId = createDirItemList.get(0).getParentDirNodeInfo().getUuId();
if (StringUtils.isBlank(projectNodeId)) {
log.error("projectNodeId为空createDirItemList{}", createDirItemList);
return;
}
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(projectNodeId, NodeTypeEnum.PROJECT.getValue(), 0L);
if (fileMetadataInfoResp.getData() == null) {
log.error("fileMetadataInfoResp为空,projectNodeId为{}", projectNodeId);
return;
}
// 查询需求附件的uuid元数据表中【parentId是project的元数据主键id且originalName为需求附件】
FileMetadataInfoResp projectMetadataInfo = fileMetadataInfoResp.getData();
SdmResponse<List<FileMetadataInfoResp>> listSdmResponse = dataFeignClient.listDir(DirTypeEnum.PROJECT_NODE_DIR.getValue(), projectMetadataInfo.getId());
if (!listSdmResponse.isSuccess() || CollectionUtils.isEmpty(listSdmResponse.getData())) {
log.error("listSdmResponse为空,project的元数据主键id为{}", projectMetadataInfo.getId());
return;
}
List<FileMetadataInfoResp> childrenMetadataInfoList = listSdmResponse.getData();
FileMetadataInfoResp demandAttachFileMetadataInfoResp = childrenMetadataInfoList.stream().filter(metadataInfo -> AttachFileTypeEnum.DEMAND_FILE.getValue().equals(metadataInfo.getOriginalName())).findFirst().orElse(null);
Long demandAttachFileMetadataInfoId;
if (ObjectUtils.isEmpty(demandAttachFileMetadataInfoResp)) {
log.info("未查询到需求附件文件夹,当前项目下的子文件夹为:{}", childrenMetadataInfoList);
// 项目层级文件夹和需求文件夹中,新增一层【需求附件】文件夹
List<FolderItemReq> demandAttachFolderItemReqList = new ArrayList<>();
BatchCreateNormalDirReq demandAttachBatchCreateNormalDirReq = new BatchCreateNormalDirReq();
demandAttachBatchCreateNormalDirReq.setParentUUId(projectNodeId);
FolderItemReq demandAttachFolderItemReq = new FolderItemReq();
demandAttachFolderItemReq.setFolderName(AttachFileTypeEnum.DEMAND_FILE.getValue());
demandAttachFolderItemReq.setFolderUuid(RandomUtil.generateString(32));
demandAttachFolderItemReqList.add(demandAttachFolderItemReq);
demandAttachBatchCreateNormalDirReq.setFolderItems(demandAttachFolderItemReqList);
demandAttachBatchCreateNormalDirReq.setSkipPermissionCheck(true);
log.info("创建需求附件文件夹请求参数:{}", demandAttachBatchCreateNormalDirReq);
BatchCreateNormalDirResp batchCreateNormalDirResp;
try {
SdmResponse<BatchCreateNormalDirResp> response = dataFeignClient.batchCreateNormalDirs(demandAttachBatchCreateNormalDirReq);
log.info("创建需求附件文件夹响应:{}", response);
if (!response.isSuccess() || ObjectUtils.isEmpty(response.getData())) {
log.error("调用创建需求附件文件夹接口失败,原因为:{}", response.getMessage());
return;
}
batchCreateNormalDirResp = response.getData();
} catch (Exception e) {
log.error("调用创建需求附件文件夹接口失败", e);
return;
}
batchCreateNormalDirResp = response.getData();
} catch (Exception e) {
log.error("调用创建需求附件文件夹接口失败", e);
return;
}
if (ObjectUtils.isEmpty(batchCreateNormalDirResp)) {
log.error("batchCreateNormalDirResp为空");
return;
if (ObjectUtils.isEmpty(batchCreateNormalDirResp)) {
log.error("batchCreateNormalDirResp为空");
return;
}
List<BatchCreateNormalDirResp.DirInfo> successList = batchCreateNormalDirResp.getSuccessList();
if (CollectionUtils.isEmpty(successList)) {
log.error("successList为空");
return;
}
// 需求附件文件夹的元数据主键id
demandAttachFileMetadataInfoId = successList.get(0).getId();
} else {
demandAttachFileMetadataInfoId = demandAttachFileMetadataInfoResp.getId();
}
List<BatchCreateNormalDirResp.DirInfo> successList = batchCreateNormalDirResp.getSuccessList();
if (CollectionUtils.isEmpty(successList)) {
log.error("successList为空");
return;
}
// 需求附件文件夹的元数据主键id
demandAttachFileMetadataInfoId = successList.get(0).getId();
} else {
demandAttachFileMetadataInfoId = demandAttachFileMetadataInfoResp.getId();
}
for (BatchCreateDirItem batchCreateDirItem : createDirItemList) {
BatchCreateNormalDirReq batchCreateNormalDirReq = new BatchCreateNormalDirReq();
// 2026-02-03 这里要挂在【需求附件】文件夹下了
batchCreateNormalDirReq.setParentId(demandAttachFileMetadataInfoId);
@@ -820,7 +820,6 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
}
}
// 批量更新权限
if (CollectionUtils.isNotEmpty(updatePermissionList)) {
List<BatchUpdatePermissionReq.FilePermissionItem> filePermissions = new ArrayList<>();
@@ -2673,7 +2672,7 @@ public class LyricInternalServiceImpl implements ILyricInternalService {
String curDateStr;
Date createTime = lyricVProjectToDM.getCreateTime();
if (ObjectUtils.isNotEmpty(createTime)) {
curDateStr = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss").format(createTime).replace("T"," ");
curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
}else {
curDateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
}

View File

@@ -177,6 +177,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
private static final String NODE_TYPE_PHASE = NodeTypeEnum.PHASE.getValue();
private static final List<TaskNodeTag> EMPTY_TAG_LIST = Collections.emptyList();
// 通过标识判断是否走查询现场视图逻辑0不查询1查询
@Value("${lyricFlag:1}")
private int lyricFlag;
@Autowired
private CacheManager cacheManager;
@@ -602,8 +606,10 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
summaryWorkspaceNode(projectNodePo,projectNodePo.getChildren());
}
// 对工位进行排序,-M工位顺序排第一个
for (ProjectNodePo projectNodePo : realTopProjectNodeList) {
sortWorkspaceNode(projectNodePo);
if (lyricFlag == 1) {
for (ProjectNodePo projectNodePo : realTopProjectNodeList) {
sortWorkspaceNode(projectNodePo);
}
}
return SdmResponse.success(realTopProjectNodeList.stream().flatMap(item -> item.getChildren().stream().filter(Objects::nonNull)).toList());
}
@@ -623,32 +629,35 @@ public class ProjectServiceImpl extends BaseService implements IProjectService {
return;
}
// 对工位进行排序,-M工位顺序排第一个
workspaceNodeList = workspaceNodeList.stream().sorted(Comparator.comparing(NodeAllBase::getNodeCode)).collect(Collectors.toList());
// 利元亨定制
// workspaceNodeList.sort((o1, o2) -> {
// String[] workspaceNode1 = o1.getNodeCode().split("-");
// String[] workspaceNode2 = o2.getNodeCode().split("-");
//
// if (workspaceNode1.length != 2 || workspaceNode2.length != 2) {
// return o1.getNodeCode().compareTo(o2.getNodeCode());
// }
//
// int prefix1 = Integer.parseInt(workspaceNode1[0]);
// int prefix2 = Integer.parseInt(workspaceNode2[0]);
// if (prefix1 != prefix2) {
// return Integer.compare(prefix1, prefix2);
// }
//
// int suffix1 = Integer.parseInt(workspaceNode1[1]);
// int suffix2 = Integer.parseInt(workspaceNode2[1]);
// return Integer.compare(suffix1, suffix2);
// });
workspaceNodeList.sort((o1, o2) -> {
String[] workspaceNode1 = o1.getNodeCode().split("-");
String[] workspaceNode2 = o2.getNodeCode().split("-");
if (o1.getNodeCode().contains("-M") || o2.getNodeCode().contains("-M")) {
return 0;
}
if (workspaceNode1.length != 2 || workspaceNode2.length != 2) {
return o1.getNodeCode().compareTo(o2.getNodeCode());
}
int prefix1 = Integer.parseInt(workspaceNode1[0]);
int prefix2 = Integer.parseInt(workspaceNode2[0]);
if (prefix1 != prefix2) {
return Integer.compare(prefix1, prefix2);
}
int suffix1 = Integer.parseInt(workspaceNode1[1]);
int suffix2 = Integer.parseInt(workspaceNode2[1]);
return Integer.compare(suffix1, suffix2);
});
NodeAllBase specialWorkspaceNode = workspaceNodeList.stream().filter(workspaceNode -> workspaceNode.getNodeCode().contains("-M")).findFirst().orElse(null);
log.info("specialWorkspaceNode为{}",specialWorkspaceNode);
if (specialWorkspaceNode != null) {
moveTargetToFirst(workspaceNodeList,specialWorkspaceNode.getUuid());
}
projectNodePo.setChildren(workspaceNodeList);
}
public static void moveTargetToFirst(List<NodeAllBase> nodeList, String targetId) {

View File

@@ -68,6 +68,7 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -171,6 +172,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
// 临时文件存储目录
private final String tempFileDir = System.getProperty("user.dir") + "/csv_uploads/";
// 通过标识判断是否走查询现场视图逻辑0不查询1查询
@Value("${lyricFlag:1}")
private int lyricFlag;
private int getCurrentNodeDepth(NodeAllBase eachNode) {
String tag1 = eachNode.getTag1();
String tag2 = eachNode.getTag2();
@@ -602,8 +607,10 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
generateTaskTree(projectNodePo, taskTreeNodeList, taskTreeTaskList, taskTreeTagMap, firstNodeTag, lastNodeTag, taskTreeNodeTypeTagMap, taskTreeRunList);
}
// 对工位进行排序,-M工位顺序排第一个
for (ProjectNodePo projectNodePo : realTopProjectNodeList) {
sortWorkspaceNode(projectNodePo);
if (lyricFlag == 1) {
for (ProjectNodePo projectNodePo : realTopProjectNodeList) {
sortWorkspaceNode(projectNodePo);
}
}
return SdmResponse.success(realTopProjectNodeList.stream().flatMap(item -> item.getChildren().stream().filter(Objects::nonNull)).toList());
}
@@ -614,25 +621,6 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
return;
}
List<NodeAllBase> workspaceNodeList = children.stream().filter(node -> NodeTypeEnum.WORKSPACE.getValue().equals(node.getNodeType())).collect(Collectors.toList());
// 利元亨定制
// workspaceNodeList.sort((o1, o2) -> {
// String[] workspaceNode1 = o1.getNodeCode().split("-");
// String[] workspaceNode2 = o2.getNodeCode().split("-");
//
// if (workspaceNode1.length != 2 || workspaceNode2.length != 2) {
// return o1.getNodeCode().compareTo(o2.getNodeCode());
// }
//
// int prefix1 = Integer.parseInt(workspaceNode1[0]);
// int prefix2 = Integer.parseInt(workspaceNode2[0]);
// if (prefix1 != prefix2) {
// return Integer.compare(prefix1, prefix2);
// }
//
// int suffix1 = Integer.parseInt(workspaceNode1[1]);
// int suffix2 = Integer.parseInt(workspaceNode2[1]);
// return Integer.compare(suffix1, suffix2);
// });
if (CollectionUtils.isEmpty(workspaceNodeList)) {
for (NodeAllBase child : children) {
if (child instanceof ProjectNodePo) {
@@ -666,12 +654,35 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
}
}
// 对工位进行排序,-M工位顺序排第一个
workspaceNodeList = workspaceNodeList.stream().sorted(Comparator.comparing(NodeAllBase::getNodeCode)).collect(Collectors.toList());
workspaceNodeList.sort((o1, o2) -> {
if (o1.getNodeCode().contains("-M") || o2.getNodeCode().contains("-M")) {
return 0;
}
String[] workspaceNode1 = o1.getNodeCode().split("-");
String[] workspaceNode2 = o2.getNodeCode().split("-");
if (workspaceNode1.length != 2 || workspaceNode2.length != 2) {
return o1.getNodeCode().compareTo(o2.getNodeCode());
}
int prefix1 = Integer.parseInt(workspaceNode1[0]);
int prefix2 = Integer.parseInt(workspaceNode2[0]);
if (prefix1 != prefix2) {
return Integer.compare(prefix1, prefix2);
}
int suffix1 = Integer.parseInt(workspaceNode1[1]);
int suffix2 = Integer.parseInt(workspaceNode2[1]);
return Integer.compare(suffix1, suffix2);
});
NodeAllBase specialWorkspaceNode = workspaceNodeList.stream().filter(workspaceNode -> workspaceNode.getNodeCode().contains("-M")).findFirst().orElse(null);
log.info("specialWorkspaceNode为{}",specialWorkspaceNode);
if (specialWorkspaceNode != null) {
moveTargetToFirst(workspaceNodeList,specialWorkspaceNode.getUuid());
}
projectNodePo.setChildren(workspaceNodeList);
}
public static void moveTargetToFirst(List<NodeAllBase> nodeList, String targetId) {