1. 新增分页接口聚合查询注解支持
2. 优化 databus api 日志记录的字段缺失问题 3. 新增 eplat sso 页面登录校验 4. 用户、部门编辑新增 seata 事务支持 5. 新增 iwork 流程发起接口 6. 新增 eban 同步用户时的岗位处理逻辑 7. 新增无 skywalking 时的 traceId 支持
This commit is contained in:
581
sql/dm/bpm.sql
Normal file
581
sql/dm/bpm.sql
Normal file
File diff suppressed because one or more lines are too long
@@ -26,7 +26,7 @@
|
|||||||
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
<url>https://github.com/YunaiV/ruoyi-vue-pro</url>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<revision>3.0.40</revision>
|
<revision>3.0.43</revision>
|
||||||
<flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version>
|
<flatten-maven-plugin.version>1.6.0</flatten-maven-plugin.version>
|
||||||
<!-- 统一依赖管理 -->
|
<!-- 统一依赖管理 -->
|
||||||
<spring.boot.version>3.4.5</spring.boot.version>
|
<spring.boot.version>3.4.5</spring.boot.version>
|
||||||
|
|||||||
@@ -52,6 +52,12 @@
|
|||||||
<scope>provided</scope> <!-- 设置为 provided,只有工具类需要使用到 -->
|
<scope>provided</scope> <!-- 设置为 provided,只有工具类需要使用到 -->
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.data</groupId>
|
||||||
|
<artifactId>spring-data-redis</artifactId>
|
||||||
|
<scope>provided</scope> <!-- 设置为 provided,只有工具类需要使用到 -->
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>jakarta.servlet</groupId>
|
<groupId>jakarta.servlet</groupId>
|
||||||
<artifactId>jakarta.servlet-api</artifactId>
|
<artifactId>jakarta.servlet-api</artifactId>
|
||||||
@@ -151,6 +157,12 @@
|
|||||||
<artifactId>spring-boot-starter-test</artifactId>
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-core</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.zt.plat.framework.common.annotation;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标记分页结果中需要求和的字段。
|
||||||
|
* <p>
|
||||||
|
* 未显式指定列名时,会默认使用实体字段对应的数据库列。
|
||||||
|
* <p>
|
||||||
|
* {@link #exist()} 可以用于声明该字段并不存在于表结构中,相当于为字段添加
|
||||||
|
* {@code @TableField(exist = false)},方便在 DO 中声明专用于汇总结果的临时字段。
|
||||||
|
*/
|
||||||
|
@Documented
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface PageSum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义求和的数据库列名或表达式,未设置时默认使用实体字段对应的列。
|
||||||
|
*/
|
||||||
|
String column() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否在实体字段上声明真实存在的数据库列。
|
||||||
|
* <p>
|
||||||
|
* 设为 {@code false} 时,框架会自动为该字段提供 {@code @TableField(exist = false)} 的能力,
|
||||||
|
* 适用于只在分页响应中返回的临时统计字段。
|
||||||
|
*/
|
||||||
|
boolean exist() default false;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,11 +1,18 @@
|
|||||||
package com.zt.plat.framework.common.pojo;
|
package com.zt.plat.framework.common.pojo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonAlias;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Schema(description = "分页结果")
|
@Schema(description = "分页结果")
|
||||||
@Data
|
@Data
|
||||||
@@ -15,19 +22,31 @@ public final class PageResult<T> implements Serializable {
|
|||||||
private List<T> list;
|
private List<T> list;
|
||||||
|
|
||||||
@Schema(description = "总量", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "总量", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@JsonProperty("total")
|
||||||
|
@JsonAlias({"totalCount"})
|
||||||
private Long total;
|
private Long total;
|
||||||
|
|
||||||
|
@Schema(description = "汇总信息(字段需使用 @PageSum 标注)")
|
||||||
|
@JsonProperty("summary")
|
||||||
|
private Map<String, BigDecimal> summary;
|
||||||
|
|
||||||
public PageResult() {
|
public PageResult() {
|
||||||
|
this.list = new ArrayList<>();
|
||||||
|
this.summary = Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
public PageResult(List<T> list, Long total) {
|
public PageResult(List<T> list, Long total) {
|
||||||
|
this(list, total, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PageResult(List<T> list, Long total, Map<String, BigDecimal> summary) {
|
||||||
this.list = list;
|
this.list = list;
|
||||||
this.total = total;
|
this.total = total;
|
||||||
|
setSummaryInternal(summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PageResult(Long total) {
|
public PageResult(Long total) {
|
||||||
this.list = new ArrayList<>();
|
this(new ArrayList<>(), total, null);
|
||||||
this.total = total;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T> PageResult<T> empty() {
|
public static <T> PageResult<T> empty() {
|
||||||
@@ -38,4 +57,30 @@ public final class PageResult<T> implements Serializable {
|
|||||||
return new PageResult<>(total);
|
return new PageResult<>(total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSummary(Map<String, BigDecimal> summary) {
|
||||||
|
setSummaryInternal(summary);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setSummaryInternal(Map<String, BigDecimal> summary) {
|
||||||
|
if (summary == null || summary.isEmpty()) {
|
||||||
|
this.summary = Collections.emptyMap();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.summary = new LinkedHashMap<>(summary);
|
||||||
|
}
|
||||||
|
|
||||||
|
public <R> PageResult<R> convert(List<R> newList) {
|
||||||
|
return new PageResult<>(newList, total, summary);
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public Long getTotalCount() {
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
public void setTotalCount(Long totalCount) {
|
||||||
|
this.total = totalCount;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import com.zt.plat.framework.common.pojo.PageResult;
|
import com.zt.plat.framework.common.pojo.PageResult;
|
||||||
import com.zt.plat.framework.common.util.collection.CollectionUtils;
|
import com.zt.plat.framework.common.util.collection.CollectionUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
@@ -69,10 +70,13 @@ public class BeanUtils {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<T> list = toBean(source.getList(), targetType);
|
List<T> list = toBean(source.getList(), targetType);
|
||||||
|
if (list == null) {
|
||||||
|
list = Collections.emptyList();
|
||||||
|
}
|
||||||
if (peek != null) {
|
if (peek != null) {
|
||||||
list.forEach(peek);
|
list.forEach(peek);
|
||||||
}
|
}
|
||||||
return new PageResult<>(list, source.getTotal());
|
return new PageResult<>(list, source.getTotal(), source.getSummary());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void copyProperties(Object source, Object target) {
|
public static void copyProperties(Object source, Object target) {
|
||||||
|
|||||||
@@ -24,10 +24,15 @@ public class TraceFilter extends OncePerRequestFilter {
|
|||||||
@Override
|
@Override
|
||||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
|
||||||
throws IOException, ServletException {
|
throws IOException, ServletException {
|
||||||
// 设置响应 traceId
|
String traceId = TracerUtils.getTraceId();
|
||||||
response.addHeader(HEADER_NAME_TRACE_ID, TracerUtils.getTraceId());
|
try {
|
||||||
// 继续过滤
|
// 设置响应 traceId,便于客户端回溯
|
||||||
chain.doFilter(request, response);
|
response.addHeader(HEADER_NAME_TRACE_ID, traceId);
|
||||||
|
// 继续过滤
|
||||||
|
chain.doFilter(request, response);
|
||||||
|
} finally {
|
||||||
|
TracerUtils.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user