| | |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * 父查询服务类 |
| | | * @author WWW |
| | | */ |
| | | @Service |
| | | @SuppressWarnings("ALL") |
| | | public class BaseQueryService implements BaseQueryMapper { |
| | | @Autowired |
| | | BaseQueryMapper baseQueryMapper; |
| | |
| | | @Autowired |
| | | RedisService redisService; |
| | | |
| | | /** |
| | | * 表名Map |
| | | */ |
| | | private static final Map<String, String> TAB_MAP = new HashMap<>(3); |
| | | |
| | | /** |
| | | * 添加过滤条件:(?i)and |
| | | * |
| | | * @param wrapper QueryWrapper |
| | | * @param filter 原始过滤条件字符串 |
| | | */ |
| | | public <T> void addFilterWrapper(QueryWrapper<T> wrapper, String filter) { |
| | | if (StringHelper.isEmpty(filter)) { |
| | | return; |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 驼峰转换为下划线 |
| | | */ |
| | | public static String camelToUnderline(String str) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (int i = 0, c = str.length(); i < c; i++) { |
| | |
| | | return sb.toString().replaceAll("_+", "_"); |
| | | } |
| | | |
| | | /** |
| | | * 下划线转换为驼峰 |
| | | */ |
| | | public static String underlineToCamel(String str) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | |
| | |
| | | return sb.toString(); |
| | | } |
| | | |
| | | /** |
| | | * 获取值对象 |
| | | * |
| | | * @param val 值 |
| | | * @return 对象 |
| | | */ |
| | | private Object getObjectVal(String express, String val) { |
| | | if (StringHelper.isInteger(val)) { |
| | | return Long.parseLong(val); |
| | |
| | | return val.replace("'", ""); |
| | | } |
| | | |
| | | /** |
| | | * 添加包装器 |
| | | * |
| | | * @param wrapper QueryWrapper |
| | | * @param field 字段 |
| | | * @param express 表达式 |
| | | * @param val 值 |
| | | */ |
| | | private <T> void addWrapper(QueryWrapper<T> wrapper, String field, String express, Object val) { |
| | | if (StringHelper.isDate(val.toString())) { |
| | | wrapper.apply(String.format("%s %s '%s'", field, express, val)); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取字符串列表 |
| | | */ |
| | | 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)) { |
| | |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 添加空间过滤条件 |
| | | * |
| | | * @param basicMapper 父Mapper |
| | | * @param wrapper QueryWrapper |
| | | * @param wkt WKT(著名文本) |
| | | * @throws Exception 异常 |
| | | */ |
| | | public void addGeomWrapper(BasicMapper basicMapper, QueryWrapper wrapper, String wkt) throws Exception { |
| | | if (basicMapper instanceof GeomBaseMapper && !StringHelper.isEmpty(wkt)) { |
| | | wkt = AesHelper.decrypt(wkt); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取几何对象的空间参考 |
| | | * |
| | | * @param basicMapper 空间基础Mapper |
| | | * @return SRID |
| | | */ |
| | | public Integer getSrid(GeomBaseMapper basicMapper) { |
| | | String tab = getTabName(basicMapper); |
| | | String key = RedisCacheKey.sridKey(tab); |
| | |
| | | return srid; |
| | | } |
| | | |
| | | /** |
| | | * 根据Mapper获取表名 |
| | | * |
| | | * @param basicMapper Mapper |
| | | * @return 表名 |
| | | */ |
| | | public static String getTabName(BasicMapper basicMapper) { |
| | | String className = ClassHelper.getClassName(basicMapper); |
| | | if (TAB_MAP.containsKey(className)) { |
| | |
| | | return getTabName(className); |
| | | } |
| | | |
| | | /** |
| | | * 根据Mapper获取表名 |
| | | * |
| | | * @param className Mapper类名 |
| | | * @return 表名 |
| | | */ |
| | | private static String getTabName(String className) { |
| | | Class clazz = ClassHelper.getEntityClass(className); |
| | | if (clazz == null) { |
| | |
| | | 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 |