| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 表名Map |
| | | */ |
| | | private static Map<String, String> tabMap = new HashMap<String, String>(3); |
| | | private static Map<String, String> tabMap = new HashMap<>(3); |
| | | |
| | | /** |
| | | * 添加过滤条件 |
| | |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | |
| | | * @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("'", ""); |
| | |
| | | |
| | | switch (express) { |
| | | case "like": |
| | | wrapper.like(field, val); |
| | | wrapper.like("UPPER(" + field + ")", val.toString().toUpperCase()); |
| | | break; |
| | | case ">": |
| | | wrapper.gt(field, val); |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | 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)); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | 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; |
| | | } |
| | |
| | | return tabName; |
| | | } |
| | | |
| | | /** |
| | | * 添加缓冲区过滤条件 |
| | | * |
| | | * @param baseMapper 父Mapper |
| | | * @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) { |
| | | tab = StringHelper.getLikeStr(tab); |
| | | public Integer selectTabsForCount(String tab, String field) { |
| | | tab = StringHelper.getLikeUpperStr(tab); |
| | | |
| | | return baseQueryMapper.selectTabsForCount(tab); |
| | | return baseQueryMapper.selectTabsForCount(tab, field); |
| | | } |
| | | |
| | | @Override |
| | | public List<TabEntity> selectTabsByPage(String tab, String filters, Integer limit, Integer offset) { |
| | | tab = StringHelper.getLikeStr(tab); |
| | | public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) { |
| | | tab = StringHelper.getLikeUpperStr(tab); |
| | | |
| | | return baseQueryMapper.selectTabsByPage(tab, filters, limit, offset); |
| | | return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @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); |
| | | } |
| | | } |