From 796b44ea813a1133beae4f3a67f1c0263510c0c7 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期日, 17 十一月 2024 09:45:07 +0800 Subject: [PATCH] 1 --- src/main/java/com/moon/server/service/all/BaseQueryService.java | 134 ++++++++++++++++++-------------------------- 1 files changed, 55 insertions(+), 79 deletions(-) diff --git a/src/main/java/com/moon/server/service/all/BaseQueryService.java b/src/main/java/com/moon/server/service/all/BaseQueryService.java index ab65401..99aa21e 100644 --- a/src/main/java/com/moon/server/service/all/BaseQueryService.java +++ b/src/main/java/com/moon/server/service/all/BaseQueryService.java @@ -22,11 +22,8 @@ import java.util.*; import java.util.concurrent.TimeUnit; -/** - * 鐖舵煡璇㈡湇鍔$被 - * @author WWW - */ @Service +@SuppressWarnings("ALL") public class BaseQueryService implements BaseQueryMapper { @Autowired BaseQueryMapper baseQueryMapper; @@ -34,23 +31,14 @@ @Autowired RedisService redisService; - /** - * 琛ㄥ悕Map - */ - private static Map<String, String> tabMap = new HashMap<>(3); + private static final Map<String, String> TAB_MAP = new HashMap<>(3); - /** - * 娣诲姞杩囨护鏉′欢 - * - * @param wrapper QueryWrapper - * @param filter 鍘熷杩囨护鏉′欢瀛楃涓� - */ - public void addFilterWrapper(QueryWrapper wrapper, String filter) { + public <T> void addFilterWrapper(QueryWrapper<T> wrapper, String filter) { if (StringHelper.isEmpty(filter)) { return; } - String[] strs = filter.trim().split(" (?i)and "); + String[] strs = filter.trim().split(" and | or "); for (String str : strs) { int start = str.indexOf(" "); if (start == -1) { @@ -61,20 +49,55 @@ continue; } - String field = str.substring(0, start).trim(); + String field = camelToUnderline(str.substring(0, start).trim()); String express = str.substring(start + 1, end).trim().toLowerCase(); String value = str.substring(end + 1).trim(); + + start = filter.indexOf(str) - StaticData.I4; + end = filter.indexOf(" or ", start); + if (start == end && start > -1) { + wrapper = wrapper.or(); + } addWrapper(wrapper, field, express, getObjectVal(express, value)); } } - /** - * 鑾峰彇鍊煎璞� - * - * @param val 鍊� - * @return 瀵硅薄 - */ + public static String camelToUnderline(String str) { + StringBuilder sb = new StringBuilder(); + for (int i = 0, c = str.length(); i < c; i++) { + char ch = str.charAt(i); + if (Character.isUpperCase(ch)) { + sb.append('_').append(Character.toLowerCase(ch)); + } else { + sb.append(ch); + } + } + + return sb.toString().replaceAll("_+", "_"); + } + + public static String underlineToCamel(String str) { + StringBuilder sb = new StringBuilder(); + + boolean nextIsCapitalized = false; + for (int i = 0, c = str.length(); i < c; i++) { + char ch = str.charAt(i); + if (ch == '_') { + nextIsCapitalized = true; + continue; + } + if (nextIsCapitalized) { + sb.append(Character.toUpperCase(ch)); + nextIsCapitalized = false; + } else { + sb.append(Character.toLowerCase(c)); + } + } + + return sb.toString(); + } + private Object getObjectVal(String express, String val) { if (StringHelper.isInteger(val)) { return Long.parseLong(val); @@ -89,15 +112,7 @@ return val.replace("'", ""); } - /** - * 娣诲姞鍖呰鍣� - * - * @param wrapper QueryWrapper - * @param field 瀛楁 - * @param express 琛ㄨ揪寮� - * @param val 鍊� - */ - private void addWrapper(QueryWrapper wrapper, String field, String express, Object val) { + private <T> void addWrapper(QueryWrapper<T> wrapper, String field, String express, Object val) { if (StringHelper.isDate(val.toString())) { wrapper.apply(String.format("%s %s '%s'", field, express, val)); return; @@ -138,16 +153,10 @@ } } - /** - * 鑾峰彇瀛楃涓插垪琛� - */ private List<String> getStringList(String val) { return Arrays.asList(val.replace(StaticData.SINGLE_QUOTES, "").split(StaticData.COMMA)); } - /** - * 鑾峰彇鏁存暟鍒楄〃 - */ private List<Integer> getIntegerList(String val) { List<Integer> list = new ArrayList<>(); for (String str : val.split(StaticData.COMMA)) { @@ -157,14 +166,6 @@ return list; } - /** - * 娣诲姞绌洪棿杩囨护鏉′欢 - * - * @param basicMapper 鐖禡apper - * @param wrapper QueryWrapper - * @param wkt WKT锛堣憲鍚嶆枃鏈級 - * @throws Exception 寮傚父 - */ public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt) throws Exception { if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt)) { wkt = AesHelper.decrypt(wkt); @@ -174,12 +175,6 @@ } } - /** - * 鑾峰彇鍑犱綍瀵硅薄鐨勭┖闂村弬鑰� - * - * @param basicMapper 绌洪棿鍩虹Mapper - * @return SRID - */ public Integer getSrid(GeomBaseMapper basicMapper) { String tab = getTabName(basicMapper); String key = RedisCacheKey.sridKey(tab); @@ -198,27 +193,15 @@ return srid; } - /** - * 鏍规嵁Mapper鑾峰彇琛ㄥ悕 - * - * @param basicMapper Mapper - * @return 琛ㄥ悕 - */ public static String getTabName(BasicMapper basicMapper) { String className = ClassHelper.getClassName(basicMapper); - if (tabMap.containsKey(className)) { - return tabMap.get(className); + if (TAB_MAP.containsKey(className)) { + return TAB_MAP.get(className); } return getTabName(className); } - /** - * 鏍规嵁Mapper鑾峰彇琛ㄥ悕 - * - * @param className Mapper绫诲悕 - * @return 琛ㄥ悕 - */ private static String getTabName(String className) { Class clazz = ClassHelper.getEntityClass(className); if (clazz == null) { @@ -228,20 +211,13 @@ TableName annotation = (TableName) clazz.getAnnotation(TableName.class); String tabName = annotation.value(); - if (tabName != null && !tabMap.containsKey(className)) { - tabMap.put(className, tabName); + if (tabName != null && !TAB_MAP.containsKey(className)) { + TAB_MAP.put(className, tabName); } return tabName; } - /** - * 娣诲姞缂撳啿鍖鸿繃婊ゆ潯浠� - * - * @param baseMapper 鐖禡apper - * @param wrapper QueryWrapper - * @param wkt WKT锛堣憲鍚嶆枃鏈級 - */ public void addBufferWrapper(GeomBaseMapper baseMapper, QueryWrapper wrapper, String wkt, double buffer) { Integer srid = getSrid(baseMapper); // buffer = buffer * 0.00000899928 @@ -265,17 +241,17 @@ } @Override - public Integer selectTabsForCount(String tab, String field) { + public Integer selectTabsForCount(String tab, String typesFilter, String field) { tab = StringHelper.getLikeUpperStr(tab); - return baseQueryMapper.selectTabsForCount(tab, field); + return baseQueryMapper.selectTabsForCount(tab, typesFilter, field); } @Override - public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) { + public List<TabEntity> selectTabsByPage(String tab, String typesFilter, String field, String filters, Integer limit, Integer offset) { tab = StringHelper.getLikeUpperStr(tab); - return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset); + return baseQueryMapper.selectTabsByPage(tab, typesFilter, field, filters, limit, offset); } @Override -- Gitblit v1.9.3