|
|
|
@ -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) {
|
|
|
|
|