From 1df0d9bbace0f60c4ffd52ea5279f02d31c41dfd Mon Sep 17 00:00:00 2001 From: "jhforever.wang@estsh.com" Date: Mon, 5 Aug 2024 15:01:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E9=85=8D=E4=BB=B6=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E7=AD=96=E7=95=A5=20=E8=A7=84=E5=88=99=E4=B8=94=E5=94=AF?= =?UTF-8?q?=E4=B8=80=20=E6=B3=A8=E8=A7=A3=E4=B8=8D=E7=94=9F=E6=95=88=20?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MesNumberRuleMatchAndUniqueService.java | 28 ++++++++-------------- .../MesNumberRuleMatchDispatchService.java | 6 ++--- ...MesNumberRuleMatchRegularExpressionService.java | 10 ++++---- .../step/MesAssemblyMatchNosortStepService.java | 20 ---------------- 4 files changed, 18 insertions(+), 46 deletions(-) diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchAndUniqueService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchAndUniqueService.java index 3592f9f..e486884 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchAndUniqueService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchAndUniqueService.java @@ -1,20 +1,17 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.rulematch; 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.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly; import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; +import cn.estsh.impp.framework.boot.util.SpringContextsUtil; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; -import javax.annotation.Resource; - /** * 外协件规则匹配且唯一 */ @@ -22,24 +19,19 @@ import javax.annotation.Resource; @Service public class MesNumberRuleMatchAndUniqueService implements IMesNumberRuleMatchDispatchService { - private static final Logger LOGGER = LoggerFactory.getLogger(MesNumberRuleMatchAndUniqueService.class); - - - @Autowired - private IMesProduceSnExtService produceSnExtService; - @Resource - @Qualifier("mesNumberRuleMatchRegularExpressionService") - private IMesNumberRuleMatchDispatchService mesNumberRuleMatchDispatchService; @Autowired private MesProductionAssemblyRepository productionAssemblyRepository; + @Override public Boolean matchNumberRule(String organizeCode, String sn, Object... params) { // 校验正则表达式 - boolean flag = mesNumberRuleMatchDispatchService.matchNumberRule(organizeCode, sn, params); + Boolean result = ((IMesNumberRuleMatchDispatchService) SpringContextsUtil.getBean(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_20.getStrategyClass())).matchNumberRule(organizeCode, sn, params); + + if (!result) return false; + // 校验是否唯一 - boolean uniqueFlag = validateUnique(organizeCode, sn); + return validateUnique(organizeCode, sn); - return flag && uniqueFlag; } /** @@ -50,7 +42,7 @@ public class MesNumberRuleMatchAndUniqueService implements IMesNumberRuleMatchDi */ private boolean validateUnique(String organizeCode, String sn) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode); - DdlPreparedPack.getStringEqualPack(sn,"assemblySn", ddlPackBean); + DdlPreparedPack.getStringEqualPack(sn, MesPcnExtConstWords.ASSEMBLY_SN, ddlPackBean); MesProductionAssembly productionAssembly = productionAssemblyRepository.getByProperty(ddlPackBean); if (productionAssembly != null) { return false; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchDispatchService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchDispatchService.java index 7ad85d4..747f9c4 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchDispatchService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchDispatchService.java @@ -28,11 +28,11 @@ public class MesNumberRuleMatchDispatchService implements IMesNumberRuleMatchDis List resultList = new ArrayList<>(); - if (numberRuleList.get(0) instanceof MesProdRuleNosortCfg) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, "mesNumberRuleMatchRegularExpressionService",o, ((MesProdRuleNosortCfg) o).getInPartNoRule())); + if (numberRuleList.get(0) instanceof MesProdRuleNosortCfg) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, "mesNumberRuleMatchRegularExpressionService", o, ((MesProdRuleNosortCfg) o).getInPartNoRule())); - if (numberRuleList.get(0) instanceof MesProductionAssemblyNosortContext) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfStrategyClass(((MesProductionAssemblyNosortContext) o).getMatchType()),o, ((MesProductionAssemblyNosortContext) o).getMatchRule())); + if (numberRuleList.get(0) instanceof MesProductionAssemblyNosortContext) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.valueOfStrategyClass(((MesProductionAssemblyNosortContext) o).getMatchType()), o, ((MesProductionAssemblyNosortContext) o).getMatchRule())); - if (numberRuleList.get(0) instanceof MesProductionAssemblySortContext) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, "mesNumberRuleMatchRegularExpressionService",o, ((MesProductionAssemblySortContext) o).getMatchRule())); + if (numberRuleList.get(0) instanceof MesProductionAssemblySortContext) numberRuleList.forEach(o -> matchNumberRule(organizeCode, sn, resultList, "mesNumberRuleMatchRegularExpressionService", o, ((MesProductionAssemblySortContext) o).getMatchRule())); return resultList; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java index 0a69f01..cd08c30 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/rulematch/MesNumberRuleMatchRegularExpressionService.java @@ -25,7 +25,7 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul } - private boolean match(String ruleStr, String barCode) { + private /**static**/ boolean match(String ruleStr, String barCode) { if (StringUtils.isEmpty(ruleStr)) { return false; } @@ -62,7 +62,7 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul return false; } - public String transfer(String str){ + public /**static**/ String transfer(String str){ // 1. 定义正则表达式,匹配特殊字符 String regex = "[^a-zA-Z0-9^\\s^*?[)>.:^/]]"; @@ -72,8 +72,8 @@ public class MesNumberRuleMatchRegularExpressionService implements IMesNumberRul } public static void main(String[] args) { - String sn = "1574110000123"; - String matchRule = "1574110000*"; - System.out.println(sn.matches(matchRule)); +// String sn = "M00061603-R80512000"; +// String matchRule = "M00061596*"; +// System.out.println(match(matchRule, sn)); } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java index 6b74828..e962d67 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyMatchNosortStepService.java @@ -65,8 +65,6 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { //获取上下文信息 MesProductionProcessContext productionProcessContext = productionProcessContextStepService.doHandleCurCellEquipment(reqBean); - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 1 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //配置错误 抛出异常 if (!productionProcessContext.getSuccess()) execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage()); @@ -86,8 +84,6 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { //获取上下文进料零件条码信息集合 List productionPsInContextList = productionDispatchContextStepService.getProductionPsInContext(reqBean); - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 2 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //验证是否存在待绑定数据 Boolean IsNeedScanAssembly = checkIsNeedScanAssembly(prodRuleContextList); Boolean hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList); @@ -99,8 +95,6 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { if (!hasUnBindAssembly && !CollectionUtils.isEmpty(productionPsInContextList) && productionPsInContextList.size() >= needQty && !productionDispatchContextStepService.checkProductionPsOutIsExistContext(reqBean)) ((IStepService) SpringContextsUtil.getBean("mesProductSnGenerateStepService")).executeInState(reqBean); - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 3 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //没有待绑定数据, 验证当前是否满足腔数 没有进料主条码代码当前加工规则已经全部加载, 有的话需要判断是否全部扫完 没有扫完需要返回false继续扫描主条码 if (!IsNeedScanAssembly || !hasUnBindAssembly) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, @@ -120,8 +114,6 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { //处理待验证的装配件条码 [扫描模式匹配成功返回true, 否则返回flase, 非扫描模式需要验证是否全部匹配完成] Boolean result = doHandleMatchAssembly(reqBean, resultBean, stepResult, prodRuleContextList, equipVariableCollectContextList, isSkip); - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 8 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //验证是否存在待绑定数据 hasUnBindAssembly = hasUnBindAssembly(prodRuleContextList); @@ -133,13 +125,9 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { assemblyShowNosortStepService.showProductionAssembly(reqBean, resultBean, productionProcessContext.getWorkCenter(), cellEquipContext, prodRuleContextList); } - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 9 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //全部匹配完毕,存在进料且进料数量满足腔数的时候直接调用 生成零件条码工步 if (!hasUnBindAssembly && !CollectionUtils.isEmpty(productionPsInContextList) && productionPsInContextList.size() >= needQty) ((IStepService) SpringContextsUtil.getBean("mesProductSnGenerateStepService")).executeInState(reqBean); - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 10 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //没有待绑定数据, 验证当前是否满足腔数 没有进料主条码代码当前加工规则已经全部加载, 有的话需要判断是否全部扫完 没有扫完需要返回false继续扫描主条码 if (!hasUnBindAssembly) return execDynamicsCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult, @@ -157,8 +145,6 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { assemblyShowNosortStepService.showProductionAssembly(reqBean, resultBean, productionProcessContext.getWorkCenter(), cellEquipContext, prodRuleContextList); } - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 11 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - return execNonCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog().scanInfo(assemblySn), stepResult.nextTriggerEvent(MesPcnExtConstWords.NEXT_TRIGGER_EVENT_ASSEMBLY), String.format("装配件条码%s匹配失败!%s", assemblySn, StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg())); @@ -276,8 +262,6 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { List filterList = (List) numberRuleMatchDispatchService.matchNumberRule(reqBean.getOrganizeCode(), equipVariableCollectContext.getEquipVariableValue(), Stream.of(productionAssemblyNosortContext).collect(Collectors.toList())); - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 4 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //匹配失败 if (CollectionUtils.isEmpty(filterList)) continue; @@ -291,14 +275,10 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService { } } - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 6 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - //时效性验证 if (!StringUtils.isEmpty(filterList.get(0).getProductSnId())) { Map result = productionRecordService.checkSnTimeliness(reqBean.getOrganizeCode(), equipVariableCollectContext.getEquipVariableValue(), filterList.get(0).getSourceId(), MesExtEnumUtil.TIME_DATA_SOURCE.DATA_SOURCE30.getValue()); - log.info("工厂{}生产线{}工位{} MesAssemblyMatchNosortStepService ---- 7 ----", reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode()); - if (!(Boolean)result.get(MesPcnExtConstWords.RESULT)) { stepResult.msg(String.format("%s%s", StringUtils.isEmpty(stepResult.getMsg()) ? MesPcnExtConstWords.EMPTY : stepResult.getMsg(), result.get(MesPcnExtConstWords.MESSAGE))); continue;