|
|
|
@ -82,7 +82,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
public ListPager<MesPackageDetail> queryMesPackageDetailByPager(MesPackage mesPackage, Pager pager) {
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesPackage.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackage.getPackageNo(), "packageNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackage.getPackageNo(), MesPcnExtConstWords.PACKAGE_NO, packBean);
|
|
|
|
|
pager = PagerHelper.getPager(pager, mesPackageDetailRDao.findByHqlWhereCount(packBean));
|
|
|
|
|
List<MesPackageDetail> resultList = mesPackageDetailRDao.findByHqlWherePage(packBean, pager);
|
|
|
|
|
return new ListPager<>(resultList, pager);
|
|
|
|
@ -99,19 +99,17 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesPackage doScan(MesPackageDetail mesPackageDetail) {
|
|
|
|
|
public ResultBean doScan(MesPackageDetail mesPackageDetail) {
|
|
|
|
|
//获取包装定义
|
|
|
|
|
MesPackingDefine packingDefine = getMesPackingDefine(mesPackageDetail);
|
|
|
|
|
//扫描的是包装
|
|
|
|
|
if (mesPackageDetail.getIsScanPackageBoolean()) {
|
|
|
|
|
checkNotNull(mesPackageDetail);
|
|
|
|
|
MesPackage mesPackage = getMesPackage(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getPackageNo());
|
|
|
|
|
if (Objects.nonNull(mesPackage)) {
|
|
|
|
|
return mesPackage;
|
|
|
|
|
}else{
|
|
|
|
|
if (Objects.isNull(mesPackage)) {
|
|
|
|
|
MesPart mesPart;
|
|
|
|
|
Double qty;
|
|
|
|
|
String packageOneCode = "";
|
|
|
|
|
String packageOneCode = MesPcnExtConstWords.EMPTY;
|
|
|
|
|
//WMS打印的条码信息
|
|
|
|
|
MesPackageSn mesPackageSn = getMesPackageSn(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getPackageNo());
|
|
|
|
|
if(!Objects.isNull(mesPackageSn)){
|
|
|
|
@ -121,7 +119,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
}else{
|
|
|
|
|
//解析获取信息保存
|
|
|
|
|
if (StringUtils.isEmpty(packingDefine.getSplitChar())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱类别代号【%s】分隔符不能为空,请检查数据!", packingDefine.getPackCode());
|
|
|
|
|
MesPcnException.throwMesBusiException("箱类别代号[%s]分隔符不能为空,请检查数据!", packingDefine.getPackCode());
|
|
|
|
|
}
|
|
|
|
|
String[] split = mesPackageDetail.getPackageNo().split("\\" + packingDefine.getSplitChar());
|
|
|
|
|
//获取序列号
|
|
|
|
@ -133,20 +131,20 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
//获取数量信息是否存在
|
|
|
|
|
qty = getQty(packingDefine, split);
|
|
|
|
|
}
|
|
|
|
|
MesPackage packages = getMesPackage(mesPackageDetail, mesPart, qty, packingDefine,packageOneCode);
|
|
|
|
|
return mesPackageRDao.insert(packages);
|
|
|
|
|
mesPackage = mesPackageRDao.insert(getMesPackage(mesPackageDetail, mesPart, qty, packingDefine,packageOneCode));
|
|
|
|
|
}
|
|
|
|
|
return ResultBean.success("箱条码扫描成功,请扫零件条码!").setResultObject(mesPackage);
|
|
|
|
|
} else {
|
|
|
|
|
checkNotNull(mesPackageDetail);
|
|
|
|
|
//校验过程条码是否存在
|
|
|
|
|
//校验零件条码是否存在
|
|
|
|
|
if (StringUtils.isEmpty(mesPackageDetail.getSerialNumber())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("过程条码不允许为空,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码不允许为空,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
//校验包装条码信息
|
|
|
|
|
MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode());
|
|
|
|
|
//校验是否已关闭
|
|
|
|
|
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
//校验条码规则
|
|
|
|
|
MesPart mesPart = getMesPart(mesPackageDetail, mesPackage, packingDefine);
|
|
|
|
@ -161,18 +159,21 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
//缓存是否记忆开关
|
|
|
|
|
saveRedis(getKey(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getModifyUser()),mesPackageDetail.getIsMemory());
|
|
|
|
|
mesPackage.setMesPackageDetail(saveMesPackageDetail);
|
|
|
|
|
return mesPackage;
|
|
|
|
|
if(mesPackage.getIsSealed() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
|
|
|
|
|
return ResultBean.success("当前箱条码已完成装箱,请扫描下一个箱条码!").setResultObject(mesPackage);
|
|
|
|
|
}
|
|
|
|
|
return ResultBean.success("零件条码扫描成功,请继续扫描零件条码!").setResultObject(mesPackage);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesPackage saveMesPackageDetails(List<MesPackageDetail> mesPackageDetailList, String userName) {
|
|
|
|
|
public ResultBean saveMesPackageDetails(List<MesPackageDetail> mesPackageDetailList, String userName) {
|
|
|
|
|
MesPackageDetail packageDetail = mesPackageDetailList.iterator().next();
|
|
|
|
|
//校验包装条码信息
|
|
|
|
|
MesPackage mesPackage = getMesPackageAndCheck(packageDetail.getPackageNo(), packageDetail.getOrganizeCode());
|
|
|
|
|
//校验是否已关闭
|
|
|
|
|
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
//去掉重复零件条码
|
|
|
|
|
List<MesPackageDetail> saveMesPackageDetailList = new ArrayList<>();
|
|
|
|
@ -184,37 +185,40 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
//更新包装表
|
|
|
|
|
updateMesPackage(mesPackage, userName, qty, false);
|
|
|
|
|
}
|
|
|
|
|
return mesPackage;
|
|
|
|
|
if(mesPackage.getIsSealed() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
|
|
|
|
|
return ResultBean.success("当前箱条码已完成装箱,请扫描下一个箱条码!").setResultObject(mesPackage);
|
|
|
|
|
}
|
|
|
|
|
return ResultBean.success("提交成功,请继续扫描零件条码!").setResultObject(mesPackage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ResultBean updateMesPackage(MesPackage mesPackage) {
|
|
|
|
|
String userName = mesPackage.getModifyUser();
|
|
|
|
|
if (Objects.isNull(CommonEnumUtil.TRUE_OR_FALSE.valueOfDescription(mesPackage.getIsSealed()))) {
|
|
|
|
|
MesPcnException.throwMesBusiException("是否封箱不能为空,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("是否封箱不能为空,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
//查询包装条码信息
|
|
|
|
|
MesPackage mesPackageDb = getMesPackageAndCheck(mesPackage.getPackageNo(), mesPackage.getOrganizeCode());
|
|
|
|
|
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) {
|
|
|
|
|
if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackageDb.getIsSealed()) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码【%s】状态为已关箱,请勿重复操作,请检查数据!", mesPackage.getPackageNo());
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码[%s]状态为已关箱,请勿重复操作,请检查数据!", mesPackage.getPackageNo());
|
|
|
|
|
}
|
|
|
|
|
//校验是否存在包装明细
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackage.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackage.getPackageNo(), "packageNo", ddlPackBean);
|
|
|
|
|
if (!mesPackageDetailRDao.isExitByHql(ddlPackBean)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码【%s】下不存在零件条码,不允许关箱,请检查数据!", mesPackage.getPackageNo());
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码[%s]下不存在零件条码,不允许关箱,请检查数据!", mesPackage.getPackageNo());
|
|
|
|
|
}
|
|
|
|
|
//关箱
|
|
|
|
|
updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true);
|
|
|
|
|
return ResultBean.success("关箱成功");
|
|
|
|
|
return ResultBean.success("关箱成功!");
|
|
|
|
|
} else {
|
|
|
|
|
if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码【%s】状态不为已关箱,不需要拆箱,请检查数据!", mesPackage.getPackageNo());
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码[%s]状态不为已关箱,不需要拆箱,请检查数据!", mesPackage.getPackageNo());
|
|
|
|
|
}
|
|
|
|
|
//拆箱
|
|
|
|
|
unboxing(mesPackage, userName, mesPackageDb);
|
|
|
|
|
return ResultBean.success("拆箱成功");
|
|
|
|
|
return ResultBean.success("拆箱成功!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -223,7 +227,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
//查询包装条码信息
|
|
|
|
|
MesPackage mesPackageDb = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode());
|
|
|
|
|
if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码【%s】不为已关箱状态,不允许操作替换条码,请检查数据!", mesPackageDetail.getPackageNo());
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码[%s]不为已关箱状态,不允许操作替换条码,请检查数据!", mesPackageDetail.getPackageNo());
|
|
|
|
|
}
|
|
|
|
|
//校验是否重复扫描
|
|
|
|
|
List<MesPackageDetail> mesPackageDetails = getMesPackageDetailList(mesPackageDetail);
|
|
|
|
@ -233,7 +237,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
for (MesPackageDetail packageDetail : mesPackageDetails) {
|
|
|
|
|
//替换条码是否已经存在
|
|
|
|
|
if (packageDetail.getSerialNumber().equals(mesPackageDetail.getSerialNumber())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码【%s】已存在存在,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码[%s]已存在存在,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
}
|
|
|
|
|
//替换条码
|
|
|
|
|
if (packageDetail.getSerialNumber().equals(mesPackageDetail.getOldSerialNumber())) {
|
|
|
|
@ -246,7 +250,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(!exist){
|
|
|
|
|
MesPcnException.throwMesBusiException("原零件条码【%s】不存在,请检查数据!", mesPackageDetail.getOldSerialNumber());
|
|
|
|
|
MesPcnException.throwMesBusiException("原零件条码[%s]不存在,请检查数据!", mesPackageDetail.getOldSerialNumber());
|
|
|
|
|
}
|
|
|
|
|
mesPackageDetailRDao.saveAll(mesPackageDetails);
|
|
|
|
|
}
|
|
|
|
@ -254,11 +258,11 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
private List<MesPackageDetail> getMesPackageDetailList(MesPackageDetail mesPackageDetail) {
|
|
|
|
|
String[] serialNumberList = new String[]{mesPackageDetail.getSerialNumber(), mesPackageDetail.getOldSerialNumber()};
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackArray(serialNumberList, "serialNumber", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), MesPcnExtConstWords.PACKAGE_NO, ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackArray(serialNumberList, MesPcnExtConstWords.SERIAL_NUMBER, ddlPackBean);
|
|
|
|
|
List<MesPackageDetail> mesPackageDetails = mesPackageDetailRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
if (CollectionUtils.isEmpty(mesPackageDetails)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码【%s】不存在,请检查数据!", mesPackageDetail.getOldSerialNumber());
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码[%s]不存在,请检查数据!", mesPackageDetail.getOldSerialNumber());
|
|
|
|
|
}
|
|
|
|
|
return mesPackageDetails;
|
|
|
|
|
}
|
|
|
|
@ -267,7 +271,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
public void unLock(String organizeCode, String pwd) {
|
|
|
|
|
String cfgValue = configService.getCfgValue(organizeCode, MesCommonConstant.BOXING_ERROR_PROOFING_PWD);
|
|
|
|
|
if (!Objects.equals(cfgValue, pwd)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("解锁失败密码错误,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("解锁失败密码错误,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -286,19 +290,18 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
|
|
|
|
|
private void checkSerialNumber(MesPackageDetail mesPackageDetail) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode());
|
|
|
|
|
// DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), "serialNumber", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), MesPcnExtConstWords.SERIAL_NUMBER, ddlPackBean);
|
|
|
|
|
if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码【%s】已装箱,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码[%s]已装箱,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesPackingDefineDetails> getMesPackingDefineDetails(String organizeCode, String packCode) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packCode, "packCode", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packCode, MesPcnExtConstWords.PACK_CODE, ddlPackBean);
|
|
|
|
|
List<MesPackingDefineDetails> defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
if (CollectionUtils.isEmpty(defineDetails)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱类别代号【%s】包装定义明细未维护,请检查数据!", packCode);
|
|
|
|
|
MesPcnException.throwMesBusiException("箱类别代号[%s]包装定义明细未维护,请检查数据!", packCode);
|
|
|
|
|
}
|
|
|
|
|
return defineDetails;
|
|
|
|
|
}
|
|
|
|
@ -312,8 +315,9 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
|
|
|
|
|
//软删包装明细
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackage.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackage.getPackageNo(), "packageNo", ddlPackBean);
|
|
|
|
|
mesPackageDetailRDao.updateByProperties(new String[]{"modifyUser", "modifyDatetime", "isDeleted"},
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackage.getPackageNo(), MesPcnExtConstWords.PACKAGE_NO, ddlPackBean);
|
|
|
|
|
mesPackageDetailRDao.updateByProperties(
|
|
|
|
|
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.IS_DELETED},
|
|
|
|
|
new Object[]{userName, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()},
|
|
|
|
|
ddlPackBean);
|
|
|
|
|
}
|
|
|
|
@ -322,7 +326,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
private MesPackage getMesPackageAndCheck(String packageNo, String organizeCode) {
|
|
|
|
|
MesPackage mesPackageDb = getMesPackage(organizeCode, packageNo);
|
|
|
|
|
if (Objects.isNull(mesPackageDb)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码【%s】信息不存在,请检查数据!", packageNo);
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码[%s]信息不存在,请检查数据!", packageNo);
|
|
|
|
|
}
|
|
|
|
|
return mesPackageDb;
|
|
|
|
|
}
|
|
|
|
@ -370,7 +374,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
|
|
|
|
|
private List<MesPackageDetail> getMesPackageDetailList(String organizeCode, String packageNo) {
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packageNo, "packageNo", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packageNo, MesPcnExtConstWords.PACKAGE_NO, ddlPackBean);
|
|
|
|
|
List<MesPackageDetail> mesPackageDetails = mesPackageDetailRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
return mesPackageDetails;
|
|
|
|
|
}
|
|
|
|
@ -392,10 +396,12 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
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())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("条码【%s】状态【%s】质量状态【%s】不允许操作装箱防错,请检查数据!", mesPackageDetail.getSerialNumber(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(nextMesProduceSn.getSnStatus()), MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(nextMesProduceSn.getQcStatus()));
|
|
|
|
|
MesPcnException.throwMesBusiException("条码[%s]状态[%s]质量状态[%s]不允许操作装箱防错,请检查数据!",
|
|
|
|
|
mesPackageDetail.getSerialNumber(), MesExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(nextMesProduceSn.getSnStatus()),
|
|
|
|
|
MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(nextMesProduceSn.getQcStatus()));
|
|
|
|
|
}
|
|
|
|
|
if(!partNo.equals(nextMesProduceSn.getPartNo())){
|
|
|
|
|
MesPcnException.throwMesBusiException("条码【%s】零件号【%s】和箱零件【%s】不匹配,请检查数据!", mesPackageDetail.getSerialNumber(), nextMesProduceSn.getPartNo(), partNo);
|
|
|
|
|
MesPcnException.throwMesBusiException("条码[%s]零件号[%s]和箱零件[%s]不匹配,请检查数据!", mesPackageDetail.getSerialNumber(), nextMesProduceSn.getPartNo(), partNo);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//工艺校验
|
|
|
|
@ -403,15 +409,15 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
//查询加工记录
|
|
|
|
|
List<MesProductionRecord> productionRecordList = mesProductionRecordService.findProductionRecordList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber());
|
|
|
|
|
if(CollectionUtils.isEmpty(productionRecordList)){
|
|
|
|
|
MesPcnException.throwMesBusiException("条码【%s】校验装箱防错对应工艺失败,加工记录信息不存在,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
MesPcnException.throwMesBusiException("条码[%s]校验装箱防错对应工艺失败,加工记录信息不存在,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
}
|
|
|
|
|
if(StringUtils.isEmpty(packingDefine.getCraft())){
|
|
|
|
|
MesPcnException.throwMesBusiException("条码【%s】校验装箱防错对应工艺为空,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
MesPcnException.throwMesBusiException("条码[%s]校验装箱防错对应工艺为空,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
}
|
|
|
|
|
//校验条码是否经过该工艺
|
|
|
|
|
Optional<MesProductionRecord> productionRecordOptional = productionRecordList.stream().filter(t -> !StringUtils.isEmpty(t.getCraftCode()) && packingDefine.getCraft().equals(t.getCraftCode())).findFirst();
|
|
|
|
|
if(!productionRecordOptional.isPresent()){
|
|
|
|
|
MesPcnException.throwMesBusiException("条码【%s】校验装箱防错对应工艺【%s】失败,请检查数据!", mesPackageDetail.getSerialNumber(),packingDefine.getCraft());
|
|
|
|
|
MesPcnException.throwMesBusiException("条码[%s]校验装箱防错对应工艺[%s]失败,请检查数据!", mesPackageDetail.getSerialNumber(),packingDefine.getCraft());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -422,9 +428,9 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
for (MesPackingDefineDetails defineDetail : defineDetails) {
|
|
|
|
|
//条码规则为空
|
|
|
|
|
if (StringUtils.isEmpty(defineDetail.getPackageBarcodeRule())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱类别代号【%s】零件号【%s】条码规则未维护,请检查数据!", mesPackage.getPackageSn(), defineDetail.getPartNo());
|
|
|
|
|
MesPcnException.throwMesBusiException("箱类别代号[%s]零件号[%s]条码规则未维护,请检查数据!", mesPackage.getPackageSn(), defineDetail.getPartNo());
|
|
|
|
|
}
|
|
|
|
|
packageBarcodeRule = defineDetail.getPackageBarcodeRule().replace("*", "");
|
|
|
|
|
packageBarcodeRule = defineDetail.getPackageBarcodeRule().replace(MesPcnExtConstWords.ASTERISK, MesPcnExtConstWords.EMPTY);
|
|
|
|
|
//包含箱条码
|
|
|
|
|
if (mesPackageDetail.getSerialNumber().contains(packageBarcodeRule)) {
|
|
|
|
|
partNo = defineDetail.getPartNo();
|
|
|
|
@ -432,28 +438,28 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (Objects.isNull(partNo)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码【%s】未匹配到符合条码规则的数据,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码[%s]未匹配到符合条码规则的数据,请检查数据!", mesPackageDetail.getSerialNumber());
|
|
|
|
|
}
|
|
|
|
|
//校验零件是否一致
|
|
|
|
|
if (!partNo.equals(mesPackage.getPartNo())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码【%s】包装定义明细零件【%s】和箱零件【%s】不一致,请检查数据!", mesPackageDetail.getSerialNumber(), partNo, mesPackage.getPartNo());
|
|
|
|
|
MesPcnException.throwMesBusiException("零件条码[%s]包装定义明细零件[%s]和箱零件[%s]不一致,请检查数据!", mesPackageDetail.getSerialNumber(), partNo, mesPackage.getPartNo());
|
|
|
|
|
}
|
|
|
|
|
return partNo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkNotNull(MesPackageDetail mesPackageDetail) {
|
|
|
|
|
if (StringUtils.isEmpty(mesPackageDetail.getPackageNo())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("包装编码不能为空,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("包装编码不能为空,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(mesPackageDetail.getScanType())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("客户条码规则不能为空,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("客户条码规则不能为空,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void checkSerial(MesPackingDefine packingDefine, String[] split) {
|
|
|
|
|
if (StringUtils.isEmpty(packingDefine.getSerialIdIndex()) || packingDefine.getSerialIdIndex() > split.length
|
|
|
|
|
|| StringUtils.isEmpty(split[packingDefine.getSerialIdIndex() - 1])) {
|
|
|
|
|
MesPcnException.throwMesBusiException("序列号所在位置不存在,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("序列号所在位置不存在,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
String serialNo = split[packingDefine.getSerialIdIndex() - 1];
|
|
|
|
|
}
|
|
|
|
@ -461,28 +467,28 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
private void checkOrganizeCode(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine, String[] split) {
|
|
|
|
|
if (StringUtils.isEmpty(packingDefine.getOrganizeIndex()) || packingDefine.getOrganizeIndex() > split.length
|
|
|
|
|
|| StringUtils.isEmpty(split[packingDefine.getOrganizeIndex() - 1])) {
|
|
|
|
|
MesPcnException.throwMesBusiException("工厂所在位置不存在,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("工厂所在位置不存在,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
String organizeCode = split[packingDefine.getOrganizeIndex() - 1];
|
|
|
|
|
if (!Objects.equals(organizeCode, mesPackageDetail.getOrganizeCode())) {
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码工厂【%s】和当前工厂【%s】不匹配,请检查数据!", organizeCode, mesPackageDetail.getOrganizeCode());
|
|
|
|
|
MesPcnException.throwMesBusiException("箱条码工厂[%s]和当前工厂[%s]不匹配,请检查数据!", organizeCode, mesPackageDetail.getOrganizeCode());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine, String[] split) {
|
|
|
|
|
if (StringUtils.isEmpty(packingDefine.getPartNoIndex()) || packingDefine.getPartNoIndex() > split.length
|
|
|
|
|
|| StringUtils.isEmpty(split[packingDefine.getPartNoIndex() - 1])) {
|
|
|
|
|
MesPcnException.throwMesBusiException("物料号所在位置不存在,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("物料号所在位置不存在,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
return getPart(mesPackageDetail.getOrganizeCode(), split[packingDefine.getPartNoIndex() - 1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesPart getPart(String organizeCode, String partNo) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(partNo, MesPcnExtConstWords.PART_NO, packBean);
|
|
|
|
|
MesPart mesPart = partRDao.getByProperty(packBean);
|
|
|
|
|
if (Objects.isNull(mesPart)) {
|
|
|
|
|
MesPcnException.throwMesBusiException("物料【%s】信息不存在,请检查数据!", partNo);
|
|
|
|
|
MesPcnException.throwMesBusiException("物料[%s]信息不存在,请检查数据!", partNo);
|
|
|
|
|
}
|
|
|
|
|
return mesPart;
|
|
|
|
|
}
|
|
|
|
@ -490,11 +496,11 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
private Double getQty(MesPackingDefine packingDefine, String[] split) {
|
|
|
|
|
if (StringUtils.isEmpty(packingDefine.getQtyIndex()) || packingDefine.getQtyIndex() > split.length
|
|
|
|
|
|| StringUtils.isEmpty(split[packingDefine.getQtyIndex() - 1])) {
|
|
|
|
|
MesPcnException.throwMesBusiException("数量所在位置不存在,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("数量所在位置不存在,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
//校验是否数字
|
|
|
|
|
if (!CheckTool.isNumber(split[packingDefine.getQtyIndex() - 1])) {
|
|
|
|
|
MesPcnException.throwMesBusiException("数量所在位置不为数字类型,请检查数据!");
|
|
|
|
|
MesPcnException.throwMesBusiException("数量所在位置不为数字类型,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
return Double.parseDouble(split[packingDefine.getQtyIndex() - 1]);
|
|
|
|
|
}
|
|
|
|
@ -518,22 +524,22 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer
|
|
|
|
|
|
|
|
|
|
private MesPackage getMesPackage(String organizeCode, String packageNo) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packageNo, "packageNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packageNo, MesPcnExtConstWords.PACKAGE_NO, packBean);
|
|
|
|
|
return mesPackageRDao.getByProperty(packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesPackageSn getMesPackageSn(String organizeCode, String packageNo) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packageNo, "packageNo", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(packageNo, MesPcnExtConstWords.PACKAGE_NO, packBean);
|
|
|
|
|
return mesPackageSnRDao.getByProperty(packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesPackingDefine getMesPackingDefine(MesPackageDetail mesPackageDetail) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getScanType(), "scanType", packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPackageDetail.getScanType(), MesPcnExtConstWords.SCAN_TYPE, packBean);
|
|
|
|
|
MesPackingDefine packingDefine = mesPackingDefineRDao.getByProperty(packBean);
|
|
|
|
|
if (Objects.isNull(packingDefine)) {
|
|
|
|
|
MesPcnException.throwFlowException("客户条码规则在包装定义界面未维护,请检查数据!");
|
|
|
|
|
MesPcnException.throwFlowException("客户条码规则在包装定义界面未维护,请检查数据!");
|
|
|
|
|
}
|
|
|
|
|
return packingDefine;
|
|
|
|
|
}
|
|
|
|
|