From 35a7dce7f9357c41b65881be535cb42410721398 Mon Sep 17 00:00:00 2001 From: "castle.zang" Date: Wed, 18 Dec 2024 15:10:06 +0800 Subject: [PATCH] =?UTF-8?q?fix=20bug=2044247=20=20=E8=A3=85=E7=AE=B1?= =?UTF-8?q?=E9=98=B2=E9=94=99=E5=88=86=E5=A4=96=E5=8D=8F=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E8=87=AA=E5=88=B6=E4=BB=B6=EF=BC=8C=E8=87=AA=E5=88=B6=E4=BB=B6?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E5=8F=AF=E4=BB=A5=E4=B8=8D?= =?UTF-8?q?=E7=94=A8=E7=BB=B4=E6=8A=A4=E6=89=AB=E6=8F=8F=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../busi/MesBoxingErrorProofingService.java | 41 +++++++++++++++++++--- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java index 6c26e92..3f9f064 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java @@ -123,7 +123,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer if (StringUtils.isEmpty(packingDefine.getSplitChar())) { MesPcnException.throwMesBusiException("箱类别代号【%s】分隔符不能为空,请检查数据!", packingDefine.getPackCode()); } - String[] split = mesPackageDetail.getPackageNo().split("\\" + packingDefine.getSplitChar()); + String[] split = mesPackageDetail.getPackageNo().split("\\\\" + packingDefine.getSplitChar()); //获取序列号 checkSerial(packingDefine, split); //工厂校验 @@ -277,9 +277,9 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //获取包装定义明细 List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); //校验是否包含 - String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); +// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); //校验条码信息 - checkSn(mesPackageDetail, packingDefine,partNo); + String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails); //物料信息 return getPart(mesPackageDetail.getOrganizeCode(), partNo); } @@ -387,8 +387,39 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer return saveMesPackageDetail; } - private void checkSn(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine,String partNo) { + private String checkSn(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine,MesPackage mesPackage,List defineDetails ) { List produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber()); + String packageBarcodeRule; + String partNo = null; + if (!produceSnList.isEmpty()){ + /** + * 自制件不需要校验规则 by castle 2024-12-18 bug 44247 + * + */ + partNo = produceSnList.get(0).getPartNo(); + }else { + for (MesPackingDefineDetails defineDetail : defineDetails) { + //条码规则为空 + if (StringUtils.isEmpty(defineDetail.getPackageBarcodeRule())) { + MesPcnException.throwMesBusiException("箱类别代号【%s】零件号【%s】条码规则未维护,请检查数据!", mesPackage.getPackageSn(), defineDetail.getPartNo()); + } + packageBarcodeRule = defineDetail.getPackageBarcodeRule().replace("*", ""); + //包含箱条码 + if (mesPackageDetail.getSerialNumber().contains(packageBarcodeRule)) { + partNo = defineDetail.getPartNo(); + break; + } + } + } + if (Objects.isNull(partNo)) { + MesPcnException.throwMesBusiException("零件条码【%s】未匹配到符合条码规则的数据,请检查数据!", mesPackageDetail.getSerialNumber()); + } + //校验零件是否一致 + if (!partNo.equals(mesPackage.getPartNo())) { + MesPcnException.throwMesBusiException("零件条码【%s】包装定义明细零件【%s】和箱零件【%s】不一致,请检查数据!", mesPackageDetail.getSerialNumber(), partNo, mesPackage.getPartNo()); + } + + if (!CollectionUtils.isEmpty(produceSnList)) { MesProduceSn nextMesProduceSn = produceSnList.stream().sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()).iterator().next(); if (!MesExtEnumUtil.PRODUCE_SN_STATUS.checkAllowBoxingErrorProofing(nextMesProduceSn.getSnStatus()) || !MesExtEnumUtil.PRODUCE_QC_STATUS.checkAllowBoxingErrorProofing(nextMesProduceSn.getQcStatus())) { @@ -414,6 +445,8 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer MesPcnException.throwMesBusiException("条码【%s】校验装箱防错对应工艺【%s】失败,请检查数据!", mesPackageDetail.getSerialNumber(),packingDefine.getCraft()); } } + + return partNo; } private String getPartNo(MesPackageDetail mesPackageDetail, MesPackage mesPackage, List defineDetails) {