diff --git a/src/main/java/com/spring/ifs/data/TechnicalAttribute.java b/src/main/java/com/spring/ifs/data/TechnicalAttribute.java index a55e3de7..8e771713 100644 --- a/src/main/java/com/spring/ifs/data/TechnicalAttribute.java +++ b/src/main/java/com/spring/ifs/data/TechnicalAttribute.java @@ -9,7 +9,7 @@ package com.spring.ifs.data; * @Copyright: */ public class TechnicalAttribute extends TechnicalClass { - private String attribute; + private String attribute; // private String valueNo; // private String valueText; // private String lowerLimit; // diff --git a/src/main/java/com/spring/modules/part/mapper/PartInformationMapper.java b/src/main/java/com/spring/modules/part/mapper/PartInformationMapper.java index 79e4d574..905659fb 100644 --- a/src/main/java/com/spring/modules/part/mapper/PartInformationMapper.java +++ b/src/main/java/com/spring/modules/part/mapper/PartInformationMapper.java @@ -15,6 +15,7 @@ import com.spring.modules.project.data.PlmProjectPartData; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -311,4 +312,6 @@ public interface PartInformationMapper extends BaseMapper void deleteRecipeDetailByPartNo(PartInformationVo data); void deleteRecipeComponentByPartNo(PartInformationVo data); + + void savePartSubPropertiesValues(List arrayList); } diff --git a/src/main/java/com/spring/modules/part/service/impl/MasterPartInformationServiceImpl.java b/src/main/java/com/spring/modules/part/service/impl/MasterPartInformationServiceImpl.java index 1a35f56e..507fc71c 100644 --- a/src/main/java/com/spring/modules/part/service/impl/MasterPartInformationServiceImpl.java +++ b/src/main/java/com/spring/modules/part/service/impl/MasterPartInformationServiceImpl.java @@ -14,7 +14,9 @@ import com.spring.ifs.api.IfsServer; import com.spring.ifs.bean.BaseSearchBean; import com.spring.ifs.bean.InventoryServiceBean; import com.spring.ifs.bean.MasterServiceBean; +import com.spring.ifs.bean.TechnicalClassBean; import com.spring.ifs.data.BaseSearchData; +import com.spring.ifs.data.TechnicalAttribute; import com.spring.modules.app.dao.UserDao; import com.spring.modules.app.service.UserService; import com.spring.modules.base.data.PartSubPropertiesValueData; @@ -71,6 +73,9 @@ public class MasterPartInformationServiceImpl extends ServiceImpl checkUpdateMasterPart (MasterPartInformationVo inData) { // 公共参数 String partNo = inData.getPartNo(); - String codeNo = inData.getCodeNo(); - String partMainGroup = inData.getPartMainGroup() == null ? "": inData.getPartMainGroup(); + String codeNo = inData.getCodeNo() == null ? "" : inData.getCodeNo(); String functionType = "MP"; List params = new ArrayList<>(); params.add(partNo); params.add(codeNo); - params.add(partMainGroup); params.add(functionType); // 执行方法 List> resultList = procedureDao.getProcedureData("checkUpdateMasterPart", params); @@ -338,8 +341,8 @@ public class MasterPartInformationServiceImpl extends ServiceImpl().eq("part_no", data.getPartNo())); // 查询是否已存在属性 List checkValueHeaderData = partInformationMapper.checkValueHeaderData(data); - if ("Y".equals(masterPart.getOfficialFlag()) && StringUtils.isNotBlank(masterPart.getCodeNo()) && checkValueHeaderData.isEmpty()) { - // 如果物料是正式物料 && 选择了模板 && 物料属性是空值,则调用接口查出属性新增 + if (dataUrl && "Y".equals(masterPart.getOfficialFlag()) && StringUtils.isNotBlank(masterPart.getCodeNo()) && checkValueHeaderData.isEmpty()) { + // 如果接口开关已打开 && 物料是正式物料 && 选择了模板 && 物料属性是空值,则调用接口查出属性新增 Server srv = getIfsServer(data.getUpdateBy()); BaseSearchData baseSearchData = new BaseSearchData(); baseSearchData.setLuName("PartCatalog"); @@ -349,20 +352,43 @@ public class MasterPartInformationServiceImpl extends ServiceImpl ifsItems = JSON.parseArray(s, RoutingIfsItem.class); - - } - - - // 初次或修改物料模板则重新加载模板 - if (checkValueHeaderData.isEmpty()) { - // 删除物料的属性和属性值 - partInformationMapper.deletePartSubPropertiesValueHeader(data); - partInformationMapper.deletePartSubPropertiesValue(data); - // 加载默认属性和属性值 + List ifsItems = JSON.parseArray(s, TechnicalAttribute.class); + if (ifsItems.isEmpty()) { + throw new RuntimeException("IFS 获取物料件属性为空值!"); + } + // 转成PLM对象 + List arrayList = new ArrayList<>(); + int itemNo = 1; + for (TechnicalAttribute item : ifsItems) { + PartSubPropertiesValueData valueData = new PartSubPropertiesValueData(); + valueData.setSite("*"); + valueData.setPartNo(data.getPartNo()); + valueData.setCodeNo(item.getTechnicalClass()); + valueData.setSubCodeSeqNo(Double.valueOf("1")); + valueData.setItemNo((double) itemNo++); + valueData.setPropertiesItemNo(item.getAttribute()); + if ("Numeric".equals(item.getAttributeType())) { + valueData.setNumValue(Double.valueOf(item.getValueNo())); + } else { + valueData.setTextValue(item.getValueText() == null ? "" : item.getValueText()); + } + valueData.setRecordType("MP"); + arrayList.add(valueData); + } + // 物料模板 partInformationMapper.savePartSubPropertiesValueHeader(data); - partInformationMapper.savePartSubPropertiesValue(data); + // 物料属性 + partInformationMapper.savePartSubPropertiesValues(arrayList); } +// else if (checkValueHeaderData.isEmpty()){ +// // 初次或修改物料模板则重新加载模板 +// // 删除物料的属性和属性值 +// partInformationMapper.deletePartSubPropertiesValueHeader(data); +// partInformationMapper.deletePartSubPropertiesValue(data); +// // 加载默认属性和属性值 +// partInformationMapper.savePartSubPropertiesValueHeader(data); +// partInformationMapper.savePartSubPropertiesValue(data); +// } List result = partInformationMapper.getItemModal(data); for (int i = 0; i < result.size(); i++) { if ("Y".equals(result.get(i).getValueChooseFlag())) { @@ -421,6 +447,9 @@ public class MasterPartInformationServiceImpl extends ServiceImpl ifsProperty = new ArrayList<>(); + MasterPartInformationEntity partData = masterPartInformationMapper.selectOne(new QueryWrapper().eq("part_no", inData.getPartNo())); for(PartSubPropertiesValueData itemDate : inData.getItemList()) { itemDate.setSite(inData.getSite()); itemDate.setPartNo(inData.getPartNo()); @@ -438,7 +467,31 @@ public class MasterPartInformationServiceImpl extends ServiceImpl addMasterPartPropertyResponse = technicalClassBean.syncTechnicalClass(srv, ifsProperty); +// if (!"200".equals(addMasterPartPropertyResponse.get("resultCode"))) { +// throw new RuntimeException("IFS物料属性新增异常:" + addMasterPartPropertyResponse.get("resultMsg")); +// } +// } +// } } /** @@ -448,9 +501,29 @@ public class MasterPartInformationServiceImpl extends ServiceImpl ifsProperty = new ArrayList<>(); + MasterPartInformationEntity partData = masterPartInformationMapper.selectOne(new QueryWrapper().eq("part_no", inData.getPartNo())); for(PartSubPropertiesValueData itemDate : inData.getItemList()) { partInformationMapper.deletePartItem(itemDate); + if (dataUrl && "Y".equals(partData.getOfficialFlag())) { + PartIfsCatalogProperty property = new PartIfsCatalogProperty(); + property.setLuName(luName); + property.setKeyRef("PART_NO=" + itemDate.getPartNo() + "^"); // 物料编码 + property.setTechnicalClass(itemDate.getCodeNo()); // 模板编码 + property.setAttribute(itemDate.getPropertiesItemNo()); // 属性编码 + ifsProperty.add(property); + } } + // 同步IFS +// if (dataUrl && "Y".equals(partData.getOfficialFlag())) { +// if (!ifsProperty.isEmpty()) { +// Map deleteMasterPartPropertyResponse = technicalClassBean.removeTechnicalClass(srv, ifsProperty); +// if (!"200".equals(deleteMasterPartPropertyResponse.get("resultCode"))) { +// throw new RuntimeException("IFS物料属性删除异常:" + deleteMasterPartPropertyResponse.get("resultMsg")); +// } +// } +// } } /** @@ -460,41 +533,35 @@ public class MasterPartInformationServiceImpl extends ServiceImpl ifsProperty = new ArrayList<>(); - MasterPartInformationEntity partData = masterPartInformationMapper.selectOne(new QueryWrapper().eq("part_no", data.getItemList().get(0).getPartNo())); - // 修改明细记录信息 - for (PartSubPropertiesValueData valueData : data.getItemList()) { - valueData.setSite("*"); - partInformationMapper.commitItemValue(valueData); - - if (dataUrl && "Y".equals(partData.getOfficialFlag())) { - PartIfsCatalogProperty property = new PartIfsCatalogProperty(); - property.setLuName(luName); - property.setKeyRef("PART_NO=" + valueData.getPartNo() + "^"); // 物料编码 - property.setTechnicalClass(valueData.getCodeNo()); // 模板编码 - property.setAttribute(valueData.getPropertiesItemNo()); // 属性编码 - property.setAttributeType("N".equals(valueData.getValueTypeDb()) ? "Numeric" : "T".equals(valueData.getValueTypeDb()) ? "Alpha" : ""); // 属性类型 - property.setValueText(valueData.getTextValue() == null ? "" : valueData.getTextValue()); // 文本值 - property.setValueNo(valueData.getNumValue() == null ? "" : valueData.getNumValue().toString()); // 数字值 - property.setLowerLimit(""); - property.setUpperLimit(""); - property.setInfo(""); - ifsProperty.add(property); - } + Server srv = getIfsServer(data.getUpdateBy()); + List ifsProperty = new ArrayList<>(); + MasterPartInformationEntity partData = masterPartInformationMapper.selectOne(new QueryWrapper().eq("part_no", data.getItemList().get(0).getPartNo())); + // 修改明细记录信息 + for (PartSubPropertiesValueData valueData : data.getItemList()) { + valueData.setSite("*"); + partInformationMapper.commitItemValue(valueData); + if (dataUrl && "Y".equals(partData.getOfficialFlag())) { + PartIfsCatalogProperty property = new PartIfsCatalogProperty(); + property.setLuName(luName); + property.setKeyRef("PART_NO=" + valueData.getPartNo() + "^"); // 物料编码 + property.setTechnicalClass(valueData.getCodeNo()); // 模板编码 + property.setAttribute(valueData.getPropertiesItemNo()); // 属性编码 + property.setAttributeType("N".equals(valueData.getValueTypeDb()) ? "Numeric" : "T".equals(valueData.getValueTypeDb()) ? "Alpha" : ""); // 属性类型 + property.setValueText(valueData.getTextValue() == null ? "" : valueData.getTextValue()); // 文本值 + property.setValueNo(valueData.getNumValue() == null ? "" : valueData.getNumValue().toString()); // 数字值 + property.setLowerLimit(""); + property.setUpperLimit(""); + property.setInfo(""); + ifsProperty.add(property); } + } - // 同步IFS - if (dataUrl && "Y".equals(partData.getOfficialFlag())) { - String updateMasterPartPropertyURL = apiUrl + "/technical/class/modifyTechnicalClassAttributes"; - ResponseData updateMasterPartPropertyResponse = HttpClientUtil.doPostByRawWithPLM(updateMasterPartPropertyURL, ifsProperty); - if (!"200".equals(updateMasterPartPropertyResponse.getCode())) { - throw new RuntimeException("IFS物料件属性修改异常:" + updateMasterPartPropertyResponse.getMsg()); + // 同步IFS + if (dataUrl && "Y".equals(partData.getOfficialFlag())) { + if (!ifsProperty.isEmpty()) { + Map updateMasterPartPropertyResponse = technicalClassBean.modifyTechnicalClassAttributes(srv, ifsProperty); + if (!"200".equals(updateMasterPartPropertyResponse.get("resultCode"))) { + throw new RuntimeException("IFS物料属性修改异常:" + updateMasterPartPropertyResponse.get("resultMsg")); } } } diff --git a/src/main/java/com/spring/modules/part/task/PartRelatedTask.java b/src/main/java/com/spring/modules/part/task/PartRelatedTask.java index 188fc5a5..aa3002c4 100644 --- a/src/main/java/com/spring/modules/part/task/PartRelatedTask.java +++ b/src/main/java/com/spring/modules/part/task/PartRelatedTask.java @@ -51,9 +51,9 @@ public class PartRelatedTask { workCenterVo.setSiteCon(siteCon); routingManagementService.syncWorkCenterToPLM(workCenterVo); // 同步unitValue - InventoryPartUnitCostSumVo unitCostVo = new InventoryPartUnitCostSumVo(); - unitCostVo.setSiteCon(siteCon); - partInformationService.syncUnitValueToPLM(unitCostVo); +// InventoryPartUnitCostSumVo unitCostVo = new InventoryPartUnitCostSumVo(); +// unitCostVo.setSiteCon(siteCon); +// partInformationService.syncUnitValueToPLM(unitCostVo); } diff --git a/src/main/resources/mapper/part/MasterPartInformationMapper.xml b/src/main/resources/mapper/part/MasterPartInformationMapper.xml index a7216e13..c059c289 100644 --- a/src/main/resources/mapper/part/MasterPartInformationMapper.xml +++ b/src/main/resources/mapper/part/MasterPartInformationMapper.xml @@ -10,13 +10,12 @@ um_id, dbo.get_um_name(um_id) as umName, part_main_group, - dbo.get_group_name(#{query.site}, part_main_group) as groupName, weight_net, uom_for_weight_net, volume_net, uom_for_volume_net, code_no, - dbo.get_code_desc(#{query.site}, code_no, 'IP') as codeDesc, + dbo.get_code_desc(#{query.site}, code_no, 'MP') as codeDesc, condition_code_usage_db, multilevel_tracking_db, allow_as_not_consumed_db, diff --git a/src/main/resources/mapper/part/PartInformationMapper.xml b/src/main/resources/mapper/part/PartInformationMapper.xml index d528c779..57d9ac7b 100644 --- a/src/main/resources/mapper/part/PartInformationMapper.xml +++ b/src/main/resources/mapper/part/PartInformationMapper.xml @@ -2248,4 +2248,12 @@ AND location_type = #{query.locationType} + + + insert into PartSubPropertiesValue + (site, PartNo, CodeNo, SubCodeSeqNo, ItemNo, PropertiesItemNo, TextValue, NumValue, RecordType) VALUES + + (#{item.site}, #{item.partNo}, #{item.codeNo}, #{item.subCodeSeqNo,jdbcType=FLOAT}, #{item.itemNo}, #{item.propertiesItemNo}, #{item.textValue}, #{item.numValue}, #{item.recordType}) + +