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

弹窗返回分页数据

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