commit:同步2.3版本

This commit is contained in:
Jerry
2022-02-20 13:40:36 +08:00
parent c7cc3f5354
commit cbe0f7947d
668 changed files with 172592 additions and 821 deletions

View File

@@ -2,8 +2,8 @@ package com.orangeforms.common.core.base.client;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
import com.orangeforms.common.core.object.*;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import java.util.*;

View File

@@ -3,9 +3,11 @@ package com.orangeforms.common.core.base.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.*;
import com.orangeforms.common.core.base.mapper.BaseModelMapper;
import com.orangeforms.common.core.base.service.IBaseService;
import com.orangeforms.common.core.config.CoreProperties;
import com.orangeforms.common.core.constant.AggregationKind;
import com.orangeforms.common.core.constant.AggregationType;
import com.orangeforms.common.core.constant.ErrorCodeEnum;
@@ -19,6 +21,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.io.Serializable;
import java.lang.reflect.Field;
@@ -42,6 +45,8 @@ import java.util.stream.Collectors;
@Slf4j
public abstract class BaseController<M, V, K extends Serializable> {
@Autowired
private CoreProperties coreProperties;
/**
* 当前Service关联的主Model实体对象的Class。
*/
@@ -245,7 +250,42 @@ public abstract class BaseController<M, V, K extends Serializable> {
}
}
M filter = queryParam.getFilterDto(modelClass);
if (StrUtil.isNotBlank(queryParam.getInFilterField())
&& CollUtil.isNotEmpty(queryParam.getInFilterValues())) {
if (queryParam.getCriteriaList() == null) {
queryParam.setCriteriaList(new LinkedList<>());
}
MyWhereCriteria whereCriteria = new MyWhereCriteria();
whereCriteria.setFieldName(queryParam.getInFilterField());
whereCriteria.setOperatorType(MyWhereCriteria.OPERATOR_IN);
whereCriteria.setValue(queryParam.getInFilterValues());
queryParam.getCriteriaList().add(whereCriteria);
}
String whereClause = MyWhereCriteria.makeCriteriaString(queryParam.getCriteriaList(), modelClass);
if (CollUtil.isNotEmpty(queryParam.getSearchStringFieldList())
&& StrUtil.isNotBlank(queryParam.getSearchStringValue())) {
String tableName = MyModelUtil.mapToTableName(modelClass);
StringBuilder sb = new StringBuilder(128);
if (StrUtil.isNotBlank(whereClause)) {
sb.append(" AND ");
}
sb.append(" CONCAT(");
for (int i = 0; i < queryParam.getSearchStringFieldList().size(); i++) {
String fieldName = queryParam.getSearchStringFieldList().get(i);
String columnName = MyModelUtil.mapToColumnInfo(fieldName, modelClass).getFirst();
if (coreProperties.isMySql()) {
sb.append("IFNULL(");
} else if (coreProperties.isPostgresql()) {
sb.append("COALESCE(");
}
sb.append(tableName).append(".").append(columnName).append(", '')");
if (i != queryParam.getSearchStringFieldList().size() - 1) {
sb.append(", ");
}
}
sb.append(") LIKE ").append("'").append(queryParam.getSearchStringValue()).append("'");
whereClause = whereClause + sb.toString();
}
String orderBy = MyOrderParam.buildOrderBy(queryParam.getOrderParam(), modelClass);
MyPageParam pageParam = queryParam.getPageParam();
if (pageParam != null) {
@@ -364,9 +404,9 @@ public abstract class BaseController<M, V, K extends Serializable> {
for (Map.Entry<Object, Set<Object>> entry : param.getGroupedInFilterValues().entrySet()) {
StringBuilder groupedSelectList = new StringBuilder(64);
if (stringKey) {
groupedSelectList.append("'").append(entry.getKey()).append("' ");
groupedSelectList.append("'").append(entry.getKey()).append("' as ");
} else {
groupedSelectList.append(entry.getKey()).append(" ");
groupedSelectList.append(entry.getKey()).append(" as ");
}
groupedSelectList.append(MyAggregationParam.KEY_NAME).append(", ").append(selectList);
MyWhereCriteria criteria = new MyWhereCriteria();

View File

@@ -5,6 +5,7 @@ import com.orangeforms.common.core.object.TokenData;
import com.orangeforms.common.core.util.ContextUtil;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Configuration;
@@ -17,6 +18,7 @@ import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignConfig implements RequestInterceptor {
@SneakyThrows
@Override
public void apply(RequestTemplate requestTemplate) {
// 对于非servlet请求发起的远程调用由于无法获取到标识用户身份的TokenData因此需要略过下面的HEADER注入。

View File

@@ -19,13 +19,13 @@ public class MyAggregationParam {
* 聚合返回数据中,聚合键的常量字段名。
* 如select groupColumn groupedKey, max(aggregationColumn) aggregatedValue。
*/
public static final String KEY_NAME = "groupedKey";
public static final String KEY_NAME = "grouped_key";
/**
* 聚合返回数据中,聚合值的常量字段名。
* 如select groupColumn groupedKey, max(aggregationColumn) aggregatedValue。
*/
public static final String VALUE_NAME = "aggregatedValue";
public static final String VALUE_NAME = "aggregated_value";
/**
* 聚合计算是否使用数据权限进行过滤。true表示数据过滤将产生作用否则SQL中不会包含数据过滤。

View File

@@ -61,6 +61,16 @@ public class MyQueryParam {
*/
private Boolean withDict = false;
/**
* 参与模糊搜索的Java字段列表。
*/
private List<String> searchStringFieldList;
/**
* 模糊搜索的字符串值,该值要包含百分号,这样可以精确控制搜索参数中百分号的配置。
*/
private String searchStringValue;
/**
* 缺省构造函数。
*/

View File

@@ -43,6 +43,12 @@ public class MyDateUtil {
private static final DateTimeFormatter DATETIME_PARSE_FORMATTER =
DateTimeFormat.forPattern(MyDateUtil.COMMON_DATETIME_FORMAT);
/**
* 缺省短日期时间格式化器,提前获取提升运行时效率。
*/
private static final DateTimeFormatter DATETIME_SHORT_PARSE_FORMATTER =
DateTimeFormat.forPattern(MyDateUtil.COMMON_SHORT_DATETIME_FORMAT);
/**
* 获取一天的开始时间的字符串格式如2019-08-03 00:00:00.000。
*
@@ -144,6 +150,16 @@ public class MyDateUtil {
return DATETIME_PARSE_FORMATTER.parseDateTime(dateTimeString);
}
/**
* 将缺省格式的(不包含毫秒的)日期时间字符串解析为日期对象。
*
* @param dateTimeString 待解析的字符串。
* @return 解析后的日期对象。
*/
public static DateTime toDateTimeWithoutMs(String dateTimeString) {
return DATETIME_SHORT_PARSE_FORMATTER.parseDateTime(dateTimeString);
}
/**
* 截取时间到天。如2019-10-03 01:20:30 转换为 2019-10-03 00:00:00。
* 由于没有字符串的中间转换,因此效率更高。

View File

@@ -16,7 +16,7 @@
<result column="request_arguments" jdbcType="VARCHAR" property="requestArguments"/>
<result column="response_result" jdbcType="VARCHAR" property="responseResult"/>
<result column="request_ip" jdbcType="VARCHAR" property="requestIp"/>
<result column="success" jdbcType="BIT" property="success"/>
<result column="success" jdbcType="BOOLEAN" property="success"/>
<result column="error_msg" jdbcType="VARCHAR" property="errorMsg"/>
<result column="tenant_id" jdbcType="BIGINT" property="tenantId"/>
<result column="operator_id" jdbcType="BIGINT" property="operatorId"/>