|
@@ -0,0 +1,145 @@
|
|
|
+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.*;
|
|
|
+import com.rongwei.bsentity.domain.*;
|
|
|
+import com.rongwei.bscommon.sys.dao.ZhcxItpProjectNodesDao;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.rongwei.rwcommon.base.exception.CustomException;
|
|
|
+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.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * itp地图模板检验点 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author fpy
|
|
|
+ * @since 2023-12-19
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class ZhcxItpProjectNodesServiceImpl extends ServiceImpl<ZhcxItpProjectNodesDao, ZhcxItpProjectNodesDo> implements ZhcxItpProjectNodesService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ZhcxItpTemplateNodesService zhcxItpTemplateNodesService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxItpTemplateNodesFilesService zhcxItpTemplateNodesFilesService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxItpProjectNodesFilesService zhcxItpProjectNodesFilesService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxProjectDeviceNumberService zhcxProjectDeviceNumberService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 项目引用ITP模板节点
|
|
|
+ * @param map
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void projectNodeQuote(Map<String, Object> map) {
|
|
|
+ Object projectIdObj = map.get("projectId");
|
|
|
+ Object itpTemplateIdObj = map.get("itpTemplateId");
|
|
|
+ Object projectDeviceNumberIdObjs = map.get("projectDeviceNumberIds");
|
|
|
+ Object projectDeviceNumberNameObjs = map.get("projectDeviceNumberNames");
|
|
|
+ if(projectIdObj != null){
|
|
|
+ if(itpTemplateIdObj != null){
|
|
|
+ String itpTemplateId = (String) itpTemplateIdObj;
|
|
|
+ String projectId = (String) projectIdObj;
|
|
|
+ if(StringUtils.isNotBlank(projectId) && StringUtils.isNotBlank(itpTemplateId)){
|
|
|
+ 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<ZhcxItpTemplateNodesDo> templateNodes = zhcxItpTemplateNodesService.list(
|
|
|
+ new LambdaQueryWrapper<ZhcxItpTemplateNodesDo>().eq(ZhcxItpTemplateNodesDo::getItpid, itpTemplateId));
|
|
|
+ // 根据引用模板ID获取ITP节点报告模板数据
|
|
|
+ List<ZhcxItpTemplateNodesFilesDo> templateNodesFiles = zhcxItpTemplateNodesFilesService.list(
|
|
|
+ new LambdaQueryWrapper<ZhcxItpTemplateNodesFilesDo>().eq(ZhcxItpTemplateNodesFilesDo::getTempid, itpTemplateId));
|
|
|
+ if(templateNodes != null && templateNodes.size()>0){
|
|
|
+ // 模板节点ID和项目节点ID的映射关系
|
|
|
+ Map<String,String> tempProMap = new HashMap<>();
|
|
|
+ // 先清除已存在的数据
|
|
|
+ this.remove(new LambdaQueryWrapper<ZhcxItpProjectNodesDo>().eq(ZhcxItpProjectNodesDo::getProjectid,projectId));
|
|
|
+ // 复制引用模板节点数据
|
|
|
+ for (ZhcxItpTemplateNodesDo 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()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 复制引用模板节点报告模板数据
|
|
|
+ for (ZhcxItpTemplateNodesFilesDo 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不能为空");
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|