From 61c351f4587e012012a545a9e0bd9f7600d5e238 Mon Sep 17 00:00:00 2001 From: jun Date: Mon, 28 Oct 2024 17:29:26 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=9C=E6=B9=96=E5=8F=91=E8=BF=90=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=94=AF=E4=B8=80=E6=80=A7=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pcn/api/busi/IMesPartShippingGroupService.java | 5 +- .../pcn/api/busi/IMesShippingSnUniqueService.java | 23 ++++++++++ .../busi/MesPartShippingGroupService.java | 22 +++++++-- .../busi/MesShippingSnUniqueServiceImpl.java | 53 ++++++++++++++++++++++ .../busi/MesSortShippingCheckService.java | 10 +++- .../MesShippingScanSnStrategyServiceImpl.java | 33 +++++++++++--- .../CustCodeWhqrNumberRuleStrategyService.java | 39 ++++++++++++++++ 7 files changed, 173 insertions(+), 12 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingSnUniqueService.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingSnUniqueServiceImpl.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/CustCodeWhqrNumberRuleStrategyService.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java index 96f668e..8599268 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesPartShippingGroupService.java @@ -2,7 +2,7 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; -import cn.estsh.i3plus.pojo.mes.bean.MesPullingOrderInfo; +import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import io.swagger.annotations.ApiOperation; @@ -24,4 +24,7 @@ public interface IMesPartShippingGroupService { @ApiOperation(value = "打印发运单数据") List doMesMesShippingOrderManagementPrint(MesShippingOrderManagement model, String userName); + + @ApiOperation(value = "发运组明细") + MesPartShippingGroupDetail getMesPartShippingGroupDetail(String organizeCode, String shippingGroupCode, String partNo, String custPartNo); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingSnUniqueService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingSnUniqueService.java new file mode 100644 index 0000000..41ec763 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesShippingSnUniqueService.java @@ -0,0 +1,23 @@ +package cn.estsh.i3plus.ext.mes.pcn.api.busi; + +import cn.estsh.i3plus.pojo.mes.bean.MesShippingSnUnique; +import io.swagger.annotations.ApiOperation; + +/** + * @Description : 发运条码唯一性 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/28 15:09 + * @Modify: + **/ +public interface IMesShippingSnUniqueService { + + @ApiOperation("查询发运唯一性") + MesShippingSnUnique getMesShippingSnUnique(String organizeCode, String productSn); + + @ApiOperation("校验唯一性") + Boolean checkMesShippingSnUnique(String organizeCode, String productSn); + + @ApiOperation("新增唯一性校验") + void insertMesShippingSnUnique(String organizeCode, String productSn,String shippingCode,String userName); +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java index 1fa5b6a..9a00b89 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesPartShippingGroupService.java @@ -8,8 +8,10 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; +import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; +import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesPartShippingGroupRepository; import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository; @@ -34,13 +36,17 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService @Autowired private MesShippingOrderManagementDetailRepository shippingOrderManagementDetailRepository; - public List findAll( DdlPackBean packBean) { - List detailDeleteList = shippingGroupRepository.findByHqlWhere(packBean); - return detailDeleteList; + + @Autowired + private MesPartShippingGroupDetailRepository mesPartShippingGroupDetailRepository; + + public List findAll(DdlPackBean packBean) { + return shippingGroupRepository.findByHqlWhere(packBean); } @Override public MesPartShippingGroup getMesPartShippingGroup(String organizeCode, String shippingGroupCode) { + if(StringUtil.isEmpty(organizeCode) || StringUtil.isEmpty(shippingGroupCode)) return null; DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(shippingGroupCode, "shippingGroupCode", packBean); return shippingGroupRepository.getByProperty(packBean); @@ -78,4 +84,14 @@ public class MesPartShippingGroupService implements IMesPartShippingGroupService } return pullingOrderInfos; } + + @Override + public MesPartShippingGroupDetail getMesPartShippingGroupDetail(String organizeCode, String shippingGroupCode, String partNo, String custPartNo) { + if(StringUtil.isEmpty(organizeCode) || StringUtil.isEmpty(shippingGroupCode) || StringUtil.isEmpty(partNo) || StringUtil.isEmpty(custPartNo)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(shippingGroupCode, "shippingGroupCode", packBean); + DdlPreparedPack.getStringEqualPack(partNo, "partNo", packBean); + DdlPreparedPack.getStringEqualPack(custPartNo, "custPartNo", packBean); + return mesPartShippingGroupDetailRepository.getByProperty(packBean); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingSnUniqueServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingSnUniqueServiceImpl.java new file mode 100644 index 0000000..b342ca5 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesShippingSnUniqueServiceImpl.java @@ -0,0 +1,53 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; + +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesShippingSnUniqueService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; +import cn.estsh.i3plus.pojo.mes.bean.MesShippingSnUnique; +import cn.estsh.i3plus.pojo.mes.repository.MesShippingSnUniqueRepository; +import groovy.util.logging.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @Description : 发运条码唯一性 + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/28 15:15 + * @Modify: + **/ +@Service +@Slf4j +public class MesShippingSnUniqueServiceImpl implements IMesShippingSnUniqueService { + + @Autowired + private MesShippingSnUniqueRepository mesShippingSnUniqueRepository; + + @Override + public MesShippingSnUnique getMesShippingSnUnique(String organizeCode, String productSn) { + if(StringUtil.isEmpty(organizeCode) || StringUtil.isEmpty(productSn)) return null; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(productSn, "productSn", packBean); + return mesShippingSnUniqueRepository.getByProperty(packBean); + } + + @Override + public Boolean checkMesShippingSnUnique(String organizeCode, String productSn) { + if(StringUtil.isEmpty(organizeCode) || StringUtil.isEmpty(productSn)) return false; + DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); + DdlPreparedPack.getStringEqualPack(productSn, "productSn", packBean); + return mesShippingSnUniqueRepository.isExitByHql(packBean); + } + + @Override + public void insertMesShippingSnUnique(String organizeCode, String productSn, String shippingCode,String userName) { + MesShippingSnUnique mesShippingSnUnique = new MesShippingSnUnique(); + mesShippingSnUnique.setOrganizeCode(organizeCode); + mesShippingSnUnique.setProductSn(productSn); + mesShippingSnUnique.setShippingCode(shippingCode); + ConvertBean.serviceModelInitialize(mesShippingSnUnique,userName); + mesShippingSnUniqueRepository.insert(mesShippingSnUnique); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java index 7fa29bf..d95016c 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesSortShippingCheckService.java @@ -94,6 +94,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService @Autowired private IMesEmergencyLocationService mesEmergencyLocationService; + @Autowired + private IMesShippingSnUniqueService mesShippingSnUniqueService; + @Override public MesSortShippingCheckModel doShippingOrderNoQuery(MesShippingOrderManagement shippingOrderManagement) { //校验发运单 @@ -423,7 +426,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService DdlPreparedPack.getNumEqualPack(orderManagement.getId(), "pid", orderManagementDetailPackBean); List orderManagementDetailList = shippingOrderManagementDetailRepository.findByHqlWhere(orderManagementDetailPackBean); List detailList = model.getDetailList(); - Map> custInfoSeqMap = detailList.stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getCustInfoSeq)); + Map> custInfoSeqMap = detailList.stream().collect(Collectors.groupingBy(MesShippingOrderManagementDetail::getId)); List produceSnList = new ArrayList<>(); List mesWorkOrderList = new ArrayList<>(); @@ -433,7 +436,7 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService if (Objects.equals(orderManagement.getIsEnableMemory(), MesCommonConstant.TRUE_INTEGER)) { DdlPreparedPack.getStringEqualPack(detail.getBarcode(), "custSn", packBean); } else { - List mesShippingOrderManagementDetails = custInfoSeqMap.get(detail.getCustInfoSeq()); + List mesShippingOrderManagementDetails = custInfoSeqMap.get(detail.getId()); MesShippingOrderManagementDetail managementDetail = mesShippingOrderManagementDetails.get(0); detail.setRemark(managementDetail.getRemark()); detail.setStatus(managementDetail.getStatus()); @@ -450,6 +453,9 @@ public class MesSortShippingCheckService implements IMesSortShippingCheckService produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); ConvertBean.serviceModelUpdate(produceSn, userInfo); produceSnList.add(produceSn); + } else { + //记录唯一性校验表 + mesShippingSnUniqueService.insertMesShippingSnUnique(organizeCode, detail.getBarcode(), orderManagement.getShippingCode(), userInfo); } //更新工单 if(!StringUtils.isEmpty(detail.getVisualOrderNo())){ diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java index f28dcf2..1908e4d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/shippingscan/strategy/MesShippingScanSnStrategyServiceImpl.java @@ -1,7 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.shippingscan.strategy; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; -import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.*; import cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect.MonitorLog; import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi.shippingscan.IMesShippingScanStrategyService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; @@ -13,7 +12,9 @@ import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; +import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroup; +import cn.estsh.i3plus.pojo.mes.bean.MesPartShippingGroupDetail; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagement; import cn.estsh.i3plus.pojo.mes.bean.shipping.MesShippingOrderManagementDetail; @@ -23,6 +24,7 @@ import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementDetailRepos import cn.estsh.i3plus.pojo.mes.repository.MesShippingOrderManagementRepository; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import groovy.util.logging.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -61,7 +63,12 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr @Autowired private IMesConfigService mesConfigService; - @Override + @Autowired + private IMesPartShippingGroupService mesPartShippingGroupService; + + @Autowired + private IMesShippingSnUniqueService mesShippingSnUniqueService; + public MesSortShippingCheckModel doScan(MesSortShippingCheckModel model, MesShippingOrderManagement orderManagement, MesPartShippingGroup shippingGroup) { //校验条码 MesProduceSn produceSn = checkSn(model); @@ -130,6 +137,7 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr produceSn.setSerialNumber(model.getSn()); produceSn.setProductSn(model.getSn()); produceSn.setPartNo(mesShippingOrderManagementDetail.getPartNo()); + produceSn.setOrganizeCode(model.getOrganizeCode()); } return produceSn; } @@ -150,15 +158,20 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr private MesShippingOrderManagementDetail getMesShippingOrderManagementDetail(MesSortShippingCheckModel model) { //外部解析条码长度卡控 String cfgValue = mesConfigService.getCfgValue(model.getOrganizeCode(), MesPcnExtConstWords.MAX_SHIPPING_BARCODE_LENGTH); - if (Integer.parseInt(cfgValue) < model.getSn().length()) + if (Integer.parseInt(cfgValue) < model.getSn().length()) { MesPcnException.throwMesBusiException("【%s】此条码长度超过【%s】位,请检查数据!", model.getSn(), cfgValue); - List detailList = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getCustPartNo()) && model.getSn().startsWith(k.getCustPartNo()) && StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).collect(Collectors.toList()); + } + //唯一性校验 + if (mesShippingSnUniqueService.checkMesShippingSnUnique(model.getOrganizeCode(),model.getSn())) { + throw new ImppBusiException(String.format("【%s】条码唯一性校验数据已存在,请检查数据!", model.getSn())); + } + List detailList = model.getDetailList().stream().filter(k -> !StringUtils.isEmpty(k.getCustPartNo()) && StringUtils.isEmpty(k.getBarcode()) && !Objects.equals(k.getIsScanFlg(), MesCommonConstant.TRUE_INTEGER)).collect(Collectors.toList()); MesShippingOrderManagementDetail mesShippingOrderManagementDetail = null; for (MesShippingOrderManagementDetail managementDetail : detailList) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(model.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(managementDetail.getPartNo(), "erpPartNo", packBean); DdlPreparedPack.getStringEqualPack(managementDetail.getCustPartNo(), "custPartNo", packBean); - if (mesCustomerPartRepository.isExitByHql(packBean)) { + if (checkMesPartShippingGroupDetailRule(model, managementDetail) && mesCustomerPartRepository.isExitByHql(packBean)) { mesShippingOrderManagementDetail = managementDetail; break; } @@ -199,6 +212,9 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr produceSn.setSystemSyncStatus(CommonEnumUtil.FALSE); ConvertBean.serviceModelUpdate(produceSn, userInfo); produceSnExtService.update(produceSn); + }else{ + //记录唯一性校验表 + mesShippingSnUniqueService.insertMesShippingSnUnique(orderManagement.getOrganizeCode(),detail.getBarcode(),orderManagement.getShippingCode(),userInfo); } } } @@ -214,4 +230,9 @@ public class MesShippingScanSnStrategyServiceImpl implements IMesShippingScanStr shippingOrderManagementDetailRepository.update(item); } + private Boolean checkMesPartShippingGroupDetailRule(MesSortShippingCheckModel model, MesShippingOrderManagementDetail managementDetail) { + MesPartShippingGroupDetail mesPartShippingGroupDetail = mesPartShippingGroupService.getMesPartShippingGroupDetail(model.getOrganizeCode(), model.getMesPartShippingGroup().getShippingGroupCode(), managementDetail.getPartNo(), managementDetail.getCustPartNo()); + return !Objects.isNull(mesPartShippingGroupDetail) && !StringUtil.isEmpty(mesPartShippingGroupDetail.getSnRule()) && ((Boolean) ((IMesNumberRuleMatchDispatchService) SpringContextsUtil.getBean(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_20.getStrategyClass())).matchNumberRule(model.getOrganizeCode(), model.getSn(), mesPartShippingGroupDetail.getSnRule(), mesPartShippingGroupDetail.getSnRule()).get(MesPcnExtConstWords.RESULT)); + } + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/CustCodeWhqrNumberRuleStrategyService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/CustCodeWhqrNumberRuleStrategyService.java new file mode 100644 index 0000000..0ad0234 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/numberrule/CustCodeWhqrNumberRuleStrategyService.java @@ -0,0 +1,39 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.numberrule; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesCustomerPartService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; +import cn.estsh.i3plus.mes.pcn.api.iservice.busi.INumberRulePackAttributeStrategyService; +import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; +import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.Map; +import java.util.Objects; + +/** + * @Description : MES-客户条码(芜湖奇瑞) + * @Reference : + * @Author : junsheng.li + * @CreateDate 2024/10/28 16:47 + * @Modify: + **/ +@Component +public class CustCodeWhqrNumberRuleStrategyService implements INumberRulePackAttributeStrategyService { + + @Autowired + private IMesCustomerPartService mesCustomerPartService; + + @Override + public GenSerialNoModel execute(GenSerialNoModel genSerialNoModel) { + Map dataMap = genSerialNoModel.getDataMap(); + MesCustomerPart customerPart = (!CollectionUtils.isEmpty(dataMap) && dataMap.containsKey(MesCustomerPart.class.getSimpleName())) ? + (MesCustomerPart)dataMap.get(MesCustomerPart.class.getSimpleName()) : mesCustomerPartService.getMesCustomerPart(genSerialNoModel.getOrganizeCode(), genSerialNoModel.getPartNo()); + if (Objects.isNull(customerPart)) { + MesPcnException.throwMesBusiException("请检查客户零件信息,零件[%s]客户零件关系未维护", genSerialNoModel.getPartNo()); + } + genSerialNoModel.setCustPartNo(customerPart.getCustPartNo()); + return genSerialNoModel; + } +}