diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java index cef9094..88fa57e 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/busi/MesCreateWorkOrderImpl.java @@ -438,14 +438,24 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { //获取相同总成的ptrId 在ptr详情中 List custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == null || item.getIsCustomerSendPrtInfo() != CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).collect(Collectors.toList()); if (!custPartPtrList.isEmpty()) { - mesPartPtr = custPartPtrList.get(0); - //查询ptr总成--只有特定总成才会替换 - DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(), "ptrId", detailPartPtr); - DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "totalPartNo", detailPartPtr); - List ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr); - if (!ptrDetailList.isEmpty()) { - mesPartPtrDetail = ptrDetailList.get(0); + /** + * 修复bug 44747 同一个原零件对应多个ptr逻辑优化 + * 同一个原零件对应多个PTR,如果是内部PTR,需要去遍历每一个PTR的明细(总成零件号),不能是只找第一个PTR; + */ + for (MesPartPtr partPtr : custPartPtrList) { + //查询ptr总成--只有特定总成才会替换 + DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getNumEqualPack(partPtr.getId(), "ptrId", detailPartPtr); + DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(), "totalPartNo", detailPartPtr); + List ptrDetailList = partPtrDetailRao.findByHqlWhere(detailPartPtr); + if (!ptrDetailList.isEmpty()) { + mesPartPtrDetail = ptrDetailList.get(0); + mesPartPtr = partPtr; + break; + } + } + if (mesPartPtr == null){ + mesPartPtr = custPartPtrList.get(0); } } }