|
@@ -1,5 +1,6 @@
|
|
package org.springblade.manager.service.impl;
|
|
package org.springblade.manager.service.impl;
|
|
|
|
|
|
|
|
+import cn.hutool.core.lang.mutable.MutableInt;
|
|
import com.alibaba.nacos.common.utils.DateFormatUtils;
|
|
import com.alibaba.nacos.common.utils.DateFormatUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
@@ -1033,6 +1034,17 @@ public class ArchiveTreeContractSyncImpl {
|
|
Map<Long, List<TrialSelfInspectionRecord>> recordsMap = records.stream().collect(Collectors.groupingBy(TrialSelfInspectionRecord::getNodeId));
|
|
Map<Long, List<TrialSelfInspectionRecord>> recordsMap = records.stream().collect(Collectors.groupingBy(TrialSelfInspectionRecord::getNodeId));
|
|
List<ArchiveTreeContract> addNode = new ArrayList<>();
|
|
List<ArchiveTreeContract> addNode = new ArrayList<>();
|
|
List<ArchiveFile> addFile = new ArrayList<>();
|
|
List<ArchiveFile> addFile = new ArrayList<>();
|
|
|
|
+ //试验节点id 添加到档案的节点id映射关系 用与父节点创建
|
|
|
|
+ HashMap<Long, Long> map = new HashMap<>();
|
|
|
|
+ for (ArchiveSyncTrialVO trial : trials) {
|
|
|
|
+ map.put(trial.getPKeyId(),SnowFlakeUtil.getId());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //获取文档文件最大 sort
|
|
|
|
+ Integer sort = archiveFileClient.selectMaxSortByContractId(contractInfo.getId());
|
|
|
|
+ MutableInt mutableInt = new MutableInt();
|
|
|
|
+ mutableInt.set(sort);
|
|
|
|
+
|
|
/**循环指定试验类型 */
|
|
/**循环指定试验类型 */
|
|
for (Integer type : TrialType) {
|
|
for (Integer type : TrialType) {
|
|
//根据类型获取试验节点
|
|
//根据类型获取试验节点
|
|
@@ -1043,7 +1055,7 @@ public class ArchiveTreeContractSyncImpl {
|
|
//循环试验节点
|
|
//循环试验节点
|
|
for (ArchiveSyncTrialVO vo : trialVOS) {
|
|
for (ArchiveSyncTrialVO vo : trialVOS) {
|
|
//把节点转换为档案节点,挂载到同步节点下
|
|
//把节点转换为档案节点,挂载到同步节点下
|
|
- ArchiveTreeContract trialNode = createTypeNode(vo.getNodeName(),vo.getSort(), archiveTreeContract);
|
|
|
|
|
|
+ ArchiveTreeContract trialNode = createTypeNode(vo.getNodeName(), vo.getSort(), vo.getPKeyId(), vo.getPId(), archiveTreeContract, map);
|
|
addNode.add(trialNode);
|
|
addNode.add(trialNode);
|
|
//获取出节点下面的报告,并转换为档案文件
|
|
//获取出节点下面的报告,并转换为档案文件
|
|
List<TrialSelfInspectionRecord> files = recordsMap.get(vo.getPKeyId());
|
|
List<TrialSelfInspectionRecord> files = recordsMap.get(vo.getPKeyId());
|
|
@@ -1052,7 +1064,7 @@ public class ArchiveTreeContractSyncImpl {
|
|
}
|
|
}
|
|
//挂载到子节点下
|
|
//挂载到子节点下
|
|
List<ArchiveFile> newArchiveFileList = files.stream().map(file -> {
|
|
List<ArchiveFile> newArchiveFileList = files.stream().map(file -> {
|
|
- ArchiveFile archiveFile = trialFileCovertArchiveFile(file, trialNode, contractInfo);
|
|
|
|
|
|
+ ArchiveFile archiveFile = trialFileCovertArchiveFile(file, trialNode, contractInfo, mutableInt);
|
|
return archiveFile;
|
|
return archiveFile;
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
addFile.addAll(newArchiveFileList);
|
|
addFile.addAll(newArchiveFileList);
|
|
@@ -1067,10 +1079,17 @@ public class ArchiveTreeContractSyncImpl {
|
|
List<TrialDetectionData> dataList = archiveTreeContractMapper.getAllTrialTestRecord(contractId);
|
|
List<TrialDetectionData> dataList = archiveTreeContractMapper.getAllTrialTestRecord(contractId);
|
|
//检测报告,按照节点分组
|
|
//检测报告,按照节点分组
|
|
Map<Long, List<TrialDetectionData>> dataMap = dataList.stream().collect(Collectors.groupingBy(l -> l.getNodeId()));
|
|
Map<Long, List<TrialDetectionData>> dataMap = dataList.stream().collect(Collectors.groupingBy(l -> l.getNodeId()));
|
|
|
|
+
|
|
|
|
+ //试验节点id 添加到档案的节点id映射关系 用与父节点创建
|
|
|
|
+ HashMap<Long, Long> map2 = new HashMap<>();
|
|
|
|
+ for (TrialClassificationConfiguration configuration : threeTestNodes) {
|
|
|
|
+ map2.put(configuration.getId(),SnowFlakeUtil.getId());
|
|
|
|
+ }
|
|
|
|
+
|
|
//循环所有节点
|
|
//循环所有节点
|
|
for (TrialClassificationConfiguration vo : threeTestNodes) {
|
|
for (TrialClassificationConfiguration vo : threeTestNodes) {
|
|
//把节点转换为档案节点,挂载到同步节点下
|
|
//把节点转换为档案节点,挂载到同步节点下
|
|
- ArchiveTreeContract trialNode = createTypeNode(vo.getNodeName(),vo.getNodeType() == 1 ? vo.getSort() : vo.getSort() + 100, archiveTreeContract);
|
|
|
|
|
|
+ ArchiveTreeContract trialNode = createTypeNode(vo.getNodeName(), vo.getNodeType() == 1 ? vo.getSort() : vo.getSort() + 100, vo.getId(), vo.getParentId(), archiveTreeContract, map2);
|
|
addNode.add(trialNode);
|
|
addNode.add(trialNode);
|
|
//获取出节点下面的报告,并转换为档案文件
|
|
//获取出节点下面的报告,并转换为档案文件
|
|
List<TrialDetectionData> files = dataMap.get(vo.getId());
|
|
List<TrialDetectionData> files = dataMap.get(vo.getId());
|
|
@@ -1079,7 +1098,7 @@ public class ArchiveTreeContractSyncImpl {
|
|
}
|
|
}
|
|
//挂载到子节点下
|
|
//挂载到子节点下
|
|
List<ArchiveFile> newArchiveFileList = files.stream().map(file -> {
|
|
List<ArchiveFile> newArchiveFileList = files.stream().map(file -> {
|
|
- ArchiveFile archiveFile = trialTestFileCovertArchiveFile(file, trialNode);
|
|
|
|
|
|
+ ArchiveFile archiveFile = trialTestFileCovertArchiveFile(file, trialNode, mutableInt);
|
|
return archiveFile;
|
|
return archiveFile;
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
addFile.addAll(newArchiveFileList);
|
|
addFile.addAll(newArchiveFileList);
|
|
@@ -1171,6 +1190,7 @@ public class ArchiveTreeContractSyncImpl {
|
|
if (CollectionUtil.isEmpty(logs)){
|
|
if (CollectionUtil.isEmpty(logs)){
|
|
throw new ServiceException("当前合同段下没有日志资料");
|
|
throw new ServiceException("当前合同段下没有日志资料");
|
|
}
|
|
}
|
|
|
|
+ HashMap<Long, Long> map = new HashMap<>();
|
|
//日志按照类型分组
|
|
//日志按照类型分组
|
|
Map<Integer, List<ArchiveSyncLogVO>> logMap = logs.stream().collect(Collectors.groupingBy(ArchiveSyncLogVO::getLogType));
|
|
Map<Integer, List<ArchiveSyncLogVO>> logMap = logs.stream().collect(Collectors.groupingBy(ArchiveSyncLogVO::getLogType));
|
|
//循环选择的日志类型
|
|
//循环选择的日志类型
|
|
@@ -1180,7 +1200,7 @@ public class ArchiveTreeContractSyncImpl {
|
|
throw new ServiceException("日志存在字典中未配置的类型,请检查后再同步");
|
|
throw new ServiceException("日志存在字典中未配置的类型,请检查后再同步");
|
|
}
|
|
}
|
|
//生成子节点
|
|
//生成子节点
|
|
- ArchiveTreeContract logNode = createTypeNode(typeName, 0,archiveTreeContract);
|
|
|
|
|
|
+ ArchiveTreeContract logNode = createTypeNode(typeName, 0, null, null, archiveTreeContract, map);
|
|
/** 如果到时候修改需求,只显示有日志的,则下面文件存在再add*/
|
|
/** 如果到时候修改需求,只显示有日志的,则下面文件存在再add*/
|
|
addNode.add(logNode);
|
|
addNode.add(logNode);
|
|
//然后再从分组中获取,如果存在值则转换为档案文件
|
|
//然后再从分组中获取,如果存在值则转换为档案文件
|
|
@@ -1247,10 +1267,11 @@ public class ArchiveTreeContractSyncImpl {
|
|
|
|
|
|
List<ArchiveTreeContract> addNode = new ArrayList<>();
|
|
List<ArchiveTreeContract> addNode = new ArrayList<>();
|
|
List<ArchiveFile> addFile = new ArrayList<>();
|
|
List<ArchiveFile> addFile = new ArrayList<>();
|
|
|
|
+ HashMap<Long, Long> map = new HashMap<>();
|
|
//循环下级节点
|
|
//循环下级节点
|
|
for (ImageClassificationConfig imageType : imageTypes) {
|
|
for (ImageClassificationConfig imageType : imageTypes) {
|
|
//把分类生成为影像资料的下级节点
|
|
//把分类生成为影像资料的下级节点
|
|
- ArchiveTreeContract imageNode = createTypeNode(imageType.getClassfName(), 0, archiveTreeContract);
|
|
|
|
|
|
+ ArchiveTreeContract imageNode = createTypeNode(imageType.getClassfName(), 0, null, null, archiveTreeContract, map);
|
|
addNode.add(imageNode);
|
|
addNode.add(imageNode);
|
|
//如果当前分类下存在文件,则根据类型生成树,还是日期
|
|
//如果当前分类下存在文件,则根据类型生成树,还是日期
|
|
List<ImageClassificationFileDTO> files = imageMap.get(imageType.getId());
|
|
List<ImageClassificationFileDTO> files = imageMap.get(imageType.getId());
|
|
@@ -1439,7 +1460,7 @@ public class ArchiveTreeContractSyncImpl {
|
|
/**
|
|
/**
|
|
* 质检试验检测资料 转换为 档案文件
|
|
* 质检试验检测资料 转换为 档案文件
|
|
*/
|
|
*/
|
|
- private ArchiveFile trialTestFileCovertArchiveFile(TrialDetectionData vo,ArchiveTreeContract parentNode)
|
|
|
|
|
|
+ private ArchiveFile trialTestFileCovertArchiveFile(TrialDetectionData vo,ArchiveTreeContract parentNode, MutableInt sort)
|
|
{
|
|
{
|
|
ArchiveFile archiveFile = new ArchiveFile();
|
|
ArchiveFile archiveFile = new ArchiveFile();
|
|
archiveFile.setId(SnowFlakeUtil.getId());
|
|
archiveFile.setId(SnowFlakeUtil.getId());
|
|
@@ -1482,7 +1503,8 @@ public class ArchiveTreeContractSyncImpl {
|
|
.toLocalDateTime();
|
|
.toLocalDateTime();
|
|
archiveFile.setFtime(localDateTime);
|
|
archiveFile.setFtime(localDateTime);
|
|
archiveFile.setUtime(localDateTime);
|
|
archiveFile.setUtime(localDateTime);
|
|
- archiveFile.setSort(0);
|
|
|
|
|
|
+ sort.set(sort.get() + 1);
|
|
|
|
+ archiveFile.setSort(sort.get());
|
|
archiveFile.setPageNum("1");
|
|
archiveFile.setPageNum("1");
|
|
archiveFile.setSourceType(1);
|
|
archiveFile.setSourceType(1);
|
|
archiveFile.setIsElement(0);
|
|
archiveFile.setIsElement(0);
|
|
@@ -1494,7 +1516,7 @@ public class ArchiveTreeContractSyncImpl {
|
|
/**
|
|
/**
|
|
* 质检试验资料 转换为 档案文件
|
|
* 质检试验资料 转换为 档案文件
|
|
*/
|
|
*/
|
|
- private ArchiveFile trialFileCovertArchiveFile(TrialSelfInspectionRecord vo,ArchiveTreeContract parentNode, ContractInfo contractInfo)
|
|
|
|
|
|
+ private ArchiveFile trialFileCovertArchiveFile(TrialSelfInspectionRecord vo,ArchiveTreeContract parentNode, ContractInfo contractInfo, MutableInt sort )
|
|
{
|
|
{
|
|
ArchiveFile archiveFile = new ArchiveFile();
|
|
ArchiveFile archiveFile = new ArchiveFile();
|
|
archiveFile.setId(SnowFlakeUtil.getId());
|
|
archiveFile.setId(SnowFlakeUtil.getId());
|
|
@@ -1538,7 +1560,8 @@ public class ArchiveTreeContractSyncImpl {
|
|
.toLocalDateTime();
|
|
.toLocalDateTime();
|
|
archiveFile.setFtime(localDateTime);
|
|
archiveFile.setFtime(localDateTime);
|
|
archiveFile.setUtime(localDateTime);
|
|
archiveFile.setUtime(localDateTime);
|
|
- archiveFile.setSort(0);
|
|
|
|
|
|
+ sort.set(sort.get() + 1);
|
|
|
|
+ archiveFile.setSort(sort.get());
|
|
archiveFile.setPageNum("1");
|
|
archiveFile.setPageNum("1");
|
|
archiveFile.setSourceType(1);
|
|
archiveFile.setSourceType(1);
|
|
archiveFile.setIsElement(0);
|
|
archiveFile.setIsElement(0);
|
|
@@ -1630,14 +1653,14 @@ public class ArchiveTreeContractSyncImpl {
|
|
* 档案同步质检影像资料时,为影像资料-日志资料 节点下级创建分类节点
|
|
* 档案同步质检影像资料时,为影像资料-日志资料 节点下级创建分类节点
|
|
* 传入分类名称
|
|
* 传入分类名称
|
|
*/
|
|
*/
|
|
- public ArchiveTreeContract createTypeNode(String nodeName, Integer sort,ArchiveTreeContract archiveTreeContract){
|
|
|
|
|
|
+ public ArchiveTreeContract createTypeNode(String nodeName, Integer sort,Long pKeyId, Long pId,ArchiveTreeContract archiveTreeContract, HashMap<Long, Long> map){
|
|
ArchiveTreeContract archiveTreeContractTemp = new ArchiveTreeContract();
|
|
ArchiveTreeContract archiveTreeContractTemp = new ArchiveTreeContract();
|
|
//设置基本信息
|
|
//设置基本信息
|
|
- archiveTreeContractTemp.setId(SnowFlakeUtil.getId());
|
|
|
|
|
|
+ archiveTreeContractTemp.setId(map.get(pKeyId) == null ? SnowFlakeUtil.getId() : map.get(pKeyId));
|
|
archiveTreeContractTemp.setTenantId(AuthUtil.getTenantId());
|
|
archiveTreeContractTemp.setTenantId(AuthUtil.getTenantId());
|
|
archiveTreeContractTemp.setProjectId(archiveTreeContract.getProjectId());
|
|
archiveTreeContractTemp.setProjectId(archiveTreeContract.getProjectId());
|
|
archiveTreeContractTemp.setContractId(archiveTreeContract.getContractId());
|
|
archiveTreeContractTemp.setContractId(archiveTreeContract.getContractId());
|
|
- archiveTreeContractTemp.setParentId(archiveTreeContract.getId());
|
|
|
|
|
|
+ archiveTreeContractTemp.setParentId(pId == null || map == null || map.get(pId) == null ? archiveTreeContract.getId() : map.get(pId));
|
|
archiveTreeContractTemp.setAncestors(archiveTreeContract.getAncestors()+","+archiveTreeContract.getId());
|
|
archiveTreeContractTemp.setAncestors(archiveTreeContract.getAncestors()+","+archiveTreeContract.getId());
|
|
archiveTreeContractTemp.setNodeName(nodeName);
|
|
archiveTreeContractTemp.setNodeName(nodeName);
|
|
archiveTreeContractTemp.setNodeType(1);
|
|
archiveTreeContractTemp.setNodeType(1);
|