From ac20dc99bf1f463365dba071973e08fffbd294b4 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期五, 14 七月 2023 14:12:21 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/all/BaseQueryService.java | 89 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 68 insertions(+), 21 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 286df38..5b2a31e 100644 --- a/src/main/java/com/lf/server/service/all/BaseQueryService.java +++ b/src/main/java/com/lf/server/service/all/BaseQueryService.java @@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.lf.server.entity.all.RedisCacheKey; +import com.lf.server.entity.all.StaticData; import com.lf.server.entity.ctrl.IdNameEntity; import com.lf.server.entity.ctrl.KeyValueEntity; 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.entity.sys.AttachEntity; import com.lf.server.helper.AesHelper; import com.lf.server.helper.ClassHelper; import com.lf.server.helper.StringHelper; @@ -17,9 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; /** @@ -37,7 +37,7 @@ /** * 琛ㄥ悕Map */ - private static Map<String, String> tabMap = new HashMap<String, String>(3); + private static Map<String, String> tabMap = new HashMap<>(3); /** * 娣诲姞杩囨护鏉′欢 @@ -65,7 +65,7 @@ String express = str.substring(start + 1, end).trim().toLowerCase(); String value = str.substring(end + 1).trim(); - addWrapper(wrapper, field, express, getObjectVal(value)); + addWrapper(wrapper, field, express, getObjectVal(express, value)); } } @@ -75,13 +75,15 @@ * @param val 鍊� * @return 瀵硅薄 */ - private Object getObjectVal(String val) { + private Object getObjectVal(String express, String val) { if (StringHelper.isInteger(val)) { return Long.parseLong(val); } - if (StringHelper.isNumeric(val)) { return Double.parseDouble(val); + } + if (StaticData.IN.equals(express)) { + return val; } return val.replace("'", ""); @@ -124,9 +126,35 @@ case "<=": wrapper.le(field, val); break; + case "in": + if (val.toString().contains(StaticData.SINGLE_QUOTES)) { + wrapper.in(field, getStringList(val.toString())); + } else { + wrapper.in(field, getIntegerList(val.toString())); + } + break; default: break; } + } + + /** + * 鑾峰彇瀛楃涓插垪琛� + */ + 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)) { + list.add(Integer.parseInt(str)); + } + + return list; } /** @@ -142,9 +170,7 @@ wkt = AesHelper.decrypt(wkt); Integer srid = getSrid((GeomBaseMapper) basicMapper); - if (null != srid) { - wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid)); - } + wrapper.apply(String.format("ST_Intersects(ST_PolygonFromText('%s', %d), geom)", wkt, srid)); } } @@ -164,9 +190,10 @@ } Integer srid = basicMapper.selectSrid(tab); - if (srid != null) { - redisService.put(key, srid, 5, TimeUnit.MINUTES); + if (null == srid) { + return StaticData.I4490; } + redisService.put(key, srid, 5, TimeUnit.MINUTES); return srid; } @@ -208,32 +235,47 @@ 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 + buffer = buffer / 1852 / 60; + + wrapper.apply(String.format("ST_Intersects(geom, ST_Buffer(ST_GeomFromText('%s', %d), %f, 'endcap=round join=round'))", wkt, srid, buffer)); + } + @Override public List<IdNameEntity> selectUserFuzzy(String name) { - name = StringHelper.getLikeStr(name); + name = StringHelper.getLikeUpperStr(name); return baseQueryMapper.selectUserFuzzy(name); } @Override public List<IdNameEntity> selectDepFuzzy(String name) { - name = StringHelper.getLikeStr(name); + name = StringHelper.getLikeUpperStr(name); return baseQueryMapper.selectDepFuzzy(name); } @Override - public Integer selectTabsForCount(String tab, String field) { - tab = StringHelper.getLikeStr(tab); + 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) { - tab = StringHelper.getLikeStr(tab); + 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 @@ -258,8 +300,13 @@ @Override public List<KeyValueEntity> selectDirTypes(String name) { - name = StringHelper.getLikeStr(name); + name = StringHelper.getLikeUpperStr(name); return baseQueryMapper.selectDirTypes(name); } + + @Override + public List<AttachEntity> selectAnnexByTab(String tab, String gids) { + return baseQueryMapper.selectAnnexByTab(tab, gids); + } } -- Gitblit v1.9.3