管道基础大数据平台系统开发-【后端】-Server
1
13693261870
2023-04-11 4bc6c32f168cd4b4fda77b3a628c0fcd99268ec5
src/main/java/com/lf/server/service/all/BaseQueryService.java
@@ -3,12 +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.data.MetaEntity;
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;
@@ -18,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;
/**
@@ -38,7 +37,7 @@
    /**
     * 表名Map
     */
    private static Map<String, String> tabMap = new HashMap<String, String>(3);
    private static Map<String, String> tabMap = new HashMap<>(3);
    /**
     * 添加过滤条件
@@ -66,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));
        }
    }
@@ -76,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("'", "");
@@ -104,7 +105,7 @@
        switch (express) {
            case "like":
                wrapper.like(field, val);
                wrapper.like("UPPER(" + field + ")", val.toString().toUpperCase());
                break;
            case ">":
                wrapper.gt(field, val);
@@ -125,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;
    }
    /**
@@ -143,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));
        }
    }
@@ -165,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;
    }
@@ -209,37 +235,47 @@
        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 List<TabEntity> selectTabs() {
        return baseQueryMapper.selectTabs();
    public Integer selectTabsForCount(String tab, String field) {
        tab = StringHelper.getLikeUpperStr(tab);
        return baseQueryMapper.selectTabsForCount(tab, field);
    }
    @Override
    public Integer selectTabsForCount(String tab) {
        tab = StringHelper.getLikeStr(tab);
    public List<TabEntity> selectTabsByPage(String tab, String field, String filters, Integer limit, Integer offset) {
        tab = StringHelper.getLikeUpperStr(tab);
        return baseQueryMapper.selectTabsForCount(tab);
    }
    @Override
    public List<TabEntity> selectTabsByPage(String tab, String filters, Integer limit, Integer offset) {
        tab = StringHelper.getLikeStr(tab);
        return baseQueryMapper.selectTabsByPage(tab, filters, limit, offset);
        return baseQueryMapper.selectTabsByPage(tab, field, filters, limit, offset);
    }
    @Override
@@ -263,17 +299,14 @@
    }
    @Override
    public List<KeyValueEntity> selectBaseType() {
        return baseQueryMapper.selectBaseType();
    public List<KeyValueEntity> selectDirTypes(String name) {
        name = StringHelper.getLikeUpperStr(name);
        return baseQueryMapper.selectDirTypes(name);
    }
    @Override
    public List<KeyValueEntity> selectBusinessType() {
        return baseQueryMapper.selectBusinessType();
    }
    @Override
    public List<KeyValueEntity> selectProject() {
        return baseQueryMapper.selectProject();
    public List<AttachEntity> selectAnnexByTab(String tab, String gids) {
        return baseQueryMapper.selectAnnexByTab(tab, gids);
    }
}