From 07a68b8d93aa059968a9709f2c81e6625338032c Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期一, 21 十一月 2022 20:19:49 +0800 Subject: [PATCH] 12 --- src/main/java/com/lf/server/service/all/BaseQueryService.java | 147 +++++++++++++++++++++++++++++++++++-------------- 1 files changed, 105 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/lf/server/service/all/BaseQueryService.java b/src/main/java/com/lf/server/service/all/BaseQueryService.java index 66d0589..5f554f1 100644 --- a/src/main/java/com/lf/server/service/all/BaseQueryService.java +++ b/src/main/java/com/lf/server/service/all/BaseQueryService.java @@ -1,56 +1,44 @@ package com.lf.server.service.all; +import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lf.server.entity.all.RedisCacheKey; +import com.lf.server.entity.ctrl.IdNameEntity; +import com.lf.server.entity.ctrl.TabEntity; +import com.lf.server.entity.data.DictEntity; +import com.lf.server.entity.data.DomainEntity; import com.lf.server.helper.AesHelper; import com.lf.server.helper.ClassHelper; import com.lf.server.helper.StringHelper; +import com.lf.server.mapper.all.BaseQueryMapper; import com.lf.server.mapper.all.BasicMapper; import com.lf.server.mapper.all.GeomBaseMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.cache.RedisCache; import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; /** * 鐖舵煡璇㈡湇鍔$被 * @author WWW */ @Service -public class BaseQueryService { - /** - * 鑾峰彇鐖禡apper - * - * @param name Mapper鍚� - * @return BaseMapper - */ - public BasicMapper getBasicMapper(String name) { - if (StringHelper.isEmpty(name)) { - return null; - } +public class BaseQueryService implements BaseQueryMapper { + @Autowired + BaseQueryMapper baseQueryMapper; - Object obj = ClassHelper.getBean(name.trim() + "Mapper"); - if (!(obj instanceof BasicMapper)) { - return null; - } - - return (BasicMapper) obj; - } + @Autowired + RedisService redisService; /** - * 鑾峰彇绌洪棿鐖禡apper - * - * @param name Mapper鍚� - * @return GeomBaseMapper + * 琛ㄥ悕Map */ - public GeomBaseMapper getGeoBaseMapper(String name) { - if (StringHelper.isEmpty(name)) { - return null; - } - - Object obj = ClassHelper.getBean(name.trim() + "Mapper"); - if (!(obj instanceof GeomBaseMapper)) { - return null; - } - - return (GeomBaseMapper) obj; - } + private static Map<String, String> tabMap = new HashMap<String, String>(3); /** * 娣诲姞杩囨护鏉′欢 @@ -142,14 +130,38 @@ * @param basicMapper 鐖禡apper * @param wrapper QueryWrapper * @param wkt WKT锛堣憲鍚嶆枃鏈級 - * @param srid 绌洪棿寮曠敤鏍囪瘑绗� * @throws Exception 寮傚父 */ - public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception { - if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) { + public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt) throws Exception { + if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt)) { wkt = AesHelper.decrypt(wkt); - wrapper.apply(String.format("ST_Intersects(geom, ST_PolygonFromText('%s', %d))", wkt, srid)); + + Integer srid = getSrid((GeomBaseMapper) basicMapper); + wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid)); } + } + + /** + * 鑾峰彇鍑犱綍瀵硅薄鐨勭┖闂村弬鑰� + * + * @param basicMapper 绌洪棿鍩虹Mapper + * @return SRID + */ + private Integer getSrid(GeomBaseMapper basicMapper) { + String tab = getTabName(basicMapper); + String key = RedisCacheKey.sridKey(tab); + + Object obj = redisService.get(key); + if (obj instanceof Integer) { + return (Integer) obj; + } + + Integer srid = basicMapper.selectSrid(tab); + if (srid != null) { + redisService.put(key, srid, 5, TimeUnit.MINUTES); + } + + return srid; } /** @@ -158,12 +170,63 @@ * @param basicMapper Mapper * @return 琛ㄥ悕 */ - public String getTabName(BasicMapper basicMapper) { - Object obj = ClassHelper.createEntityByMapper(basicMapper); - if (obj == null) { + public static String getTabName(BasicMapper basicMapper) { + String className = ClassHelper.getClassName(basicMapper); + if (tabMap.containsKey(className)) { + return tabMap.get(className); + } + + return getTabName(className); + } + + /** + * 鏍规嵁Mapper鑾峰彇琛ㄥ悕 + * + * @param className Mapper绫诲悕 + * @return 琛ㄥ悕 + */ + private static String getTabName(String className) { + Class clazz = ClassHelper.getEntityClass(className); + if (clazz == null) { return null; } - return null; + TableName annotation = (TableName) clazz.getAnnotation(TableName.class); + + String tabName = annotation.value(); + if (tabName != null && !tabMap.containsKey(className)) { + tabMap.put(className, tabName); + } + + return tabName; + } + + @Override + public List<IdNameEntity> selectUserFuzzy(String name) { + name = StringHelper.getLikeStr(name); + + return baseQueryMapper.selectUserFuzzy(name); + } + + @Override + public List<IdNameEntity> selectDepFuzzy(String name) { + name = StringHelper.getLikeStr(name); + + return baseQueryMapper.selectDepFuzzy(name); + } + + @Override + public List<TabEntity> selectTabs() { + return baseQueryMapper.selectTabs(); + } + + @Override + public List<DictEntity> selectFields(String ns, String tab) { + return baseQueryMapper.selectFields(ns, tab); + } + + @Override + public List<DomainEntity> selectDomains(String ns, String tab) { + return baseQueryMapper.selectDomains(ns, tab); } } -- Gitblit v1.9.3