package com.shkpr.service.alambizplugin.commtools; import com.shkpr.service.alambizplugin.constants.GisMetadataDefine; import com.shkpr.service.alambizplugin.constants.GisSurveyExcelDefine; import com.shkpr.service.alambizplugin.dto.GisMetadataLayerTemplate; import com.shkpr.service.alambizplugin.dto.GisMetadataPropertyTemplate; import com.shkpr.service.alambizplugin.dto.GisSurveyLayerApply; import org.apache.commons.lang3.StringUtils; import java.util.List; import java.util.Map; import java.util.Objects; /** * 第三方导入模版工具类 * * @author 欧阳劲驰 * @since 1.0.0 */ public class ThirdImportTemplateUtils { /** * 获取图层模版 * * @param data 数据 * @param layerTemplates 图层模版 * @param kind 数据类型 * @return 图层模版 */ public static GisMetadataLayerTemplate getLayerTemplate(Map data , List layerTemplates, String kind) { //图层文件key String layKey = null; if (Objects.equals(kind, GisMetadataDefine.TYPE_KINE.POINT)) layKey = GisSurveyExcelDefine.FILE.POINT_LAYER; if (Objects.equals(kind, GisMetadataDefine.TYPE_KINE.LINE)) layKey = GisSurveyExcelDefine.FILE.LINE_LAYER; if (layKey == null) return null; //过滤对应模版 String finalLayKey = layKey; return layerTemplates.stream() .filter(template -> StringUtils.isNotBlank(template.getName()) && Objects.equals(template.getName(), data.get(finalLayKey)) && Objects.equals(template.getKind(), kind) ) .findFirst().orElse(null); } /** * 获取图层模版 * * @param data 数据 * @param layerTemplates 图层模版 * @return 图层模版 */ public static GisMetadataLayerTemplate getLayerTemplate(GisSurveyLayerApply data, List layerTemplates) { if (StringUtils.isBlank(data.getLayer()) || StringUtils.isBlank(data.getKind())) return null; //过滤对应模版 return layerTemplates.stream() .filter(template -> StringUtils.isNotBlank(template.getName()) && Objects.equals(template.getKey(), data.getLayer()) && Objects.equals(template.getKind(), data.getKind()) ) .findFirst().orElse(null); } /** * 获取属性模版 * * @param data 数据 * @param layerTemplates 图层模版集合 * @param kind 数据类型 * @param propertyKey 属性模版key * @return 点号 */ public static GisMetadataPropertyTemplate getPropertyTemplate(Map data , List layerTemplates , String kind, String propertyKey) { //提取图层模版 GisMetadataLayerTemplate layerTemplate = getLayerTemplate(data, layerTemplates, kind); if (layerTemplate == null) return null; //提取点号模版 return layerTemplate.getPropertyTemplates().stream() .filter(template -> Objects.equals(propertyKey, template.getKey())) .findFirst().orElse(null); } /** * 获取属性模版 * * @param layerTemplate 图层模版 * @param propertyKey 属性模版key * @return 点号 */ public static GisMetadataPropertyTemplate getPropertyTemplate(GisMetadataLayerTemplate layerTemplate, String propertyKey) { //提取点号模版 return layerTemplate.getPropertyTemplates().stream() .filter(template -> Objects.equals(propertyKey, template.getKey())) .findFirst().orElse(null); } /** * 获取值 * * @param data 数据 * @param propertyTemplate 属性模版 * @return 点号 */ public static String getValue(Map data, GisMetadataPropertyTemplate propertyTemplate) { //排除空模版 if (propertyTemplate == null || StringUtils.isBlank(propertyTemplate.getName())) return null; //获取点号 return data.get(propertyTemplate.getName()); } /** * 获取值 * * @param data 数据 * @param layerTemplate 图层模版 * @param propertyKey 属性模版key * @return 点号 */ public static String getValue(Map data, GisMetadataLayerTemplate layerTemplate , String propertyKey) { //排除空模版 if (layerTemplate == null) return null; //提取点号模版 GisMetadataPropertyTemplate propertyTemplate = layerTemplate.getPropertyTemplates().stream() .filter(template -> Objects.equals(propertyKey, template.getKey())) .findFirst().orElse(null); if (propertyTemplate == null || StringUtils.isBlank(propertyTemplate.getName())) return null; //获取点号 return data.get(propertyTemplate.getName()); } /** * 获取值 * * @param data 数据 * @param layerTemplates 图层模版集合 * @param kind 数据类型 * @param propertyKey 属性模版key * @return 点号 */ public static String getValue(Map data, List layerTemplates , String kind, String propertyKey) { //提取图层模版 GisMetadataLayerTemplate layerTemplate = getLayerTemplate(data, layerTemplates, kind); return getValue(data, layerTemplate, propertyKey); } }