Merge branch 'dev-temp-wj-2412120000-44263' into dev

tags/yfai-pcn-ext-v2.5
王杰 5 months ago
commit bf87b62618

@ -26,10 +26,10 @@ public interface IMesBoxingErrorProofingService {
Integer getIsMemory(String organizeCode, String userName); Integer getIsMemory(String organizeCode, String userName);
@ApiOperation(value = "扫描") @ApiOperation(value = "扫描")
MesPackage doScan(MesPackageDetail mesPackageDetail); ResultBean doScan(MesPackageDetail mesPackageDetail);
@ApiOperation(value = "保存包装明细") @ApiOperation(value = "保存包装明细")
MesPackage saveMesPackageDetails(List<MesPackageDetail> mesPackage, String userName); ResultBean saveMesPackageDetails(List<MesPackageDetail> mesPackage, String userName);
@ApiOperation(value = "更新包装表") @ApiOperation(value = "更新包装表")
ResultBean updateMesPackage(MesPackage mesPackage); ResultBean updateMesPackage(MesPackage mesPackage);

@ -74,8 +74,7 @@ public class MesBoxingErrorProofingController {
mesPackageDetail.setOrganizeCode(!StringUtils.isEmpty(mesPackageDetail.getOrganizeCode())?mesPackageDetail.getOrganizeCode():AuthUtil.getOrganizeCode()); mesPackageDetail.setOrganizeCode(!StringUtils.isEmpty(mesPackageDetail.getOrganizeCode())?mesPackageDetail.getOrganizeCode():AuthUtil.getOrganizeCode());
ConvertBean.serviceModelInitialize(mesPackageDetail,!StringUtils.isEmpty(mesPackageDetail.getModifyUser())?mesPackageDetail.getModifyUser():AuthUtil.getSessionUser().getUserName()); ConvertBean.serviceModelInitialize(mesPackageDetail,!StringUtils.isEmpty(mesPackageDetail.getModifyUser())?mesPackageDetail.getModifyUser():AuthUtil.getSessionUser().getUserName());
MesPackage mesPackage = mesBoxingErrorProofingService.doScan(mesPackageDetail); return mesBoxingErrorProofingService.doScan(mesPackageDetail);
return ResultBean.success("扫描成功").setResultObject(mesPackage);
} catch (ImppBusiException imppException) { } catch (ImppBusiException imppException) {
return ResultBean.fail(imppException); return ResultBean.fail(imppException);
} catch (Exception e) { } catch (Exception e) {
@ -94,8 +93,7 @@ public class MesBoxingErrorProofingController {
}); });
MesPackageDetail next = mesPackageDetailList.iterator().next(); MesPackageDetail next = mesPackageDetailList.iterator().next();
String userName = !StringUtils.isEmpty(next.getModifyUser())?next.getModifyUser():AuthUtil.getSessionUser().getUserName(); String userName = !StringUtils.isEmpty(next.getModifyUser())?next.getModifyUser():AuthUtil.getSessionUser().getUserName();
MesPackage mesPackage = mesBoxingErrorProofingService.saveMesPackageDetails(mesPackageDetailList, userName); return mesBoxingErrorProofingService.saveMesPackageDetails(mesPackageDetailList, userName);
return ResultBean.success("保存成功").setResultObject(mesPackage);
} catch (ImppBusiException imppException) { } catch (ImppBusiException imppException) {
return ResultBean.fail(imppException); return ResultBean.fail(imppException);
} catch (Exception e) { } catch (Exception e) {

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

@ -239,6 +239,8 @@ public class MesPcnExtConstWords {
public static final String CAR_MODEL_CODE = "carModelCode"; public static final String CAR_MODEL_CODE = "carModelCode";
// 客户订单号 // 客户订单号
public static final String CUST_ORDER_NO = "custOrderNo"; public static final String CUST_ORDER_NO = "custOrderNo";
//包装条码
public static final String PACKAGE_NO = "packageNo";
//包条码 //包条码
public static final String PACKAGE_SN = "packageSn"; public static final String PACKAGE_SN = "packageSn";
//包类型 //包类型
@ -279,6 +281,8 @@ public class MesPcnExtConstWords {
public static final String REPORT_TYPE = "reportType"; public static final String REPORT_TYPE = "reportType";
//发运时间 //发运时间
public static final String SHIPPING_TIME = "shippingTime"; public static final String SHIPPING_TIME = "shippingTime";
//扫描类别
public static final String SCAN_TYPE = "scanType";
//BaseBean字段不包含工厂, 用于对象复制剔除属性BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties) //BaseBean字段不包含工厂, 用于对象复制剔除属性BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties)

Loading…
Cancel
Save