提交 6eedc7e4 authored 作者: 李秋林's avatar 李秋林

弹窗返回分页数据

上级 b47fc457
......@@ -2,6 +2,10 @@ package com.sfa.system.domain.dao.impl;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.sfa.common.core.enums.ECode;
import com.sfa.common.core.exception.WXLSQLException;
import com.sfa.common.core.web.domain.PageInfo;
import com.sfa.common.core.web.page.TableSupport;
import com.sfa.system.domain.entity.SysQuery;
import com.sfa.system.domain.mapper.SysQueryMapper;
import com.sfa.system.pojo.request.GeneralQueryVo;
......@@ -28,38 +32,85 @@ public class GeneralDaoImpl implements IGeneralDao {
@Override
public GeneralQueryResponse queryTableDatas(GeneralQueryVo generalQueryVo) {
GeneralQueryResponse generalQueryResponse = new GeneralQueryResponse();
GeneralQueryResponse generalQueryResponse;
SysQuery sysQuery = sysQueryMapper.selectById(generalQueryVo.getQueryId());
// 主查询语句、默认查询条件、动态查询条件
// 主查询语句、默认查询条件、动态查询条件
String querySql = sysQuery.getQuerySql();
String queryWhere = sysQuery.getQueryWhere();
Map boxheadSelectMap = JSONObject.parseObject(sysQuery.getBoxheadSelect(), Map.class);
StringBuilder sqlBu = new StringBuilder(querySql).append(queryWhere);
StringBuilder sqlCountBu = null;
if (Objects.nonNull(sysQuery.getQueryCountSql())) {
sqlCountBu = new StringBuilder(sysQuery.getQueryCountSql()).append(queryWhere);
}
// 动态查询条件、前端参数进行动态拼接 -->>where cooperate_status = '1' and dealer_name like '%苏州%' and dealer_mgr like '%何亚%';
Map<String, String> wheres = generalQueryVo.getWheres();
if (Objects.nonNull(boxheadSelectMap) && Objects.nonNull(wheres)){
if (Objects.nonNull(boxheadSelectMap) && Objects.nonNull(wheres)) {
for (Map.Entry<String, String> entry : wheres.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
if (Objects.isNull(value)) {
continue;
}
String selectType = boxheadSelectMap.get(key).toString();
if (selectType.equals("like")){
if (selectType.equals("like")) {
sqlBu.append(" and ").append(key).append(" like '%").append(value).append("%' ");
if (Objects.nonNull(sqlCountBu)) {
sqlCountBu.append(" and ").append(key).append(" like '%").append(value).append("%' ");
}
}
}
}
List<HashMap<String,Object>> objs= sysQueryMapper.queryTableDatas(sqlBu.toString());
List<Map> boxhead = JSONArray.parseArray(sysQuery.getBoxhead(),Map.class);
generalQueryResponse.setBoxhead(boxhead)
.setQueryNum(sysQuery.getQueryNum())
.setQueryDisplay(JSONArray.parseArray(sysQuery.getQueryDisplay(), Map.class))
.setRows(objs);
if (sysQuery.isQueryPage()) {
generalQueryResponse = usePage(sysQuery, sqlBu, sqlCountBu);
} else {
generalQueryResponse = nonusePage(sysQuery, sqlBu);
}
return generalQueryResponse;
}
/**
* 分页逻辑
*
* @param sysQuery 开窗SQL
* @param sqlBu 查询语句
* @return 结果
*/
private GeneralQueryResponse usePage(SysQuery sysQuery, StringBuilder sqlBu, StringBuilder sqlCountBu) {
if (Objects.isNull(sqlCountBu)){
throw new WXLSQLException(ECode.SELECT_SQL_NULL_ERROR);
}
PageInfo pageInfo = TableSupport.pageInfo();
sqlBu.append(" limit ").append(pageInfo.getSkipNum()).append(" , ").append(pageInfo.getPageSize());
List<HashMap<String, Object>> objs = sysQueryMapper.queryTableDatas(sqlBu.toString());
int total = sysQueryMapper.queryTotalCount(sqlCountBu.toString());
pageInfo.setTotal(total);
pageInfo.setRows(objs);
return new GeneralQueryResponse().setBoxhead(JSONArray.parseArray(sysQuery.getBoxhead(), Map.class))
.setQueryNum(sysQuery.getQueryNum())
.setQueryDisplay(JSONArray.parseArray(sysQuery.getQueryDisplay(), Map.class))
.setPageInfo(pageInfo);
}
/**
* 未分页逻辑
*
* @param sysQuery 开窗SQL
* @param sqlBu 查询语句
* @return 结果
*/
private GeneralQueryResponse nonusePage(SysQuery sysQuery, StringBuilder sqlBu) {
List<HashMap<String, Object>> objs = sysQueryMapper.queryTableDatas(sqlBu.toString());
List<Map> boxhead = JSONArray.parseArray(sysQuery.getBoxhead(), Map.class);
return new GeneralQueryResponse().setBoxhead(boxhead)
.setQueryNum(sysQuery.getQueryNum())
.setQueryDisplay(JSONArray.parseArray(sysQuery.getQueryDisplay(), Map.class))
.setRows(objs);
}
}
......@@ -70,7 +70,7 @@ public class SysDictTypeDaoImpl implements ISysDictTypeDao
qw.like(SysDictType::getDictName,dictType.getDictName());
}
if (StringUtils.isNotEmpty(dictType.getDictType())){
qw.eq(SysDictType::getDictType,dictType.getDictType());
qw.like(SysDictType::getDictType,dictType.getDictType());
}
return qw;
}
......
......@@ -62,6 +62,11 @@ public class SysQuery extends BaseDo {
*/
private boolean queryPage;
/**
* 当前sql是否分页
*/
private String queryCountSql;
/**
* 表头栏中的样式
*/
......
......@@ -19,6 +19,8 @@ import java.util.List;
public interface SysQueryMapper extends BaseMapper<SysQuery> {
List<HashMap<String,Object>> queryTableDatas(String sqlString);
int queryTotalCount(String sqlCountString);
}
......
package com.sfa.system.pojo.response;
import com.sfa.common.core.web.domain.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.List;
import java.util.Map;
/**
* @author : liqiulin
* @date : 2024-10-24 18
* @describe :
*/
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@Data
public class GeneralQueryResponse <T> {
......@@ -29,4 +34,6 @@ public class GeneralQueryResponse <T> {
List<T> queryDisplay;
PageInfo pageInfo;
}
......@@ -35,4 +35,8 @@
<select id="queryTableDatas" resultType="java.util.HashMap">
${sqlString}
</select>
<select id="queryTotalCount" resultType="integer">
${sqlCountString}
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论