opt:wql分切查询优化
This commit is contained in:
@@ -32,16 +32,16 @@ public class MybatisPlusConfig {
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
// // 分页插件
|
||||
//// // 分页插件
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
|
||||
//乐观锁插件
|
||||
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
|
||||
|
||||
return interceptor;
|
||||
}
|
||||
@Bean
|
||||
ConfigurationCustomizer mybatisConfigurationCustomizer() {
|
||||
return configuration -> configuration.addInterceptor(new PageInterceptor());
|
||||
}
|
||||
// @Bean
|
||||
// ConfigurationCustomizer mybatisConfigurationCustomizer() {
|
||||
// return configuration -> configuration.addInterceptor(new PageInterceptor());
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
@@ -257,7 +257,7 @@ public class ResultBean implements Serializable, Cloneable {
|
||||
int nTotalSize = 0;
|
||||
if (null != rows2 && rows2.size() > 0) {
|
||||
JSONObject jrow2 = this.row2jsonobject((BasicDynaBean) rows2.get(0));
|
||||
nTotalSize = jrow2.getInteger("page_totalrecordnum");
|
||||
nTotalSize = jrow2.getInteger("count(0)");
|
||||
}
|
||||
jres.put("totalElements", nTotalSize);
|
||||
return jres;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.modules.wql.core.engine.syntax;
|
||||
|
||||
import com.github.pagehelper.parser.CountSqlParser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.wql.WQLCore;
|
||||
import org.nl.modules.wql.core.DataType;
|
||||
@@ -410,7 +411,9 @@ public class wqlSELECT extends IWQL {
|
||||
//对sql进行特殊处理,找出和第一个select配对的from,并把中间全部换为1
|
||||
// String page_sql = change_1(wo.wp.sSQL);
|
||||
String page_sql = wo.wp.sSQL;
|
||||
wo.wp.sSQL = "select count(*) PAGE_TOTALRECORDNUM from ( " + page_sql + ") TOTALRECORDVIEW";
|
||||
CountSqlParser countSqlParser = new CountSqlParser();
|
||||
String countSql = countSqlParser.getSmartCountSql(page_sql, "0");
|
||||
wo.wp.sSQL = countSql;
|
||||
}
|
||||
}
|
||||
//2.3、加session并执行
|
||||
@@ -658,7 +661,7 @@ public class wqlSELECT extends IWQL {
|
||||
// this.wo = wo;
|
||||
// this.cmdLine = cmdLine;
|
||||
// this.list = list;
|
||||
//
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public interface RegionService {
|
||||
* @param whereJson 条件参数
|
||||
* @return List<RegionDto>
|
||||
*/
|
||||
List<RegionDto> queryAll(Map whereJson);
|
||||
List<RegionDto> queryAll(String whereJson);
|
||||
|
||||
/**
|
||||
* 根据ID查询
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.FileUtil;
|
||||
@@ -27,6 +28,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author ldjun
|
||||
@@ -59,13 +62,21 @@ public class PointServiceImpl implements PointService {
|
||||
}
|
||||
JSONObject json = WQL.getWO("QSCH_BASE_POINT").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "point_code asc");
|
||||
JSONArray content = json.getJSONArray("content");
|
||||
List<String> regionIds = new ArrayList<>();
|
||||
for (int i = 0; i < content.size(); i++) {
|
||||
JSONObject object = content.getJSONObject(i);
|
||||
String region_id = object.getString("region_id");
|
||||
regionIds.add(region_id);
|
||||
}
|
||||
List<RegionDto> regionDtos = regionService.queryAll("region_id in ('" + regionIds.stream().collect(Collectors.joining(",")) + "')");
|
||||
Map<Long, RegionDto> attrMap = regionDtos.stream().collect(HashMap::new, (m, o) -> m.put(o.getRegion_id(), o), HashMap::putAll);
|
||||
JSONArray res = new JSONArray();
|
||||
for (int i = 0; i < content.size(); i++) {
|
||||
JSONObject object = content.getJSONObject(i);
|
||||
Long region_id = object.getLong("region_id");
|
||||
String point_status = object.getString("point_status");
|
||||
String point_type = object.getString("point_type");
|
||||
RegionDto regionDto = regionService.findById(region_id);
|
||||
RegionDto regionDto = attrMap.get(region_id);
|
||||
String point_status_explain = regionDto.getPoint_status_explain();
|
||||
String point_type_explain = regionDto.getPoint_type_explain();
|
||||
// 获取点位状态名称
|
||||
|
||||
@@ -50,9 +50,9 @@ public class RegionServiceImpl implements RegionService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RegionDto> queryAll(Map whereJson) {
|
||||
public List<RegionDto> queryAll(String whereJson) {
|
||||
WQLObject wo = WQLObject.getWQLObject("sch_base_region");
|
||||
JSONArray arr = wo.query().getResultJSONArray(0);
|
||||
JSONArray arr = wo.query(whereJson).getResultJSONArray(0);
|
||||
if (ObjectUtil.isNotEmpty(arr)) {
|
||||
return arr.toJavaList(RegionDto.class);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user