package com.ruoyi.productionPlan.enums; import lombok.Getter; import java.util.Arrays; import java.util.List; /** * 地址归属地枚举 * 根据地址关键字自动匹配:银川/石嘴山/吴忠/固原/中卫/自提/内蒙古/其他 */ @Getter public enum AddressRegionEnum { /** * 银川市 */ YINCHUAN("银川", Arrays.asList("兴庆", "西夏", "金凤", "永宁", "贺兰", "灵武")), /** * 石嘴山市 */ SHIZUISHAN("石嘴山", Arrays.asList("大武口", "平罗", "惠农", "利通")), /** * 吴忠市 */ WUZHONG("吴忠", Arrays.asList("红寺堡", "盐池", "同心", "青铜峡")), /** * 固原市 */ GUYUAN("固原",Arrays.asList("原州", "泾源", "彭阳", "中宁", "海原", "隆德", "西吉")), /** * 中卫市 */ ZHONGWEI("中卫", Arrays.asList("沙坡头", "中宁", "海原")), /** * 自提 */ SELF_PICKUP("自提", Arrays.asList("自提")), /** * 内蒙古(包含你提供的所有区县关键字) */ INNER_MONGOLIA("内蒙古", Arrays.asList( // 呼和浩特 "呼和浩特", "新城", "回民", "玉泉", "赛罕", "土默特左旗", "土默特", "托克托", "和林格尔", "清水河", "武川", // 包头 "包头", "东河", "昆都仑", "青山", "石拐", "白云鄂博", "九原", "土默特右旗", "固阳", "达尔罕茂明安联合旗", // 乌海 "乌海", "海勃湾", "海南", "乌达", // 赤峰 "赤峰", "红山", "元宝山", "松山", "阿鲁科尔沁旗", "巴林左旗", "巴林右旗", "林西", "克什克腾旗", "翁牛特旗", "喀喇沁旗", "宁城", "敖汉旗", // 通辽 "通辽", "科尔沁", "霍林郭勒", "科尔沁左翼中旗", "科尔沁左翼后旗", "开鲁", "库伦旗", "奈曼旗", "扎鲁特旗", // 鄂尔多斯(含自定义地址) "鄂尔多斯", "东胜", "康巴什", "达拉特旗", "准格尔旗", "鄂托克前旗", "鄂托克旗", "杭锦旗", "乌审旗", "伊金霍洛旗", // 呼伦贝尔 "呼伦贝尔", "海拉尔", "扎赉诺尔", "满洲里", "牙克石", "扎兰屯", "额尔古纳", "根河", "阿荣旗", "莫力达瓦达斡尔族自治旗", "鄂伦春自治旗", "鄂温克族自治旗", "陈巴尔虎旗", "新巴尔虎左旗", "新巴尔虎右旗", // 巴彦淖尔 "巴彦淖尔", "临河", "五原", "磴口", "乌拉特前旗", "乌拉特中旗", "乌拉特后旗", "杭锦后旗", // 乌兰察布 "乌兰察布", "集宁", "丰镇", "卓资", "化德", "商都", "兴和", "凉城", "察哈尔右翼前旗", "察哈尔右翼中旗", "察哈尔右翼后旗", "四子王旗", // 兴安盟 "兴安盟", "乌兰浩特", "阿尔山", "科尔沁右翼前旗", "科尔沁右翼中旗", "扎赉特旗", "突泉", // 锡林郭勒盟 "锡林郭勒盟", "锡林浩特", "二连浩特", "阿巴嘎旗", "苏尼特左旗", "苏尼特右旗", "东乌珠穆沁旗", "西乌珠穆沁旗", "太仆寺旗", "镶黄旗", "正镶白旗", "正蓝旗", "多伦", // 阿拉善盟 "阿拉善盟", "阿拉善左旗", "阿拉善右旗", "额济纳旗", //自定义 "苏里格经济开发区", "杭锦旗伊和乌素苏木草原站", "鄂托克前旗上海庙镇","内蒙" )), /** * 其他地区 */ OTHER("其他", Arrays.asList()); /** * 归属地名称 */ private final String regionName; /** * 匹配关键字列表 */ private final List keyWords; /** * 构造方法 */ AddressRegionEnum(String regionName, List keyWords) { this.regionName = regionName; this.keyWords = keyWords; } // ==================== 核心方法:根据地址字符串匹配归属地 ==================== /** * 根据地址文本自动识别归属地 * @param address 详细地址字符串 * @return 匹配到的归属地枚举(默认返回OTHER) */ public static AddressRegionEnum matchRegion(String address) { // 地址为空/空字符串,直接返回其他 if (address == null || address.trim().isEmpty()) { return OTHER; } // 按优先级匹配:自提 > 宁夏各地市 > 内蒙古 > 其他 for (AddressRegionEnum region : values()) { // 跳过无关键字的OTHER if (region.keyWords.isEmpty()) { continue; } // 遍历关键字,地址包含任意关键字则匹配成功 for (String keyword : region.keyWords) { if (address.contains(keyword)) { return region; } } } // 无匹配关键字,返回其他 return OTHER; } }