diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesBoxingErrorProofingService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesBoxingErrorProofingService.java index 1e5da3b..abcf68d 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesBoxingErrorProofingService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesBoxingErrorProofingService.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.mes.bean.MesPackage; import cn.estsh.i3plus.pojo.mes.bean.MesPackageDetail; +import cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -28,7 +29,7 @@ public interface IMesBoxingErrorProofingService { void saveMesPackageDetails(List mesPackage, String userName); @ApiOperation(value = "更新包装表") - void updateMesPackage(MesPackage mesPackage); + ResultBean updateMesPackage(MesPackage mesPackage); @ApiOperation(value = "更新包装明细") void updateMesPackageDetails(MesPackageDetail mesPackage); 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 53d2e76..67eb10d 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 @@ -96,8 +96,7 @@ public class MesBoxingErrorProofingController { mesPackage.setOrganizeCode(AuthUtil.getOrganizeCode()); ConvertBean.serviceModelUpdate(mesPackage, AuthUtil.getSessionUser().getUserName()); - mesBoxingErrorProofingService.updateMesPackage(mesPackage); - return ResultBean.success("保存成功"); + return mesBoxingErrorProofingService.updateMesPackage(mesPackage); } catch (ImppBusiException imppException) { return ResultBean.fail(imppException); } catch (Exception e) { 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 2e35c9f..d69834e 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 @@ -17,6 +17,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.repository.*; +import cn.estsh.impp.framework.boot.util.ResultBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -104,28 +105,12 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } //校验包装条码信息 MesPackage mesPackage = getMesPackageAndCheck(mesPackageDetail.getPackageNo(), mesPackageDetail.getOrganizeCode()); - //校验是否重复扫描 - DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean); - DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), "serialNumber", ddlPackBean); - if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) { - MesPcnException.throwMesBusiException("零件条码【%s】已存在该箱,不允许重复扫描", mesPackageDetail.getSerialNumber()); - } //校验是否已关闭 if (CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue() == mesPackage.getIsSealed()) { MesPcnException.throwMesBusiException("箱条码已封箱,不允许扫描零件条码"); } - //获取包装定义明细 - ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(mesPackage.getPackageSn(), "packCode", ddlPackBean); - List defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean); - if (CollectionUtils.isEmpty(defineDetails)) { - MesPcnException.throwMesBusiException("箱类别代号【%s】包装定义明细未维护", mesPackage.getPackageSn()); - } - //校验是否包含 - String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); - //物料信息 - MesPart mesPart = getPart(mesPackageDetail.getOrganizeCode(), partNo); + //校验条码规则 + MesPart mesPart = getMesPart(mesPackageDetail, mesPackage); //包装规格明细 MesPackageDetail saveMesPackageDetail = getPackageDetail(mesPackageDetail, mesPart); if (mesPackageDetail.getIsMemoryBoolean()) { @@ -139,7 +124,6 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } } - @Override public void saveMesPackageDetails(List mesPackageDetailList, String userName) { MesPackageDetail packageDetail = mesPackageDetailList.iterator().next(); @@ -147,15 +131,18 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer //校验包装条码信息 MesPackage mesPackage = getMesPackageAndCheck(packageDetail.getPackageNo(), packageDetail.getOrganizeCode()); //去掉重复零件条码 - checkSerialNumber(mesPackageDetailList, packageDetail, userName); + List saveMesPackageDetailList = new ArrayList<>(); + checkSerialNumber(saveMesPackageDetailList,mesPackageDetailList, packageDetail, userName); //保存包装明细 - mesPackageDetailRDao.saveAll(mesPackageDetailList); + if(!CollectionUtils.isEmpty(saveMesPackageDetailList)){ + mesPackageDetailRDao.saveAll(saveMesPackageDetailList); + } //更新包装表 updateMesPackage(mesPackage, userName, qty, false); } @Override - public void updateMesPackage(MesPackage mesPackage) { + public ResultBean updateMesPackage(MesPackage mesPackage) { String userName = mesPackage.getModifyUser(); if (Objects.isNull(CommonEnumUtil.TRUE_OR_FALSE.valueOfDescription(mesPackage.getIsSealed()))) { MesPcnException.throwMesBusiException("是否封箱不能为空"); @@ -164,16 +151,24 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer 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()); } //关箱 updateMesPackage(mesPackageDb, mesPackage.getModifyUser(), 0d, true); - } else if (CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue() == mesPackage.getIsSealed()) { + 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("拆箱成功"); } } @@ -182,11 +177,13 @@ 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 mesPackageDetails = getMesPackageDetailList(mesPackageDetail); - + //校验条码是否符合规则 + MesPart mesPart = getMesPart(mesPackageDetail, mesPackageDb); + boolean exist = false; for (MesPackageDetail packageDetail : mesPackageDetails) { //替换条码是否已经存在 if (packageDetail.getSerialNumber().equals(mesPackageDetail.getSerialNumber())) { @@ -196,9 +193,15 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer if (packageDetail.getSerialNumber().equals(mesPackageDetail.getOldSerialNumber())) { packageDetail.setSerialNumber(mesPackageDetail.getSerialNumber()); packageDetail.setOldSerialNumber(mesPackageDetail.getOldSerialNumber()); + packageDetail.setPartNo(mesPart.getPartNo()); + packageDetail.setPartName(mesPart.getPartName()); ConvertBean.serviceModelUpdate(packageDetail, mesPackageDetail.getModifyUser()); + exist = true; } } + if(!exist){ + MesPcnException.throwMesBusiException("原零件条码【%s】不存在", mesPackageDetail.getOldSerialNumber()); + } mesPackageDetailRDao.saveAll(mesPackageDetails); } @@ -222,6 +225,37 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } } + private MesPart getMesPart(MesPackageDetail mesPackageDetail, MesPackage mesPackage) { + //校验是否重复扫描 + checkSerialNumber(mesPackageDetail); + //获取包装定义明细 + List defineDetails = getMesPackingDefineDetails(mesPackageDetail.getOrganizeCode(), mesPackage.getPackageSn()); + //校验是否包含 + String partNo = getPartNo(mesPackageDetail, mesPackage, defineDetails); + //物料信息 + return getPart(mesPackageDetail.getOrganizeCode(), partNo); + } + + private void checkSerialNumber(MesPackageDetail mesPackageDetail) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPackageDetail.getOrganizeCode()); + DdlPreparedPack.getStringEqualPack(mesPackageDetail.getPackageNo(), "packageNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(mesPackageDetail.getSerialNumber(), "serialNumber", ddlPackBean); + if (mesPackageDetailRDao.isExitByHql(ddlPackBean)) { + MesPcnException.throwMesBusiException("零件条码【%s】已存在该箱,不允许重复扫描", mesPackageDetail.getSerialNumber()); + } + } + + private List getMesPackingDefineDetails(String organizeCode, String packCode) { + DdlPackBean ddlPackBean; + ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(packCode, "packCode", ddlPackBean); + List defineDetails = mesPackingDefineDetailsRDao.findByHqlWhere(ddlPackBean); + if (CollectionUtils.isEmpty(defineDetails)) { + MesPcnException.throwMesBusiException("箱类别代号【%s】包装定义明细未维护", packCode); + } + return defineDetails; + } + private void unboxing(MesPackage mesPackage, String userName, MesPackage mesPackageDb) { //更新包装表 mesPackageDb.setQty(0d); @@ -241,20 +275,21 @@ 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; } - private void checkSerialNumber(List mesPackageDetailList, MesPackageDetail packageDetail, String userName) { + private void checkSerialNumber(List saveMesPackageDetailList,List mesPackageDetailList, MesPackageDetail packageDetail, String userName) { List mesPackageDetails = getMesPackageDetailList(packageDetail.getOrganizeCode(), packageDetail.getPackageNo()); if (!CollectionUtils.isEmpty(mesPackageDetails)) { List serialNumberList = mesPackageDetails.stream().map(MesPackageDetail::getSerialNumber).collect(Collectors.toList()); for (MesPackageDetail mesPackageDetail : mesPackageDetailList) { - if (serialNumberList.contains(mesPackageDetail.getSerialNumber())) { - mesPackageDetailList.remove(mesPackageDetail); - } ConvertBean.serviceModelInitialize(mesPackageDetail, userName); + if (!serialNumberList.contains(mesPackageDetail.getSerialNumber())) { + //校验零件规则 + saveMesPackageDetailList.add(mesPackageDetail); + } } } } @@ -319,7 +354,7 @@ public class MesBoxingErrorProofingService implements IMesBoxingErrorProofingSer } } if (Objects.isNull(partNo)) { - MesPcnException.throwMesBusiException("零件条码【%s】未匹配到符合条码规则的数据", mesPackage.getSerialNumber()); + MesPcnException.throwMesBusiException("零件条码【%s】未匹配到符合条码规则的数据", mesPackageDetail.getSerialNumber()); } return partNo; }