package com.lf.server.controller.all; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.lf.server.aspect.SysLog; import com.lf.server.entity.all.ResponseMsg; import com.lf.server.entity.ctrl.IdNameEntity; 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.helper.AesHelper; import com.lf.server.helper.StringHelper; import com.lf.server.mapper.all.BasicMapper; import com.lf.server.mapper.all.GeomBaseMapper; import com.lf.server.service.all.BaseQueryService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import java.util.List; /** * 父查询控制器 * @author WWW */ public class BaseQueryController extends BaseController { @Autowired BaseQueryService baseQueryService; @SysLog() @ApiOperation(value = "查询记录数") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp"), @ApiImplicitParam(name = "filter", value = "过滤条件", dataType = "String", paramType = "query", example = "gid >= 50 and name like '县' and objectid < 5000.0"), @ApiImplicitParam(name = "wkt", value = "WKT(著名文本)", dataType = "String", paramType = "query", example = "gAPpDbZ53XfoQfvT8dj/uhBWX5os8kBJQ1LrNvH3VX7byFQdUJMPiEr8Fkj0q2i1pw+L8KFrvR0MLXq2xaO21nlQQXmEPofJxpDQZwEWUIFZsToXo1kLRD3t6WQezxWB8YTzXHM20Ba73x/ZuuezVhOFOq1U8HKf1dXQdv7gBzEB6fWMmFDc3FuH8GDDHv3LfT86Gio9VgMO6ohlrUdf3ZKtTHeLSuzGF4t0RZuX97YBNo25IIzpeTfRTXBxfdxA"), @ApiImplicitParam(name = "srid", value = "空间引用标识符", dataType = "Integer", paramType = "query", example = "4326") }) @GetMapping({"/selectCount"}) public ResponseMsg selectCount(String name, String filter, String wkt, Integer srid) { try { BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("查询对象不存在", null); } QueryWrapper wrapper = new QueryWrapper(); baseQueryService.addFilterWrapper(wrapper, filter); baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid); long count = baseMapper.selectCount(wrapper); return success(count); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "分页查询") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp"), @ApiImplicitParam(name = "filter", value = "过滤条件", dataType = "String", paramType = "query", example = ""), @ApiImplicitParam(name = "wkt", value = "WKT(著名文本)", dataType = "String", paramType = "query", example = ""), @ApiImplicitParam(name = "srid", value = "空间引用标识符", dataType = "Integer", paramType = "query", example = "4326"), @ApiImplicitParam(name = "pageIndex", value = "分页数(从1开始)", dataType = "Integer", paramType = "query", example = "1"), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "Integer", paramType = "query", example = "10") }) @GetMapping(value = "/selectByPage") public ResponseMsg> selectByPage(String name, String filter, String wkt, Integer srid, Integer pageIndex, Integer pageSize) { try { BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("查询对象不存在", null); } QueryWrapper wrapper = new QueryWrapper(); baseQueryService.addFilterWrapper(wrapper, filter); baseQueryService.addGeomWrapper(baseMapper, wrapper, wkt, srid); Page page = new Page<>(pageIndex, pageSize); page.addOrder(OrderItem.asc("gid")); IPage paged = baseMapper.selectPage(page, wrapper); return success(paged.getTotal(), paged.getRecords()); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "根据ID查询WKT") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp"), @ApiImplicitParam(name = "gid", value = "GID", dataType = "Integer", paramType = "query", example = "1") }) @GetMapping(value = "/selectWktById") public ResponseMsg selectWktById(String name, Integer gid) { try { GeomBaseMapper baseMapper = baseQueryService.getGeoBaseMapper(name); if (baseMapper == null) { return fail("查询对象不存在", null); } String tab = baseQueryService.getTabName(baseMapper); if (StringHelper.isNull(tab)) { return fail("查询对象不存在", null); } String wkt = baseMapper.selectWktById(tab, gid); if (!StringHelper.isEmpty(wkt)) { wkt = AesHelper.encrypt(wkt); } return success(wkt); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "模糊搜索字段") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp"), @ApiImplicitParam(name = "field", value = "字段", dataType = "String", paramType = "query", example = "name"), @ApiImplicitParam(name = "value", value = "值", dataType = "String", paramType = "query", example = "'县'") }) @GetMapping(value = "/selectFieldFuzzy") public ResponseMsg> selectFieldFuzzy(String name, String field, String value) { try { BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("查询对象不存在", null); } String tab = baseQueryService.getTabName(baseMapper); if (StringHelper.isNull(tab)) { return fail("查询对象不存在", null); } if (StringHelper.isEmpty(field) || StringHelper.isSqlInjection(field)) { return fail("查询字段不正确", null); } if (!StringHelper.isEmpty(value)) { value = value.trim().replace("'", ""); } value = StringHelper.getLikeStr2(value); List rs = baseMapper.selectFieldFuzzy(tab, field, value); return success(rs); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "模糊搜索用户") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "用户名", dataType = "String", paramType = "query", example = "室") }) @GetMapping(value = "/selectUserFuzzy") public ResponseMsg> selectUserFuzzy(String name) { try { List rs = baseQueryService.selectUserFuzzy(name); return success(rs); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "模糊搜索单位") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "单位名", dataType = "String", paramType = "query", example = "司") }) @GetMapping(value = "/selectDepFuzzy") public ResponseMsg> selectDepFuzzy(String name) { try { List rs = baseQueryService.selectDepFuzzy(name); return success(rs); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "查询所有表") @GetMapping(value = "/selectTabs") public ResponseMsg> selectTabs() { try { List list = baseQueryService.selectTabs(); return success(list); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "查询字段信息") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp") }) @GetMapping(value = "/selectFields") public ResponseMsg> selectFields(String name) { try { BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("查询对象不存在", null); } String tabName = baseQueryService.getTabName(baseMapper); if (tabName == null) { return null; } String[] strs = tabName.split("."); List list = baseQueryService.selectFields(strs[0], strs[1]); return success(list); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "查询值域信息") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "映射名称", dataType = "String", paramType = "query", example = "dlgAgnp") }) @GetMapping(value = "/selectDomains") public ResponseMsg> selectDomains(String name) { try { BasicMapper baseMapper = baseQueryService.getBasicMapper(name); if (baseMapper == null) { return fail("查询对象不存在", null); } String tabName = baseQueryService.getTabName(baseMapper); if (tabName == null) { return null; } String[] strs = tabName.split("."); List list = baseQueryService.selectDomains(strs[0], strs[1]); return success(list); } catch (Exception ex) { return fail(ex.getMessage(), null); } } }