From d883d077fd7a78a905f281cfae5213e21b275fe4 Mon Sep 17 00:00:00 2001 From: jun Date: Wed, 11 Sep 2024 11:26:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=99=E5=8C=85=E7=BB=91=E5=AE=9A=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=A4=96=E5=8D=8F=E4=BB=B6=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IMesRecyclablePackageService.java | 6 ++ .../MesRecyclablePackageBindingServiceImpl.java | 72 +++++++++++++++------- .../MesRecyclablePackageServiceImpl.java | 19 ++++++ 3 files changed, 75 insertions(+), 22 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/recyclablepackage/IMesRecyclablePackageService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/recyclablepackage/IMesRecyclablePackageService.java index 8daedd4..25cfe08 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/recyclablepackage/IMesRecyclablePackageService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/recyclablepackage/IMesRecyclablePackageService.java @@ -25,10 +25,16 @@ public interface IMesRecyclablePackageService { @ApiOperation("查询回收包装零件") List findMesRecyclablePackagePartByPackageTypeCode(String organizeCode, String packageTypeCode); + @ApiOperation("校验回收包装零件") + List checkMesRecyclablePackagePart(String organizeCode, String packageTypeCode); + @ApiOperation("查询回收包装零件") MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo); @ApiOperation("查询回收包装类型") MesRecyclablePackageType getMesRecyclablePackageTypeByPackageTypeCode(String organizeCode, String packageTypeCode); + @ApiOperation("校验回收包装类型") + MesRecyclablePackageType checkMesRecyclablePackageType(String organizeCode, String packageTypeCode); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java index f123fda..439f124 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageBindingServiceImpl.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.recyclablepackage; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageBindingService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.recyclablepackage.IMesRecyclablePackageService; @@ -15,23 +16,18 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPartSap; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; -import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackage; -import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBinding; -import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackageBindingDetail; -import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.MesRecyclablePackagePart; +import cn.estsh.i3plus.pojo.mes.bean.recyclablepackage.*; import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackageBindingRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.UUID; +import java.util.*; import java.util.stream.Collectors; /** @@ -147,12 +143,12 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac private MesRecyclablePackageBinding doScanPackageSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) { //校验包装 - MesRecyclablePackage mesRecyclablePackage = mesRecyclablePackageService.checkMesRecyclablePackage(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn()); + mesRecyclablePackageService.checkMesRecyclablePackage(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn()); //绑定主表信息 MesRecyclablePackageBinding mesRecyclablePackageBinding = getMesRecyclablePackageBindingByPackageSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn()); if (Objects.isNull(mesRecyclablePackageBinding)) { //保存包装 - mesRecyclablePackageBinding = insertMesRecyclablePackageBinding(mesRecyclablePackageBindingModel, mesRecyclablePackage.getPackageTypeCode()); + mesRecyclablePackageBinding = insertMesRecyclablePackageBinding(mesRecyclablePackageBindingModel); } return mesRecyclablePackageBinding; } @@ -166,14 +162,18 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac } //校验零件条码是否扫描 checkIsScan(mesRecyclablePackageBindingModel); + //查询包条码信息 + MesRecyclablePackage mesRecyclablePackage = mesRecyclablePackageService.checkMesRecyclablePackage(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getPackageSn()); + //查询包装零件 + List packagePartList = mesRecyclablePackageService.checkMesRecyclablePackagePart(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackage.getPackageTypeCode()); //条码信息 - MesProduceSn mesProduceSn = getMesProduceSn(mesRecyclablePackageBindingModel); + MesProduceSn mesProduceSn = getMesProduceSn(mesRecyclablePackageBindingModel,packagePartList); //记录绑定明细 insertMesRecyclablePackageBindingDetail(mesRecyclablePackageBindingModel.getUserName(), mesRecyclablePackageBinding, mesProduceSn); //更新数量 mesRecyclablePackageBinding.setTotalQty(findMesRecyclablePackageBindingDetailByPidCount(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBinding.getId())); //自动关箱 - if (getRecyclablePackagePart(mesRecyclablePackageBindingModel, mesRecyclablePackageBinding.getPackageTypeCode(), mesProduceSn.getPartNo()).getQty().intValue() <= mesRecyclablePackageBinding.getTotalQty()) { + if (getMesRecyclablePackagePart(mesRecyclablePackage, packagePartList, mesProduceSn.getPartNo()).getQty().intValue() <= mesRecyclablePackageBinding.getTotalQty()) { mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.CLOSED.getValue()); } ConvertBean.serviceModelUpdate(mesRecyclablePackageBinding, mesRecyclablePackageBindingModel.getUserName()); @@ -181,6 +181,14 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac return mesRecyclablePackageBinding; } + private MesRecyclablePackagePart getMesRecyclablePackagePart(MesRecyclablePackage mesRecyclablePackage, List packagePartList, String partNo) { + Optional packagePart = packagePartList.stream().filter(t -> t.getPartNo().equals(partNo)).findFirst(); + if(!packagePart.isPresent()){ + MesPcnException.throwMesBusiException("回用包装类型【%s】零件【%s】数据不存在", mesRecyclablePackage.getPackageTypeCode(), partNo); + } + return packagePart.get(); + } + private void checkIsScan(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) { List detailByProductSn = findMesRecyclablePackageBindingDetailByProductSn(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn()); if (!CollectionUtils.isEmpty(detailByProductSn)) { @@ -188,21 +196,40 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac } } - private MesProduceSn getMesProduceSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) { + private MesProduceSn getMesProduceSn(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel,List mesRecyclablePackagePartList) { List produceSnList = mesProduceSnExtService.getProduceSnList(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn()); if (CollectionUtils.isEmpty(produceSnList)) { - MesPcnException.throwMesBusiException("条码【%s】信息不存在", mesRecyclablePackageBindingModel.getProductSn()); + //外协件校验 + MesRecyclablePackagePart mesRecyclablePackagePart = getMesRecyclablePackagePart(mesRecyclablePackageBindingModel, mesRecyclablePackagePartList); + if(Objects.isNull(mesRecyclablePackagePart)){ + MesPcnException.throwMesBusiException("条码【%s】不存在", mesRecyclablePackageBindingModel.getProductSn()); + } + //封装数据 + MesPartSap mesPartSapByPartNo = mesPartService.getMesPartSapByPartNo(mesRecyclablePackagePart.getPartNo(), mesRecyclablePackageBindingModel.getOrganizeCode()); + MesProduceSn mesProduceSn = new MesProduceSn(); + mesProduceSn.setPartNo(mesRecyclablePackagePart.getPartNo()); + mesProduceSn.setPartName(mesPartSapByPartNo.getPartName()); + mesProduceSn.setProductSn(mesRecyclablePackageBindingModel.getProductSn()); + return mesProduceSn; } return produceSnList.stream().sorted(Comparator.comparing(MesProduceSn::getCreateDatetime).reversed()).collect(Collectors.toList()).iterator().next(); } - private MesRecyclablePackagePart getRecyclablePackagePart(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, String packageTypeCode, String partNo) { - MesPartSap mesPartSapByPartNo = mesPartService.getMesPartSapByPartNo(partNo, mesRecyclablePackageBindingModel.getOrganizeCode()); - MesRecyclablePackagePart recyclablePackagePart = mesRecyclablePackageService.getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(mesRecyclablePackageBindingModel.getOrganizeCode(), packageTypeCode, mesPartSapByPartNo.getPartNo()); - if (Objects.isNull(recyclablePackagePart)) { - MesPcnException.throwMesBusiException("条码【%s】找不到对应的零件", mesRecyclablePackageBindingModel.getProductSn()); + private MesRecyclablePackagePart getMesRecyclablePackagePart(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, List mesRecyclablePackagePartList) { + //外协件 + MesRecyclablePackagePart checkPassRecyclablePackagePart = null; + for (MesRecyclablePackagePart mesRecyclablePackagePart : mesRecyclablePackagePartList) { + // 校验正则表达式 + if (checkRule(mesRecyclablePackageBindingModel, mesRecyclablePackagePart.getProductSnRule())) { + checkPassRecyclablePackagePart = mesRecyclablePackagePart; + break; + } } - return recyclablePackagePart; + return checkPassRecyclablePackagePart; + } + + private boolean checkRule(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel,String rule) { + return (Boolean) ((IMesNumberRuleMatchDispatchService) SpringContextsUtil.getBean(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_20.getStrategyClass())).matchNumberRule(mesRecyclablePackageBindingModel.getOrganizeCode(), mesRecyclablePackageBindingModel.getProductSn(), rule, rule).get(MesPcnExtConstWords.RESULT); } private void insertMesRecyclablePackageBindingDetail(String userName, MesRecyclablePackageBinding mesRecyclablePackageBinding, MesProduceSn mesProduceSn) { @@ -215,16 +242,17 @@ public class MesRecyclablePackageBindingServiceImpl implements IMesRecyclablePac mesRecyclablePackageBindingDetail.setQty(MesPcnExtConstWords.ONE); mesRecyclablePackageBindingDetail.setStatus(MesPcnExtConstWords.ZERO); mesRecyclablePackageBindingDetail.setLotNumber(mesProduceSn.getLotNo()); + mesRecyclablePackageBindingDetail.setSubType(Objects.isNull(mesProduceSn.getId()) ? MesExtEnumUtil.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE_20.getValue() : MesExtEnumUtil.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE.RECYCLABLE_PACKAGE_BINDING_DETAIL_SUB_TYPE_10.getValue()); ConvertBean.serviceModelInitialize(mesRecyclablePackageBindingDetail, userName); mesRecyclablePackageBindingDetailRepository.insert(mesRecyclablePackageBindingDetail); } - private MesRecyclablePackageBinding insertMesRecyclablePackageBinding(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel, String packageTypeCode) { + private MesRecyclablePackageBinding insertMesRecyclablePackageBinding(MesRecyclablePackageBindingModel mesRecyclablePackageBindingModel) { MesRecyclablePackageBinding mesRecyclablePackageBinding = new MesRecyclablePackageBinding(); mesRecyclablePackageBinding.setOrganizeCode(mesRecyclablePackageBindingModel.getOrganizeCode()); mesRecyclablePackageBinding.setPackageSn(mesRecyclablePackageBindingModel.getPackageSn()); mesRecyclablePackageBinding.setHangerPackageSn(mesRecyclablePackageBindingModel.getPackageSn()); - mesRecyclablePackageBinding.setPackageTypeCode(packageTypeCode); + mesRecyclablePackageBinding.setTypeCode("10"); mesRecyclablePackageBinding.setStatus(MesExtEnumUtil.RECYCLABLE_PACKAGE_PACKAGE_BINDING_STATUS.UNCLOSED.getValue()); mesRecyclablePackageBinding.setTotalQty(MesPcnExtConstWords.ZERO); mesRecyclablePackageBinding.setFid(UUID.randomUUID().toString()); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageServiceImpl.java index 31686ad..02970ba 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/recyclablepackage/MesRecyclablePackageServiceImpl.java @@ -14,6 +14,7 @@ import cn.estsh.i3plus.pojo.mes.repository.recyclablepackage.MesRecyclablePackag import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; @@ -69,6 +70,15 @@ public class MesRecyclablePackageServiceImpl implements IMesRecyclablePackageSer } @Override + public List checkMesRecyclablePackagePart(String organizeCode, String packageTypeCode) { + List mesRecyclablePackagePartList = this.findMesRecyclablePackagePartByPackageTypeCode(organizeCode, packageTypeCode); + if (CollectionUtils.isEmpty(mesRecyclablePackagePartList)) { + MesPcnException.throwMesBusiException("回用包类型【%s】包装零件信息不存在", packageTypeCode); + } + return mesRecyclablePackagePartList; + } + + @Override public MesRecyclablePackagePart getMesRecyclablePackagePartByPackageTypeCodeAndPartNo(String organizeCode, String packageTypeCode, String partNo) { if (StringUtil.isEmptyAndNull(organizeCode) || StringUtil.isEmptyAndNull(packageTypeCode) || StringUtil.isEmptyAndNull(partNo)) { return null; @@ -88,4 +98,13 @@ public class MesRecyclablePackageServiceImpl implements IMesRecyclablePackageSer new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.PACKAGE_TYPE_CODE}, new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), packageTypeCode}); } + + @Override + public MesRecyclablePackageType checkMesRecyclablePackageType(String organizeCode, String packageTypeCode) { + MesRecyclablePackageType recyclablePackageType = this.getMesRecyclablePackageTypeByPackageTypeCode(organizeCode, packageTypeCode); + if (Objects.isNull(recyclablePackageType)) { + MesPcnException.throwMesBusiException("回用包类型【%s】信息不存在", packageTypeCode); + } + return recyclablePackageType; + } }