Merge branch 'dev-temp-caslte-241218-44247' into dev

dev-temp-nht-202502180000-customprint
王杰 5 months ago
commit fab425a2db

@ -121,7 +121,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);
//工厂校验
@ -281,9 +281,9 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
//获取包装定义明细
List<MesPackingDefineDetails> 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);
}
@ -391,8 +391,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<MesPackingDefineDetails> defineDetails ) {
List<MesProduceSn> 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())) {
@ -420,6 +451,8 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
MesPcnException.throwMesBusiException("条码[%s]校验装箱防错对应工艺[%s]失败,请检查数据!", mesPackageDetail.getSerialNumber(),packingDefine.getCraft());
}
}
return partNo;
}
private String getPartNo(MesPackageDetail mesPackageDetail, MesPackage mesPackage, List<MesPackingDefineDetails> defineDetails) {

Loading…
Cancel
Save