From 34a130282a3ff8fb0b9afdb4e5b986fb5178625f Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期六, 29 十月 2022 10:22:52 +0800 Subject: [PATCH] 1 --- src/main/java/com/lf/server/service/all/BaseQueryService.java | 71 +++++++++++++++++++++++++++++++++++ 1 files changed, 70 insertions(+), 1 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 b009264..b4ca5e9 100644 --- a/src/main/java/com/lf/server/service/all/BaseQueryService.java +++ b/src/main/java/com/lf/server/service/all/BaseQueryService.java @@ -6,6 +6,7 @@ import com.lf.server.helper.ClassHelper; import com.lf.server.helper.StringHelper; import com.lf.server.mapper.all.GeomBaseMapper; +import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper; import org.springframework.stereotype.Service; /** @@ -53,6 +54,74 @@ } /** + * @param wrapper + * @param filter + */ + public void addFilterWrapper(QueryWrapper wrapper, String filter) { + if (StringHelper.isEmpty(filter)) { + return; + } + + String[] strs = filter.trim().split(" (?i)and "); + for (String str : strs) { + int start = str.indexOf(" "); + if (start == -1) { + continue; + } + int end = str.indexOf(" ", start + 1); + if (end == -1) { + continue; + } + + String field = str.substring(0, start).trim(); + String express = str.substring(start + 1, end).trim().toLowerCase(); + String value = str.substring(end + 1).trim(); + + addWrapper(wrapper, field, express, getObjectVal(value)); + } + } + + private Object getObjectVal(String value) { + if (StringHelper.isInteger(value)) { + return Long.parseLong(value); + } + + if (StringHelper.isNumeric(value)) { + return Double.parseDouble(value); + } + + return value; + } + + private void addWrapper(QueryWrapper wrapper, String field, String express, Object value) { + switch (express) { + case "like": + wrapper.like(field, value); + break; + case ">": + wrapper.gt(field, value); + break; + case ">=": + wrapper.ge(field, value); + break; + case "<>": + wrapper.ne(field, value); + break; + case "=": + wrapper.eq(field, value); + break; + case "<": + wrapper.lt(field, value); + break; + case "<=": + wrapper.le(field, value); + break; + default: + break; + } + } + + /** * 娣诲姞绌洪棿鏌ヨ鏉′欢 * * @param baseMapper 鐖禡apper @@ -61,7 +130,7 @@ * @param srid 绌洪棿寮曠敤鏍囪瘑绗� * @throws Exception 寮傚父 */ - public void addGeomWrapper(BaseMapper baseMapper, QueryWrapper<Object> wrapper, String wkt, Integer srid) throws Exception { + public void addGeomWrapper(BaseMapper baseMapper, QueryWrapper wrapper, String wkt, Integer srid) throws Exception { if (baseMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt) && srid != null) { wkt = AesHelper.decrypt(wkt); wrapper.apply(String.format("ST_Intersects(geom, ST_PolygonFromText('%s', %d))", wkt, srid)); -- Gitblit v1.9.3