diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesConfigService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesConfigService.java index 2053fc5..9575274 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesConfigService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesConfigService.java @@ -3,6 +3,8 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; import cn.estsh.i3plus.pojo.mes.bean.MesConfig; import io.swagger.annotations.ApiOperation; +import java.util.List; + /** * @Description: * @CreateDate: 2021/9/9 下午3:24 @@ -19,10 +21,19 @@ public interface IMesConfigService { @ApiOperation(value = "获取配置表模板代码") MesConfig getMesConfig(String org, String key); + @ApiOperation(value = "获取系统配置集合") + List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType); + @ApiOperation(value = "根据分隔符验证是否存在元素的配置") Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item); @ApiOperation(value = "验证分表配置") Boolean checkShardingTablesObjectCfg(String organizeCode, String cfgKey, String item); + @ApiOperation(value = "根据分隔符查询存在元素的配置") + List findCfgValueContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, List itemList); + + @ApiOperation(value = "查询分表配置") + List findShardingTablesObjectCfg(String organizeCode, String cfgKey, List itemList); + } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesConfigService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesConfigService.java index 5234a31..eb4caa5 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesConfigService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesConfigService.java @@ -16,6 +16,7 @@ import org.springframework.util.StringUtils; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * @Description: @@ -65,20 +66,46 @@ public class MesConfigService implements IMesConfigService { } @Override - public Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item) { + public List getConfigList(String organizeCode, String cfgCode, String cfgKey, String cfgType) { DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPreparedPack.getStringEqualPack(cfgCode, MesPcnExtConstWords.CFG_CODE, packBean); DdlPreparedPack.getStringEqualPack(cfgKey, MesPcnExtConstWords.CFG_KEY, packBean); DdlPreparedPack.getStringEqualPack(cfgType, MesPcnExtConstWords.CFG_TYPE, packBean); - MesConfig config = configRepository.getByProperty(packBean); - if (null == config || StringUtils.isEmpty(config.getCfgValue())) return false; - List cfgValueList = Arrays.asList(config.getCfgValue().split(splitStr)); + return configRepository.findByHqlWhere(packBean); + } + + @Override + public Boolean checkCfgValueIsContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, String item) { + String cfgValue = getAndMergeCfgValue(organizeCode, cfgCode, cfgKey, cfgType, splitStr); + if (StringUtils.isEmpty(cfgValue)) return false; + List cfgValueList = Arrays.asList(cfgValue.split(splitStr)); return (!CollectionUtils.isEmpty(cfgValueList) && cfgValueList.contains(item)) ? true : false; } + private String getAndMergeCfgValue(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr) { + List configList = getConfigList(organizeCode, cfgCode, cfgKey, cfgType); + if (CollectionUtils.isEmpty(configList)) return null; + return configList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCfgValue()))).map(MesConfig::getCfgValue).collect(Collectors.joining(splitStr)); + } + @Override public Boolean checkShardingTablesObjectCfg(String organizeCode, String cfgKey, String item) { - return checkCfgValueIsContainItem(organizeCode, MesPcnExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES_PCN.name(), MesPcnExtConstWords.SEMICOLON, item); + return checkCfgValueIsContainItem(organizeCode, MesPcnExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES_PCN.name(), MesPcnExtConstWords.COMMA, item); + } + + @Override + public List findCfgValueContainItem(String organizeCode, String cfgCode, String cfgKey, String cfgType, String splitStr, List itemList) { + String cfgValue = getAndMergeCfgValue(organizeCode, cfgCode, cfgKey, cfgType, splitStr); + if (StringUtils.isEmpty(cfgValue)) return null; + List cfgValueList = Arrays.asList(cfgValue.split(splitStr)); + if (CollectionUtils.isEmpty(cfgValueList)) return null; + return itemList.stream().filter(cfgValueList::contains).collect(Collectors.toList()); + } + + @Override + public List findShardingTablesObjectCfg(String organizeCode, String cfgKey, List itemList) { + if(CollectionUtils.isEmpty(itemList)) return null; + return findCfgValueContainItem(organizeCode, MesPcnExtConstWords.MES_SHARDING_TABLES_OBJECT_CFG, cfgKey, CommonEnumUtil.SOFT_TYPE.MES_PCN.name(), MesPcnExtConstWords.COMMA, itemList); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java index 2520c12..46ca188 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/context/MesProductionProcessContextStepService.java @@ -144,9 +144,9 @@ public class MesProductionProcessContextStepService extends BaseStepService impl public MesProductionProcessContext productionPwdContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext) { List configList = configService.doCachedConfigList(MesPcnExtConstWords.PRODUCTION_PWD_CFG, reqBean.getOrganizeCode()); Map> cfgKeyMap = CollectionUtils.isEmpty(configList) ? null : configList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getCfgKey()))).collect(Collectors.groupingBy(MesConfig::getCfgKey)); - return productionProcessContext.finishCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CAVITY_FINISH_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CAVITY_FINISH_CODE).get(0).getCfgValue() : MesPcnExtConstWords.CAVITY_FINISH_CODE). - craftJumpCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CRAFT_JUMP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CRAFT_JUMP_CODE).get(0).getCfgValue() : MesPcnExtConstWords.CRAFT_JUMP_CODE). - assemblySkipCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE).get(0).getCfgValue() : MesPcnExtConstWords.ASSEMBLY_SKIP_CODE); + return productionProcessContext.finishCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CAVITY_FINISH_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CAVITY_FINISH_CODE).get(0).getCfgValue() : MesPcnExtConstWords.CAVITY_FINISH_CODE) + .craftJumpCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.CRAFT_JUMP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.CRAFT_JUMP_CODE).get(0).getCfgValue() : MesPcnExtConstWords.CRAFT_JUMP_CODE) + .assemblySkipCode((!CollectionUtils.isEmpty(cfgKeyMap) && cfgKeyMap.containsKey(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE)) ? cfgKeyMap.get(MesPcnExtConstWords.ASSEMBLY_SKIP_CODE).get(0).getCfgValue() : MesPcnExtConstWords.ASSEMBLY_SKIP_CODE); } //验证组织模型有效性