|
@@ -1,11 +1,24 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.rongwei.bscommon.sys.service.ZhcxItpProjectNodesService;
|
|
|
+import com.rongwei.bscommon.sys.service.ZhcxProjectDeviceNumberService;
|
|
|
+import com.rongwei.bsentity.domain.ZhcxItpProjectNodesDo;
|
|
|
import com.rongwei.bsentity.domain.ZhcxItpTemplateNodesDo;
|
|
|
import com.rongwei.bscommon.sys.dao.ZhcxItpTemplateNodesDao;
|
|
|
import com.rongwei.bscommon.sys.service.ZhcxItpTemplateNodesService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.rongwei.bsentity.domain.ZhcxProjectDeviceNumberDo;
|
|
|
+import com.rongwei.bsentity.vo.ZhcxItpTemplateNodeSyncProjectVo;
|
|
|
+import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
|
+import com.rongwei.rwcommon.utils.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* <p>
|
|
|
* itp地图模板检验点 服务实现类
|
|
@@ -17,4 +30,117 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class ZhcxItpTemplateNodesServiceImpl extends ServiceImpl<ZhcxItpTemplateNodesDao, ZhcxItpTemplateNodesDo> implements ZhcxItpTemplateNodesService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ZhcxItpProjectNodesService zhcxItpProjectNodesService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxProjectDeviceNumberService zhcxProjectDeviceNumberService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增的ITP模板节点同步到指定项目
|
|
|
+ * @param zhcxItpTemplateNodeSyncProjectVo
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void itpTemplateAddNodeSyncProjects(ZhcxItpTemplateNodeSyncProjectVo zhcxItpTemplateNodeSyncProjectVo){
|
|
|
+ if(StringUtils.isNotBlank(zhcxItpTemplateNodeSyncProjectVo.getNodeid())
|
|
|
+ && zhcxItpTemplateNodeSyncProjectVo.getProjectids() != null && zhcxItpTemplateNodeSyncProjectVo.getProjectids().size()>0){
|
|
|
+ // 待保存的项目ITP节点
|
|
|
+ List<ZhcxItpProjectNodesDo> toSaveNodes = new ArrayList<>();
|
|
|
+ // 模板节点ID和项目节点ID的映射关系
|
|
|
+ Map<String,String> tempProMap = new HashMap<>();
|
|
|
+ // 获取当前报验点
|
|
|
+ ZhcxItpTemplateNodesDo baNodes = this.getById(zhcxItpTemplateNodeSyncProjectVo.getNodeid());
|
|
|
+ // 查询当前报验点及上级节点和归属大构件
|
|
|
+ List<String> nodeids = new ArrayList<>();
|
|
|
+ nodeids.add(zhcxItpTemplateNodeSyncProjectVo.getNodeid());
|
|
|
+ if(StringUtils.isNotBlank(baNodes.getPnodeid())){
|
|
|
+ nodeids.add(baNodes.getPnodeid());
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(baNodes.getPath())){
|
|
|
+ nodeids.addAll(Arrays.asList(baNodes.getPath().split(",")));
|
|
|
+ }
|
|
|
+ // 查询当前报验点及上级节点
|
|
|
+ List<ZhcxItpTemplateNodesDo> templateNodess = this.list(new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().in(ZhcxItpTemplateNodesDo::getId, nodeids));
|
|
|
+ for (String projectid : zhcxItpTemplateNodeSyncProjectVo.getProjectids()) {
|
|
|
+ // 查询项目ID关联的机号
|
|
|
+ String projectDeviceNumberIds = null;
|
|
|
+ String projectDeviceNumberNames = null;
|
|
|
+ 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> projectNodesDos = zhcxItpProjectNodesService.list(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().
|
|
|
+ eq(ZhcxItpProjectNodesDo::getProjectid, projectid).in(ZhcxItpProjectNodesDo::getItpnodeid, nodeids));
|
|
|
+ for (ZhcxItpTemplateNodesDo nodess : templateNodess) {
|
|
|
+ List<ZhcxItpProjectNodesDo> hasProNodes = projectNodesDos.stream().filter(v -> v.getItpnodeid().equals(nodess.getId())).collect(Collectors.toList());
|
|
|
+ if(hasProNodes == null && hasProNodes.size() == 0){
|
|
|
+ // 相关属性复制
|
|
|
+ ZhcxItpProjectNodesDo zhcxItpProjectNodesDo = new ZhcxItpProjectNodesDo();
|
|
|
+ BeanUtil.copyProperties(nodess,zhcxItpProjectNodesDo);
|
|
|
+ zhcxItpProjectNodesDo.setProjectid(projectid);
|
|
|
+ zhcxItpProjectNodesDo.setItpnodeid(nodess.getId());
|
|
|
+ zhcxItpProjectNodesDo.setId(SecurityUtil.getUUID());
|
|
|
+ // 关联机号
|
|
|
+ if(StringUtils.isNotBlank(projectDeviceNumberIds)){
|
|
|
+ zhcxItpProjectNodesDo.setMachineno(projectDeviceNumberIds);
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(projectDeviceNumberNames)){
|
|
|
+ zhcxItpProjectNodesDo.setMachinename(projectDeviceNumberNames);
|
|
|
+ }
|
|
|
+ toSaveNodes.add(zhcxItpProjectNodesDo);
|
|
|
+ // 映射关系建立
|
|
|
+ tempProMap.put(nodess.getId(),zhcxItpProjectNodesDo.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 项目节点相关ID替换
|
|
|
+ for (ZhcxItpProjectNodesDo projectNode : toSaveNodes) {
|
|
|
+ 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()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 替换新的path
|
|
|
+ if(StringUtils.isNotBlank(projectNode.getPath())){
|
|
|
+ String newPaths = null;
|
|
|
+ String[] paths = projectNode.getPath().split(",");
|
|
|
+ for (String path : paths) {
|
|
|
+ if(newPaths == null){
|
|
|
+ if(tempProMap.containsKey(path)){
|
|
|
+ newPaths = tempProMap.get(path);
|
|
|
+ }else{
|
|
|
+ newPaths = path;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(tempProMap.containsKey(path)){
|
|
|
+ newPaths = newPaths + "," + tempProMap.get(path);
|
|
|
+ }else{
|
|
|
+ newPaths = newPaths + "," + path;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 数据保存
|
|
|
+ if(toSaveNodes != null && toSaveNodes.size()>0){
|
|
|
+ zhcxItpProjectNodesService.saveBatch(toSaveNodes);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|