fix bug 44242 PCN:装箱防错,已经关箱的箱条码,如果重复扫描,不需要重置,可以扫描下一个需要装箱的条码

dev-temp-nht-202502180000-customprint
臧学普 6 months ago
parent b775ab0fa1
commit 3a5316bf48

@ -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<MesProduceSn> produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber());
//1.查询包装明细是否包含此零件
List<MesPackingDefineDetails> 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<MesPackingDefineDetails> getMesPackingDefineDetailsNew(String organizeCode, String packCode,String partNo) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(packCode, "packCode", ddlPackBean);
DdlPreparedPack.getStringEqualPack(partNo, "partNo", ddlPackBean);
List<MesPackingDefineDetails> 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);

Loading…
Cancel
Save