From 5f4ed8a5d8b3a08f9f97a818dd6540ce49796227 Mon Sep 17 00:00:00 2001 From: DouDou <877258667@qq.com> Date: Tue, 29 Oct 2024 18:08:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=9A=84=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=80=BC=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/entity/PartSubPropertiesValue.java | 9 ++ .../service/Impl/PropertiesServiceImpl.java | 102 ++++++++++++++++-- 2 files changed, 105 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/spring/modules/base/entity/PartSubPropertiesValue.java b/src/main/java/com/spring/modules/base/entity/PartSubPropertiesValue.java index 6c94eb3a..3a46c951 100644 --- a/src/main/java/com/spring/modules/base/entity/PartSubPropertiesValue.java +++ b/src/main/java/com/spring/modules/base/entity/PartSubPropertiesValue.java @@ -52,6 +52,7 @@ public class PartSubPropertiesValue { private String recordType; private Integer orderId; + private String valueTypeDb;//属性值的类型 T 文本 N 数字 public String getPartNo() { return partNo; @@ -140,5 +141,13 @@ public class PartSubPropertiesValue { public void setOrderId(Integer orderId) { this.orderId = orderId; } + + public String getValueTypeDb() { + return valueTypeDb; + } + + public void setValueTypeDb(String valueTypeDb) { + this.valueTypeDb = valueTypeDb; + } } diff --git a/src/main/java/com/spring/modules/base/service/Impl/PropertiesServiceImpl.java b/src/main/java/com/spring/modules/base/service/Impl/PropertiesServiceImpl.java index ac5dcee7..5dac88ff 100644 --- a/src/main/java/com/spring/modules/base/service/Impl/PropertiesServiceImpl.java +++ b/src/main/java/com/spring/modules/base/service/Impl/PropertiesServiceImpl.java @@ -1,16 +1,20 @@ package com.spring.modules.base.service.Impl; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.spring.common.exception.XJException; -import com.spring.common.utils.Constant; import com.spring.common.utils.PageUtils; +import com.spring.modules.Tooling.dao.BaseConfigDao; +import com.spring.modules.Tooling.data.TechnicalClass; +import com.spring.modules.Tooling.data.TechnicalClassAttribute; import com.spring.modules.base.dao.PropertiesMapper; import com.spring.modules.base.data.*; import com.spring.modules.base.entity.*; import com.spring.modules.base.service.PropertiesBUService; import com.spring.modules.base.service.PropertiesGroupService; import com.spring.modules.base.service.PropertiesService; +import com.spring.modules.base.utils.HttpClientUtil; import com.spring.modules.base.utils.ResponseData; import com.spring.modules.part.mapper.PartInformationMapper; import com.spring.modules.project.dao.ProjectDao; @@ -21,13 +25,12 @@ import com.spring.modules.sys.entity.SysMenuEntity; import com.spring.modules.sys.entity.SysUserEntity; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.math.BigDecimal; +import java.util.*; import java.util.stream.Collectors; @Service @@ -44,6 +47,15 @@ public class PropertiesServiceImpl implements PropertiesService { private PropertiesBUService propertiesBUService; @Autowired private PartInformationMapper partInformationMapper; + @Autowired + private BaseConfigDao baseConfigDao; + + //接口使用的参数 + @Value("${ifs-api.api-url}") + private String apiUrl; + @Value("${ifs-control.control-flag}") + private Boolean controlFlag; + @Override public PageUtils propertiesItemSearch(PlmPropertiesItemData inData){ IPage resultList = this.propertiesMapper.plmPropertiesItemSearch(new Page(inData.getPage(), inData.getLimit()), inData); @@ -391,12 +403,90 @@ public class PropertiesServiceImpl implements PropertiesService { @Override @Transactional public void updatePropertiesList(List data){ + //判断是否有数据要保存 + if(data.size() > 0){ + String recordType = data.get(0).getRecordType(); + if(controlFlag && ("TL".equalsIgnoreCase(recordType) || "TLI".equalsIgnoreCase(recordType))){ + //调用接口同步方法 同步数据 + this.syncToolPropertyValues(data, recordType); + } + } for (PartSubPropertiesValue itemDate : data){ - propertiesMapper.updatePropertiesList(itemDate); } + } + /** + * @description: 批量同步工具的参数 + * @author LR + * @date 2024/10/28 17:10 + * @version 1.0 + */ + public void syncToolPropertyValues(List datas, String recordType) { + //需要区分是工具的属性还是工具实例的属性 + String site = datas.get(0).getSite(); + String partNo = datas.get(0).getPartNo(); + String technicalClassNo = datas.get(0).getCodeNo(); + String luName = ""; + String keyRef = ""; + //不同的属性 调用不同的组合方式 + if("TL".equalsIgnoreCase(recordType)){ + luName = "ManufTool"; + keyRef = "CONTRACT="+site+"^TOOL_ID="+partNo+"^"; + }else if("TLI".equalsIgnoreCase(recordType)){ + luName = "ManufToolDetail"; + String[] toolArr = partNo.split("#"); + keyRef = "CONTRACT="+site+"^TOOL_ID="+toolArr[0]+"^TOOL_INSTANCE="+toolArr[1]+"^"; + } + //循环产生数据 + List propertyList = new ArrayList<>(); + //遍历插入数据 + for(PartSubPropertiesValue propertyValue : datas){ + String attribute = propertyValue.getPropertiesItemNo(); + String valueTypeDb = propertyValue.getValueTypeDb(); + String textValue = propertyValue.getTextValue(); + Double numValue = propertyValue.getNumValue(); + String numValueStr = ""; + //null处理 + if(null == textValue){ + textValue = ""; + } + if(null == numValue){ + numValueStr = ""; + }else { + numValueStr = String.valueOf(numValue); + BigDecimal bd = new BigDecimal(numValueStr).stripTrailingZeros(); + numValueStr = bd.toString(); + } + TechnicalClassAttribute technicalAttribute = new TechnicalClassAttribute(); + technicalAttribute.setLuName(luName); + technicalAttribute.setKeyRef(keyRef); + technicalAttribute.setTechnicalClass(technicalClassNo); + technicalAttribute.setAttribute(attribute); + if("T".equalsIgnoreCase(valueTypeDb)){ + technicalAttribute.setAttributeType("Alpha"); + }else if("N".equalsIgnoreCase(valueTypeDb)){ + technicalAttribute.setAttributeType("Numeric"); + } + //设置数值 针对空值需要特殊处理 + technicalAttribute.setValueText(textValue); + technicalAttribute.setValueNo(numValueStr); + technicalAttribute.setLowerLimit(""); + technicalAttribute.setUpperLimit(""); + technicalAttribute.setInfo(""); + propertyList.add(technicalAttribute); + } + //调用ifs的api + String toolURL = apiUrl + "/technical/class/modifyTechnicalClassAttributes"; + ResponseData toolResponse = HttpClientUtil.doPostByRawWithPLM(toolURL, propertyList); + if (!"200".equals(toolResponse.getCode())) { + throw new RuntimeException("IFS Tool属性修改异常:" + toolResponse.getMsg()); + } + // 更新 ifs_row_id ifs_row_version + String objStr = String.valueOf(toolResponse.getObj()); + TechnicalClass ifsTool = JSON.parseObject(objStr, TechnicalClass.class); } + @Override public void deleteModalDetailForBM(PlmBmModelDetailData inData){ propertiesMapper.deleteModalDetailsForBM(inData);