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..95a6caf 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 @@ -137,6 +137,11 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer return mesPackageRDao.insert(packages); } } else { + /** + * 2024-12-23 修复bug 44242 + * 已经关箱的箱条码,如果重复扫描,不需要重置,可以扫描下一个需要装箱的条码。 + * + */ checkNotNull(mesPackageDetail); //校验过程条码是否存在 if (StringUtils.isEmpty(mesPackageDetail.getSerialNumber())) { @@ -145,8 +150,18 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验包装条码信息 MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode()); //校验是否已关闭 - if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) { - MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码,请检查数据!"); + if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed() ) { + List produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber()); + //1.查询包装明细是否包含此零件 + List defineDetails = getMesPackingDefineDetailsNew(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn(), mesPackage.getPartNo()); + //确保是自制件和外协件 + if ((produceSnList != null && !produceSnList.isEmpty())|| (defineDetails != null && !defineDetails.isEmpty() && StringUtils.isEmpty(defineDetails.get(0).getPackageBarcodeRule()))) { + MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码,请检查数据!"); + }else { + //扫描的是箱条码 + mesPackageDetail.setIsScanPackage(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + this.doScan(mesPackageDetail); + } } //校验条码规则 MesPart mesPart = getMesPart(mesPackageDetail, mesPackage, packingDefine); @@ -303,6 +318,17 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer return defineDetails; } + private List getMesPackingDefineDetailsNew(String organizeCode, String packCode,String partNo) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(packCode, "packCode", ddlPackBean); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean); + List defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(defineDetails)) { + MesPcnException.throwMesBusiException("箱类别代号【%s】包装定义明细未维护,请检查数据!", packCode); + } + return defineDetails; + } + private void unboxing(MesPackage mesPackage, String userName, MesPackage mesPackageDb) { //更新包装表 mesPackageDb.setQty(0d);