|
@@ -150,6 +150,117 @@ public class ZhcxItpProjectNodesServiceImpl extends ServiceImpl<ZhcxItpProjectNo
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 项目引用项目ITP节点
|
|
|
+ * @param map
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void projectRefProject(Map<String, Object> map) {
|
|
|
+ Object projectIdObj = map.get("projectId");
|
|
|
+ Object refProjectIdObj = map.get("refProjectId");
|
|
|
+ Object projectDeviceNumberIdObjs = map.get("projectDeviceNumberIds");
|
|
|
+ Object projectDeviceNumberNameObjs = map.get("projectDeviceNumberNames");
|
|
|
+ if(projectIdObj != null){
|
|
|
+ if(refProjectIdObj != null){
|
|
|
+ String refProjectId = (String) refProjectIdObj;
|
|
|
+ String projectId = (String) projectIdObj;
|
|
|
+ if(StringUtils.isNotBlank(projectId) && StringUtils.isNotBlank(refProjectId)){
|
|
|
+ String projectDeviceNumberIds = null;
|
|
|
+ String projectDeviceNumberNames = null;
|
|
|
+ // 获取关联机号初始化
|
|
|
+ if(projectDeviceNumberIdObjs != null){
|
|
|
+ projectDeviceNumberNames = projectDeviceNumberNameObjs.toString();
|
|
|
+ }else {
|
|
|
+ // 没有机号则查询项目ID关联的机号
|
|
|
+ List<ZhcxProjectDeviceNumberDo> deviceNumberDos = zhcxProjectDeviceNumberService.list(
|
|
|
+ new LambdaQueryWrapper<ZhcxProjectDeviceNumberDo>().eq(ZhcxProjectDeviceNumberDo::getPid, projectId));
|
|
|
+ if(deviceNumberDos != null && deviceNumberDos.size()>0){
|
|
|
+ for (ZhcxProjectDeviceNumberDo deviceNumberDo : deviceNumberDos) {
|
|
|
+ if(projectDeviceNumberIds == null){
|
|
|
+ projectDeviceNumberIds = deviceNumberDo.getId();
|
|
|
+ projectDeviceNumberNames = deviceNumberDo.getDeviceNumber();
|
|
|
+ }else{
|
|
|
+ projectDeviceNumberIds = projectDeviceNumberIds + "," + deviceNumberDo.getId();
|
|
|
+ projectDeviceNumberNames = projectDeviceNumberNames + "," + deviceNumberDo.getDeviceNumber();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 待复制保存的节点
|
|
|
+ List<ZhcxItpProjectNodesDo> projectNodes = new ArrayList<>();
|
|
|
+ // 待复制保存的节点报告模板
|
|
|
+ List<ZhcxItpProjectNodesFilesDo> projectNodeFiles = new ArrayList<>();
|
|
|
+ // 根据引用模板ID获取ITP节点数据
|
|
|
+ List<ZhcxItpProjectNodesDo> templateNodes = this.list(
|
|
|
+ new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().eq(ZhcxItpProjectNodesDo::getProjectid, refProjectId));
|
|
|
+ // 根据引用模板ID获取ITP节点报告模板数据
|
|
|
+ List<ZhcxItpProjectNodesFilesDo> templateNodesFiles = zhcxItpProjectNodesFilesService.list(
|
|
|
+ new LambdaQueryWrapper<ZhcxItpProjectNodesFilesDo>().eq(ZhcxItpProjectNodesFilesDo::getProjectid, refProjectId));
|
|
|
+ if(templateNodes != null && templateNodes.size()>0){
|
|
|
+ // 模板节点ID和项目节点ID的映射关系
|
|
|
+ Map<String,String> tempProMap = new HashMap<>();
|
|
|
+ // 先清除已存在的数据
|
|
|
+ this.remove(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().eq(ZhcxItpProjectNodesDo::getProjectid,projectId));
|
|
|
+ // 复制项目ITP节点数据
|
|
|
+ for (ZhcxItpProjectNodesDo templateNode : templateNodes) {
|
|
|
+ // 相关属性复制
|
|
|
+ ZhcxItpProjectNodesDo zhcxItpProjectNodesDo = new ZhcxItpProjectNodesDo();
|
|
|
+ BeanUtil.copyProperties(templateNode,zhcxItpProjectNodesDo);
|
|
|
+ zhcxItpProjectNodesDo.setProjectid(projectId);
|
|
|
+ zhcxItpProjectNodesDo.setItpnodeid(templateNode.getId());
|
|
|
+ zhcxItpProjectNodesDo.setId(SecurityUtil.getUUID());
|
|
|
+ // 关联机号
|
|
|
+ if(StringUtils.isNotBlank(projectDeviceNumberIds)){
|
|
|
+ zhcxItpProjectNodesDo.setMachineno(projectDeviceNumberIds);
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(projectDeviceNumberNames)){
|
|
|
+ zhcxItpProjectNodesDo.setMachinename(projectDeviceNumberNames);
|
|
|
+ }
|
|
|
+ projectNodes.add(zhcxItpProjectNodesDo);
|
|
|
+ // 映射关系建立
|
|
|
+ tempProMap.put(templateNode.getId(),zhcxItpProjectNodesDo.getId());
|
|
|
+ }
|
|
|
+ // 替换所有PID为新的ID
|
|
|
+ for (ZhcxItpProjectNodesDo projectNode : projectNodes) {
|
|
|
+ if(StringUtils.isNotBlank(projectNode.getPid()) && !"-1".equals(projectNode.getPid())){
|
|
|
+ if(tempProMap.containsKey(projectNode.getPid())){
|
|
|
+ projectNode.setPid(tempProMap.get(projectNode.getPid()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(projectNode.getPnodeid())){
|
|
|
+ if(tempProMap.containsKey(projectNode.getPnodeid())){
|
|
|
+ projectNode.setPnodeid(tempProMap.get(projectNode.getPnodeid()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 复制项目ITP节点报告模板数据
|
|
|
+ for (ZhcxItpProjectNodesFilesDo templateNodesFile : templateNodesFiles) {
|
|
|
+ if(StringUtils.isBlank(templateNodesFile.getNodeid())){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ ZhcxItpProjectNodesFilesDo zhcxItpProjectNodesFilesDo = new ZhcxItpProjectNodesFilesDo();
|
|
|
+ BeanUtil.copyProperties(templateNodesFile,zhcxItpProjectNodesFilesDo);
|
|
|
+ zhcxItpProjectNodesFilesDo.setId(SecurityUtil.getUUID());
|
|
|
+ zhcxItpProjectNodesFilesDo.setProjectid(projectId);
|
|
|
+ zhcxItpProjectNodesFilesDo.setProjectnodeid(tempProMap.get(templateNodesFile.getNodeid()));
|
|
|
+ projectNodeFiles.add(zhcxItpProjectNodesFilesDo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 数据保存
|
|
|
+ if(projectNodes != null && projectNodes.size()>0){
|
|
|
+ this.saveBatch(projectNodes);
|
|
|
+ }
|
|
|
+ if(projectNodeFiles != null && projectNodeFiles.size()>0){
|
|
|
+ zhcxItpProjectNodesFilesService.saveBatch(projectNodeFiles);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ throw new CustomException("项目ID不能为空");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 复制项目节点
|
|
|
* @param copyNodeVo
|