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 33d817f..7f89c7b 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 @@ -362,7 +362,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { //客户ptr信息 StringBuilder ptrInfos = new StringBuilder(); String ptrInfo = mesWorkOrder.getPtrInfo(); - List custPtrPartList = Arrays.asList(ptrInfo.split("\\|")); + List custPtrPartList = Arrays.asList(ptrInfo.replaceAll("_","").split("\\|")); boolean ptrFlag = false; boolean custFlag = false; boolean fOrderFlag = false; @@ -374,8 +374,22 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { //ptr信息 List partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList()); List partPtrList = getPartPtrList(organizeCode, mesWorkOrder.getWorkCenterCode(), partNoList); + /** + * ptr 拆分成两种情况 + * 1.客户ptr - PTR单 + * 1.1 客户报文中给的是目标零件号 + * 1.2 客户ptr时,ptr详情一定要为空 + * 1.3 客户ptr时,ptr主表中是否卫客户发送ptr信息为选中 + * + * 2.内部ptr - PTR单 + * 2.1 拆分bom,有替换就替换 + * 2.2 是否内部PTR 不看 + * + * 3.内部PTR - F单 + * 2.1 拆分bom,有替换就替换 + * 2.2 如果选择了内部ptr 就是F单 + */ //遍历workOrderPartList - for (MesWorkOrderPart orderPart : workOrderPartList) { List ptr = partPtrList.stream().filter(item -> item.getSrcPartNo().equals(orderPart.getPartNo())).collect(Collectors.toList()); if (ptr.isEmpty()) { @@ -384,7 +398,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { //判断是否是客户替换 boolean isCust = false; for (MesPartPtr mesPartPtr : ptr) { - if (custPtrPartList.contains(mesPartPtr.getSrcPartNo())) { + if (custPtrPartList.contains(mesPartPtr.getSeqInfoPrtPart()) && mesPartPtr.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { isCust = true; break; } @@ -395,7 +409,7 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { if (isCust) { //查找客户发送的ptr信息 - List custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && custPtrPartList.contains(item.getSrcPartNo())).collect(Collectors.toList()); + List custPartPtrList = ptr.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() && custPtrPartList.contains(item.getSeqInfoPrtPart())).collect(Collectors.toList()); if (!custPartPtrList.isEmpty()) { mesPartPtr = custPartPtrList.get(0); } @@ -423,12 +437,17 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { custFlag = true; } } - ptrFlag = true; + if (!isCust && mesPartPtr.getIsInterPrt()==CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ if (!fOrderFlag){ fOrderFlag = true; } } + if (!isCust && mesPartPtr.getIsInterPrt()!=CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ + if (!ptrFlag){ + ptrFlag = true; + } + } //将工单类零件表替换位PTR条件中维护的替换零件 MesPartSap mesPartSap = mesPartSapService.getMesPartSapByPartNo(mesPartPtr.getDestPartNo(), organizeCode); orderPart.setPartNo(mesPartSap.getPartNo()); @@ -482,11 +501,12 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { } } - if (ptrFlag && custFlag){ + if (custFlag || ptrFlag){ mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.PTR.getValue()); - }else if (ptrFlag){ + }else if (fOrderFlag){ mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.F.getValue()); - }else { + } + else { mesWorkOrder.setOrderFlag(MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue()); }