diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java index 1e43637..3c5a6ed 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/controller/busi/MesBoxingErrorProofingController.java @@ -82,6 +82,23 @@ public class MesBoxingErrorProofingController { } } + @GetMapping("/do-second-scan") + @ApiOperation(value = "二次装箱扫描") + public ResultBean doSecondScan(MesPackageDetail mesPackageDetail) { + + try { + ValidatorBean.checkNotNull(mesPackageDetail.getPackageNo(), "箱条码不能为空"); + + mesPackageDetail.setOrganizeCode(!StringUtils.isEmpty(mesPackageDetail.getOrganizeCode())?mesPackageDetail.getOrganizeCode():AuthUtil.getOrganizeCode()); + ConvertBean.serviceModelInitialize(mesPackageDetail,!StringUtils.isEmpty(mesPackageDetail.getModifyUser())?mesPackageDetail.getModifyUser():AuthUtil.getSessionUser().getUserName()); + return mesBoxingErrorProofingService.doScan(mesPackageDetail); + } catch (ImppBusiException imppException) { + return ResultBean.fail(imppException); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + @PostMapping("/mes-package-details/saveAll") @ApiOperation(value = "保存包装明细") diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java index 2ca04dc..979c58a 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesBoxingErrorProofingService.java @@ -149,7 +149,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验包装条码信息 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()) { List produceSnList = mesProduceSnExtService.getProduceSnList(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getSerialNumber()); //1.查询包装明细是否包含此零件 List defineDetails = getMesPackingDefineDetailsNew(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn(), mesPackage.getPartNo()); @@ -166,12 +166,12 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验条码规则 MesPart mesPart = getMesPartNew(mesPackageDetail, mesPackage, packingDefine); //包装规格明细 - MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart); + MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart, packingDefine); if (mesPackageDetail.getIsMemoryBoolean()) { //保存包装明细 mesPackageDetailRDao.insert(saveMesPackageDetail); //更新包装表 - updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false); + updateMesPackage(mesPackage, mesPackageDetail.getModifyUser(), 1d, false, packingDefine); } //缓存是否记忆开关 saveRedis(getKey(mesPackageDetail.getOrganizeCode(), mesPackageDetail.getModifyUser()),mesPackageDetail.getIsMemory()); @@ -200,7 +200,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer mesPackageDetailRDao.saveAll(saveMesPackageDetailList); int qty = saveMesPackageDetailList.size(); //更新包装表 - updateMesPackage(mesPackage, userName, qty, false); + updateMesPackage(mesPackage, userName, qty, false, null); } if(mesPackage.getIsSealed() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){ return ResultBean.success("当前箱条码已完成装箱,请扫描下一个箱条码!").setResultObject(mesPackage); @@ -227,7 +227,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer MesPcnException.throwMesBusiException("箱条码[%s]下不存在零件条码,不允许关箱,请检查数据!", mesPackage.getPackageNo()); } //关箱 - updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true); + updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true, null); return ResultBean.success("关箱成功!"); } else { if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackageDb.getIsSealed()) { @@ -294,31 +294,34 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } } - private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { - //校验是否重复扫描 - checkSerialNumber(mesPackageDetail); - //获取包装定义明细 - List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); - //校验是否包含 -// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); - //校验条码信息 - String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails); - //物料信息 - return getPart(mesPackageDetail.getOrganizeCode(), partNo); - } +// private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { +// //校验是否重复扫描 +// checkSerialNumber(mesPackageDetail); +// //获取包装定义明细 +// List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); +// //校验是否包含 +//// String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); +// //校验条码信息 +// String partNo = checkSn(mesPackageDetail, packingDefine, mesPackage, defineDetails); +// //物料信息 +// return getPart(mesPackageDetail.getOrganizeCode(), partNo); +// } private MesPart getMesPartNew(MesPackageDetail mesPackageDetail, MesPackage mesPackage, MesPackingDefine packingDefine) { //校验是否重复扫描 - checkSerialNumber(mesPackageDetail); + checkSerialNumber(mesPackageDetail, packingDefine); //校验条码信息 String partNo = checkSnNew(mesPackageDetail, packingDefine, mesPackage); //物料信息 return getPart(mesPackageDetail.getOrganizeCode(), partNo); } - private void checkSerialNumber(MesPackageDetail mesPackageDetail) { + private void checkSerialNumber(MesPackageDetail mesPackageDetail, MesPackingDefine packingDefine) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), MesPcnExtConstWords.SERIAL_NUMBER, ddlPackBean); + if (Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isSecondPack", ddlPackBean); + } if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) { MesPcnException.throwMesBusiException("零件条码[%s]已装箱,请检查数据!", mesPackageDetail.getSerialNumber()); } @@ -387,13 +390,15 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } - private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close) { + private void updateMesPackage(MesPackage mesPackage, String userName, double qty, boolean close, MesPackingDefine packingDefine) { mesPackage.setQty(MathOperation.add(mesPackage.getQty(), qty)); if (mesPackage.getPackSpecQty() <= mesPackage.getQty() || close) { mesPackage.setIsSealed(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); mesPackage.setLotNo(TimeTool.getToday()); //数据写入接口表回传wms - saveMesPackageResult(mesPackage, userName); + if (packingDefine == null || !Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + saveMesPackageResult(mesPackage, userName); + } } ConvertBean.serviceModelUpdate(mesPackage, userName); mesPackageRDao.update(mesPackage); @@ -418,7 +423,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer return mesPackageDetails; } - private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart) { + private MesPackageDetail getPackageDetail(MesPackageDetail mesPackageDetail, MesPart mesPart, MesPackingDefine packingDefine) { MesPackageDetail saveMesPackageDetail = new MesPackageDetail(); saveMesPackageDetail.setPackageNo(mesPackageDetail.getPackageNo()); saveMesPackageDetail.setSerialNumber(mesPackageDetail.getSerialNumber()); @@ -426,6 +431,11 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer saveMesPackageDetail.setPartName(mesPart.getPartName()); saveMesPackageDetail.setQty(1d); saveMesPackageDetail.setOrganizeCode(mesPackageDetail.getOrganizeCode()); + if (packingDefine != null && Objects.equals(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), packingDefine.getIsConfirmCheck())) { + saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); + } else { + saveMesPackageDetail.setIsSecondPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); + } ConvertBean.serviceModelInitialize(saveMesPackageDetail, mesPackageDetail.getCreateUser()); return saveMesPackageDetail; }