Browse Source

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/digital-twin into develop

lijie 3 năm trước cách đây
mục cha
commit
44422a6989

+ 2 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/define/controller/ObjectInfoController.java

@@ -52,6 +52,8 @@ public class ObjectInfoController {
             Integer total = service.queryCount(wrapper);
             Integer total = service.queryCount(wrapper);
             page.setTotal(total);
             page.setTotal(total);
         } else {
         } else {
+            // 20210819 临时处理,优化执行计划,解决Mysql:Out of sort memory问题
+            wrapper.select("/*+ SET_VAR(sort_buffer_size = 2M) */*");
             page = service.queryByCondition(QueryCriteriaHelper.toPage(criteria), wrapper);
             page = service.queryByCondition(QueryCriteriaHelper.toPage(criteria), wrapper);
         }
         }
         return ResultHelper.multi(page.getRecords(), page.getTotal());
         return ResultHelper.multi(page.getRecords(), page.getTotal());

+ 16 - 2
dmp-common/src/main/java/com/persagy/dmp/common/handler/CommonExceptionHandler.java

@@ -1,5 +1,6 @@
 package com.persagy.dmp.common.handler;
 package com.persagy.dmp.common.handler;
 
 
+import cn.hutool.core.exceptions.ExceptionUtil;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.model.response.CommonResult;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
 import org.springframework.web.servlet.NoHandlerFoundException;
 import org.springframework.web.servlet.NoHandlerFoundException;
 
 
 import javax.validation.ValidationException;
 import javax.validation.ValidationException;
+import java.sql.SQLException;
 
 
 /**
 /**
  * @description: 通用异常处理类
  * @description: 通用异常处理类
@@ -31,7 +33,7 @@ public class CommonExceptionHandler {
     @ExceptionHandler(NullPointerException.class)
     @ExceptionHandler(NullPointerException.class)
     public CommonResult handleBusinessRuntimeException(NullPointerException e) {
     public CommonResult handleBusinessRuntimeException(NullPointerException e) {
         log.error(e.getMessage(), e);
         log.error(e.getMessage(), e);
-        return ResultHelper.failure(ResponseCode.B0001.getCode(), e.getMessage());
+        return ResultHelper.failure(ResponseCode.B0001.getCode(), ExceptionUtil.getRootCauseMessage(e));
     }
     }
 
 
     /**
     /**
@@ -44,6 +46,17 @@ public class CommonExceptionHandler {
     }
     }
 
 
     /**
     /**
+     * SQL异常
+     * @param e
+     * @return
+     */
+    @ExceptionHandler(SQLException.class)
+    public CommonResult handleSQLException(SQLException e) {
+        log.error(e.getMessage(), e);
+        return ResultHelper.failure(ResponseCode.A0400.getCode(), e.getMessage());
+    }
+
+    /**
      * 入参校验异常
      * 入参校验异常
      */
      */
     @ExceptionHandler(MethodArgumentNotValidException.class)
     @ExceptionHandler(MethodArgumentNotValidException.class)
@@ -106,6 +119,7 @@ public class CommonExceptionHandler {
     @ExceptionHandler(Exception.class)
     @ExceptionHandler(Exception.class)
     public CommonResult handleException(Exception e) {
     public CommonResult handleException(Exception e) {
         log.error(e.getMessage(), e);
         log.error(e.getMessage(), e);
-        return ResultHelper.failure(ResponseCode.Z9999.getCode(), ResponseCode.Z9999.getDesc());
+        // 20210819 返回实际的异常信息
+        return ResultHelper.failure(ResponseCode.Z9999.getCode(), ExceptionUtil.getRootCauseMessage(e));
     }
     }
 }
 }

+ 22 - 1
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/basic/utils/QueryCriteriaHelper.java

@@ -1,7 +1,9 @@
 package com.persagy.dmp.basic.utils;
 package com.persagy.dmp.basic.utils;
 
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -10,6 +12,7 @@ import com.persagy.dmp.basic.model.QueryOperator;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 
 
 import java.util.Iterator;
 import java.util.Iterator;
+import java.util.List;
 
 
 /**
 /**
  * 查询条件 助手
  * 查询条件 助手
@@ -38,7 +41,8 @@ public class QueryCriteriaHelper {
         Page pageInfo = new Page();
         Page pageInfo = new Page();
         pageInfo.setCurrent(criteria.getPage());
         pageInfo.setCurrent(criteria.getPage());
         pageInfo.setSize(criteria.getSize());
         pageInfo.setSize(criteria.getSize());
-        pageInfo.setOrders(criteria.getOrders());
+        // 20210819 size<-1时,拦截器不执行page的配置,因此改为在wrapper中排序
+//        pageInfo.setOrders(criteria.getOrders());
         pageInfo.setSearchCount(!criteria.isWithoutCount());
         pageInfo.setSearchCount(!criteria.isWithoutCount());
         return pageInfo;
         return pageInfo;
     }
     }
@@ -52,6 +56,7 @@ public class QueryCriteriaHelper {
             return;
             return;
         }
         }
         toWrapper(wrapper, criteria.getCriteria());
         toWrapper(wrapper, criteria.getCriteria());
+        ensureOrders(wrapper, criteria.getOrders());
     }
     }
 
 
     /**
     /**
@@ -170,4 +175,20 @@ public class QueryCriteriaHelper {
             }
             }
         }
         }
     }
     }
+
+    /**
+     * 拼接排序条件
+     * @param wrapper
+     * @param orders
+     * @param <T>
+     */
+    public static <T extends BaseEntity> void ensureOrders(QueryWrapper<T> wrapper, List<OrderItem> orders) {
+        if(CollUtil.isEmpty(orders)) {
+            return;
+        }
+        for(OrderItem order:orders) {
+            String column = StrUtil.toUnderlineCase(order.getColumn());
+            wrapper.orderBy(true, order.isAsc(), column);
+        }
+    }
 }
 }

+ 7 - 1
dmp-comp/dmp-mybatis/src/main/java/com/persagy/dmp/mybatis/config/MybatisPlusConfig.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.mybatis.spring.annotation.MapperScan;
 import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.boot.CommandLineRunner;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
@@ -25,6 +26,8 @@ public class MybatisPlusConfig implements CommandLineRunner {
 
 
     @Resource
     @Resource
     private ObjectMapper objectMapper;
     private ObjectMapper objectMapper;
+    @Value("${persagy.common.sql.limit:500}")
+    private long sqlLimit;
 
 
     @Override
     @Override
     public void run(String... args) throws Exception {
     public void run(String... args) throws Exception {
@@ -38,7 +41,10 @@ public class MybatisPlusConfig implements CommandLineRunner {
      */
      */
     @Bean
     @Bean
     public PaginationInterceptor paginationInterceptor() {
     public PaginationInterceptor paginationInterceptor() {
-        return new PaginationInterceptor();
+        PaginationInterceptor interceptor = new PaginationInterceptor();
+        // 设置每页查询记录上限,默认500(与mp相同)
+        interceptor.setLimit(sqlLimit);
+        return interceptor;
     }
     }
 
 
     /**
     /**