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 0af1043..057508c 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 @@ -318,12 +318,18 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { boolean isModifyPOrder = false; boolean isFOrder = false; //查询mes_part_ptr表,根据物料清单查找ptr替换信息 + /** + * PTR生效 + * 1.有开始时间和结束时间 和 需要数量,达到其中一个就结束 + * 2.有开始时间无结束时间 和 需要数量 达到需要的数量结束 + * 3.有开始时间无结束时间,无结束数量 一直替换 + */ if (!workOrderPartList.isEmpty()){ Map orderPartMap = workOrderPartList.stream().collect(Collectors.toMap(MesWorkOrderPart::getPartNo, Function.identity())); //先替换客户的ptr信息 String ptrInfo = mesWorkOrder.getPtrInfo(); if (StringUtils.isNotBlank(ptrInfo)) { - List ptrInfoList = Arrays.asList(ptrInfo.replace("_", "").split("\\|")); + List ptrInfoList = Arrays.asList(ptrInfo.replaceAll("_", "").split("\\|")); if (!ptrInfoList.isEmpty()){ List custPartPtrList = getCustPartPtrList(ptrInfoList, organizeCode); long count = custPartPtrList.stream().filter(item -> item.getIsCustomerSendPrtInfo() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count(); @@ -349,12 +355,10 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { List partNoList = workOrderPartList.stream().map(MesWorkOrderPart::getPartNo).collect(Collectors.toList()); List partPtrList = getPartPtrList(organizeCode, mesWorkOrder.getWorkCenterCode(), partNoList); //装配件规则如果进行了零件替换 则使用ptr的规则 key 零件号,value 是规则 - long count = partPtrList.stream().filter(item -> item.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).count(); - if (count > 0){ - isFOrder = true; - } + List fPartPtrPartList = partPtrList.stream().filter(item -> item.getIsInterPrt() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()).map(MesPartPtr::getSrcPartNo).collect(Collectors.toList()); + for (MesPartPtr mesPartPtr : partPtrList) { - //查询ptr总成 + //查询ptr总成--只有特定总成才会替换 DdlPackBean detailPartPtr = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getNumEqualPack(mesPartPtr.getId(),"ptrId",detailPartPtr); DdlPreparedPack.getStringEqualPack(mesWorkOrder.getPartNo(),"totalPartNo",detailPartPtr); @@ -375,6 +379,9 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { if (!isModifyPOrder){ isModifyPOrder = true; } + if (fPartPtrPartList.contains(mesPartPtr.getSrcPartNo())){ + isFOrder = true; + } mesWorkOrder.setRemark(mesPartPtr.getRemark()); String ptrInfoStr = "INFO"+mesPartPtr.getId()+"|PART"+mesPartPtrDetail.getId(); mesWorkOrder.setPtrInfo(ptrInfoStr); @@ -758,16 +765,50 @@ public class MesCreateWorkOrderImpl implements IMesCreateWorkOrder { } private List getPartPtrList(String organizeCode,String workCenterCode, List partNoList) { + /** + * 2024/11/16 + * PTR生效 + * 1.有开始时间和结束时间 和 需要数量,达到其中一个就结束 + * 2.有开始时间无结束时间 和 需要数量 达到需要的数量结束 + * 3.有开始时间无结束时间,无结束数量 一直替换 + */ DdlPackBean partPtrPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", partPtrPackBean); DdlPreparedPack.getInPackList(partNoList, "srcPartNo", partPtrPackBean); DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", partPtrPackBean); + List partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean); DdlPreparedPack.getStringBiggerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "endTime", partPtrPackBean); DdlPreparedPack.getIsNotNull("prtVehicleCount", partPtrPackBean); - List partPtrList = partPtrRao.findByHqlWhere(partPtrPackBean); + DdlPreparedPack.getIsNotNull("endTime", partPtrPackBean); + + /** + * 有开始时间 和 无结束时间 和 需要的数量,只有达到数量才结束 + */ + + DdlPackBean part1PtrPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", part1PtrPackBean); + DdlPreparedPack.getInPackList(partNoList, "srcPartNo", part1PtrPackBean); + DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", part1PtrPackBean); + DdlPreparedPack.getIsNotNull("prtVehicleCount", part1PtrPackBean); + DdlPreparedPack.getIsNull("endTime", part1PtrPackBean); + List partPtrList1 = partPtrRao.findByHqlWhere(part1PtrPackBean); + partPtrList.addAll(partPtrList1); + partPtrList = partPtrList.stream().filter(item -> item.getPrtVehicleCount() != null && item.getPrtVehicleCount() > 0) .filter(item-> item.getPrtVehicleCount() > item.getPrtVehicleActualCount()) .collect(Collectors.toList()); + /** + * 有开始时间 和 无结束时间 和 无需要的数量 + */ + + DdlPackBean part2PtrPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", part2PtrPackBean); + DdlPreparedPack.getInPackList(partNoList, "srcPartNo", part2PtrPackBean); + DdlPreparedPack.getStringSmallerPack(TimeTool.getNowTime("yyyy-MM-dd HH:mm:ss"), "startTime", part2PtrPackBean); + DdlPreparedPack.getIsNull("prtVehicleCount", part2PtrPackBean); + DdlPreparedPack.getIsNull("endTime", part2PtrPackBean); + List partPtrList2 = partPtrRao.findByHqlWhere(part2PtrPackBean); + partPtrList.addAll(partPtrList2); return partPtrList; } //根据排序信息PTR零件号 获取 ptr信息