diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesContainerSnBindServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesContainerSnBindServiceImpl.java index 05d7372..4491d9c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesContainerSnBindServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesContainerSnBindServiceImpl.java @@ -381,6 +381,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService @Override public MesContainerSnBindModel doScanBarcode(MesContainerSnBindModel model, boolean bStep) { final String organizeCode = model.getOrganizeCode(); + String barcode = model.getBarCode(); //校验容器条码 MesContainerSn containerSn = containerSnService.checkContainerSn(organizeCode, model.getContainerSn()); MesContainerType containerType = containerTypeRDao.getByProperty( @@ -428,7 +429,6 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService } bottomPackageDetails = new ArrayList<>(); } - String barcode = model.getBarCode(); if (!CollectionUtils.isEmpty(bottomPackageDetails)) { barcode = bottomPackageDetails.get(0).getBarCode(); } @@ -472,6 +472,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService } MesContainerPackageDetailBinding binding = createContainerPackageDetailBinding(packageDetail, MesExtEnumUtil.CONTAINER_RAW_SN_BINDING_STATUS.BINDING, model.getUserName()); + bindContainerSnStation(organizeCode, model.getContainerSn(), model.getBarCode(), model.getUserName()); packageDetails.add(packageDetail); model.setContainerPackage(containerPackage); @@ -483,6 +484,35 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService return model; } + private void bindContainerSnStation(String organizeCode, String containerSn, String barCode, String userName) { + MesContainerPackage barcodePackage = containerPackageRDao.getByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "containerSn"}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), barCode}); + if (barcodePackage == null) { + return; + } + + String topContainerSn = getTopContainerSn(organizeCode, containerSn); + MesContainerSnStation containerSnStation = containerSnStationRDao.getByProperty(new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "topContainerSn"}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), topContainerSn}); + if (containerSnStation == null) { + return; + } + List bottomPackageDetailList = new ArrayList<>(); + getBottomPackageDetails(organizeCode, barcodePackage, bottomPackageDetailList); + final Set containerSnSet = bottomPackageDetailList.stream().map(MesContainerPackageDetail::getContainerSn).collect(Collectors.toSet()); + for (String bottomContainerSn : containerSnSet) { + MesContainerSnStation snStation = new MesContainerSnStation(); + snStation.setOrganizeCode(organizeCode); + snStation.setStation(containerSnStation.getStation()); + snStation.setContainerSn(bottomContainerSn); + snStation.setTopContainerSn(topContainerSn); + snStation.setSeq(1); + ConvertBean.serviceModelInitialize(snStation, userName); + containerSnStationRDao.insert(snStation); + } + } + private void saveContainerPackage(MesContainerSnBindModel model) { MesContainerPackage containerPackage = model.getContainerPackage(); if (containerPackage != null) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindCooperationPackageService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindCooperationPackageService.java index 18bba80..ed8600d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindCooperationPackageService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindCooperationPackageService.java @@ -54,7 +54,7 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue()}); for (MesPackingDefine packingDefine : packingDefines) { - Double qty = checkPackingDefine(organizeCode, packingDefine, barcode); + Double qty = checkPackingDefine(organizeCode, packingDefine, barcode, model.getPartNo()); if (qty != null && qty > 0) { result.put(MesPcnExtConstWords.QTY, qty); result.put(MesPcnExtConstWords.RESULT, true); @@ -64,7 +64,7 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai return result; } - private Double checkPackingDefine(String organizeCode, MesPackingDefine packingDefine, String barcode) { + private Double checkPackingDefine(String organizeCode, MesPackingDefine packingDefine, String barcode, String rulePartNo) { //解析获取信息保存 if (StringUtils.isEmpty(packingDefine.getSplitChar())) { return null; @@ -74,7 +74,10 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai //工厂校验 checkOrganizeCode(organizeCode, packingDefine, split); //获取物料信息是否存在 - getMesPart(organizeCode, packingDefine, split); + MesPart part = getMesPart(organizeCode, packingDefine, split); + if (part == null || !Objects.equals(part.getPartNo(), rulePartNo)) { + return null; + } //获取数量信息是否存在 return getQty(packingDefine, split); } catch (Exception ex) { @@ -96,7 +99,7 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai } } - private void getMesPart(String organizeCode, MesPackingDefine packingDefine, String[] split) { + private MesPart getMesPart(String organizeCode, MesPackingDefine packingDefine, String[] split) { if (StringUtils.isEmpty(packingDefine.getPartNoIndex()) || packingDefine.getPartNoIndex() > split.length || StringUtils.isEmpty(split[packingDefine.getPartNoIndex() - 1])) { MesPcnException.throwMesBusiException("物料号所在位置不存在,请检查数据!"); @@ -121,16 +124,17 @@ public class MesContainerBindCooperationPackageService extends MesAbstractContai MesPcnException.throwMesBusiException("客户零件号[%s]未绑定物料号数据,请检查数据!", split[packingDefine.getPartNoIndex() - 1]); } } - checkPart(organizeCode, partNo); + return checkPart(organizeCode, partNo); } - private void checkPart(String organizeCode, String partNo) { + private MesPart checkPart(String organizeCode, String partNo) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(partNo, MesPcnExtConstWords.PART_NO, packBean); MesPart mesPart = mesPartRDao.getByProperty(packBean); if (Objects.isNull(mesPart)) { MesPcnException.throwMesBusiException("物料[%s]信息不存在,请检查数据!", partNo); } + return mesPart; } private Double getQty(MesPackingDefine packingDefine, String[] split) { diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindPackageSnService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindPackageSnService.java index 4ffc702..81f74a6 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindPackageSnService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindPackageSnService.java @@ -4,7 +4,9 @@ import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesContainerPartsModel; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesPart; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; +import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import lombok.extern.slf4j.Slf4j; @@ -25,6 +27,8 @@ import java.util.Objects; public class MesContainerBindPackageSnService extends MesAbstractContainerBindDispatchService { @Autowired private MesProduceSnRepository produceSnRDao; + @Autowired + private MesPartRepository mesPartRDao; public MesContainerBindPackageSnService() { super(null, MesExtEnumUtil.CONTAINER_PART_MATCH_TYPE.MATCH_TYPE_30); @@ -46,7 +50,18 @@ public class MesContainerBindPackageSnService extends MesAbstractContainerBindDi MesPcnException.throwMesBusiException("自制件箱码【%s】的工厂代码【%s】与当前工厂不匹配, 请检查数据!", barcode, barOrganizeCode); } - String barProductSn = splitBarcode[3]; + String partNo = splitBarcode[3]; + MesPart mesPart = mesPartRDao.getByProperty( + new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "partNo"}, + new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), partNo}); + if (mesPart == null) { + MesPcnException.throwMesBusiException("零件号【%s】在物料表不存在, 请检查数据!", model.getPartNo()); + } + if (!Objects.equals(mesPart.getPartNo(), model.getPartNo())) { + return result; + } + + String barProductSn = splitBarcode[1]; MesProduceSn produceSn = produceSnRDao.getByProperty( new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "productSn"}, new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), barProductSn}); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java index 8ddb0ac..273ab31 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/containerbind/MesContainerBindProductSnService.java @@ -42,6 +42,9 @@ public class MesContainerBindProductSnService extends MesAbstractContainerBindDi result.put(MesPcnExtConstWords.MESSAGE, String.format("扫描条码【%s】在条码表不存在, 请检查数据!", barcode)); return result; } + if (!Objects.equals(produceSn.getPartNo(), model.getPartNo())) { + return result; + } if (!Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.CREATE.getValue()) && !Objects.equals(produceSn.getSnStatus(), MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue())) {