diff --git a/README.md b/README.md
index f4d4a2873..a6fd86c93 100644
--- a/README.md
+++ b/README.md
@@ -23,8 +23,9 @@
> 系统演示: [传送门](https://plus-doc.dromara.org/#/common/demo_system)
> 官方前端项目地址: [gitee](https://gitee.com/JavaLionLi/plus-ui) - [github](https://github.com/JavaLionLi/plus-ui) - [gitcode](https://gitcode.com/dromara/plus-ui)
-> 成员前端项目地址: 基于vben5 [ruoyi-plus-vben5](https://gitee.com/dapppp/ruoyi-plus-vben5)
-> 成员前端项目地址: 基于soybean [ruoyi-plus-soybean](https://gitee.com/xlsea/ruoyi-plus-soybean)
+> 成员前端项目地址: 基于vben5 [ruoyi-plus-vben5](https://gitee.com/dapppp/ruoyi-plus-vben5)
+> 成员前端项目地址: 基于soybean [ruoyi-plus-soybean](https://gitee.com/xlsea/ruoyi-plus-soybean)
+> 成员项目地址: 删除多租户与工作流 [RuoYi-Vue-Plus-Single](https://gitee.com/ColorDreams/RuoYi-Vue-Plus-Single)
> 文档地址: [plus-doc](https://plus-doc.dromara.org) 文档在华为云上如果打不开大概率是DNS问题 可以尝试切换网络等方式(或者科学上网)
diff --git a/pom.xml b/pom.xml
index 39ca8809c..cdfd7bc56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
3.45.1
2.2.7
4.3.1
- 1.4.0
+ 1.5.0
1.4.6
0.2.0
1.18.36
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java
index d603884d1..81d43fdc9 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java
@@ -51,4 +51,9 @@ public class ProcessCreateTaskEvent implements Serializable {
*/
private String businessId;
+ /**
+ * 流程状态
+ */
+ private String status;
+
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/dicts/DictPattern.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/dicts/DictPattern.java
new file mode 100644
index 000000000..73fc4c444
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/dicts/DictPattern.java
@@ -0,0 +1,40 @@
+package org.dromara.common.core.validate.dicts;
+
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 字典项校验注解
+ *
+ * @author AprilWind
+ */
+@Constraint(validatedBy = DictPatternValidator.class)
+@Target({ElementType.FIELD, ElementType.PARAMETER})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DictPattern {
+
+ /**
+ * 字典类型,如 "sys_user_sex"
+ */
+ String dictType();
+
+ /**
+ * 分隔符
+ */
+ String separator();
+
+ /**
+ * 默认校验失败提示信息
+ */
+ String message() default "字典值无效";
+
+ Class>[] groups() default {};
+
+ Class extends Payload>[] payload() default {};
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/dicts/DictPatternValidator.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/dicts/DictPatternValidator.java
new file mode 100644
index 000000000..558a3438a
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/dicts/DictPatternValidator.java
@@ -0,0 +1,55 @@
+package org.dromara.common.core.validate.dicts;
+
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import org.dromara.common.core.service.DictService;
+import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.core.utils.StringUtils;
+
+/**
+ * 自定义字典值校验器
+ *
+ * @author AprilWind
+ */
+public class DictPatternValidator implements ConstraintValidator {
+
+ /**
+ * 字典类型
+ */
+ private String dictType;
+
+ /**
+ * 分隔符
+ */
+ private String separator = ",";
+
+ /**
+ * 初始化校验器,提取注解上的字典类型
+ *
+ * @param annotation 注解实例
+ */
+ @Override
+ public void initialize(DictPattern annotation) {
+ this.dictType = annotation.dictType();
+ if (StringUtils.isNotBlank(annotation.separator())) {
+ this.separator = annotation.separator();
+ }
+ }
+
+ /**
+ * 校验字段值是否为指定字典类型中的合法值
+ *
+ * @param value 被校验的字段值
+ * @param context 校验上下文(可用于构建错误信息)
+ * @return true 表示校验通过(合法字典值),false 表示不通过
+ */
+ @Override
+ public boolean isValid(String value, ConstraintValidatorContext context) {
+ if (StringUtils.isBlank(dictType) || StringUtils.isBlank(value)) {
+ return false;
+ }
+ String dictLabel = SpringUtils.getBean(DictService.class).getDictLabel(dictType, value, separator);
+ return StringUtils.isNotBlank(dictLabel);
+ }
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java
index 6cfa11a33..e63f44a00 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/validate/enumd/EnumPatternValidator.java
@@ -1,37 +1,37 @@
-package org.dromara.common.core.validate.enumd;
-
-import jakarta.validation.ConstraintValidator;
-import jakarta.validation.ConstraintValidatorContext;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.reflect.ReflectUtils;
-
-/**
- * 自定义枚举校验注解实现
- *
- * @author 秋辞未寒
- * @date 2024-12-09
- */
-public class EnumPatternValidator implements ConstraintValidator {
-
- private EnumPattern annotation;;
-
- @Override
- public void initialize(EnumPattern annotation) {
- ConstraintValidator.super.initialize(annotation);
- this.annotation = annotation;
- }
-
- @Override
- public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
- if (StringUtils.isNotBlank(value)) {
- String fieldName = annotation.fieldName();
- for (Object e : annotation.type().getEnumConstants()) {
- if (value.equals(ReflectUtils.invokeGetter(e, fieldName))) {
- return true;
- }
- }
- }
- return false;
- }
-
-}
+package org.dromara.common.core.validate.enumd;
+
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.core.utils.reflect.ReflectUtils;
+
+/**
+ * 自定义枚举校验注解实现
+ *
+ * @author 秋辞未寒
+ * @date 2024-12-09
+ */
+public class EnumPatternValidator implements ConstraintValidator {
+
+ private EnumPattern annotation;
+
+ @Override
+ public void initialize(EnumPattern annotation) {
+ ConstraintValidator.super.initialize(annotation);
+ this.annotation = annotation;
+ }
+
+ @Override
+ public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
+ if (StringUtils.isNotBlank(value)) {
+ String fieldName = annotation.fieldName();
+ for (Object e : annotation.type().getEnumConstants()) {
+ if (value.equals(ReflectUtils.invokeGetter(e, fieldName))) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
index c9e7a9237..6a15d43ba 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java
@@ -68,6 +68,7 @@ public class FlowProcessEventHandler {
processCreateTaskEvent.setNodeCode(instance.getNodeCode());
processCreateTaskEvent.setNodeName(instance.getNodeName());
processCreateTaskEvent.setTaskId(taskId);
+ processCreateTaskEvent.setStatus(instance.getFlowStatus());
SpringUtils.context().publishEvent(processCreateTaskEvent);
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java
index a46cbc5b3..2c95f8aaa 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java
@@ -52,7 +52,7 @@ public class WorkflowGlobalListener implements GlobalListener {
Instance instance = listenerVariable.getInstance();
Definition definition = listenerVariable.getDefinition();
Task task = listenerVariable.getTask();
- if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(instance.getFlowStatus())) {
+ if (task != null) {
// 判断流程状态(发布审批中事件)
flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), instance, task.getId());
}
diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java
index 4ed393e58..521d890e9 100644
--- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java
+++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java
@@ -176,9 +176,11 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
@EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')")
public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) {
log.info("当前任务创建了{}", processCreateTaskEvent.toString());
- TestLeave testLeave = baseMapper.selectById(Long.valueOf(processCreateTaskEvent.getBusinessId()));
- testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus());
- baseMapper.updateById(testLeave);
+ if (BusinessStatusEnum.WAITING.getStatus().equals(processCreateTaskEvent.getStatus())) {
+ TestLeave testLeave = baseMapper.selectById(Long.valueOf(processCreateTaskEvent.getBusinessId()));
+ testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus());
+ baseMapper.updateById(testLeave);
+ }
}
/**
diff --git a/script/sql/oracle/oracle_ry_job.sql b/script/sql/oracle/oracle_ry_job.sql
index 104aabbaa..ba914e5f6 100644
--- a/script/sql/oracle/oracle_ry_job.sql
+++ b/script/sql/oracle/oracle_ry_job.sql
@@ -3,7 +3,7 @@
SnailJob Database Transfer Tool
Source Server Type : MySQL
Target Server Type : Oracle
- Date: 2025-02-25 22:16:28
+ Date: 2025-04-26 10:01:54
*/
@@ -149,7 +149,9 @@ CREATE TABLE sj_retry_dead_letter
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
group_name varchar2(64) NULL,
+ group_id number NOT NULL,
scene_name varchar2(64) NULL,
+ scene_id number NOT NULL,
idempotent_id varchar2(64) NULL,
biz_no varchar2(64) DEFAULT '' NULL,
executor_name varchar2(512) DEFAULT '' NULL,
@@ -169,7 +171,9 @@ CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt);
COMMENT ON COLUMN sj_retry_dead_letter.id IS '主键';
COMMENT ON COLUMN sj_retry_dead_letter.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_dead_letter.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry_dead_letter.group_id IS '组Id';
COMMENT ON COLUMN sj_retry_dead_letter.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry_dead_letter.scene_id IS '场景ID';
COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称';
@@ -184,7 +188,9 @@ CREATE TABLE sj_retry
id number GENERATED ALWAYS AS IDENTITY,
namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL,
group_name varchar2(64) NULL,
+ group_id number NOT NULL,
scene_name varchar2(64) NULL,
+ scene_id number NOT NULL,
idempotent_id varchar2(64) NULL,
biz_no varchar2(64) DEFAULT '' NULL,
executor_name varchar2(512) DEFAULT '' NULL,
@@ -204,19 +210,20 @@ CREATE TABLE sj_retry
ALTER TABLE sj_retry
ADD CONSTRAINT pk_sj_retry PRIMARY KEY (id);
-CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted);
+CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (scene_id, task_type, idempotent_id, deleted);
-CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status);
-CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id);
-CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no);
-CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id);
-CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt);
+CREATE INDEX idx_sj_retry_01 ON sj_retry (biz_no);
+CREATE INDEX idx_sj_retry_02 ON sj_retry (retry_status, bucket_index);
+CREATE INDEX idx_sj_retry_03 ON sj_retry (parent_id);
+CREATE INDEX idx_sj_retry_04 ON sj_retry (create_dt);
+CREATE INDEX idx_sj_retry_05 ON sj_retry (idempotent_id);
COMMENT ON COLUMN sj_retry.id IS '主键';
COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry.group_id IS '组Id';
COMMENT ON COLUMN sj_retry.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry.scene_id IS '场景ID';
COMMENT ON COLUMN sj_retry.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称';
@@ -395,7 +402,7 @@ COMMENT ON TABLE sj_server_node IS '服务器节点';
-- sj_distributed_lock
CREATE TABLE sj_distributed_lock
(
- name varchar2(64) NOT NULL,
+ name varchar2(64) NULL,
lock_until timestamp(3) DEFAULT CURRENT_TIMESTAMP(3) NOT NULL,
locked_at timestamp(3) DEFAULT CURRENT_TIMESTAMP(3) NOT NULL,
locked_by varchar2(255) NULL,
@@ -404,7 +411,7 @@ CREATE TABLE sj_distributed_lock
);
ALTER TABLE sj_distributed_lock
- ADD CONSTRAINT pk_sj_distributed_lock PRIMARY KEY (name);
+ ADD CONSTRAINT pk_sj_distributed_lock PRIMARY KEY (id);
COMMENT ON COLUMN sj_distributed_lock.name IS '锁名称';
COMMENT ON COLUMN sj_distributed_lock.lock_until IS '锁定时长';
diff --git a/script/sql/postgres/postgres_ry_job.sql b/script/sql/postgres/postgres_ry_job.sql
index 8b682dfe5..10612e65c 100644
--- a/script/sql/postgres/postgres_ry_job.sql
+++ b/script/sql/postgres/postgres_ry_job.sql
@@ -2,7 +2,7 @@
SnailJob Database Transfer Tool
Source Server Type : MySQL
Target Server Type : PostgreSQL
- Date: 2025-02-25 22:15:32
+ Date: 2025-04-26 09:56:45
*/
@@ -136,7 +136,9 @@ CREATE TABLE sj_retry_dead_letter
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name varchar(64) NOT NULL,
+ group_id bigint NOT NULL,
scene_name varchar(64) NOT NULL,
+ scene_id bigint NOT NULL,
idempotent_id varchar(64) NOT NULL,
biz_no varchar(64) NOT NULL DEFAULT '',
executor_name varchar(512) NOT NULL DEFAULT '',
@@ -153,7 +155,9 @@ CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt);
COMMENT ON COLUMN sj_retry_dead_letter.id IS '主键';
COMMENT ON COLUMN sj_retry_dead_letter.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry_dead_letter.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry_dead_letter.group_id IS '组Id';
COMMENT ON COLUMN sj_retry_dead_letter.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry_dead_letter.scene_id IS '场景ID';
COMMENT ON COLUMN sj_retry_dead_letter.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry_dead_letter.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry_dead_letter.executor_name IS '执行器名称';
@@ -168,7 +172,9 @@ CREATE TABLE sj_retry
id bigserial PRIMARY KEY,
namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name varchar(64) NOT NULL,
+ group_id bigint NOT NULL,
scene_name varchar(64) NOT NULL,
+ scene_id bigint NOT NULL,
idempotent_id varchar(64) NOT NULL,
biz_no varchar(64) NOT NULL DEFAULT '',
executor_name varchar(512) NOT NULL DEFAULT '',
@@ -185,19 +191,21 @@ CREATE TABLE sj_retry
update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
);
-CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted);
+CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (scene_id, task_type, idempotent_id, deleted);
+
+CREATE INDEX idx_sj_retry_01 ON sj_retry (biz_no);
+CREATE INDEX idx_sj_retry_02 ON sj_retry (retry_status, bucket_index);
+CREATE INDEX idx_sj_retry_03 ON sj_retry (parent_id);
+CREATE INDEX idx_sj_retry_04 ON sj_retry (create_dt);
+CREATE INDEX idx_sj_retry_05 ON sj_retry (idempotent_id);
-CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name);
-CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status);
-CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id);
-CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no);
-CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id);
-CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt);
COMMENT ON COLUMN sj_retry.id IS '主键';
COMMENT ON COLUMN sj_retry.namespace_id IS '命名空间id';
COMMENT ON COLUMN sj_retry.group_name IS '组名称';
+COMMENT ON COLUMN sj_retry.group_id IS '组Id';
COMMENT ON COLUMN sj_retry.scene_name IS '场景名称';
+COMMENT ON COLUMN sj_retry.scene_id IS '场景ID';
COMMENT ON COLUMN sj_retry.idempotent_id IS '幂等id';
COMMENT ON COLUMN sj_retry.biz_no IS '业务编号';
COMMENT ON COLUMN sj_retry.executor_name IS '执行器名称';
diff --git a/script/sql/ry_job.sql b/script/sql/ry_job.sql
index 3577d6614..dd86deb45 100644
--- a/script/sql/ry_job.sql
+++ b/script/sql/ry_job.sql
@@ -84,7 +84,9 @@ CREATE TABLE `sj_retry_dead_letter`
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `group_id` bigint(20) NOT NULL COMMENT '组Id',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
+ `scene_id` bigint(20) NOT NULL COMMENT '场景ID',
`idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
`biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
`executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
@@ -105,7 +107,9 @@ CREATE TABLE `sj_retry`
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id',
`group_name` varchar(64) NOT NULL COMMENT '组名称',
+ `group_id` bigint(20) NOT NULL COMMENT '组Id',
`scene_name` varchar(64) NOT NULL COMMENT '场景名称',
+ `scene_id` bigint(20) NOT NULL COMMENT '场景ID',
`idempotent_id` varchar(64) NOT NULL COMMENT '幂等id',
`biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号',
`executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称',
@@ -121,13 +125,12 @@ CREATE TABLE `sj_retry`
`create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
- KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`),
- KEY `idx_namespace_id_group_name_retry_status` (`namespace_id`, `group_name`, `retry_status`),
- KEY `idx_idempotent_id` (`idempotent_id`),
KEY `idx_biz_no` (`biz_no`),
+ KEY `idx_idempotent_id` (`idempotent_id`),
+ KEY `idx_retry_status_bucket_index` (`retry_status`, `bucket_index`),
KEY `idx_parent_id` (`parent_id`),
KEY `idx_create_dt` (`create_dt`),
- UNIQUE KEY `uk_name_task_type_idempotent_id_deleted` (`namespace_id`, `group_name`, `task_type`, `idempotent_id`, `deleted`)
+ UNIQUE KEY `uk_scene_tasktype_idempotentid_deleted` (`scene_id`, `task_type`, `idempotent_id`, `deleted`)
) ENGINE = InnoDB
AUTO_INCREMENT = 0
DEFAULT CHARSET = utf8mb4 COMMENT ='重试信息表';
diff --git a/script/sql/sqlserver/sqlserver_ry_job.sql b/script/sql/sqlserver/sqlserver_ry_job.sql
index 5a0bbb39b..9268e9f0d 100644
--- a/script/sql/sqlserver/sqlserver_ry_job.sql
+++ b/script/sql/sqlserver/sqlserver_ry_job.sql
@@ -2,7 +2,7 @@
SnailJob Database Transfer Tool
Source Server Type : MySQL
Target Server Type : Microsoft SQL Server
- Date: 2025-02-25 22:16:48
+ Date: 2025-04-26 10:03:23
*/
@@ -410,7 +410,9 @@ CREATE TABLE sj_retry_dead_letter
id bigint NOT NULL PRIMARY KEY IDENTITY,
namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name nvarchar(64) NOT NULL,
+ group_id bigint NOT NULL,
scene_name nvarchar(64) NOT NULL,
+ scene_id bigint NOT NULL,
idempotent_id nvarchar(64) NOT NULL,
biz_no nvarchar(64) NOT NULL DEFAULT '',
executor_name nvarchar(512) NOT NULL DEFAULT '',
@@ -450,6 +452,13 @@ EXEC sp_addextendedproperty
'COLUMN', N'group_name'
GO
+EXEC sp_addextendedproperty
+ 'MS_Description', N'组Id',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'sj_retry_dead_letter',
+ 'COLUMN', N'group_id'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'场景名称',
'SCHEMA', N'dbo',
@@ -457,6 +466,13 @@ EXEC sp_addextendedproperty
'COLUMN', N'scene_name'
GO
+EXEC sp_addextendedproperty
+ 'MS_Description', N'场景ID',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'sj_retry_dead_letter',
+ 'COLUMN', N'scene_id'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'幂等id',
'SCHEMA', N'dbo',
@@ -511,7 +527,9 @@ CREATE TABLE sj_retry
id bigint NOT NULL PRIMARY KEY IDENTITY,
namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a',
group_name nvarchar(64) NOT NULL,
+ group_id bigint NOT NULL,
scene_name nvarchar(64) NOT NULL,
+ scene_id bigint NOT NULL,
idempotent_id nvarchar(64) NOT NULL,
biz_no nvarchar(64) NOT NULL DEFAULT '',
executor_name nvarchar(512) NOT NULL DEFAULT '',
@@ -529,20 +547,18 @@ CREATE TABLE sj_retry
)
GO
-CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted)
+CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (scene_id, task_type, idempotent_id, deleted)
GO
-CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name)
+CREATE INDEX idx_sj_retry_01 ON sj_retry (biz_no)
GO
-CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status)
+CREATE INDEX idx_sj_retry_02 ON sj_retry (retry_status, bucket_index)
GO
-CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id)
+CREATE INDEX idx_sj_retry_03 ON sj_retry (parent_id)
GO
-CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no)
+CREATE INDEX idx_sj_retry_04 ON sj_retry (create_dt)
GO
-CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id)
-GO
-CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt)
+CREATE INDEX idx_sj_retry_05 ON sj_retry (idempotent_id)
GO
EXEC sp_addextendedproperty
@@ -566,6 +582,13 @@ EXEC sp_addextendedproperty
'COLUMN', N'group_name'
GO
+EXEC sp_addextendedproperty
+ 'MS_Description', N'组Id',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'sj_retry',
+ 'COLUMN', N'group_id'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'场景名称',
'SCHEMA', N'dbo',
@@ -573,6 +596,13 @@ EXEC sp_addextendedproperty
'COLUMN', N'scene_name'
GO
+EXEC sp_addextendedproperty
+ 'MS_Description', N'场景ID',
+ 'SCHEMA', N'dbo',
+ 'TABLE', N'sj_retry',
+ 'COLUMN', N'scene_id'
+GO
+
EXEC sp_addextendedproperty
'MS_Description', N'幂等id',
'SCHEMA', N'dbo',