diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java index c6771f9..8048eab 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingLoadingCheckService.java @@ -158,18 +158,35 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS //校验发运单是否存在 checkLoadingList(model, organizeCode, loadingList); //查询零件发运组 - MesPartShippingGroup shippingGroup = getMesPartShippingGroup(organizeCode, loadingList.getPartShippingGroupCode()); - final boolean isFirstInstall = mesPartShippingGroupService.isFirstInstall(shippingGroup, loadingList); + MesPartShippingGroup loadingShippingGroup = getMesPartShippingGroup(organizeCode, loadingList.getPartShippingGroupCode()); + final boolean isFirstInstall = mesPartShippingGroupService.isFirstInstall(loadingShippingGroup, loadingList); boolean scanflg = false; for (MesLoadingListDetail loadingListDetail : model.getDetailList()) { if (loadingListDetail.getShippingCode().equals(model.getShippingCode())) { - if (Objects.equals(loadingListDetail.getTempStatus(), MesCommonConstant.TRUE_INTEGER)) { throw new ImppBusiException(String.format("【%s】此发运单已经%s,请检查数据!", model.getShippingCode(),loadingListDetail.getTempStatusVal())); } + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(loadingListDetail.getShippingCode(),"shippingCode",packBean); + MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(packBean); + if (orderManagement == null) { + throw new ImppBusiException(String.format("发运单【%s】信息不存在,请检查数据!", loadingListDetail.getShippingCode())); + } + //查询零件发运组 + MesPartShippingGroup shippingGroup = getMesPartShippingGroup(organizeCode, orderManagement.getShippingGroupCode()); + //校验发运单明细顺序 if(!StringUtils.isEmpty(shippingGroup.getIsEnableLoadingFailSafe()) && CommonEnumUtil.VALID == shippingGroup.getIsEnableLoadingFailSafe()){ - Optional detail = model.getDetailList().stream().filter(k -> k.getShippingCode().compareTo(loadingListDetail.getShippingCode()) < 0 && !Objects.equals(k.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).findFirst(); + List shippingGroupLoading = new ArrayList<>(); + for (MesLoadingListDetail detail : model.getDetailList()) { + if (detail.getShippingId() != null) { + MesShippingOrderManagement shippingOrder = shippingOrderManagementRepository.getById(detail.getShippingId()); + if (shippingOrder != null && Objects.equals(shippingOrder.getShippingGroupCode(), shippingGroup.getShippingGroupCode())) { + shippingGroupLoading.add(detail); + } + } + } + Optional detail = shippingGroupLoading.stream().filter(k -> k.getShippingCode().compareTo(loadingListDetail.getShippingCode()) < 0 && !Objects.equals(k.getTempStatus(), MesCommonConstant.TRUE_INTEGER)).findFirst(); if(detail.isPresent()){ throw new ImppBusiException(String.format("装车单【%s】启用明细顺序防错,发运单【%s】前还有未扫描的发运单,请检查数据!", loadingList.getOrderCode(), model.getShippingCode())); } @@ -189,9 +206,6 @@ public class MesShippingLoadingCheckService implements IMesShippingLoadingCheckS //根据扫描的装车单找到是否先装车配置 //若配置为否,则查询装车单中所有的发运单是否都进行【排序发运校验】完成,若【排序发运校验】没完成,则提示,先进行排序发运校验。 if (!isFirstInstall) { - DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getNumEqualPack(loadingListDetail.getShippingId(),"id",packBean); - MesShippingOrderManagement orderManagement = shippingOrderManagementRepository.getByProperty(packBean); if (orderManagement == null || orderManagement.getStatus() != MesExtEnumUtil.SHIPPING_ORDER_STATUS.SHIPPED.getValue()) { throw new ImppBusiException(String.format("【%s】此装车单中发运单为【%s】,还未做完【排序发运校验】,请检查数据", model.getShippingCode(), loadingListDetail.getShippingCode())); }