Compare commits

...

77 Commits

Author SHA1 Message Date
chenbowen
7f7c4210ac Merge branch 'dev' into test 2025-11-28 14:01:14 +08:00
chenbowen
db3afb5b64 Merge remote-tracking branch 'base-version/main' into dev 2025-11-28 11:07:42 +08:00
chenbowen
542466270a 1. 修复自定义 sql 中大写表名无法匹配到 mybatis 中的缓存表信息,导致表被忽略租户的问题
2. 新增 iwork feign api 调用
2025-11-28 11:05:09 +08:00
chenbowen
03ebe21670 1. 清理 iwork 无用的接口。
2. 整合 iwork 用户的密码管理策略。
2025-11-27 20:25:02 +08:00
chenbowen
64d0d4e55e 1. iwork 统一用印发起接口 2025-11-27 20:19:27 +08:00
chenbowen
22599bbc65 Merge branch 'dev' into test 2025-11-27 16:46:27 +08:00
chenbowen
240a531ee1 Merge remote-tracking branch 'base-version/main' into dev
# Conflicts:
#	zt-module-bpm/zt-module-bpm-server/src/main/java/liquibase/database/core/DmDatabase.java
2025-11-27 16:35:49 +08:00
chenbowen
00b2f6312d 修复 flowable 无法通过 dm 数据库驱动正常获取 schema 的bug 2025-11-27 16:01:05 +08:00
chenbowen
446b5ca7a4 剔除掉 swagger 不能请求的 rpc-api 2025-11-27 13:48:55 +08:00
chenbowen
28a49ce45a 修复 dm jdbc 不兼容 flowable 转义 sql 的错误 2025-11-27 13:26:30 +08:00
chenbowen
4bd0402dde 禁止事件引擎重复自动建表 2025-11-27 11:16:49 +08:00
chenbowen
0ab550123f 关闭 databus web 请求连接池 2025-11-27 10:27:30 +08:00
chenbowen
cd21239ff2 flowable 达梦迁移 2025-11-27 09:58:44 +08:00
chenbowen
837e09941a Merge branch 'dev' into test 2025-11-26 20:14:04 +08:00
chenbowen
256bf22a10 Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 20:12:46 +08:00
chenbowen
76eabb6db0 修复 system 模块编译错误 2025-11-26 20:12:07 +08:00
chenbowen
06909fafea 当前登录用户新增公司编码与部门编码属性 2025-11-26 20:01:34 +08:00
qianshijiang
00956030a4 错误信息未记录到日志文件 2025-11-26 15:52:00 +08:00
chenbowen
2dac28d3b3 Merge branch 'dev' into test 2025-11-26 13:46:23 +08:00
chenbowen
dbb1d1905e Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 13:46:02 +08:00
chenbowen
08232eb3cb iwork 人员组织同步相关 2025-11-26 13:45:06 +08:00
chenbowen
5de2801fc9 Merge branch 'dev' into test 2025-11-26 12:40:05 +08:00
chenbowen
e9994a24c2 Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 12:39:44 +08:00
chenbowen
a10732119b iwork 人员组织同步相关 2025-11-26 12:38:38 +08:00
qianshijiang
e7efddf976 配置mybais-plus打印sql 2025-11-26 11:57:17 +08:00
chenbowen
13ec805c20 Merge branch 'dev' into test 2025-11-26 11:34:59 +08:00
chenbowen
61e61d08b6 Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 11:34:41 +08:00
chenbowen
5698c34185 iwork 人员组织同步相关 2025-11-26 11:34:04 +08:00
qianshijiang
96058e29c2 Merge remote-tracking branch 'origin/dev' into dev 2025-11-26 10:44:28 +08:00
qianshijiang
27d22de4e0 日志配置修改 2025-11-26 10:44:13 +08:00
chenbowen
f1242e74fc Merge branch 'dev' into test 2025-11-26 10:43:25 +08:00
chenbowen
0c0d82f465 Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 10:43:04 +08:00
chenbowen
12ba2cf756 iwork 人员组织同步相关 2025-11-26 10:42:24 +08:00
qianshijiang
b1bd193f50 nacos配置。 2025-11-26 08:57:00 +08:00
chenbowen
0b4b87845c Merge branch 'dev' into test 2025-11-26 01:48:49 +08:00
chenbowen
a2f2325119 Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 01:48:31 +08:00
chenbowen
4c79ac8a6d iwork 人员组织同步相关 2025-11-26 01:48:10 +08:00
chenbowen
0c0cb27c15 Merge branch 'dev' into test 2025-11-26 01:35:09 +08:00
chenbowen
a263632e49 Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 01:34:50 +08:00
chenbowen
2e2b7ac6fa iwork 人员组织同步相关 2025-11-26 01:34:08 +08:00
chenbowen
9730573546 Merge branch 'dev' into test 2025-11-26 01:06:13 +08:00
chenbowen
299132943c Merge remote-tracking branch 'base-version/main' into dev 2025-11-26 01:05:55 +08:00
chenbowen
76ba994b50 iwork 人员组织同步相关 2025-11-26 01:04:35 +08:00
chenbowen
dd284728b4 Merge branch 'dev' into test 2025-11-25 23:27:22 +08:00
chenbowen
685ed6b504 Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 23:27:01 +08:00
chenbowen
f754b1c694 iwork 人员组织同步相关 2025-11-25 23:26:26 +08:00
chenbowen
dc1db47d07 iwork 人员组织同步相关 2025-11-25 20:31:56 +08:00
chenbowen
dd38e65972 Merge branch 'dev' into test 2025-11-25 20:09:31 +08:00
chenbowen
02e0c81446 Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 20:09:06 +08:00
chenbowen
6c8c479984 同步 nacos 配置到基础系统 2025-11-25 20:08:31 +08:00
chenbowen
829229a355 Merge branch 'dev' into test 2025-11-25 19:15:29 +08:00
chenbowen
067f7226f4 Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 19:14:59 +08:00
chenbowen
b35df8493c 同步 nacos 配置到基础系统 2025-11-25 19:13:27 +08:00
hewencai
518aa2a773 Merge remote-tracking branch 'origin/dev' into dev 2025-11-25 19:09:13 +08:00
hewencai
4003388740 feat:集成移动云mas短信平台 2025-11-25 19:08:55 +08:00
chenbowen
f16509c107 Merge branch 'dev' into test 2025-11-25 18:58:07 +08:00
chenbowen
565a625df7 Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 18:57:47 +08:00
chenbowen
adcea87bbf 同步 nacos 配置到基础系统 2025-11-25 18:56:12 +08:00
chenbowen
a79806690d Merge branch 'dev' into test 2025-11-25 17:43:28 +08:00
chenbowen
8689c5e844 Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 17:42:26 +08:00
chenbowen
5be1b75be8 iwork 人员组织同步相关,兼容 iwork 返回 2025-11-25 17:41:39 +08:00
chenbowen
06d9ae2688 Merge branch 'dev' into test 2025-11-25 17:22:53 +08:00
chenbowen
547b1d9afb Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 17:22:36 +08:00
chenbowen
2f9c28f166 iwork 人员组织同步相关,兼容 iwork 返回 2025-11-25 17:22:11 +08:00
chenbowen
9a0e60ad84 Merge branch 'dev' into test 2025-11-25 17:19:06 +08:00
chenbowen
c24ae5bad8 Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 17:18:43 +08:00
chenbowen
64eb031486 iwork 人员组织同步相关,兼容 iwork 返回 2025-11-25 17:18:04 +08:00
chenbowen
30b22698e8 Merge branch 'dev' into test 2025-11-25 16:50:11 +08:00
chenbowen
95fab27556 Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 16:49:43 +08:00
chenbowen
2efb815d59 iwork 人员组织同步相关,兼容 iwork 返回 2025-11-25 16:41:29 +08:00
chenbowen
3d5f07b7a5 Merge branch 'dev' into test 2025-11-25 16:08:41 +08:00
chenbowen
77b4e62def Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 16:06:41 +08:00
chenbowen
e2dbaf12a4 iwork 人员组织同步相关 2025-11-25 16:05:52 +08:00
chenbowen
f8d95218f5 Merge branch 'dev' into test 2025-11-25 15:55:44 +08:00
chenbowen
e0d5c0221e Merge remote-tracking branch 'base-version/main' into dev 2025-11-25 15:55:13 +08:00
chenbowen
59afa893b0 修复编译错误 2025-11-25 15:54:50 +08:00
chenbowen
d4d80ce86a iwork 人员组织同步相关 2025-11-25 15:48:47 +08:00
114 changed files with 7992 additions and 724 deletions

21
pom.xml
View File

@@ -237,8 +237,8 @@
<config.server-addr>172.16.46.63:30848</config.server-addr>
<config.namespace>dev</config.namespace>
<config.group>DEFAULT_GROUP</config.group>
<config.username/>
<config.password/>
<config.username>nacos</config.username>
<config.password>P@ssword25</config.password>
<config.version>1.0.0</config.version>
</properties>
</profile>
@@ -250,8 +250,8 @@
<config.server-addr>172.16.46.63:30848</config.server-addr>
<config.namespace>prod</config.namespace>
<config.group>DEFAULT_GROUP</config.group>
<config.username/>
<config.password/>
<config.username>nacos</config.username>
<config.password>P@ssword25</config.password>
<config.version>1.0.0</config.version>
</properties>
</profile>
@@ -263,8 +263,8 @@
<config.server-addr>172.16.46.63:30848</config.server-addr>
<config.namespace>local</config.namespace>
<config.group>DEFAULT_GROUP</config.group>
<config.username/>
<config.password/>
<config.username>nacos</config.username>
<config.password>P@ssword25</config.password>
<config.version>1.0.0</config.version>
</properties>
</profile>
@@ -277,7 +277,14 @@
<profile>
<id>qsj</id>
<properties>
<config.namespace>qsj</config.namespace>
<env.name>dev</env.name>
<!--Nacos 配置-->
<config.server-addr>172.16.46.63:30848</config.server-addr>
<config.namespace>qsj</config.namespace>
<config.group>DEFAULT_GROUP</config.group>
<config.username>nacos</config.username>
<config.password>P@ssword25</config.password>
<config.version>1.0.0</config.version>
</properties>
</profile>
</profiles>

View File

@@ -0,0 +1,74 @@
CREATE TABLE "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"
(
"ID" BIGINT NOT NULL,
"TRACE_ID" VARCHAR(64) DEFAULT NULL,
"API_CODE" VARCHAR(128) DEFAULT NULL,
"API_VERSION" VARCHAR(32) DEFAULT NULL,
"REQUEST_METHOD" VARCHAR(16) DEFAULT NULL,
"REQUEST_PATH" VARCHAR(512) DEFAULT NULL,
"REQUEST_QUERY" TEXT,
"REQUEST_HEADERS" TEXT,
"REQUEST_BODY" TEXT,
"RESPONSE_STATUS" INT DEFAULT NULL,
"RESPONSE_MESSAGE" VARCHAR(500) DEFAULT NULL,
"RESPONSE_BODY" TEXT,
"STATUS" SMALLINT DEFAULT 3 NOT NULL,
"ERROR_CODE" VARCHAR(100) DEFAULT NULL,
"ERROR_MESSAGE" VARCHAR(1000) DEFAULT NULL,
"EXCEPTION_STACK" TEXT,
"CLIENT_IP" VARCHAR(64) DEFAULT NULL,
"USER_AGENT" VARCHAR(512) DEFAULT NULL,
"DURATION" BIGINT DEFAULT NULL,
"REQUEST_TIME" DATETIME(6) DEFAULT CURRENT_TIMESTAMP NOT NULL,
"RESPONSE_TIME" DATETIME(6) DEFAULT NULL,
"STEP_RESULTS" TEXT,
"EXTRA" TEXT,
"CREATOR" VARCHAR(64) DEFAULT '' NOT NULL,
"CREATE_TIME" DATETIME(6) DEFAULT CURRENT_TIMESTAMP NOT NULL,
"UPDATER" VARCHAR(64) DEFAULT '' NOT NULL,
"UPDATE_TIME" DATETIME(6) DEFAULT CURRENT_TIMESTAMP NOT NULL,
"DELETED" BIT DEFAULT '0' NOT NULL,
"TENANT_ID" BIGINT DEFAULT 0 NOT NULL,
NOT CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
COMMENT ON TABLE "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG IS 'Databus API 访问日志表';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."API_CODE" IS 'API 编码';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."API_VERSION" IS 'API 版本';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."CLIENT_IP" IS '客户端 IP';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."CREATE_TIME" IS '创建时间';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."CREATOR" IS '创建者';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."DELETED" IS '是否删除';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."DURATION" IS '请求耗时(毫秒)';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."ERROR_CODE" IS '业务错误码';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."ERROR_MESSAGE" IS '错误信息';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."EXCEPTION_STACK" IS '异常堆栈';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."EXTRA" IS '额外调试信息JSON 字符串)';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."ID" IS '日志主键';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_BODY" IS '请求体JSON 字符串)';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_HEADERS" IS '请求头JSON 字符串)';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_METHOD" IS '请求方法';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_PATH" IS '请求路径';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_QUERY" IS '请求查询参数JSON 字符串)';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."REQUEST_TIME" IS '请求时间';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_BODY" IS '响应体JSON 字符串)';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_MESSAGE" IS '响应提示信息';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_STATUS" IS '响应 HTTP 状态码';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."RESPONSE_TIME" IS '响应时间';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."STATUS" IS '访问状态0-成功 1-客户端错误 2-服务端错误 3-未知';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."STEP_RESULTS" IS '执行步骤结果JSON 字符串)';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."TENANT_ID" IS '租户编号';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."TRACE_ID" IS '追踪 ID';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."UPDATER" IS '更新者';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."UPDATE_TIME" IS '更新时间';
COMMENT ON COLUMN "RUOYI-VUE-PRO".DATABUS_API_ACCESS_LOG."USER_AGENT" IS 'User-Agent';
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_TRACE" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("TRACE_ID" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_CODE" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("API_CODE" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_METHOD" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("REQUEST_METHOD" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_STATUS" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("STATUS" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_RESP_STATUS" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("RESPONSE_STATUS" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_REQUEST_TIME" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("REQUEST_TIME" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_CLIENT_IP" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("CLIENT_IP" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;
CREATE OR REPLACE INDEX "IDX_DATABUS_API_ACCESS_LOG_TENANT" ON "RUOYI-VUE-PRO"."DATABUS_API_ACCESS_LOG"("TENANT_ID" ASC) STORAGE(ON "MAIN", CLUSTERBTR) ;

View File

@@ -87,6 +87,7 @@
<netty.version>4.1.116.Final</netty.version>
<mqtt.version>1.2.5</mqtt.version>
<pf4j-spring.version>0.9.0</pf4j-spring.version>
<okhttp3.version>4.12.0</okhttp3.version>
<!-- 规则引擎 -->
<liteflow.version>2.15.1</liteflow.version>
<vertx.version>4.5.13</vertx.version>

View File

@@ -182,8 +182,10 @@ public class BusinessDeptHandleUtil {
if (loginUser != null) {
loginUser.setVisitCompanyId(Long.valueOf(info.getCompanyId()));
loginUser.setVisitCompanyName(info.getCompanyName());
loginUser.setVisitCompanyCode(info.getCompanyName());
loginUser.setVisitDeptId(Long.valueOf(info.getDeptId()));
loginUser.setVisitDeptName(info.getDeptName());
loginUser.setVisitDeptCode(info.getDeptName());
}
request.setAttribute(WebFrameworkUtils.HEADER_VISIT_COMPANY_ID, info.getCompanyId());
if (info.getCompanyName() != null) {

View File

@@ -1,12 +1,12 @@
package com.zt.plat.framework.tenant.core.db;
import com.zt.plat.framework.tenant.config.TenantProperties;
import com.zt.plat.framework.tenant.core.aop.TenantIgnore;
import com.zt.plat.framework.tenant.core.context.TenantContextHolder;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.toolkit.SqlParserUtils;
import com.zt.plat.framework.tenant.config.TenantProperties;
import com.zt.plat.framework.tenant.core.aop.TenantIgnore;
import com.zt.plat.framework.tenant.core.context.TenantContextHolder;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
@@ -69,7 +69,12 @@ public class TenantDatabaseInterceptor implements TenantLineHandler {
// 找不到的表,说明不是 zt 项目里的,不进行拦截(忽略租户)
TableInfo tableInfo = TableInfoHelper.getTableInfo(tableName);
if (tableInfo == null) {
return true;
tableName = tableName.toLowerCase();
tableInfo = TableInfoHelper.getTableInfo(tableName);
}
if (tableInfo == null) {
tableName = tableName.toLowerCase();
tableInfo = TableInfoHelper.getTableInfo(tableName);
}
// 如果继承了 TenantBaseDO 基类,显然不忽略租户
if (TenantBaseDO.class.isAssignableFrom(tableInfo.getEntityType())) {

View File

@@ -73,9 +73,11 @@ public class LoginUser {
private Long visitCompanyId;
private String visitCompanyName;
private String visitCompanyCode;
private Long visitDeptId;
private String visitDeptName;
private String visitDeptCode;
public void setContext(String key, Object value) {
if (context == null) {

View File

@@ -1,5 +1,6 @@
package com.zt.plat.framework.swagger.config;
import com.zt.plat.framework.common.enums.RpcConstants;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
@@ -11,6 +12,7 @@ import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springdoc.core.customizers.OpenApiBuilderCustomizer;
import org.springdoc.core.customizers.OpenApiCustomizer;
import org.springdoc.core.customizers.ServerBaseUrlCustomizer;
import org.springdoc.core.models.GroupedOpenApi;
import org.springdoc.core.properties.SpringDocConfigProperties;
@@ -123,12 +125,26 @@ public class ZtSwaggerAutoConfiguration {
return GroupedOpenApi.builder()
.group(group)
.pathsToMatch("/admin-api/" + path + "/**", "/app-api/" + path + "/**")
.pathsToExclude(RpcConstants.RPC_API_PREFIX + "/**")
.addOperationCustomizer((operation, handlerMethod) -> operation
.addParametersItem(buildTenantHeaderParameter())
.addParametersItem(buildSecurityHeaderParameter()))
.build();
}
@Bean
public OpenApiCustomizer rpcApiPathExclusionCustomiser() {
return openApi -> {
if (openApi == null || openApi.getPaths() == null) {
return;
}
openApi.getPaths().entrySet().removeIf(entry -> {
String path = entry.getKey();
return path != null && path.startsWith(RpcConstants.RPC_API_PREFIX);
});
};
}
/**
* 构建 Tenant 租户编号请求头参数
*

View File

@@ -4,8 +4,8 @@ spring:
cloud:
nacos:
server-addr: 172.16.46.63:30848 # Nacos 服务器地址
username: # Nacos 账号
password: # Nacos 密码
username: ${config.username} # Nacos 账号
password: ${config.password} # Nacos 密码
discovery: # 【配置中心】配置项
namespace: ${config.namespace} # 命名空间。这里使用 maven Profile 资源过滤进行动态替换
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP

View File

@@ -5,6 +5,10 @@
<springProperty scope="context" name="zt.info.base-package" source="zt.info.base-package"/>
<!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level级别从左显示 5 个字符宽度,%msg日志消息%n是换行符 -->
<property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!--应用名称-->
<springProperty scope="context" name="spring.application.name" source="spring.application.name"/>
<!-- 日志输出路径 -->
<property name="LOG_DIR" value="${user.home}/logs/${spring.application.name}"/>
<!-- 控制台 Appender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">     
@@ -31,7 +35,7 @@
<!-- 启动服务时,是否清理历史日志,一般不建议清理 -->
<cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
<!-- 日志文件,到达多少容量,进行滚动 -->
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize>
<maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-50MB}</maxFileSize>
<!-- 日志文件的总大小0 表示不限制 -->
<totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap>
<!-- 日志文件的保留天数 -->
@@ -56,18 +60,39 @@
</encoder>
</appender>
<!-- ERROR 级别日志 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}-error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory> <!-- 保留30天的日志 -->
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--logback的日志级别 FATAL > ERROR > WARN > INFO > DEBUG-->
<!-- 本地环境 -->
<springProfile name="local">
<root level="INFO">
<springProfile name="local,dev">
<root level="WARN">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="GRPC"/> <!-- 本地环境下,如果不想接入 SkyWalking 日志服务,可以注释掉本行 -->
<appender-ref ref="ASYNC"/> <!-- 本地环境下,如果不想打印日志,可以注释掉本行 -->
</root>
</springProfile>
<!-- 其它环境 -->
<springProfile name="dev,test,stage,prod,default">
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="ASYNC"/>
<appender-ref ref="GRPC"/>
</root>

View File

@@ -8,17 +8,25 @@ import com.zt.plat.module.bpm.framework.flowable.core.event.BpmProcessInstanceEv
import com.zt.plat.module.system.api.user.AdminUserApi;
import org.flowable.common.engine.api.delegate.FlowableFunctionDelegate;
import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
import org.flowable.engine.ProcessEngineConfiguration;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.flowable.spring.boot.EngineConfigurationConfigurer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.AsyncListenableTaskExecutor;
import org.springframework.jdbc.datasource.DataSourceUtils;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.List;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
/**
* BPM 模块的 Flowable 配置类
@@ -28,6 +36,8 @@ import java.util.List;
@Configuration(proxyBeanMethods = false)
public class BpmFlowableConfiguration {
private static final Logger log = LoggerFactory.getLogger(BpmFlowableConfiguration.class);
/**
* 参考 {@link org.flowable.spring.boot.FlowableJobConfiguration} 类,创建对应的 AsyncListenableTaskExecutor Bean
*
@@ -69,6 +79,37 @@ public class BpmFlowableConfiguration {
};
}
@Bean
public EngineConfigurationConfigurer<SpringProcessEngineConfiguration> dmProcessEngineConfigurationConfigurer(DataSource dataSource) {
return configuration -> {
try {
configureDmCompatibility(configuration, dataSource);
} catch (SQLException ex) {
log.warn("Failed to inspect datasource for DM compatibility; Flowable will keep default settings", ex);
}
};
}
private void configureDmCompatibility(SpringProcessEngineConfiguration configuration, DataSource dataSource) throws SQLException {
Connection connection = null;
try {
connection = DataSourceUtils.getConnection(dataSource);
DatabaseMetaData metaData = connection.getMetaData();
String productName = metaData.getDatabaseProductName();
String jdbcUrl = metaData.getURL();
boolean dmProduct = productName != null && productName.toLowerCase().contains("dm");
boolean dmUrl = jdbcUrl != null && jdbcUrl.toLowerCase().startsWith("jdbc:dm");
if (!dmProduct && !dmUrl) {
return;
}
log.info("Detected DM database (product='{}'); enabling Flowable Oracle compatibility with automatic schema updates", productName);
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
configuration.setDatabaseType("oracle");
} finally {
DataSourceUtils.releaseConnection(connection, dataSource);
}
}
// =========== 审批人相关的 Bean ==========
@Bean

Some files were not shown because too many files have changed in this diff Show More