Browse Source

2026-04-01

产品BOM【copy】优化,调用IFS标准接口
master
fengyuan_yang 2 weeks ago
parent
commit
ad6d89cd71
  1. 53
      src/main/java/com/spring/modules/part/service/impl/BomManagementServiceImpl.java

53
src/main/java/com/spring/modules/part/service/impl/BomManagementServiceImpl.java

@ -11,6 +11,7 @@ import com.spring.common.utils.PageUtils;
import com.spring.ifs.api.IfsServer;
import com.spring.ifs.bean.BomServiceBean;
import com.spring.ifs.bean.InventoryServiceBean;
import com.spring.ifs.data.CopyBomStructureData;
import com.spring.modules.base.utils.DataUtils;
import com.spring.modules.base.utils.HttpClientUtil;
import com.spring.modules.base.utils.ResponseData;
@ -958,6 +959,17 @@ public class BomManagementServiceImpl extends ServiceImpl<BomManagementMapper, B
if ("Purchased (raw)".equals(partInformationEntity.getPartType())) {
throw new RuntimeException("该物料类型不支持创建BOM!");
}
// 判断是否同步IFS
PartInformationEntity fromPartInfo = partInformationMapper.selectOne(new QueryWrapper<PartInformationEntity>().eq("site", data.getPreviousVersion().getSite()).eq("part_no", data.getPreviousVersion().getPartNo()));
boolean isFromPartFormal = fromPartInfo != null && "Y".equals(fromPartInfo.getStatus());
boolean isToPartFormal = "Y".equals(partInformationEntity.getStatus());
boolean callIfsCopy = isFromPartFormal && isToPartFormal;
if (callIfsCopy) {
data.setOfficialFlag("Y");
}
//
// 1创建bomHeader
BomHeaderEntity header = bomManagementMapper.queryBomHeader(data.getPreviousVersion());
@ -1021,8 +1033,13 @@ public class BomManagementServiceImpl extends ServiceImpl<BomManagementMapper, B
detailEntity.setPartNo(data.getPartNo());
detailEntity.setBomType(data.getBomType());
detailEntity.setEngChgLevel(data.getEngChgLevel());
if (callIfsCopy) {
detailEntity.setOfficialFlag("Y");
detailEntity.setStatus("Tentative");
} else {
detailEntity.setOfficialFlag("N");
detailEntity.setStatus("Tentative");
}
bomManagementMapper.bomDetailSave(detailEntity);
// 创建bomComponent
if (!componentDataList.isEmpty()) {
@ -1045,6 +1062,42 @@ public class BomManagementServiceImpl extends ServiceImpl<BomManagementMapper, B
bomManagementMapper.saveBomManufStructCostDistrib(collect1);
}
}
// 3调用IFS复制接口
if (callIfsCopy && dataUrl) {
Server srv = getIfsServer(data.getCreateBy());
// 3.2 调用复制接口
java.text.SimpleDateFormat ifsDateFormat = new java.text.SimpleDateFormat("dd-MMM-yyyy", java.util.Locale.ENGLISH);
for (BomDetailEntity detailEntity : detailDataList) {
CopyBomStructureData copyData = new CopyBomStructureData();
copyData.setFromContract(data.getPreviousVersion().getSite());
copyData.setFromPartNo(data.getPreviousVersion().getPartNo());
copyData.setFromEngChgLevel(data.getPreviousVersion().getEngChgLevel().toString());
copyData.setFromBomType(data.getPreviousVersion().getBomType());
copyData.setFromAlternativeNo(detailEntity.getAlternativeNo());
copyData.setToContract(data.getSite());
copyData.setToPartNo(data.getPartNo());
copyData.setToEngChgLevel(data.getEngChgLevel().toString());
copyData.setToBomType(data.getBomType());
copyData.setToAlternativeNo(detailEntity.getAlternativeNo());
copyData.setToEffPhaseInDate(ifsDateFormat.format(data.getEffPhaseInDate()));
copyData.setToEffPhaseOutDate(data.getEffPhaseOutDate() == null ? "" : ifsDateFormat.format(data.getEffPhaseOutDate()));
copyData.setCopyAttachDocuments("1");
copyData.setCopyMro("0");
copyData.setCopyAltStatus("0");
copyData.setCopyForReplace("FALSE");
try {
Map<String, String> copyResult = bomServiceBean.copyBomStructure(srv, copyData);
if (!"200".equals(copyResult.get("resultCode"))) {
throw new RuntimeException("IFS Bom复制异常:" + copyResult.get("resultMsg"));
}
} catch (Exception e) {
throw new RuntimeException("IFS Bom复制异常:" + e.getMessage());
}
}
}
return data;
}

Loading…
Cancel
Save