From ec6d43aa07ee0e8faf34498057ebcfbb446aa015 Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期二, 16 七月 2024 09:21:51 +0800 Subject: [PATCH] feat: 代码重构 --- ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java | 86 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 86 insertions(+), 0 deletions(-) diff --git a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java index b160b8e..98e9026 100644 --- a/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java +++ b/ruoyi-service/ruoyi-user/src/main/java/com/ruoyi/user/service/impl/RegionServiceImpl.java @@ -1,10 +1,22 @@ package com.ruoyi.user.service.impl; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.constant.Constants; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.user.entity.Region; import com.ruoyi.user.mapper.RegionMapper; import com.ruoyi.user.service.RegionService; +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; import org.springframework.stereotype.Service; + +import java.text.Collator; +import java.util.*; +import java.util.stream.Collectors; /** * <p> @@ -17,4 +29,78 @@ @Service public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements RegionService { + @Override + public Object urbanArea(String keyword) { + LambdaQueryChainWrapper<Region> wrapper = this.lambdaQuery() + .ne(Region::getParentId, Constants.ZERO); + if (StringUtils.isNotBlank(keyword)) { + wrapper.like(Region::getName, keyword); + } + // 获取所有市区信息 + List<Region> reginList = wrapper.orderByAsc(Region::getId).list(); + List<String> data = reginList.stream().map(Region::getName).collect(Collectors.toList()); + Map<String, Object> px = px(data); + return px; + // 根据市区首字母分组排序 +// data.sort(new Comparator<String>() { +// final Collator collator = Collator.getInstance(Locale.CHINA); +// +// @Override +// public int compare(String o1, String o2) { +// CollationKey key1 = collator.getCollationKey(o1); +// CollationKey key2 = collator.getCollationKey(o2); +// return key1.compareTo(key2); +// } +// }); +// return reginList; + } + + /** + * 获取汉字串拼音,英文字符不变 + * + * @param chinese 汉字串 + * @return 汉语拼音 + */ + public String getFullSpell(String chinese) { + StringBuilder pybf = new StringBuilder(); + char[] arr = chinese.toCharArray(); + HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); + defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); + defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + for (int i = 0; i < arr.length; i++) { + if (arr[i] > 128) { + try { + pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]); + } catch (BadHanyuPinyinOutputFormatCombination e) { + e.printStackTrace(); + } + } else { + pybf.append(arr[i]); + } + } + return pybf.toString(); + } + + public Map<String, Object> px(List<String> list) { + Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA); + // 按字母排序 + Collections.sort(list, com); + //输出26个字母 + Map<String, Object> map = new TreeMap<>(); + for (int i = 1; i <= 26; i++) { + //循环找出 首字母一样的数据 + String word = String.valueOf((char) (96 + i)).toUpperCase(); + List<String> letter = new ArrayList<>(); + for (String str : list) { + // System.out.println("首字母"+zm); + String zm = getFullSpell(str).substring(0, 1); + if (word.equals(zm)) { + letter.add(str); + } + map.put(word, letter); + } + //System.out.println(JsoN.to]soNString(map)); + } + return map; + } } -- Gitblit v1.7.1