From 384f9528e70e9a45aaca54f62a5b7beca6aa8838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 13 Mar 2025 13:39:36 +0800 Subject: [PATCH 01/20] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E7=B1=BB=E4=B9=A6=E5=86=99=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/system/domain/SysDept.java | 2 +- .../src/main/java/org/dromara/system/domain/vo/SysDeptVo.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java index 8252ed5e5..d436a1cfc 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java @@ -87,6 +87,6 @@ public class SysDept extends TenantEntity { * 子部门 */ @TableField(exist = false) - private List children = new ArrayList<>(); + private List children = new ArrayList<>(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java index 24ae56476..1f182a248 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java @@ -7,7 +7,6 @@ import lombok.Data; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.system.domain.SysDept; -import org.dromara.system.domain.SysMenu; import java.io.Serial; import java.io.Serializable; @@ -105,6 +104,6 @@ public class SysDeptVo implements Serializable { /** * 子部门 */ - private List children = new ArrayList<>(); + private List children = new ArrayList<>(); } From 192537672e66a97cf9f65a764a671b86fd089ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=9B=E5=B0=8F=E9=A3=8E?= <13852492678@163.com> Date: Thu, 13 Mar 2025 07:37:22 +0000 Subject: [PATCH 02/20] =?UTF-8?q?!654=20update=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E6=B3=A8=E9=87=8A=E4=BB=A5=E5=87=86=E7=A1=AE?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0SSE=E4=BC=9A=E8=AF=9D=20*=20update=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=87=BD=E6=95=B0=E6=B3=A8=E9=87=8A=E4=BB=A5?= =?UTF-8?q?=E5=87=86=E7=A1=AE=E6=8F=8F=E8=BF=B0SSE=E4=BC=9A=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/common/sse/utils/SseMessageUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java index 586103417..ce3aad472 100644 --- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java +++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/utils/SseMessageUtils.java @@ -26,7 +26,7 @@ public class SseMessageUtils { } /** - * 向指定的WebSocket会话发送消息 + * 向指定的SSE会话发送消息 * * @param userId 要发送消息的用户id * @param message 要发送的消息内容 From 865627fdad325fe7df687e2173d2df82b9644560 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 13 Mar 2025 16:20:48 +0800 Subject: [PATCH 03/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=8A=82=E7=82=B9=E6=89=A9=E5=B1=95=E5=B1=9E=E6=80=A7?= =?UTF-8?q?,=E7=AE=80=E5=8C=96=E8=8A=82=E7=82=B9=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwNodeExtServiceImpl.java | 95 ++++++++----------- 1 file changed, 40 insertions(+), 55 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java index 4d8368a85..2dc30607c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java @@ -6,7 +6,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.domain.dto.DictTypeDTO; import org.dromara.common.core.service.DictService; -import org.dromara.common.core.utils.StringUtils; import org.dromara.warm.flow.ui.service.NodeExtService; import org.dromara.warm.flow.ui.vo.NodeExt; import org.dromara.workflow.common.ConditionalOnEnable; @@ -37,11 +36,6 @@ public class FlwNodeExtServiceImpl implements NodeExtService { */ private static final String PERMISSION_TAB_NAME = "权限"; - /** - * 枚举类型标识 - */ - private static final String ENUM_TYPE_PREFIX = "enum:"; - /** * 基础设置 */ @@ -58,7 +52,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService { private static final Map> CHILD_NODE_MAP = new HashMap<>(); static { - CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getName(), + CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getSimpleName(), Map.of("label", "权限按钮", "type", 4, "must", false, "multiple", true)); } @@ -67,33 +61,40 @@ public class FlwNodeExtServiceImpl implements NodeExtService { /** * 获取节点扩展属性 * - * @return 结果 + * @return 节点扩展属性列表 */ @Override public List getNodeExt() { List nodeExtList = new ArrayList<>(); // 构建按钮权限页面 nodeExtList.add(buildNodeExt(PERMISSION_TAB, PERMISSION_TAB_NAME, TYPE_NEW_TAB, - ENUM_TYPE_PREFIX + ButtonPermissionEnum.class.getName())); + List.of(ButtonPermissionEnum.class))); return nodeExtList; } /** - * 构建一个 NodeExt 对象 + * 构建一个 `NodeExt` 对象 * - * @param code 编码,此json中唯一 - * @param name 名称,如果type为新页签时,作为页签名称 - * @param type 节点类型,1:基础设置,2:新页签 - * @param sourceTypes 字典/枚举类型来源(逗号分隔) - * @return 返回构建好的 NodeExt 对象 + * @param code 唯一编码 + * @param name 名称(新页签时,作为页签名称) + * @param type 节点类型(1: 基础设置,2: 新页签) + * @param sources 数据来源(枚举类或字典类型) + * @return 构建的 `NodeExt` 对象 */ - private NodeExt buildNodeExt(String code, String name, int type, String sourceTypes) { + private NodeExt buildNodeExt(String code, String name, int type, List sources) { NodeExt nodeExt = new NodeExt(); nodeExt.setCode(code); nodeExt.setType(type); nodeExt.setName(name); - nodeExt.setChilds(StringUtils.splitList(sourceTypes) - .stream().map(this::buildChildNode) + nodeExt.setChilds(sources.stream() + .map(source -> { + if (source instanceof Class clazz && NodeExtEnum.class.isAssignableFrom(clazz)) { + return buildChildNode((Class>) clazz); + } else if (source instanceof String dictType) { + return buildChildNode(dictType); + } + return null; + }) .filter(ObjectUtil::isNotNull) .toList() ); @@ -101,52 +102,36 @@ public class FlwNodeExtServiceImpl implements NodeExtService { } /** - * 构建一个 ChildNode 对象 + * 根据枚举类型构建一个 `ChildNode` 对象 * - * @param sourceType 字典类型 - * @return 返回构建好的 ChildNode 对象 + * @param enumClass 枚举类,必须实现 `NodeExtEnum` 接口 + * @return 构建的 `ChildNode` 对象 */ - private NodeExt.ChildNode buildChildNode(String sourceType) { - return sourceType.startsWith(ENUM_TYPE_PREFIX) ? - buildChildNodeFromEnum(sourceType.substring(ENUM_TYPE_PREFIX.length())) : buildChildNodeFromDict(sourceType); - } - - /** - * 根据枚举构建一个 ChildNode 对象 - * - * @param enumClassName 枚举名称 - * @return 返回构建好的 ChildNode 对象 - */ - private NodeExt.ChildNode buildChildNodeFromEnum(String enumClassName) { - try { - Class enumClass = Class.forName(enumClassName); - if (!enumClass.isEnum()) { - return null; - } - NodeExt.ChildNode childNode = buildChildNodeMap(enumClassName); - // 编码,此json中唯 - childNode.setCode(ENUM_TYPE_PREFIX + enumClassName); - // 字典,下拉框和复选框时用到 - childNode.setDict(Arrays.stream(enumClass.getEnumConstants()) - .filter(NodeExtEnum.class::isInstance) - .map(NodeExtEnum.class::cast) - .map(x -> - new NodeExt.DictItem(x.getLabel(), x.getValue(), x.isSelected()) - ).toList()); - return childNode; - } catch (ClassNotFoundException e) { - log.error("Enum class not found: {}", enumClassName, e); + private NodeExt.ChildNode buildChildNode(Class> enumClass) { + if (!enumClass.isEnum()) { + return null; } - return null; + String simpleName = enumClass.getSimpleName(); + NodeExt.ChildNode childNode = buildChildNodeMap(simpleName); + // 编码,此json中唯 + childNode.setCode(simpleName); + // 字典,下拉框和复选框时用到 + childNode.setDict(Arrays.stream(enumClass.getEnumConstants()) + .filter(NodeExtEnum.class::isInstance) + .map(NodeExtEnum.class::cast) + .map(x -> + new NodeExt.DictItem(x.getLabel(), x.getValue(), x.isSelected()) + ).toList()); + return childNode; } /** - * 根据字典构建一个 ChildNode 对象 + * 根据字典类型构建 `ChildNode` 对象 * * @param dictType 字典类型 - * @return 返回构建好的 ChildNode 对象 + * @return 构建的 `ChildNode` 对象 */ - private NodeExt.ChildNode buildChildNodeFromDict(String dictType) { + private NodeExt.ChildNode buildChildNode(String dictType) { DictTypeDTO dictTypeDTO = dictService.getDictType(dictType); if (ObjectUtil.isNull(dictTypeDTO)) { return null; From 800c6c8ff381d12cc555c9245e592f050ead71ac Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 13 Mar 2025 17:26:05 +0800 Subject: [PATCH 04/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E5=8A=9E=E7=90=86=E4=BA=BA=E6=A0=87=E8=AF=86?= =?UTF-8?q?=E7=AC=A6=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/FlwTaskAssigneeServiceImpl.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java index 5877bb503..1e0d17278 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.workflow.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -25,9 +26,7 @@ import org.dromara.workflow.common.enums.TaskAssigneeEnum; import org.dromara.workflow.service.IFlwTaskAssigneeService; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; +import java.util.*; /** * 流程设计器-获取办理人权限设置列表 @@ -132,15 +131,26 @@ public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, Hand @Override public List fetchUsersByStorageId(String storageId) { List list = new ArrayList<>(); + Map> typeIdMap = new EnumMap<>(TaskAssigneeEnum.class); for (String str : storageId.split(StrUtil.COMMA)) { String[] parts = str.split(StrUtil.COLON, 2); + TaskAssigneeEnum type; + Long id; if (parts.length < 2) { - list.addAll(getUsersByType(TaskAssigneeEnum.USER, List.of(Long.valueOf(parts[0])))); + // 无前缀时默认是用户类型 + type = TaskAssigneeEnum.USER; + id = Long.valueOf(parts[0]); } else { - list.addAll(getUsersByType(TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON), List.of(Long.valueOf(parts[1])))); + // 根据前缀解析类型(如 "role:123" -> ROLE 类型) + type = TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON); + id = Long.valueOf(parts[1]); } + typeIdMap.computeIfAbsent(type, k -> new ArrayList<>()).add(id); } - return list; + typeIdMap.entrySet().stream() + .filter(entry -> CollUtil.isNotEmpty(entry.getValue())) + .forEach(entry -> list.addAll(getUsersByType(entry.getKey(), entry.getValue()))); + return list.stream().distinct().toList(); } /** From 92e9ed771b801cee4a6981b7126dd529859254b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 13 Mar 2025 17:47:03 +0800 Subject: [PATCH 05/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=B9=A6=E5=86=99=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/service/impl/FlwNodeExtServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java index 2dc30607c..231487d04 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java @@ -81,6 +81,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService { * @param sources 数据来源(枚举类或字典类型) * @return 构建的 `NodeExt` 对象 */ + @SuppressWarnings("unchecked cast") private NodeExt buildNodeExt(String code, String name, int type, List sources) { NodeExt nodeExt = new NodeExt(); nodeExt.setCode(code); @@ -89,7 +90,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService { nodeExt.setChilds(sources.stream() .map(source -> { if (source instanceof Class clazz && NodeExtEnum.class.isAssignableFrom(clazz)) { - return buildChildNode((Class>) clazz); + return buildChildNode((Class) clazz); } else if (source instanceof String dictType) { return buildChildNode(dictType); } @@ -107,7 +108,7 @@ public class FlwNodeExtServiceImpl implements NodeExtService { * @param enumClass 枚举类,必须实现 `NodeExtEnum` 接口 * @return 构建的 `ChildNode` 对象 */ - private NodeExt.ChildNode buildChildNode(Class> enumClass) { + private NodeExt.ChildNode buildChildNode(Class enumClass) { if (!enumClass.isEnum()) { return null; } @@ -117,7 +118,6 @@ public class FlwNodeExtServiceImpl implements NodeExtService { childNode.setCode(simpleName); // 字典,下拉框和复选框时用到 childNode.setDict(Arrays.stream(enumClass.getEnumConstants()) - .filter(NodeExtEnum.class::isInstance) .map(NodeExtEnum.class::cast) .map(x -> new NodeExt.DictItem(x.getLabel(), x.getValue(), x.isSelected()) From c79e053beaabc490051fcc98159a68866cb306d1 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sat, 15 Mar 2025 22:53:31 +0800 Subject: [PATCH 06/20] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9A=E4=B9=89=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BD=BF?= =?UTF-8?q?=E7=94=A8leave6=E6=8F=90=E4=BA=A4=E9=94=99=E8=AF=AF=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TestLeaveServiceImpl.java | 2 +- script/leave/leave1.json | 14 +++++------ script/leave/leave2.json | 20 ++++++++-------- script/leave/leave3.json | 20 ++++++++-------- script/leave/leave4.json | 16 ++++++------- script/leave/leave5.json | 20 ++++++++-------- script/leave/leave6.json | 23 +++++++++++-------- 7 files changed, 59 insertions(+), 56 deletions(-) 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 a1ac84595..9ecd867ac 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 @@ -54,7 +54,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { * @return boolean */ public boolean eval(Integer leaveDays) { - if (leaveDays < 2) { + if (leaveDays <= 2) { return true; } return false; diff --git a/script/leave/leave1.json b/script/leave/leave1.json index 0cf67bc46..36fc32602 100644 --- a/script/leave/leave1.json +++ b/script/leave/leave1.json @@ -1,7 +1,7 @@ { "flowCode" : "leave1", "flowName" : "请假申请-普通", - "category" : "1", + "category" : "100", "version" : "1", "formCustom" : "N", "formPath" : "/workflow/leaveEdit/index", @@ -11,8 +11,8 @@ "nodeName" : "开始", "nodeRatio" : 0.000, "coordinate" : "200,200|200,200", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "d5ee3ddf-3968-4379-a86f-9ceabde5faac", "nextNodeCode" : "dd515cdd-59f6-446f-94ca-25ca062afb42", @@ -25,8 +25,8 @@ "nodeName" : "申请人", "nodeRatio" : 0.000, "coordinate" : "360,200|360,200", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "dd515cdd-59f6-446f-94ca-25ca062afb42", "nextNodeCode" : "78fa8e5b-e809-44ed-978a-41092409ebcf", @@ -40,8 +40,8 @@ "permissionFlag" : "role:1", "nodeRatio" : 0.000, "coordinate" : "540,200|540,200", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "78fa8e5b-e809-44ed-978a-41092409ebcf", "nextNodeCode" : "a8abf15f-b83e-428a-86cc-033555ea9bbe", @@ -55,8 +55,8 @@ "permissionFlag" : "role:3,role:4", "nodeRatio" : 0.000, "coordinate" : "720,200|720,200", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "a8abf15f-b83e-428a-86cc-033555ea9bbe", "nextNodeCode" : "8b82b7d7-8660-455e-b880-d6d22ea3eb6d", @@ -69,7 +69,7 @@ "nodeName" : "结束", "nodeRatio" : 0.000, "coordinate" : "900,200|900,200", - "skipAnyNode" : "N", - "formCustom" : "N" + "formCustom" : "N", + "ext" : "[]" } ] } \ No newline at end of file diff --git a/script/leave/leave2.json b/script/leave/leave2.json index 9fce8ffd2..bb196a314 100644 --- a/script/leave/leave2.json +++ b/script/leave/leave2.json @@ -1,7 +1,7 @@ { "flowCode" : "leave2", "flowName" : "请假申请-排他网关", - "category" : "1", + "category" : "100", "version" : "1", "formCustom" : "N", "formPath" : "/workflow/leaveEdit/index", @@ -11,8 +11,8 @@ "nodeName" : "开始", "nodeRatio" : 0.000, "coordinate" : "300,240|300,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "cef3895c-f7d8-4598-8bf3-8ec2ef6ce84a", "nextNodeCode" : "fdcae93b-b69c-498a-b231-09255e74bcbd", @@ -25,8 +25,8 @@ "nodeName" : "申请人", "nodeRatio" : 0.000, "coordinate" : "440,240|440,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "fdcae93b-b69c-498a-b231-09255e74bcbd", "nextNodeCode" : "7b8c7ead-7dc8-4951-a7f3-f0c41995909e", @@ -38,8 +38,8 @@ "nodeCode" : "7b8c7ead-7dc8-4951-a7f3-f0c41995909e", "nodeRatio" : 0.000, "coordinate" : "560,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "7b8c7ead-7dc8-4951-a7f3-f0c41995909e", "nextNodeCode" : "b3528155-dcb7-4445-bbdf-3d00e3499e86", @@ -61,8 +61,8 @@ "permissionFlag" : "3,4", "nodeRatio" : 0.000, "coordinate" : "720,320|720,320", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "b3528155-dcb7-4445-bbdf-3d00e3499e86", "nextNodeCode" : "c9fa6d7d-2a74-4e78-b947-0cad8a6af869", @@ -76,8 +76,8 @@ "permissionFlag" : "role:1", "nodeRatio" : 0.000, "coordinate" : "860,240|860,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "c9fa6d7d-2a74-4e78-b947-0cad8a6af869", "nextNodeCode" : "40aa65fd-0712-4d23-b6f7-d0432b920fd1", @@ -90,8 +90,8 @@ "nodeName" : "结束", "nodeRatio" : 0.000, "coordinate" : "1000,240|1000,240", - "skipAnyNode" : "N", - "formCustom" : "N" + "formCustom" : "N", + "ext" : "[]" }, { "nodeType" : 1, "nodeCode" : "5ed2362b-fc0c-4d52-831f-95208b830605", @@ -99,8 +99,8 @@ "permissionFlag" : "role:1", "nodeRatio" : 0.000, "coordinate" : "720,160|720,160", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "5ed2362b-fc0c-4d52-831f-95208b830605", "nextNodeCode" : "c9fa6d7d-2a74-4e78-b947-0cad8a6af869", @@ -108,4 +108,4 @@ "coordinate" : "770,160;860,160;860,200" } ] } ] -} +} \ No newline at end of file diff --git a/script/leave/leave3.json b/script/leave/leave3.json index 08daae4bf..d289c787a 100644 --- a/script/leave/leave3.json +++ b/script/leave/leave3.json @@ -1,7 +1,7 @@ { "flowCode" : "leave3", "flowName" : "请假申请-并行网关", - "category" : "1", + "category" : "100", "version" : "1", "formCustom" : "N", "formPath" : "/workflow/leaveEdit/index", @@ -11,8 +11,8 @@ "nodeName" : "开始", "nodeRatio" : 0.000, "coordinate" : "380,220|380,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "a80ecf9f-f465-4ae5-a429-e30ec5d0f957", "nextNodeCode" : "b7bbb571-06de-455c-8083-f83c07bf0b99", @@ -25,8 +25,8 @@ "nodeName" : "申请人", "nodeRatio" : 0.000, "coordinate" : "520,220|520,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "b7bbb571-06de-455c-8083-f83c07bf0b99", "nextNodeCode" : "84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a", @@ -38,8 +38,8 @@ "nodeCode" : "84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a", "nodeRatio" : 0.000, "coordinate" : "680,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "84d7ed24-bb44-4ba1-bf1f-e6f5092d3f0a", "nextNodeCode" : "4b7743cd-940c-431b-926f-e7b614fbf1fe", @@ -58,8 +58,8 @@ "permissionFlag" : "role:1", "nodeRatio" : 0.000, "coordinate" : "800,140|800,140", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "4b7743cd-940c-431b-926f-e7b614fbf1fe", "nextNodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2", @@ -71,8 +71,8 @@ "nodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2", "nodeRatio" : 0.000, "coordinate" : "920,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2", "nextNodeCode" : "23e7429e-2b47-4431-b93e-40db7c431ce6", @@ -86,8 +86,8 @@ "permissionFlag" : "1", "nodeRatio" : 0.000, "coordinate" : "1040,220|1040,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "23e7429e-2b47-4431-b93e-40db7c431ce6", "nextNodeCode" : "f5ace37f-5a5e-4e64-a6f6-913ab9a71cd1", @@ -100,8 +100,8 @@ "nodeName" : "结束", "nodeRatio" : 0.000, "coordinate" : "1160,220|1160,220", - "skipAnyNode" : "N", - "formCustom" : "N" + "formCustom" : "N", + "ext" : "[]" }, { "nodeType" : 1, "nodeCode" : "762cb975-37d8-4276-b6db-79a4c3606394", @@ -109,8 +109,8 @@ "permissionFlag" : "role:3,role:4", "nodeRatio" : 0.000, "coordinate" : "800,300|800,300", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "762cb975-37d8-4276-b6db-79a4c3606394", "nextNodeCode" : "b66b6563-f9fe-41cc-a782-f7837bb6f3d2", diff --git a/script/leave/leave4.json b/script/leave/leave4.json index f8f440812..c085de2e5 100644 --- a/script/leave/leave4.json +++ b/script/leave/leave4.json @@ -1,7 +1,7 @@ { "flowCode" : "leave4", "flowName" : "请假申请-会签", - "category" : "1", + "category" : "100", "version" : "1", "formCustom" : "N", "formPath" : "/workflow/leaveEdit/index", @@ -11,8 +11,8 @@ "nodeName" : "开始", "nodeRatio" : 0.000, "coordinate" : "320,240|320,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "9ce8bf00-f25b-4fc6-91b8-827082fc4876", "nextNodeCode" : "e90b98ef-35b4-410c-a663-bae8b7624b9f", @@ -25,8 +25,8 @@ "nodeName" : "申请人", "nodeRatio" : 0.000, "coordinate" : "460,240|460,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "e90b98ef-35b4-410c-a663-bae8b7624b9f", "nextNodeCode" : "768b5b1a-6726-4d67-8853-4cc70d5b1045", @@ -40,8 +40,8 @@ "permissionFlag" : "${userList}", "nodeRatio" : 60.000, "coordinate" : "640,240|640,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "768b5b1a-6726-4d67-8853-4cc70d5b1045", "nextNodeCode" : "2f9f2e21-9bcf-42a3-a07c-13037aad22d1", @@ -55,8 +55,8 @@ "permissionFlag" : "role:1,role:3", "nodeRatio" : 100.000, "coordinate" : "820,240|820,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "2f9f2e21-9bcf-42a3-a07c-13037aad22d1", "nextNodeCode" : "27461e01-3d9f-4530-8fe3-bd5ec7f9571f", @@ -70,8 +70,8 @@ "permissionFlag" : "1", "nodeRatio" : 0.000, "coordinate" : "1000,240|1000,240", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "27461e01-3d9f-4530-8fe3-bd5ec7f9571f", "nextNodeCode" : "b62b88c3-8d8d-4969-911e-2aaea219e7fc", @@ -84,7 +84,7 @@ "nodeName" : "结束", "nodeRatio" : 0.000, "coordinate" : "1120,240|1120,240", - "skipAnyNode" : "N", - "formCustom" : "N" + "formCustom" : "N", + "ext" : "[]" } ] } \ No newline at end of file diff --git a/script/leave/leave5.json b/script/leave/leave5.json index dc99494a5..76d10f180 100644 --- a/script/leave/leave5.json +++ b/script/leave/leave5.json @@ -1,7 +1,7 @@ { "flowCode" : "leave5", "flowName" : "请假申请-并行会签网关", - "category" : "1", + "category" : "100", "version" : "1", "formCustom" : "N", "formPath" : "/workflow/leaveEdit/index", @@ -11,8 +11,8 @@ "nodeName" : "开始", "nodeRatio" : 0.000, "coordinate" : "300,220|300,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "ebebaf26-9cb6-497e-8119-4c9fed4c597c", "nextNodeCode" : "e1b04e96-dc81-4858-a309-2fe945d2f374", @@ -25,8 +25,8 @@ "nodeName" : "申请人", "nodeRatio" : 0.000, "coordinate" : "420,220|420,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "e1b04e96-dc81-4858-a309-2fe945d2f374", "nextNodeCode" : "3e743f4f-51ca-41d4-8e94-21f5dd9b59c9", @@ -38,8 +38,8 @@ "nodeCode" : "3e743f4f-51ca-41d4-8e94-21f5dd9b59c9", "nodeRatio" : 0.000, "coordinate" : "560,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "3e743f4f-51ca-41d4-8e94-21f5dd9b59c9", "nextNodeCode" : "c80f273e-1f17-4bd8-9ad1-04a4a94ea862", @@ -58,8 +58,8 @@ "permissionFlag" : "role:1,role:3", "nodeRatio" : 100.000, "coordinate" : "700,320|700,320", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "c80f273e-1f17-4bd8-9ad1-04a4a94ea862", "nextNodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b", @@ -71,8 +71,8 @@ "nodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b", "nodeRatio" : 0.000, "coordinate" : "860,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b", "nextNodeCode" : "7a8f0473-e409-442e-a843-5c2b813d00e9", @@ -86,8 +86,8 @@ "permissionFlag" : "1", "nodeRatio" : 0.000, "coordinate" : "1000,220|1000,220", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "7a8f0473-e409-442e-a843-5c2b813d00e9", "nextNodeCode" : "03c4d2bc-58b5-4408-a2e4-65afb046f169", @@ -100,8 +100,8 @@ "nodeName" : "结束", "nodeRatio" : 0.000, "coordinate" : "1140,220|1140,220", - "skipAnyNode" : "N", - "formCustom" : "N" + "formCustom" : "N", + "ext" : "[]" }, { "nodeType" : 1, "nodeCode" : "1e3e8d3b-18ae-4d6c-a814-ce0d724adfa4", @@ -109,8 +109,8 @@ "permissionFlag" : "${userList}", "nodeRatio" : 60.000, "coordinate" : "700,120|700,120", - "skipAnyNode" : "N", "formCustom" : "N", + "ext" : "[]", "skipList" : [ { "nowNodeCode" : "1e3e8d3b-18ae-4d6c-a814-ce0d724adfa4", "nextNodeCode" : "1a20169e-3d82-4926-a151-e2daad28de1b", diff --git a/script/leave/leave6.json b/script/leave/leave6.json index c0fb172ec..d21d9d2c8 100644 --- a/script/leave/leave6.json +++ b/script/leave/leave6.json @@ -2,7 +2,7 @@ "flowCode" : "leave6", "flowName" : "请假申请-排他并行会签", "category" : "100", - "version" : "4", + "version" : "1", "formCustom" : "N", "formPath" : "/workflow/leaveEdit/index", "nodeList" : [ { @@ -25,7 +25,8 @@ "nodeName" : "申请人", "nodeRatio" : 0.000, "coordinate" : "400,300|400,300", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]", + "formCustom" : "N", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "c25a0e86-fdd1-4f03-8e22-14db70389dbd", "nextNodeCode" : "07ecda1d-7a0a-47b5-8a91-6186c9473742", @@ -39,7 +40,8 @@ "permissionFlag" : "role:1@@role:3@@role:4", "nodeRatio" : 0.000, "coordinate" : "860,200|860,200", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]", + "formCustom" : "N", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "2bfa3919-78cf-4bc1-b59b-df463a4546f9", "nextNodeCode" : "394e1cc8-b8b2-4189-9f81-44448e88ac32", @@ -54,7 +56,7 @@ "nodeRatio" : 0.000, "coordinate" : "860,400|860,400", "formCustom" : "N", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "ec17f60e-94e0-4d96-a3ce-3417e9d32d60", "nextNodeCode" : "394e1cc8-b8b2-4189-9f81-44448e88ac32", @@ -68,7 +70,8 @@ "permissionFlag" : "1", "nodeRatio" : 0.000, "coordinate" : "560,300|560,300", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination,copy,trust,transfer\"}]", + "formCustom" : "N", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination,transfer,copy,pop\"}]", "skipList" : [ { "nowNodeCode" : "07ecda1d-7a0a-47b5-8a91-6186c9473742", "nextNodeCode" : "48117e2c-6328-406b-b102-c4a9d115bb13", @@ -117,7 +120,7 @@ "nodeRatio" : 100.000, "coordinate" : "1180,300|1180,300", "formCustom" : "N", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination,pop,addSign,subSign\"}]", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination,pop,addSign,subSign\"}]", "skipList" : [ { "nowNodeCode" : "9c93a195-cff2-4e17-ab0a-a4f264191496", "nextNodeCode" : "a1a42056-afd1-4e90-88bc-36cbf5a66992", @@ -150,7 +153,7 @@ "nodeRatio" : 0.000, "coordinate" : "1480,200|1480,200", "formCustom" : "N", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "350dfa0c-a77c-4efa-8527-10efa02d8be4", "nextNodeCode" : "c36a46ef-04f9-463f-bad7-4b395c818519", @@ -165,7 +168,7 @@ "nodeRatio" : 0.000, "coordinate" : "1480,400|1480,400", "formCustom" : "N", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "fcfdd9f6-f526-4c1a-b71d-88afa31aebc5", "nextNodeCode" : "c36a46ef-04f9-463f-bad7-4b395c818519", @@ -193,7 +196,7 @@ "nodeRatio" : 0.000, "coordinate" : "1820,300|1820,300", "formCustom" : "N", - "ext" : "[{\"code\":\"enum:org.dromara.workflow.common.enums.ButtonPermissionEnum\",\"value\":\"back,termination\"}]", + "ext" : "[{\"code\":\"ButtonPermissionEnum\",\"value\":\"back,termination\"}]", "skipList" : [ { "nowNodeCode" : "3fcea762-b53a-4ae1-8365-7bec90444828", "nextNodeCode" : "9cfbfd3e-6c04-41d6-9fc2-6787a7d2cd31", @@ -209,4 +212,4 @@ "formCustom" : "N", "ext" : "[]" } ] -} \ No newline at end of file +} From 1f1564fad9e0c36fc02bde6daa9ace856ae9157e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Mon, 17 Mar 2025 09:32:32 +0800 Subject: [PATCH 07/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9oss=E6=9E=9A=E4=B8=BE=E5=8C=85=E5=90=8D=E4=B8=8E?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E6=A8=A1=E5=9D=97=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/dromara/common/oss/core/OssClient.java | 2 +- .../dromara/common/oss/{enumd => enums}/AccessPolicyType.java | 2 +- .../java/org/dromara/system/service/impl/SysOssServiceImpl.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/{enumd => enums}/AccessPolicyType.java (96%) diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java index 7ac044c8e..de5119e91 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java @@ -8,7 +8,7 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.file.FileUtils; import org.dromara.common.oss.constant.OssConstant; import org.dromara.common.oss.entity.UploadResult; -import org.dromara.common.oss.enumd.AccessPolicyType; +import org.dromara.common.oss.enums.AccessPolicyType; import org.dromara.common.oss.exception.OssException; import org.dromara.common.oss.properties.OssProperties; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enums/AccessPolicyType.java similarity index 96% rename from ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java rename to ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enums/AccessPolicyType.java index a257bbae0..45b13beda 100644 --- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java +++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enums/AccessPolicyType.java @@ -1,4 +1,4 @@ -package org.dromara.common.oss.enumd; +package org.dromara.common.oss.enums; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index c2eb08c79..1f2bf80db 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -21,7 +21,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.oss.core.OssClient; import org.dromara.common.oss.entity.UploadResult; -import org.dromara.common.oss.enumd.AccessPolicyType; +import org.dromara.common.oss.enums.AccessPolicyType; import org.dromara.common.oss.factory.OssFactory; import org.dromara.system.domain.SysOss; import org.dromara.system.domain.bo.SysOssBo; From 97c36674e45d60ca1a9c2ff27724129b1c870856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 18 Mar 2025 13:44:35 +0800 Subject: [PATCH 08/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=89=93?= =?UTF-8?q?=E5=8C=85=E9=BB=98=E8=AE=A4=E8=B7=B3=E8=BF=87=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=20=E5=87=8F=E5=B0=91=E5=BF=83=E6=99=BA=E9=9A=BE=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 21d163bae..9d2ec8d1a 100644 --- a/pom.xml +++ b/pom.xml @@ -57,6 +57,8 @@ 3.11.0 3.1.2 1.3.0 + + true From be5d69d5a50069adb91d103a453147db7a41093e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 18 Mar 2025 17:18:50 +0800 Subject: [PATCH 09/20] update snailjob 1.3.0 => 1.4.0-beta2 --- pom.xml | 2 +- .../src/main/resources/application-dev.yml | 11 - .../src/main/resources/application-prod.yml | 11 - script/sql/oracle/oracle_ry_job.sql | 257 ++++++------ script/sql/postgres/postgres_ry_job.sql | 246 ++++++------ script/sql/ry_job.sql | 125 +++--- script/sql/sqlserver/sqlserver_ry_job.sql | 377 +++++++++--------- 7 files changed, 515 insertions(+), 514 deletions(-) diff --git a/pom.xml b/pom.xml index 9d2ec8d1a..e887efd5c 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 3.44.0 2.2.7 4.3.1 - 1.3.0 + 1.4.0-beta2 1.4.6 0.2.0 1.18.36 diff --git a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml index 32a2cc4e3..caf5dba55 100644 --- a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml +++ b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml @@ -22,21 +22,10 @@ snail-job: job-pull-page-size: 1000 # 服务器端口 server-port: 17888 - # 一个客户端每秒最多接收的重试数量指令 - limiter: 1000 # 号段模式下步长配置 step: 100 # 日志保存时间(单位: day) log-storage: 90 - # 回调配置 - callback: - #回调最大执行次数 - max-count: 288 - #间隔时间 - trigger-interval: 900 - # 重试每次拉取的次数 - retry-max-pull-count: 10 - # RPC通讯类型: netty,grpc rpc-type: grpc --- # 监控中心配置 diff --git a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml index 32a2cc4e3..caf5dba55 100644 --- a/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml +++ b/ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml @@ -22,21 +22,10 @@ snail-job: job-pull-page-size: 1000 # 服务器端口 server-port: 17888 - # 一个客户端每秒最多接收的重试数量指令 - limiter: 1000 # 号段模式下步长配置 step: 100 # 日志保存时间(单位: day) log-storage: 90 - # 回调配置 - callback: - #回调最大执行次数 - max-count: 288 - #间隔时间 - trigger-interval: 900 - # 重试每次拉取的次数 - retry-max-pull-count: 10 - # RPC通讯类型: netty,grpc rpc-type: grpc --- # 监控中心配置 diff --git a/script/sql/oracle/oracle_ry_job.sql b/script/sql/oracle/oracle_ry_job.sql index c2dbbfa52..104aabbaa 100644 --- a/script/sql/oracle/oracle_ry_job.sql +++ b/script/sql/oracle/oracle_ry_job.sql @@ -1,8 +1,9 @@ + /* SnailJob Database Transfer Tool Source Server Type : MySQL Target Server Type : Oracle - Date: 2024-12-27 22:22:15 + Date: 2025-02-25 22:16:28 */ @@ -48,7 +49,6 @@ CREATE TABLE sj_group_config group_partition number NOT NULL, id_generator_mode smallint DEFAULT 1 NOT NULL, init_scene smallint DEFAULT 0 NOT NULL, - bucket_index number DEFAULT 0 NOT NULL, create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); @@ -68,13 +68,12 @@ COMMENT ON COLUMN sj_group_config.version IS '版本号'; COMMENT ON COLUMN sj_group_config.group_partition IS '分区'; COMMENT ON COLUMN sj_group_config.id_generator_mode IS '唯一id生成模式 默认号段模式'; COMMENT ON COLUMN sj_group_config.init_scene IS '是否初始化场景 0:否 1:是'; -COMMENT ON COLUMN sj_group_config.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_group_config.create_dt IS '创建时间'; COMMENT ON COLUMN sj_group_config.update_dt IS '修改时间'; COMMENT ON TABLE sj_group_config IS '组配置'; -INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, sysdate, sysdate); -INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES ('prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, sysdate, sysdate); +INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES ('dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, sysdate, sysdate); +INSERT INTO sj_group_config (namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES ('prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, sysdate, sysdate); -- sj_notify_config CREATE TABLE sj_notify_config @@ -144,12 +143,11 @@ COMMENT ON COLUMN sj_notify_recipient.create_dt IS '创建时间'; COMMENT ON COLUMN sj_notify_recipient.update_dt IS '修改时间'; COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人'; --- sj_retry_dead_letter_0 -CREATE TABLE sj_retry_dead_letter_0 +-- sj_retry_dead_letter +CREATE TABLE sj_retry_dead_letter ( id number GENERATED ALWAYS AS IDENTITY, namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, - unique_id varchar2(64) NULL, group_name varchar2(64) NULL, scene_name varchar2(64) NULL, idempotent_id varchar2(64) NULL, @@ -157,40 +155,34 @@ CREATE TABLE sj_retry_dead_letter_0 executor_name varchar2(512) DEFAULT '' NULL, args_str clob NULL, ext_attrs clob NULL, - task_type smallint DEFAULT 1 NOT NULL, create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); -ALTER TABLE sj_retry_dead_letter_0 - ADD CONSTRAINT pk_sj_retry_dead_letter_0 PRIMARY KEY (id); +ALTER TABLE sj_retry_dead_letter + ADD CONSTRAINT pk_sj_retry_dead_letter PRIMARY KEY (id); -CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id); +CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name); +CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id); +CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no); +CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt); -CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name); -CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id); -CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no); -CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (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.scene_name IS '场景名称'; +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 '执行器名称'; +COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数'; +COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间'; +COMMENT ON TABLE sj_retry_dead_letter IS '死信队列表'; -COMMENT ON COLUMN sj_retry_dead_letter_0.id IS '主键'; -COMMENT ON COLUMN sj_retry_dead_letter_0.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_retry_dead_letter_0.unique_id IS '同组下id唯一'; -COMMENT ON COLUMN sj_retry_dead_letter_0.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_dead_letter_0.scene_name IS '场景名称'; -COMMENT ON COLUMN sj_retry_dead_letter_0.idempotent_id IS '幂等id'; -COMMENT ON COLUMN sj_retry_dead_letter_0.biz_no IS '业务编号'; -COMMENT ON COLUMN sj_retry_dead_letter_0.executor_name IS '执行器名称'; -COMMENT ON COLUMN sj_retry_dead_letter_0.args_str IS '执行方法参数'; -COMMENT ON COLUMN sj_retry_dead_letter_0.ext_attrs IS '扩展字段'; -COMMENT ON COLUMN sj_retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据'; -COMMENT ON COLUMN sj_retry_dead_letter_0.create_dt IS '创建时间'; -COMMENT ON TABLE sj_retry_dead_letter_0 IS '死信队列表'; - --- sj_retry_task_0 -CREATE TABLE sj_retry_task_0 +-- sj_retry +CREATE TABLE sj_retry ( id number GENERATED ALWAYS AS IDENTITY, namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, - unique_id varchar2(64) NULL, group_name varchar2(64) NULL, scene_name varchar2(64) NULL, idempotent_id varchar2(64) NULL, @@ -198,112 +190,113 @@ CREATE TABLE sj_retry_task_0 executor_name varchar2(512) DEFAULT '' NULL, args_str clob NULL, ext_attrs clob NULL, - next_trigger_at date NOT NULL, + next_trigger_at number NOT NULL, retry_count number DEFAULT 0 NOT NULL, retry_status smallint DEFAULT 0 NOT NULL, task_type smallint DEFAULT 1 NOT NULL, + bucket_index number DEFAULT 0 NOT NULL, + parent_id number DEFAULT 0 NOT NULL, + deleted number DEFAULT 0 NOT NULL, create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); -ALTER TABLE sj_retry_task_0 - ADD CONSTRAINT pk_sj_retry_task_0 PRIMARY KEY (id); +ALTER TABLE sj_retry + ADD CONSTRAINT pk_sj_retry PRIMARY KEY (id); -CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id); +CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted); -CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name); -CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type); -CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status); -CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id); -CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no); -CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt); +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_task_0.id IS '主键'; -COMMENT ON COLUMN sj_retry_task_0.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_retry_task_0.unique_id IS '同组下id唯一'; -COMMENT ON COLUMN sj_retry_task_0.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_task_0.scene_name IS '场景名称'; -COMMENT ON COLUMN sj_retry_task_0.idempotent_id IS '幂等id'; -COMMENT ON COLUMN sj_retry_task_0.biz_no IS '业务编号'; -COMMENT ON COLUMN sj_retry_task_0.executor_name IS '执行器名称'; -COMMENT ON COLUMN sj_retry_task_0.args_str IS '执行方法参数'; -COMMENT ON COLUMN sj_retry_task_0.ext_attrs IS '扩展字段'; -COMMENT ON COLUMN sj_retry_task_0.next_trigger_at IS '下次触发时间'; -COMMENT ON COLUMN sj_retry_task_0.retry_count IS '重试次数'; -COMMENT ON COLUMN sj_retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数'; -COMMENT ON COLUMN sj_retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据'; -COMMENT ON COLUMN sj_retry_task_0.create_dt IS '创建时间'; -COMMENT ON COLUMN sj_retry_task_0.update_dt IS '修改时间'; -COMMENT ON TABLE sj_retry_task_0 IS '任务表'; +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.scene_name IS '场景名称'; +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 '执行器名称'; +COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数'; +COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间'; +COMMENT ON COLUMN sj_retry.retry_count IS '重试次数'; +COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数'; +COMMENT ON COLUMN sj_retry.task_type IS '任务类型 1、重试数据 2、回调数据'; +COMMENT ON COLUMN sj_retry.bucket_index IS 'bucket'; +COMMENT ON COLUMN sj_retry.parent_id IS '父节点id'; +COMMENT ON COLUMN sj_retry.deleted IS '逻辑删除'; +COMMENT ON COLUMN sj_retry.create_dt IS '创建时间'; +COMMENT ON COLUMN sj_retry.update_dt IS '修改时间'; +COMMENT ON TABLE sj_retry IS '重试信息表'; --- sj_retry_task_log -CREATE TABLE sj_retry_task_log +-- sj_retry_task +CREATE TABLE sj_retry_task ( - id number GENERATED ALWAYS AS IDENTITY, - namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, - unique_id varchar2(64) NULL, - group_name varchar2(64) NULL, - scene_name varchar2(64) NULL, - idempotent_id varchar2(64) NULL, - biz_no varchar2(64) DEFAULT '' NULL, - executor_name varchar2(512) DEFAULT '' NULL, - args_str clob NULL, - ext_attrs clob NULL, - retry_status smallint DEFAULT 0 NOT NULL, - task_type smallint DEFAULT 1 NOT NULL, - create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, - update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL + id number GENERATED ALWAYS AS IDENTITY, + namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, + group_name varchar2(64) NULL, + scene_name varchar2(64) NULL, + retry_id number NOT NULL, + ext_attrs clob NULL, + task_status smallint DEFAULT 1 NOT NULL, + task_type smallint DEFAULT 1 NOT NULL, + operation_reason smallint DEFAULT 0 NOT NULL, + client_info varchar2(128) DEFAULT NULL NULL, + create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, + update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); -ALTER TABLE sj_retry_task_log - ADD CONSTRAINT pk_sj_retry_task_log PRIMARY KEY (id); +ALTER TABLE sj_retry_task + ADD CONSTRAINT pk_sj_retry_task PRIMARY KEY (id); -CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name); -CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status); -CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id); -CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id); -CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no); -CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt); +CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name); +CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status); +CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt); +CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id); -COMMENT ON COLUMN sj_retry_task_log.id IS '主键'; -COMMENT ON COLUMN sj_retry_task_log.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_retry_task_log.unique_id IS '同组下id唯一'; -COMMENT ON COLUMN sj_retry_task_log.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_task_log.scene_name IS '场景名称'; -COMMENT ON COLUMN sj_retry_task_log.idempotent_id IS '幂等id'; -COMMENT ON COLUMN sj_retry_task_log.biz_no IS '业务编号'; -COMMENT ON COLUMN sj_retry_task_log.executor_name IS '执行器名称'; -COMMENT ON COLUMN sj_retry_task_log.args_str IS '执行方法参数'; -COMMENT ON COLUMN sj_retry_task_log.ext_attrs IS '扩展字段'; -COMMENT ON COLUMN sj_retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数'; -COMMENT ON COLUMN sj_retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据'; -COMMENT ON COLUMN sj_retry_task_log.create_dt IS '创建时间'; -COMMENT ON COLUMN sj_retry_task_log.update_dt IS '修改时间'; -COMMENT ON TABLE sj_retry_task_log IS '任务日志基础信息表'; +COMMENT ON COLUMN sj_retry_task.id IS '主键'; +COMMENT ON COLUMN sj_retry_task.namespace_id IS '命名空间id'; +COMMENT ON COLUMN sj_retry_task.group_name IS '组名称'; +COMMENT ON COLUMN sj_retry_task.scene_name IS '场景名称'; +COMMENT ON COLUMN sj_retry_task.retry_id IS '重试信息Id'; +COMMENT ON COLUMN sj_retry_task.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry_task.task_status IS '重试状态'; +COMMENT ON COLUMN sj_retry_task.task_type IS '任务类型 1、重试数据 2、回调数据'; +COMMENT ON COLUMN sj_retry_task.operation_reason IS '操作原因'; +COMMENT ON COLUMN sj_retry_task.client_info IS '客户端地址 clientId#ip:port'; +COMMENT ON COLUMN sj_retry_task.create_dt IS '创建时间'; +COMMENT ON COLUMN sj_retry_task.update_dt IS '修改时间'; +COMMENT ON TABLE sj_retry_task IS '重试任务表'; -- sj_retry_task_log_message CREATE TABLE sj_retry_task_log_message ( - id number GENERATED ALWAYS AS IDENTITY, - namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, - group_name varchar2(64) NULL, - unique_id varchar2(64) NULL, - message clob NULL, - log_num number DEFAULT 1 NOT NULL, - real_time number DEFAULT 0 NOT NULL, - create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL + id number GENERATED ALWAYS AS IDENTITY, + namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, + group_name varchar2(64) NULL, + retry_id number NOT NULL, + retry_task_id number NOT NULL, + message clob NULL, + log_num number DEFAULT 1 NOT NULL, + real_time number DEFAULT 0 NOT NULL, + create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); ALTER TABLE sj_retry_task_log_message ADD CONSTRAINT pk_sj_retry_task_log_message PRIMARY KEY (id); -CREATE INDEX idx_sj_rt_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id); +CREATE INDEX idx_sj_rt_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id); CREATE INDEX idx_sj_rt_log_message_02 ON sj_retry_task_log_message (create_dt); COMMENT ON COLUMN sj_retry_task_log_message.id IS '主键'; COMMENT ON COLUMN sj_retry_task_log_message.namespace_id IS '命名空间id'; COMMENT ON COLUMN sj_retry_task_log_message.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_task_log_message.unique_id IS '同组下id唯一'; +COMMENT ON COLUMN sj_retry_task_log_message.retry_id IS '重试信息Id'; +COMMENT ON COLUMN sj_retry_task_log_message.retry_task_id IS '重试任务Id'; COMMENT ON COLUMN sj_retry_task_log_message.message IS '异常信息'; COMMENT ON COLUMN sj_retry_task_log_message.log_num IS '日志数量'; COMMENT ON COLUMN sj_retry_task_log_message.real_time IS '上报时间'; @@ -313,21 +306,26 @@ COMMENT ON TABLE sj_retry_task_log_message IS '任务调度日志信息记录表 -- sj_retry_scene_config CREATE TABLE sj_retry_scene_config ( - id number GENERATED ALWAYS AS IDENTITY, - namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, - scene_name varchar2(64) NULL, - group_name varchar2(64) NULL, - scene_status smallint DEFAULT 0 NOT NULL, - max_retry_count number DEFAULT 5 NOT NULL, - back_off smallint DEFAULT 1 NOT NULL, - trigger_interval varchar2(16) DEFAULT '' NULL, - notify_ids varchar2(128) DEFAULT '' NULL, - deadline_request number DEFAULT 60000 NOT NULL, - executor_timeout number DEFAULT 5 NOT NULL, - route_key smallint DEFAULT 4 NOT NULL, - description varchar2(256) DEFAULT '' NULL, - create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, - update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL + id number GENERATED ALWAYS AS IDENTITY, + namespace_id varchar2(64) DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' NULL, + scene_name varchar2(64) NULL, + group_name varchar2(64) NULL, + scene_status smallint DEFAULT 0 NOT NULL, + max_retry_count number DEFAULT 5 NOT NULL, + back_off smallint DEFAULT 1 NOT NULL, + trigger_interval varchar2(16) DEFAULT '' NULL, + notify_ids varchar2(128) DEFAULT '' NULL, + deadline_request number DEFAULT 60000 NOT NULL, + executor_timeout number DEFAULT 5 NOT NULL, + route_key smallint DEFAULT 4 NOT NULL, + block_strategy smallint DEFAULT 1 NOT NULL, + cb_status smallint DEFAULT 0 NOT NULL, + cb_trigger_type smallint DEFAULT 1 NOT NULL, + cb_max_count number DEFAULT 16 NOT NULL, + cb_trigger_interval varchar2(16) DEFAULT '' NULL, + description varchar2(256) DEFAULT '' NULL, + create_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL, + update_dt date DEFAULT CURRENT_TIMESTAMP NOT NULL ); ALTER TABLE sj_retry_scene_config @@ -347,6 +345,11 @@ COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置i COMMENT ON COLUMN sj_retry_scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒'; COMMENT ON COLUMN sj_retry_scene_config.executor_timeout IS '任务执行超时时间,单位秒'; COMMENT ON COLUMN sj_retry_scene_config.route_key IS '路由策略'; +COMMENT ON COLUMN sj_retry_scene_config.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行'; +COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 1、开启'; +COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式'; +COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数'; +COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数'; COMMENT ON COLUMN sj_retry_scene_config.description IS '描述'; COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间'; COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间'; @@ -538,11 +541,11 @@ COMMENT ON COLUMN sj_job.executor_type IS '执行器类型'; COMMENT ON COLUMN sj_job.executor_info IS '执行器名称'; COMMENT ON COLUMN sj_job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间'; COMMENT ON COLUMN sj_job.trigger_interval IS '间隔时长'; -COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行'; +COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复'; COMMENT ON COLUMN sj_job.executor_timeout IS '任务执行超时时间,单位秒'; COMMENT ON COLUMN sj_job.max_retry_times IS '最大重试次数'; COMMENT ON COLUMN sj_job.parallel_num IS '并行数'; -COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) '; +COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s)'; COMMENT ON COLUMN sj_job.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务'; COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表'; @@ -721,7 +724,7 @@ CREATE INDEX idx_sj_job_summary_01 ON sj_job_summary (namespace_id, group_name, COMMENT ON COLUMN sj_job_summary.id IS '主键'; COMMENT ON COLUMN sj_job_summary.namespace_id IS '命名空间id'; COMMENT ON COLUMN sj_job_summary.group_name IS '组名称'; -COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id ) '; +COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id)'; COMMENT ON COLUMN sj_job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务'; COMMENT ON COLUMN sj_job_summary.trigger_at IS '统计时间'; COMMENT ON COLUMN sj_job_summary.success_num IS '执行成功-日志数量'; diff --git a/script/sql/postgres/postgres_ry_job.sql b/script/sql/postgres/postgres_ry_job.sql index 1a08a9990..8b682dfe5 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: 2024-12-27 22:13:49 + Date: 2025-02-25 22:15:32 */ @@ -45,7 +45,6 @@ CREATE TABLE sj_group_config group_partition int NOT NULL, id_generator_mode smallint NOT NULL DEFAULT 1, init_scene smallint NOT NULL DEFAULT 0, - bucket_index int NOT NULL DEFAULT 0, create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); @@ -62,13 +61,12 @@ COMMENT ON COLUMN sj_group_config.version IS '版本号'; COMMENT ON COLUMN sj_group_config.group_partition IS '分区'; COMMENT ON COLUMN sj_group_config.id_generator_mode IS '唯一id生成模式 默认号段模式'; COMMENT ON COLUMN sj_group_config.init_scene IS '是否初始化场景 0:否 1:是'; -COMMENT ON COLUMN sj_group_config.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_group_config.create_dt IS '创建时间'; COMMENT ON COLUMN sj_group_config.update_dt IS '修改时间'; COMMENT ON TABLE sj_group_config IS '组配置'; -INSERT INTO sj_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now()); -INSERT INTO sj_group_config VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now()); +INSERT INTO sj_group_config VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now()); +INSERT INTO sj_group_config VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now()); -- sj_notify_config CREATE TABLE sj_notify_config @@ -132,12 +130,11 @@ COMMENT ON COLUMN sj_notify_recipient.create_dt IS '创建时间'; COMMENT ON COLUMN sj_notify_recipient.update_dt IS '修改时间'; COMMENT ON TABLE sj_notify_recipient IS '告警通知接收人'; --- sj_retry_dead_letter_0 -CREATE TABLE sj_retry_dead_letter_0 +-- sj_retry_dead_letter +CREATE TABLE sj_retry_dead_letter ( id bigserial PRIMARY KEY, namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - unique_id varchar(64) NOT NULL, group_name varchar(64) NOT NULL, scene_name varchar(64) NOT NULL, idempotent_id varchar(64) NOT NULL, @@ -145,37 +142,31 @@ CREATE TABLE sj_retry_dead_letter_0 executor_name varchar(512) NOT NULL DEFAULT '', args_str text NOT NULL, ext_attrs text NOT NULL, - task_type smallint NOT NULL DEFAULT 1, create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); -CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id); +CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name); +CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id); +CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no); +CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt); -CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name); -CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id); -CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no); -CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (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.scene_name IS '场景名称'; +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 '执行器名称'; +COMMENT ON COLUMN sj_retry_dead_letter.args_str IS '执行方法参数'; +COMMENT ON COLUMN sj_retry_dead_letter.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry_dead_letter.create_dt IS '创建时间'; +COMMENT ON TABLE sj_retry_dead_letter IS '死信队列表'; -COMMENT ON COLUMN sj_retry_dead_letter_0.id IS '主键'; -COMMENT ON COLUMN sj_retry_dead_letter_0.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_retry_dead_letter_0.unique_id IS '同组下id唯一'; -COMMENT ON COLUMN sj_retry_dead_letter_0.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_dead_letter_0.scene_name IS '场景名称'; -COMMENT ON COLUMN sj_retry_dead_letter_0.idempotent_id IS '幂等id'; -COMMENT ON COLUMN sj_retry_dead_letter_0.biz_no IS '业务编号'; -COMMENT ON COLUMN sj_retry_dead_letter_0.executor_name IS '执行器名称'; -COMMENT ON COLUMN sj_retry_dead_letter_0.args_str IS '执行方法参数'; -COMMENT ON COLUMN sj_retry_dead_letter_0.ext_attrs IS '扩展字段'; -COMMENT ON COLUMN sj_retry_dead_letter_0.task_type IS '任务类型 1、重试数据 2、回调数据'; -COMMENT ON COLUMN sj_retry_dead_letter_0.create_dt IS '创建时间'; -COMMENT ON TABLE sj_retry_dead_letter_0 IS '死信队列表'; - --- sj_retry_task_0 -CREATE TABLE sj_retry_task_0 +-- sj_retry +CREATE TABLE sj_retry ( id bigserial PRIMARY KEY, namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - unique_id varchar(64) NOT NULL, group_name varchar(64) NOT NULL, scene_name varchar(64) NOT NULL, idempotent_id varchar(64) NOT NULL, @@ -183,103 +174,104 @@ CREATE TABLE sj_retry_task_0 executor_name varchar(512) NOT NULL DEFAULT '', args_str text NOT NULL, ext_attrs text NOT NULL, - next_trigger_at timestamp NOT NULL, + next_trigger_at bigint NOT NULL, retry_count int NOT NULL DEFAULT 0, retry_status smallint NOT NULL DEFAULT 0, task_type smallint NOT NULL DEFAULT 1, + bucket_index int NOT NULL DEFAULT 0, + parent_id bigint NOT NULL DEFAULT 0, + deleted bigint NOT NULL DEFAULT 0, create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); -CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id); +CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted); -CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name); -CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type); -CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status); -CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id); -CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no); -CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt); +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_task_0.id IS '主键'; -COMMENT ON COLUMN sj_retry_task_0.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_retry_task_0.unique_id IS '同组下id唯一'; -COMMENT ON COLUMN sj_retry_task_0.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_task_0.scene_name IS '场景名称'; -COMMENT ON COLUMN sj_retry_task_0.idempotent_id IS '幂等id'; -COMMENT ON COLUMN sj_retry_task_0.biz_no IS '业务编号'; -COMMENT ON COLUMN sj_retry_task_0.executor_name IS '执行器名称'; -COMMENT ON COLUMN sj_retry_task_0.args_str IS '执行方法参数'; -COMMENT ON COLUMN sj_retry_task_0.ext_attrs IS '扩展字段'; -COMMENT ON COLUMN sj_retry_task_0.next_trigger_at IS '下次触发时间'; -COMMENT ON COLUMN sj_retry_task_0.retry_count IS '重试次数'; -COMMENT ON COLUMN sj_retry_task_0.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数'; -COMMENT ON COLUMN sj_retry_task_0.task_type IS '任务类型 1、重试数据 2、回调数据'; -COMMENT ON COLUMN sj_retry_task_0.create_dt IS '创建时间'; -COMMENT ON COLUMN sj_retry_task_0.update_dt IS '修改时间'; -COMMENT ON TABLE sj_retry_task_0 IS '任务表'; +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.scene_name IS '场景名称'; +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 '执行器名称'; +COMMENT ON COLUMN sj_retry.args_str IS '执行方法参数'; +COMMENT ON COLUMN sj_retry.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry.next_trigger_at IS '下次触发时间'; +COMMENT ON COLUMN sj_retry.retry_count IS '重试次数'; +COMMENT ON COLUMN sj_retry.retry_status IS '重试状态 0、重试中 1、成功 2、最大重试次数'; +COMMENT ON COLUMN sj_retry.task_type IS '任务类型 1、重试数据 2、回调数据'; +COMMENT ON COLUMN sj_retry.bucket_index IS 'bucket'; +COMMENT ON COLUMN sj_retry.parent_id IS '父节点id'; +COMMENT ON COLUMN sj_retry.deleted IS '逻辑删除'; +COMMENT ON COLUMN sj_retry.create_dt IS '创建时间'; +COMMENT ON COLUMN sj_retry.update_dt IS '修改时间'; +COMMENT ON TABLE sj_retry IS '重试信息表'; --- sj_retry_task_log -CREATE TABLE sj_retry_task_log +-- sj_retry_task +CREATE TABLE sj_retry_task ( - id bigserial PRIMARY KEY, - namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - unique_id varchar(64) NOT NULL, - group_name varchar(64) NOT NULL, - scene_name varchar(64) NOT NULL, - idempotent_id varchar(64) NOT NULL, - biz_no varchar(64) NOT NULL DEFAULT '', - executor_name varchar(512) NOT NULL DEFAULT '', - args_str text NOT NULL, - ext_attrs text NOT NULL, - retry_status smallint NOT NULL DEFAULT 0, - task_type smallint NOT NULL DEFAULT 1, - create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP + id bigserial PRIMARY KEY, + namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name varchar(64) NOT NULL, + scene_name varchar(64) NOT NULL, + retry_id bigint NOT NULL, + ext_attrs text NOT NULL, + task_status smallint NOT NULL DEFAULT 1, + task_type smallint NOT NULL DEFAULT 1, + operation_reason smallint NOT NULL DEFAULT 0, + client_info varchar(128) NULL DEFAULT NULL, + create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); -CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name); -CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status); -CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id); -CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id); -CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no); -CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt); +CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name); +CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status); +CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt); +CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id); -COMMENT ON COLUMN sj_retry_task_log.id IS '主键'; -COMMENT ON COLUMN sj_retry_task_log.namespace_id IS '命名空间id'; -COMMENT ON COLUMN sj_retry_task_log.unique_id IS '同组下id唯一'; -COMMENT ON COLUMN sj_retry_task_log.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_task_log.scene_name IS '场景名称'; -COMMENT ON COLUMN sj_retry_task_log.idempotent_id IS '幂等id'; -COMMENT ON COLUMN sj_retry_task_log.biz_no IS '业务编号'; -COMMENT ON COLUMN sj_retry_task_log.executor_name IS '执行器名称'; -COMMENT ON COLUMN sj_retry_task_log.args_str IS '执行方法参数'; -COMMENT ON COLUMN sj_retry_task_log.ext_attrs IS '扩展字段'; -COMMENT ON COLUMN sj_retry_task_log.retry_status IS '重试状态 0、重试中 1、成功 2、最大次数'; -COMMENT ON COLUMN sj_retry_task_log.task_type IS '任务类型 1、重试数据 2、回调数据'; -COMMENT ON COLUMN sj_retry_task_log.create_dt IS '创建时间'; -COMMENT ON COLUMN sj_retry_task_log.update_dt IS '修改时间'; -COMMENT ON TABLE sj_retry_task_log IS '任务日志基础信息表'; +COMMENT ON COLUMN sj_retry_task.id IS '主键'; +COMMENT ON COLUMN sj_retry_task.namespace_id IS '命名空间id'; +COMMENT ON COLUMN sj_retry_task.group_name IS '组名称'; +COMMENT ON COLUMN sj_retry_task.scene_name IS '场景名称'; +COMMENT ON COLUMN sj_retry_task.retry_id IS '重试信息Id'; +COMMENT ON COLUMN sj_retry_task.ext_attrs IS '扩展字段'; +COMMENT ON COLUMN sj_retry_task.task_status IS '重试状态'; +COMMENT ON COLUMN sj_retry_task.task_type IS '任务类型 1、重试数据 2、回调数据'; +COMMENT ON COLUMN sj_retry_task.operation_reason IS '操作原因'; +COMMENT ON COLUMN sj_retry_task.client_info IS '客户端地址 clientId#ip:port'; +COMMENT ON COLUMN sj_retry_task.create_dt IS '创建时间'; +COMMENT ON COLUMN sj_retry_task.update_dt IS '修改时间'; +COMMENT ON TABLE sj_retry_task IS '重试任务表'; -- sj_retry_task_log_message CREATE TABLE sj_retry_task_log_message ( - id bigserial PRIMARY KEY, - namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - group_name varchar(64) NOT NULL, - unique_id varchar(64) NOT NULL, - message text NOT NULL, - log_num int NOT NULL DEFAULT 1, - real_time bigint NOT NULL DEFAULT 0, - create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP + id bigserial PRIMARY KEY, + namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name varchar(64) NOT NULL, + retry_id bigint NOT NULL, + retry_task_id bigint NOT NULL, + message text NOT NULL, + log_num int NOT NULL DEFAULT 1, + real_time bigint NOT NULL DEFAULT 0, + create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); -CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id); +CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id); CREATE INDEX idx_sj_retry_task_log_message_02 ON sj_retry_task_log_message (create_dt); COMMENT ON COLUMN sj_retry_task_log_message.id IS '主键'; COMMENT ON COLUMN sj_retry_task_log_message.namespace_id IS '命名空间id'; COMMENT ON COLUMN sj_retry_task_log_message.group_name IS '组名称'; -COMMENT ON COLUMN sj_retry_task_log_message.unique_id IS '同组下id唯一'; +COMMENT ON COLUMN sj_retry_task_log_message.retry_id IS '重试信息Id'; +COMMENT ON COLUMN sj_retry_task_log_message.retry_task_id IS '重试任务Id'; COMMENT ON COLUMN sj_retry_task_log_message.message IS '异常信息'; COMMENT ON COLUMN sj_retry_task_log_message.log_num IS '日志数量'; COMMENT ON COLUMN sj_retry_task_log_message.real_time IS '上报时间'; @@ -289,21 +281,26 @@ COMMENT ON TABLE sj_retry_task_log_message IS '任务调度日志信息记录表 -- sj_retry_scene_config CREATE TABLE sj_retry_scene_config ( - id bigserial PRIMARY KEY, - namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - scene_name varchar(64) NOT NULL, - group_name varchar(64) NOT NULL, - scene_status smallint NOT NULL DEFAULT 0, - max_retry_count int NOT NULL DEFAULT 5, - back_off smallint NOT NULL DEFAULT 1, - trigger_interval varchar(16) NOT NULL DEFAULT '', - notify_ids varchar(128) NOT NULL DEFAULT '', - deadline_request bigint NOT NULL DEFAULT 60000, - executor_timeout int NOT NULL DEFAULT 5, - route_key smallint NOT NULL DEFAULT 4, - description varchar(256) NOT NULL DEFAULT '', - create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP + id bigserial PRIMARY KEY, + namespace_id varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + scene_name varchar(64) NOT NULL, + group_name varchar(64) NOT NULL, + scene_status smallint NOT NULL DEFAULT 0, + max_retry_count int NOT NULL DEFAULT 5, + back_off smallint NOT NULL DEFAULT 1, + trigger_interval varchar(16) NOT NULL DEFAULT '', + notify_ids varchar(128) NOT NULL DEFAULT '', + deadline_request bigint NOT NULL DEFAULT 60000, + executor_timeout int NOT NULL DEFAULT 5, + route_key smallint NOT NULL DEFAULT 4, + block_strategy smallint NOT NULL DEFAULT 1, + cb_status smallint NOT NULL DEFAULT 0, + cb_trigger_type smallint NOT NULL DEFAULT 1, + cb_max_count int NOT NULL DEFAULT 16, + cb_trigger_interval varchar(16) NOT NULL DEFAULT '', + description varchar(256) NOT NULL DEFAULT '', + create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE UNIQUE INDEX uk_sj_retry_scene_config_01 ON sj_retry_scene_config (namespace_id, group_name, scene_name); @@ -320,6 +317,11 @@ COMMENT ON COLUMN sj_retry_scene_config.notify_ids IS '通知告警场景配置i COMMENT ON COLUMN sj_retry_scene_config.deadline_request IS 'Deadline Request 调用链超时 单位毫秒'; COMMENT ON COLUMN sj_retry_scene_config.executor_timeout IS '任务执行超时时间,单位秒'; COMMENT ON COLUMN sj_retry_scene_config.route_key IS '路由策略'; +COMMENT ON COLUMN sj_retry_scene_config.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行'; +COMMENT ON COLUMN sj_retry_scene_config.cb_status IS '回调状态 0、不开启 1、开启'; +COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_type IS '1、默认等级 2、固定间隔时间 3、CRON 表达式'; +COMMENT ON COLUMN sj_retry_scene_config.cb_max_count IS '回调的最大执行次数'; +COMMENT ON COLUMN sj_retry_scene_config.cb_trigger_interval IS '回调的最大执行次数'; COMMENT ON COLUMN sj_retry_scene_config.description IS '描述'; COMMENT ON COLUMN sj_retry_scene_config.create_dt IS '创建时间'; COMMENT ON COLUMN sj_retry_scene_config.update_dt IS '修改时间'; @@ -362,7 +364,7 @@ COMMENT ON TABLE sj_server_node IS '服务器节点'; -- sj_distributed_lock CREATE TABLE sj_distributed_lock ( - name varchar(64) PRIMARY KEY, + name varchar(64) NOT NULL, lock_until timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_by varchar(255) NOT NULL, @@ -493,11 +495,11 @@ COMMENT ON COLUMN sj_job.executor_type IS '执行器类型'; COMMENT ON COLUMN sj_job.executor_info IS '执行器名称'; COMMENT ON COLUMN sj_job.trigger_type IS '触发类型 1.CRON 表达式 2. 固定时间'; COMMENT ON COLUMN sj_job.trigger_interval IS '间隔时长'; -COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行'; +COMMENT ON COLUMN sj_job.block_strategy IS '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复'; COMMENT ON COLUMN sj_job.executor_timeout IS '任务执行超时时间,单位秒'; COMMENT ON COLUMN sj_job.max_retry_times IS '最大重试次数'; COMMENT ON COLUMN sj_job.parallel_num IS '并行数'; -COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s ) '; +COMMENT ON COLUMN sj_job.retry_interval IS '重试间隔 ( s)'; COMMENT ON COLUMN sj_job.bucket_index IS 'bucket'; COMMENT ON COLUMN sj_job.resident IS '是否是常驻任务'; COMMENT ON COLUMN sj_job.notify_ids IS '通知告警场景配置id列表'; @@ -664,7 +666,7 @@ CREATE INDEX idx_sj_job_summary_01 ON sj_job_summary (namespace_id, group_name, COMMENT ON COLUMN sj_job_summary.id IS '主键'; COMMENT ON COLUMN sj_job_summary.namespace_id IS '命名空间id'; COMMENT ON COLUMN sj_job_summary.group_name IS '组名称'; -COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id ) '; +COMMENT ON COLUMN sj_job_summary.business_id IS '业务id ( job_id或workflow_id)'; COMMENT ON COLUMN sj_job_summary.system_task_type IS '任务类型 3、JOB任务 4、WORKFLOW任务'; COMMENT ON COLUMN sj_job_summary.trigger_at IS '统计时间'; COMMENT ON COLUMN sj_job_summary.success_num IS '执行成功-日志数量'; diff --git a/script/sql/ry_job.sql b/script/sql/ry_job.sql index c6ec01b45..3577d6614 100644 --- a/script/sql/ry_job.sql +++ b/script/sql/ry_job.sql @@ -30,7 +30,6 @@ CREATE TABLE `sj_group_config` `group_partition` int(11) NOT NULL COMMENT '分区', `id_generator_mode` tinyint(4) NOT NULL DEFAULT 1 COMMENT '唯一id生成模式 默认号段模式', `init_scene` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否初始化场景 0:否 1:是', - `bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket', `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`), @@ -39,8 +38,8 @@ CREATE TABLE `sj_group_config` AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='组配置'; -INSERT INTO `sj_group_config` VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now()); -INSERT INTO `sj_group_config` VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, 4, now(), now()); +INSERT INTO `sj_group_config` VALUES (1, 'dev', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now()); +INSERT INTO `sj_group_config` VALUES (2, 'prod', 'ruoyi_group', '', 'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', 1, 1, 0, 1, 1, now(), now()); CREATE TABLE `sj_notify_config` ( @@ -80,11 +79,10 @@ CREATE TABLE `sj_notify_recipient` AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='告警通知接收人'; -CREATE TABLE `sj_retry_dead_letter_0` +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', - `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', @@ -92,23 +90,20 @@ CREATE TABLE `sj_retry_dead_letter_0` `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', `args_str` text NOT NULL COMMENT '执行方法参数', `ext_attrs` text NOT NULL COMMENT '扩展字段', - `task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据', `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`), KEY `idx_idempotent_id` (`idempotent_id`), KEY `idx_biz_no` (`biz_no`), - KEY `idx_create_dt` (`create_dt`), - UNIQUE KEY `uk_namespace_id_group_name_unique_id` (`namespace_id`, `group_name`, `unique_id`) + KEY `idx_create_dt` (`create_dt`) ) ENGINE = InnoDB AUTO_INCREMENT = 0 DEFAULT CHARSET = utf8mb4 COMMENT ='死信队列表'; -CREATE TABLE `sj_retry_task_0` +CREATE TABLE `sj_retry` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', - `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一', `group_name` varchar(64) NOT NULL COMMENT '组名称', `scene_name` varchar(64) NOT NULL COMMENT '场景名称', `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', @@ -116,63 +111,63 @@ CREATE TABLE `sj_retry_task_0` `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', `args_str` text NOT NULL COMMENT '执行方法参数', `ext_attrs` text NOT NULL COMMENT '扩展字段', - `next_trigger_at` datetime NOT NULL COMMENT '下次触发时间', + `next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间', `retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '重试次数', `retry_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大重试次数', `task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据', + `bucket_index` int(11) NOT NULL DEFAULT 0 COMMENT 'bucket', + `parent_id` bigint(20) NOT NULL DEFAULT 0 COMMENT '父节点id', + `deleted` bigint(20) NOT NULL DEFAULT 0 COMMENT '逻辑删除', `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_task_type` (`namespace_id`, `group_name`, `task_type`), 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_parent_id` (`parent_id`), KEY `idx_create_dt` (`create_dt`), - UNIQUE KEY `uk_name_unique_id` (`namespace_id`, `group_name`, `unique_id`) + UNIQUE KEY `uk_name_task_type_idempotent_id_deleted` (`namespace_id`, `group_name`, `task_type`, `idempotent_id`, `deleted`) ) ENGINE = InnoDB AUTO_INCREMENT = 0 - DEFAULT CHARSET = utf8mb4 COMMENT ='任务表'; + DEFAULT CHARSET = utf8mb4 COMMENT ='重试信息表'; -CREATE TABLE `sj_retry_task_log` +CREATE TABLE `sj_retry_task` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', - `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一', - `group_name` varchar(64) NOT NULL COMMENT '组名称', - `scene_name` varchar(64) NOT NULL COMMENT '场景名称', - `idempotent_id` varchar(64) NOT NULL COMMENT '幂等id', - `biz_no` varchar(64) NOT NULL DEFAULT '' COMMENT '业务编号', - `executor_name` varchar(512) NOT NULL DEFAULT '' COMMENT '执行器名称', - `args_str` text NOT NULL COMMENT '执行方法参数', - `ext_attrs` text NOT NULL COMMENT '扩展字段', - `retry_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '重试状态 0、重试中 1、成功 2、最大次数', - `task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据', - `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `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 '组名称', + `scene_name` varchar(64) NOT NULL COMMENT '场景名称', + `retry_id` bigint(20) NOT NULL COMMENT '重试信息Id', + `ext_attrs` text NOT NULL COMMENT '扩展字段', + `task_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '重试状态', + `task_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '任务类型 1、重试数据 2、回调数据', + `operation_reason` tinyint(4) NOT NULL DEFAULT 0 COMMENT '操作原因', + `client_info` varchar(128) DEFAULT NULL COMMENT '客户端地址 clientId#ip:port', + `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_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`), - KEY `idx_retry_status` (`retry_status`), - KEY `idx_idempotent_id` (`idempotent_id`), - KEY `idx_unique_id` (`unique_id`), - KEY `idx_biz_no` (`biz_no`), - KEY `idx_create_dt` (`create_dt`) + KEY `task_status` (`task_status`), + KEY `idx_create_dt` (`create_dt`), + KEY `idx_retry_id` (`retry_id`) ) ENGINE = InnoDB AUTO_INCREMENT = 0 - DEFAULT CHARSET = utf8mb4 COMMENT ='任务日志基础信息表'; + DEFAULT CHARSET = utf8mb4 COMMENT ='重试任务表'; CREATE TABLE `sj_retry_task_log_message` ( - `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 '组名称', - `unique_id` varchar(64) NOT NULL COMMENT '同组下id唯一', - `message` longtext NOT NULL COMMENT '异常信息', - `log_num` int(11) NOT NULL DEFAULT 1 COMMENT '日志数量', - `real_time` bigint(13) NOT NULL DEFAULT 0 COMMENT '上报时间', - `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `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 '组名称', + `retry_id` bigint(20) NOT NULL COMMENT '重试信息Id', + `retry_task_id` bigint(20) NOT NULL COMMENT '重试任务Id', + `message` longtext NOT NULL COMMENT '异常信息', + `log_num` int(11) NOT NULL DEFAULT 1 COMMENT '日志数量', + `real_time` bigint(13) NOT NULL DEFAULT 0 COMMENT '上报时间', + `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), - KEY `idx_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `unique_id`), + KEY `idx_namespace_id_group_name_retry_task_id` (`namespace_id`, `group_name`, `retry_task_id`), KEY `idx_create_dt` (`create_dt`) ) ENGINE = InnoDB AUTO_INCREMENT = 0 @@ -180,21 +175,26 @@ CREATE TABLE `sj_retry_task_log_message` CREATE TABLE `sj_retry_scene_config` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', - `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', - `scene_name` varchar(64) NOT NULL COMMENT '场景名称', - `group_name` varchar(64) NOT NULL COMMENT '组名称', - `scene_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '组状态 0、未启用 1、启用', - `max_retry_count` int(11) NOT NULL DEFAULT 5 COMMENT '最大重试次数', - `back_off` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式', - `trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '间隔时长', - `notify_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表', - `deadline_request` bigint(20) unsigned NOT NULL DEFAULT 60000 COMMENT 'Deadline Request 调用链超时 单位毫秒', - `executor_timeout` int(11) unsigned NOT NULL DEFAULT 5 COMMENT '任务执行超时时间,单位秒', - `route_key` tinyint(4) NOT NULL DEFAULT 4 COMMENT '路由策略', - `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述', - `create_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', + `namespace_id` varchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a' COMMENT '命名空间id', + `scene_name` varchar(64) NOT NULL COMMENT '场景名称', + `group_name` varchar(64) NOT NULL COMMENT '组名称', + `scene_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '组状态 0、未启用 1、启用', + `max_retry_count` int(11) NOT NULL DEFAULT 5 COMMENT '最大重试次数', + `back_off` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式', + `trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '间隔时长', + `notify_ids` varchar(128) NOT NULL DEFAULT '' COMMENT '通知告警场景配置id列表', + `deadline_request` bigint(20) unsigned NOT NULL DEFAULT 60000 COMMENT 'Deadline Request 调用链超时 单位毫秒', + `executor_timeout` int(11) unsigned NOT NULL DEFAULT 5 COMMENT '任务执行超时时间,单位秒', + `route_key` tinyint(4) NOT NULL DEFAULT 4 COMMENT '路由策略', + `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行', + `cb_status` tinyint(4) NOT NULL DEFAULT 0 COMMENT '回调状态 0、不开启 1、开启', + `cb_trigger_type` tinyint(4) NOT NULL DEFAULT 1 COMMENT '1、默认等级 2、固定间隔时间 3、CRON 表达式', + `cb_max_count` int(11) NOT NULL DEFAULT 16 COMMENT '回调的最大执行次数', + `cb_trigger_interval` varchar(16) NOT NULL DEFAULT '' COMMENT '回调的最大执行次数', + `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述', + `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`), UNIQUE KEY `uk_namespace_id_group_name_scene_name` (`namespace_id`, `group_name`, `scene_name`) ) ENGINE = InnoDB @@ -249,7 +249,8 @@ CREATE TABLE `sj_system_user` DEFAULT CHARSET = utf8mb4 COMMENT ='系统用户表'; -- pwd: admin -INSERT INTO `sj_system_user` VALUES (1, 'admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2, now(), now()); +INSERT INTO `sj_system_user` (username, password, role) +VALUES ('admin', '465c194afb65670f38322df087f0a9bb225cc257e43eb4ac5a0c98ef5b3173ac', 2); CREATE TABLE `sj_system_user_permission` ( @@ -294,7 +295,7 @@ CREATE TABLE `sj_job` `executor_info` varchar(255) DEFAULT NULL COMMENT '执行器名称', `trigger_type` tinyint(4) NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间', `trigger_interval` varchar(255) NOT NULL COMMENT '间隔时长', - `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行', + `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复', `executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒', `max_retry_times` int(11) NOT NULL DEFAULT 0 COMMENT '最大重试次数', `parallel_num` int(11) NOT NULL DEFAULT 1 COMMENT '并行数', @@ -448,7 +449,7 @@ CREATE TABLE `sj_workflow` `workflow_status` tinyint(4) NOT NULL DEFAULT 1 COMMENT '工作流状态 0、关闭、1、开启', `trigger_type` tinyint(4) NOT NULL COMMENT '触发类型 1.CRON 表达式 2. 固定时间', `trigger_interval` varchar(255) NOT NULL COMMENT '间隔时长', - `next_trigger_at` bigint(13) NOT NULL COMMENT '下次触发时间', + `next_trigger_at` bigint NOT NULL COMMENT '下次触发时间', `block_strategy` tinyint(4) NOT NULL DEFAULT 1 COMMENT '阻塞策略 1、丢弃 2、覆盖 3、并行', `executor_timeout` int(11) NOT NULL DEFAULT 0 COMMENT '任务执行超时时间,单位秒', `description` varchar(256) NOT NULL DEFAULT '' COMMENT '描述', diff --git a/script/sql/sqlserver/sqlserver_ry_job.sql b/script/sql/sqlserver/sqlserver_ry_job.sql index 97addc3aa..5a0bbb39b 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: 2024-12-27 22:24:37 + Date: 2025-02-25 22:16:48 */ @@ -95,7 +95,6 @@ CREATE TABLE sj_group_config group_partition int NOT NULL, id_generator_mode tinyint NOT NULL DEFAULT 1, init_scene tinyint NOT NULL DEFAULT 0, - bucket_index int NOT NULL DEFAULT 0, create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP ) @@ -174,13 +173,6 @@ EXEC sp_addextendedproperty 'COLUMN', N'init_scene' GO -EXEC sp_addextendedproperty - 'MS_Description', N'bucket', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_group_config', - 'COLUMN', N'bucket_index' -GO - EXEC sp_addextendedproperty 'MS_Description', N'创建时间', 'SCHEMA', N'dbo', @@ -201,9 +193,9 @@ EXEC sp_addextendedproperty 'TABLE', N'sj_group_config' GO -INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', N'4', getdate(), getdate()) +INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES (N'dev', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', getdate(), getdate()) GO -INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, bucket_index, create_dt, update_dt) VALUES (N'prod', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', N'4', getdate(), getdate()) +INSERT INTO sj_group_config(namespace_id, group_name, description, token, group_status, version, group_partition, id_generator_mode, init_scene, create_dt, update_dt) VALUES (N'prod', N'ruoyi_group', N'', N'SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT', N'1', N'1', N'0', N'1', N'1', getdate(), getdate()) GO -- sj_notify_config @@ -412,12 +404,11 @@ EXEC sp_addextendedproperty 'TABLE', N'sj_notify_recipient' GO --- sj_retry_dead_letter_0 -CREATE TABLE sj_retry_dead_letter_0 +-- sj_retry_dead_letter +CREATE TABLE sj_retry_dead_letter ( id bigint NOT NULL PRIMARY KEY IDENTITY, namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - unique_id nvarchar(64) NOT NULL, group_name nvarchar(64) NOT NULL, scene_name nvarchar(64) NOT NULL, idempotent_id nvarchar(64) NOT NULL, @@ -425,119 +416,100 @@ CREATE TABLE sj_retry_dead_letter_0 executor_name nvarchar(512) NOT NULL DEFAULT '', args_str nvarchar(max) NOT NULL, ext_attrs nvarchar(max) NOT NULL, - task_type tinyint NOT NULL DEFAULT 1, create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP ) GO -CREATE UNIQUE INDEX uk_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, unique_id) +CREATE INDEX idx_sj_retry_dead_letter_01 ON sj_retry_dead_letter (namespace_id, group_name, scene_name) GO - -CREATE INDEX idx_sj_retry_dead_letter_0_01 ON sj_retry_dead_letter_0 (namespace_id, group_name, scene_name) +CREATE INDEX idx_sj_retry_dead_letter_02 ON sj_retry_dead_letter (idempotent_id) GO -CREATE INDEX idx_sj_retry_dead_letter_0_02 ON sj_retry_dead_letter_0 (idempotent_id) +CREATE INDEX idx_sj_retry_dead_letter_03 ON sj_retry_dead_letter (biz_no) GO -CREATE INDEX idx_sj_retry_dead_letter_0_03 ON sj_retry_dead_letter_0 (biz_no) -GO -CREATE INDEX idx_sj_retry_dead_letter_0_04 ON sj_retry_dead_letter_0 (create_dt) +CREATE INDEX idx_sj_retry_dead_letter_04 ON sj_retry_dead_letter (create_dt) GO EXEC sp_addextendedproperty 'MS_Description', N'主键', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'id' GO EXEC sp_addextendedproperty 'MS_Description', N'命名空间id', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'namespace_id' GO -EXEC sp_addextendedproperty - 'MS_Description', N'同组下id唯一', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', - 'COLUMN', N'unique_id' -GO - EXEC sp_addextendedproperty 'MS_Description', N'组名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'group_name' GO EXEC sp_addextendedproperty 'MS_Description', N'场景名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'scene_name' GO EXEC sp_addextendedproperty 'MS_Description', N'幂等id', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'idempotent_id' GO EXEC sp_addextendedproperty 'MS_Description', N'业务编号', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'biz_no' GO EXEC sp_addextendedproperty 'MS_Description', N'执行器名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'executor_name' GO EXEC sp_addextendedproperty 'MS_Description', N'执行方法参数', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'args_str' GO EXEC sp_addextendedproperty 'MS_Description', N'扩展字段', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'ext_attrs' GO -EXEC sp_addextendedproperty - 'MS_Description', N'任务类型 1、重试数据 2、回调数据', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', - 'COLUMN', N'task_type' -GO - EXEC sp_addextendedproperty 'MS_Description', N'创建时间', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0', + 'TABLE', N'sj_retry_dead_letter', 'COLUMN', N'create_dt' GO EXEC sp_addextendedproperty 'MS_Description', N'死信队列表', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_dead_letter_0' + 'TABLE', N'sj_retry_dead_letter' GO --- sj_retry_task_0 -CREATE TABLE sj_retry_task_0 +-- sj_retry +CREATE TABLE sj_retry ( id bigint NOT NULL PRIMARY KEY IDENTITY, namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - unique_id nvarchar(64) NOT NULL, group_name nvarchar(64) NOT NULL, scene_name nvarchar(64) NOT NULL, idempotent_id nvarchar(64) NOT NULL, @@ -545,301 +517,299 @@ CREATE TABLE sj_retry_task_0 executor_name nvarchar(512) NOT NULL DEFAULT '', args_str nvarchar(max) NOT NULL, ext_attrs nvarchar(max) NOT NULL, - next_trigger_at datetime2 NOT NULL, + next_trigger_at bigint NOT NULL, retry_count int NOT NULL DEFAULT 0, retry_status tinyint NOT NULL DEFAULT 0, task_type tinyint NOT NULL DEFAULT 1, + bucket_index int NOT NULL DEFAULT 0, + parent_id bigint NOT NULL DEFAULT 0, + deleted bigint NOT NULL DEFAULT 0, create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP ) GO -CREATE UNIQUE INDEX uk_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, unique_id) +CREATE UNIQUE INDEX uk_sj_retry_01 ON sj_retry (namespace_id, group_name, task_type, idempotent_id, deleted) GO -CREATE INDEX idx_sj_retry_task_0_01 ON sj_retry_task_0 (namespace_id, group_name, scene_name) +CREATE INDEX idx_sj_retry_01 ON sj_retry (namespace_id, group_name, scene_name) GO -CREATE INDEX idx_sj_retry_task_0_02 ON sj_retry_task_0 (namespace_id, group_name, task_type) +CREATE INDEX idx_sj_retry_02 ON sj_retry (namespace_id, group_name, retry_status) GO -CREATE INDEX idx_sj_retry_task_0_03 ON sj_retry_task_0 (namespace_id, group_name, retry_status) +CREATE INDEX idx_sj_retry_03 ON sj_retry (idempotent_id) GO -CREATE INDEX idx_sj_retry_task_0_04 ON sj_retry_task_0 (idempotent_id) +CREATE INDEX idx_sj_retry_04 ON sj_retry (biz_no) GO -CREATE INDEX idx_sj_retry_task_0_05 ON sj_retry_task_0 (biz_no) +CREATE INDEX idx_sj_retry_05 ON sj_retry (parent_id) GO -CREATE INDEX idx_sj_retry_task_0_06 ON sj_retry_task_0 (create_dt) +CREATE INDEX idx_sj_retry_06 ON sj_retry (create_dt) GO EXEC sp_addextendedproperty 'MS_Description', N'主键', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'id' GO EXEC sp_addextendedproperty 'MS_Description', N'命名空间id', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'namespace_id' GO -EXEC sp_addextendedproperty - 'MS_Description', N'同组下id唯一', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', - 'COLUMN', N'unique_id' -GO - EXEC sp_addextendedproperty 'MS_Description', N'组名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'group_name' GO EXEC sp_addextendedproperty 'MS_Description', N'场景名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'scene_name' GO EXEC sp_addextendedproperty 'MS_Description', N'幂等id', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'idempotent_id' GO EXEC sp_addextendedproperty 'MS_Description', N'业务编号', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'biz_no' GO EXEC sp_addextendedproperty 'MS_Description', N'执行器名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'executor_name' GO EXEC sp_addextendedproperty 'MS_Description', N'执行方法参数', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'args_str' GO EXEC sp_addextendedproperty 'MS_Description', N'扩展字段', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'ext_attrs' GO EXEC sp_addextendedproperty 'MS_Description', N'下次触发时间', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'next_trigger_at' GO EXEC sp_addextendedproperty 'MS_Description', N'重试次数', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'retry_count' GO EXEC sp_addextendedproperty 'MS_Description', N'重试状态 0、重试中 1、成功 2、最大重试次数', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'retry_status' GO EXEC sp_addextendedproperty 'MS_Description', N'任务类型 1、重试数据 2、回调数据', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'task_type' GO +EXEC sp_addextendedproperty + 'MS_Description', N'bucket', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry', + 'COLUMN', N'bucket_index' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'父节点id', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry', + 'COLUMN', N'parent_id' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'逻辑删除', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry', + 'COLUMN', N'deleted' +GO + EXEC sp_addextendedproperty 'MS_Description', N'创建时间', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'create_dt' GO EXEC sp_addextendedproperty 'MS_Description', N'修改时间', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0', + 'TABLE', N'sj_retry', 'COLUMN', N'update_dt' GO EXEC sp_addextendedproperty - 'MS_Description', N'任务表', + 'MS_Description', N'重试信息表', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_0' + 'TABLE', N'sj_retry' GO --- sj_retry_task_log -CREATE TABLE sj_retry_task_log +-- sj_retry_task +CREATE TABLE sj_retry_task ( - id bigint NOT NULL PRIMARY KEY IDENTITY, - namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - unique_id nvarchar(64) NOT NULL, - group_name nvarchar(64) NOT NULL, - scene_name nvarchar(64) NOT NULL, - idempotent_id nvarchar(64) NOT NULL, - biz_no nvarchar(64) NOT NULL DEFAULT '', - executor_name nvarchar(512) NOT NULL DEFAULT '', - args_str nvarchar(max) NOT NULL, - ext_attrs nvarchar(max) NOT NULL, - retry_status tinyint NOT NULL DEFAULT 0, - task_type tinyint NOT NULL DEFAULT 1, - create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, - update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP + id bigint NOT NULL PRIMARY KEY IDENTITY, + namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name nvarchar(64) NOT NULL, + scene_name nvarchar(64) NOT NULL, + retry_id bigint NOT NULL, + ext_attrs nvarchar(max) NOT NULL, + task_status tinyint NOT NULL DEFAULT 1, + task_type tinyint NOT NULL DEFAULT 1, + operation_reason tinyint NOT NULL DEFAULT 0, + client_info nvarchar(128) NULL DEFAULT NULL, + create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP ) GO -CREATE INDEX idx_sj_retry_task_log_01 ON sj_retry_task_log (namespace_id, group_name, scene_name) +CREATE INDEX idx_sj_retry_task_01 ON sj_retry_task (namespace_id, group_name, scene_name) GO -CREATE INDEX idx_sj_retry_task_log_02 ON sj_retry_task_log (retry_status) +CREATE INDEX idx_sj_retry_task_02 ON sj_retry_task (task_status) GO -CREATE INDEX idx_sj_retry_task_log_03 ON sj_retry_task_log (idempotent_id) +CREATE INDEX idx_sj_retry_task_03 ON sj_retry_task (create_dt) GO -CREATE INDEX idx_sj_retry_task_log_04 ON sj_retry_task_log (unique_id) -GO -CREATE INDEX idx_sj_retry_task_log_05 ON sj_retry_task_log (biz_no) -GO -CREATE INDEX idx_sj_retry_task_log_06 ON sj_retry_task_log (create_dt) +CREATE INDEX idx_sj_retry_task_04 ON sj_retry_task (retry_id) GO EXEC sp_addextendedproperty 'MS_Description', N'主键', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'id' GO EXEC sp_addextendedproperty 'MS_Description', N'命名空间id', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'namespace_id' GO -EXEC sp_addextendedproperty - 'MS_Description', N'同组下id唯一', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', - 'COLUMN', N'unique_id' -GO - EXEC sp_addextendedproperty 'MS_Description', N'组名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'group_name' GO EXEC sp_addextendedproperty 'MS_Description', N'场景名称', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'scene_name' GO EXEC sp_addextendedproperty - 'MS_Description', N'幂等id', + 'MS_Description', N'重试信息Id', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', - 'COLUMN', N'idempotent_id' -GO - -EXEC sp_addextendedproperty - 'MS_Description', N'业务编号', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', - 'COLUMN', N'biz_no' -GO - -EXEC sp_addextendedproperty - 'MS_Description', N'执行器名称', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', - 'COLUMN', N'executor_name' -GO - -EXEC sp_addextendedproperty - 'MS_Description', N'执行方法参数', - 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', - 'COLUMN', N'args_str' + 'TABLE', N'sj_retry_task', + 'COLUMN', N'retry_id' GO EXEC sp_addextendedproperty 'MS_Description', N'扩展字段', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'ext_attrs' GO EXEC sp_addextendedproperty - 'MS_Description', N'重试状态 0、重试中 1、成功 2、最大次数', + 'MS_Description', N'重试状态', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', - 'COLUMN', N'retry_status' + 'TABLE', N'sj_retry_task', + 'COLUMN', N'task_status' GO EXEC sp_addextendedproperty 'MS_Description', N'任务类型 1、重试数据 2、回调数据', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'task_type' GO +EXEC sp_addextendedproperty + 'MS_Description', N'操作原因', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_task', + 'COLUMN', N'operation_reason' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'客户端地址 clientId#ip:port', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_task', + 'COLUMN', N'client_info' +GO + EXEC sp_addextendedproperty 'MS_Description', N'创建时间', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'create_dt' GO EXEC sp_addextendedproperty 'MS_Description', N'修改时间', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log', + 'TABLE', N'sj_retry_task', 'COLUMN', N'update_dt' GO EXEC sp_addextendedproperty - 'MS_Description', N'任务日志基础信息表', + 'MS_Description', N'重试任务表', 'SCHEMA', N'dbo', - 'TABLE', N'sj_retry_task_log' + 'TABLE', N'sj_retry_task' GO -- sj_retry_task_log_message CREATE TABLE sj_retry_task_log_message ( - id bigint NOT NULL PRIMARY KEY IDENTITY, - namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - group_name nvarchar(64) NOT NULL, - unique_id nvarchar(64) NOT NULL, - message nvarchar(max) NOT NULL, - log_num int NOT NULL DEFAULT 1, - real_time bigint NOT NULL DEFAULT 0, - create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP + id bigint NOT NULL PRIMARY KEY IDENTITY, + namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + group_name nvarchar(64) NOT NULL, + retry_id bigint NOT NULL, + retry_task_id bigint NOT NULL, + message nvarchar(max) NOT NULL, + log_num int NOT NULL DEFAULT 1, + real_time bigint NOT NULL DEFAULT 0, + create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP ) GO -CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, unique_id) +CREATE INDEX idx_sj_retry_task_log_message_01 ON sj_retry_task_log_message (namespace_id, group_name, retry_task_id) GO CREATE INDEX idx_sj_retry_task_log_message_02 ON sj_retry_task_log_message (create_dt) GO @@ -866,10 +836,17 @@ EXEC sp_addextendedproperty GO EXEC sp_addextendedproperty - 'MS_Description', N'同组下id唯一', + 'MS_Description', N'重试信息Id', 'SCHEMA', N'dbo', 'TABLE', N'sj_retry_task_log_message', - 'COLUMN', N'unique_id' + 'COLUMN', N'retry_id' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'重试任务Id', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_task_log_message', + 'COLUMN', N'retry_task_id' GO EXEC sp_addextendedproperty @@ -909,21 +886,26 @@ GO -- sj_retry_scene_config CREATE TABLE sj_retry_scene_config ( - id bigint NOT NULL PRIMARY KEY IDENTITY, - namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', - scene_name nvarchar(64) NOT NULL, - group_name nvarchar(64) NOT NULL, - scene_status tinyint NOT NULL DEFAULT 0, - max_retry_count int NOT NULL DEFAULT 5, - back_off tinyint NOT NULL DEFAULT 1, - trigger_interval nvarchar(16) NOT NULL DEFAULT '', - notify_ids nvarchar(128) NOT NULL DEFAULT '', - deadline_request bigint NOT NULL DEFAULT 60000, - executor_timeout int NOT NULL DEFAULT 5, - route_key tinyint NOT NULL DEFAULT 4, - description nvarchar(256) NOT NULL DEFAULT '', - create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, - update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP + id bigint NOT NULL PRIMARY KEY IDENTITY, + namespace_id nvarchar(64) NOT NULL DEFAULT '764d604ec6fc45f68cd92514c40e9e1a', + scene_name nvarchar(64) NOT NULL, + group_name nvarchar(64) NOT NULL, + scene_status tinyint NOT NULL DEFAULT 0, + max_retry_count int NOT NULL DEFAULT 5, + back_off tinyint NOT NULL DEFAULT 1, + trigger_interval nvarchar(16) NOT NULL DEFAULT '', + notify_ids nvarchar(128) NOT NULL DEFAULT '', + deadline_request bigint NOT NULL DEFAULT 60000, + executor_timeout int NOT NULL DEFAULT 5, + route_key tinyint NOT NULL DEFAULT 4, + block_strategy tinyint NOT NULL DEFAULT 1, + cb_status tinyint NOT NULL DEFAULT 0, + cb_trigger_type tinyint NOT NULL DEFAULT 1, + cb_max_count int NOT NULL DEFAULT 16, + cb_trigger_interval nvarchar(16) NOT NULL DEFAULT '', + description nvarchar(256) NOT NULL DEFAULT '', + create_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_dt datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP ) GO @@ -1014,6 +996,41 @@ EXEC sp_addextendedproperty 'COLUMN', N'route_key' GO +EXEC sp_addextendedproperty + 'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_scene_config', + 'COLUMN', N'block_strategy' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'回调状态 0、不开启 1、开启', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_scene_config', + 'COLUMN', N'cb_status' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'1、默认等级 2、固定间隔时间 3、CRON 表达式', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_scene_config', + 'COLUMN', N'cb_trigger_type' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'回调的最大执行次数', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_scene_config', + 'COLUMN', N'cb_max_count' +GO + +EXEC sp_addextendedproperty + 'MS_Description', N'回调的最大执行次数', + 'SCHEMA', N'dbo', + 'TABLE', N'sj_retry_scene_config', + 'COLUMN', N'cb_trigger_interval' +GO + EXEC sp_addextendedproperty 'MS_Description', N'描述', 'SCHEMA', N'dbo', @@ -1152,7 +1169,7 @@ GO -- sj_distributed_lock CREATE TABLE sj_distributed_lock ( - name nvarchar(64) NOT NULL PRIMARY KEY, + name nvarchar(64) NOT NULL, lock_until datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, locked_at datetime2 NOT NULL DEFAULT CURRENT_TIMESTAMP, locked_by nvarchar(255) NOT NULL, @@ -1539,7 +1556,7 @@ EXEC sp_addextendedproperty GO EXEC sp_addextendedproperty - 'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行', + 'MS_Description', N'阻塞策略 1、丢弃 2、覆盖 3、并行 4、恢复', 'SCHEMA', N'dbo', 'TABLE', N'sj_job', 'COLUMN', N'block_strategy' @@ -1567,7 +1584,7 @@ EXEC sp_addextendedproperty GO EXEC sp_addextendedproperty - 'MS_Description', N'重试间隔 ( s ) ', + 'MS_Description', N'重试间隔 ( s)', 'SCHEMA', N'dbo', 'TABLE', N'sj_job', 'COLUMN', N'retry_interval' @@ -2121,7 +2138,7 @@ EXEC sp_addextendedproperty GO EXEC sp_addextendedproperty - 'MS_Description', N'业务id ( job_id或workflow_id ) ', + 'MS_Description', N'业务id ( job_id或workflow_id)', 'SCHEMA', N'dbo', 'TABLE', N'sj_job_summary', 'COLUMN', N'business_id' From d14ee599128ae4e2911d8b37676600f624960a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Tue, 18 Mar 2025 17:25:01 +0800 Subject: [PATCH 10/20] update springboot-admin 3.4.2 => 3.4.5 update redisson 3.44.0 => 3.45.1 update sms4j 3.3.3 => 3.3.4 --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index e887efd5c..048f44e3f 100644 --- a/pom.xml +++ b/pom.xml @@ -27,8 +27,8 @@ 3.5.10.1 3.9.1 5.8.35 - 3.4.2 - 3.44.0 + 3.4.5 + 3.45.1 2.2.7 4.3.1 1.4.0-beta2 @@ -43,7 +43,7 @@ 2.28.22 - 3.3.3 + 3.3.4 1.2.83 From d4f792810e008fceddab871b14db1cb4b316c706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 19 Mar 2025 10:09:32 +0800 Subject: [PATCH 11/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=AE=80?= =?UTF-8?q?=E5=8C=96=20SysTaskAssigneeServiceImpl=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/domain/bo/SysDeptBo.java | 5 + .../system/service/ISysDeptService.java | 12 ++ .../service/impl/SysDeptServiceImpl.java | 26 ++++ .../impl/SysTaskAssigneeServiceImpl.java | 139 +++++++----------- 4 files changed, 93 insertions(+), 89 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java index 5f64d6f30..0d8ac84b9 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java @@ -73,4 +73,9 @@ public class SysDeptBo extends BaseEntity { */ private String status; + /** + * 归属部门id(部门树) + */ + private Long belongDeptId; + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java index bf16642fe..1397443cb 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -1,6 +1,8 @@ package org.dromara.system.service; import cn.hutool.core.lang.tree.Tree; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.domain.bo.SysDeptBo; import org.dromara.system.domain.vo.SysDeptVo; @@ -12,6 +14,16 @@ import java.util.List; * @author Lion Li */ public interface ISysDeptService { + + /** + * 分页查询部门管理数据 + * + * @param dept 部门信息 + * @param pageQuery 分页对象 + * @return 部门信息集合 + */ + TableDataInfo selectPageDeptList(SysDeptBo dept, PageQuery pageQuery); + /** * 查询部门管理数据 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index ecd309f4e..98aad216b 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -8,6 +8,7 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import org.dromara.common.core.constant.CacheNames; import org.dromara.common.core.constant.SystemConstants; @@ -15,6 +16,8 @@ import org.dromara.common.core.domain.dto.DeptDTO; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.DeptService; import org.dromara.common.core.utils.*; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.redis.utils.CacheUtils; import org.dromara.common.satoken.utils.LoginHelper; @@ -50,6 +53,19 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { private final SysRoleMapper roleMapper; private final SysUserMapper userMapper; + /** + * 分页查询部门管理数据 + * + * @param dept 部门信息 + * @param pageQuery 分页对象 + * @return 部门信息集合 + */ + @Override + public TableDataInfo selectPageDeptList(SysDeptBo dept, PageQuery pageQuery) { + Page page = baseMapper.selectPageDeptList(pageQuery.build(), buildQueryWrapper(dept)); + return TableDataInfo.build(page); + } + /** * 查询部门管理数据 * @@ -87,6 +103,16 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { lqw.orderByAsc(SysDept::getParentId); lqw.orderByAsc(SysDept::getOrderNum); lqw.orderByAsc(SysDept::getDeptId); + if (ObjectUtil.isNotNull(bo.getBelongDeptId())) { + //部门树搜索 + lqw.and(x -> { + Long parentId = bo.getBelongDeptId(); + List deptList = baseMapper.selectListByParentId(parentId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(parentId); + x.in(SysDept::getDeptId, deptIds); + }); + } return lqw; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java index 2fbf2408b..0a5f4b1d4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java @@ -1,32 +1,27 @@ package org.dromara.system.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; -import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.model.TaskAssigneeBody; import org.dromara.common.core.service.TaskAssigneeService; -import org.dromara.common.core.utils.StreamUtils; -import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.system.domain.SysDept; -import org.dromara.system.domain.SysPost; -import org.dromara.system.domain.SysRole; -import org.dromara.system.domain.SysUser; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.bo.SysUserBo; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysPostVo; import org.dromara.system.domain.vo.SysRoleVo; import org.dromara.system.domain.vo.SysUserVo; -import org.dromara.system.mapper.SysDeptMapper; -import org.dromara.system.mapper.SysPostMapper; -import org.dromara.system.mapper.SysRoleMapper; -import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.service.ISysDeptService; +import org.dromara.system.service.ISysPostService; +import org.dromara.system.service.ISysRoleService; +import org.dromara.system.service.ISysUserService; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** * 工作流设计器获取任务执行人 @@ -37,10 +32,11 @@ import java.util.List; @Service public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { - private final SysPostMapper postMapper; - private final SysDeptMapper deptMapper; - private final SysUserMapper userMapper; - private final SysRoleMapper roleMapper; + // 上级Service注入下级Service 其他Service永远不可能注入当前类 避免循环注入 + private final ISysPostService postService; + private final ISysDeptService deptService; + private final ISysUserService userService; + private final ISysRoleService roleService; /** * 查询角色并返回任务指派的列表,支持分页 @@ -51,17 +47,15 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @Override public TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery) { PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - QueryWrapper wrapper = Wrappers.query(); - wrapper.eq("r.del_flag", SystemConstants.NORMAL) - .eq("r.status", SystemConstants.NORMAL) - .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "r.role_name", taskQuery.getHandlerCode()) - .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "r.role_key", taskQuery.getHandlerName()) - .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), - "r.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) - .orderByAsc("r.role_sort").orderByAsc("r.create_time"); - Page page = roleMapper.selectPageRoleList(pageQuery.build(), wrapper); + SysRoleBo bo = new SysRoleBo(); + bo.setRoleName(taskQuery.getHandlerCode()); + bo.setRoleKey(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + TableDataInfo page = roleService.selectPageRoleList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); } @@ -75,24 +69,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @Override public TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery) { PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() - .eq(SysPost::getStatus, SystemConstants.NORMAL) - .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysPost::getPostCategory, taskQuery.getHandlerCode()) - .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysPost::getPostName, taskQuery.getHandlerName()) - .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), - SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()); - if (StringUtils.isNotBlank(taskQuery.getGroupId())) { - Long belongDeptId = Long.valueOf(taskQuery.getGroupId()); - wrapper.and(x -> { - List deptList = deptMapper.selectListByParentId(belongDeptId); - List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); - deptIds.add(belongDeptId); - x.in(SysPost::getDeptId, deptIds); - }); - } - Page page = postMapper.selectPagePostList(pageQuery.build(), wrapper); + SysPostBo bo = new SysPostBo(); + bo.setPostCategory(taskQuery.getHandlerCode()); + bo.setPostName(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId())); + TableDataInfo page = postService.selectPagePostList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); } @@ -106,30 +92,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @Override public TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery) { PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() - .eq(SysDept::getDelFlag, SystemConstants.NORMAL) - .eq(SysDept::getStatus, SystemConstants.NORMAL) - .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysDept::getDeptCategory, taskQuery.getHandlerCode()) - .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysDept::getDeptName, taskQuery.getHandlerName()) - .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), - SysDept::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()) - .orderByAsc(SysDept::getAncestors) - .orderByAsc(SysDept::getParentId) - .orderByAsc(SysDept::getOrderNum) - .orderByAsc(SysDept::getDeptId); - if (StringUtils.isNotBlank(taskQuery.getGroupId())) { - //部门树搜索 - wrapper.and(x -> { - Long parentId = Long.valueOf(taskQuery.getGroupId()); - List deptList = deptMapper.selectListByParentId(parentId); - List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); - deptIds.add(parentId); - x.in(SysDept::getDeptId, deptIds); - }); - } - Page page = deptMapper.selectPageDeptList(pageQuery.build(), wrapper); + SysDeptBo bo = new SysDeptBo(); + bo.setDeptCategory(taskQuery.getHandlerCode()); + bo.setDeptName(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId())); + TableDataInfo page = deptService.selectPageDeptList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); } @@ -144,27 +116,16 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { @Override public TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery) { PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); - QueryWrapper wrapper = Wrappers.query(); - wrapper.eq("u.del_flag", SystemConstants.NORMAL) - .eq("u.status", SystemConstants.NORMAL) - .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "u.user_name", taskQuery.getHandlerCode()) - .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "u.nick_name", taskQuery.getHandlerName()) - .between(taskQuery.getBeginTime() != null && taskQuery.getEndTime() != null, - "u.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) - .orderByAsc("u.user_id"); - if (StringUtils.isNotBlank(taskQuery.getGroupId())) { - //部门树搜索 - wrapper.and(x -> { - Long parentId = Long.valueOf(taskQuery.getGroupId()); - List deptList = deptMapper.selectListByParentId(parentId); - List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); - deptIds.add(parentId); - x.in("u.dept_id", deptIds); - }); - } - Page page = userMapper.selectPageUserList(pageQuery.build(), wrapper); + SysUserBo bo = new SysUserBo(); + bo.setUserName(taskQuery.getHandlerCode()); + bo.setNickName(taskQuery.getHandlerName()); + Map params = bo.getParams(); + params.put("beginTime", taskQuery.getBeginTime()); + params.put("endTime", taskQuery.getEndTime()); + bo.setDeptId(Long.valueOf(taskQuery.getGroupId())); + TableDataInfo page = userService.selectPageUserList(bo, pageQuery); // 使用封装的字段映射方法进行转换 - List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); return new TaskAssigneeDTO(page.getTotal(), handlers); } From bba163f7b487601ccd246953e5c35bdead410ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 19 Mar 2025 11:34:53 +0800 Subject: [PATCH 12/20] update warm-flow 1.6.7 => 1.6.8 --- pom.xml | 2 +- script/sql/oracle/oracle_ry_workflow.sql | 1 + script/sql/postgres/postgres_ry_workflow.sql | 2 ++ script/sql/ry_workflow.sql | 3 ++- script/sql/sqlserver/sqlserver_ry_workflow.sql | 2 ++ script/sql/update/oracle/update_5.3.0-5.3.1.sql | 1 + script/sql/update/postgres/update_5.3.0-5.3.1.sql | 1 + script/sql/update/sqlserver/update_5.3.0-5.3.1.sql | 3 +++ script/sql/update/update_5.3.0-5.3.1.sql | 1 + 9 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 048f44e3f..281035978 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ 8.7.2-20250101 - 1.6.7 + 1.6.8 3.2.2 diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql index baecd91fa..d982f03ed 100644 --- a/script/sql/oracle/oracle_ry_workflow.sql +++ b/script/sql/oracle/oracle_ry_workflow.sql @@ -278,6 +278,7 @@ comment on column FLOW_USER.DEL_FLAG is '删除标志'; comment on column FLOW_USER.TENANT_ID is '租户id'; create index USER_PROCESSED_TYPE on FLOW_USER (PROCESSED_BY, TYPE); +create index USER_ASSOCIATED_IDX on FLOW_USER (ASSOCIATED); -- ---------------------------- -- 流程分类表 diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql index 3fbd70f05..df3d41313 100644 --- a/script/sql/postgres/postgres_ry_workflow.sql +++ b/script/sql/postgres/postgres_ry_workflow.sql @@ -262,6 +262,8 @@ CREATE TABLE flow_user CONSTRAINT flow_user_pk PRIMARY KEY (id) ); CREATE INDEX user_processed_type ON flow_user USING btree (processed_by, type); +CREATE INDEX user_associated_idx ON FLOW_USER USING btree (associated); + COMMENT ON TABLE flow_user IS '流程用户表'; COMMENT ON COLUMN flow_user.id IS '主键id'; diff --git a/script/sql/ry_workflow.sql b/script/sql/ry_workflow.sql index 652f4c084..acc297ec5 100644 --- a/script/sql/ry_workflow.sql +++ b/script/sql/ry_workflow.sql @@ -146,7 +146,8 @@ CREATE TABLE `flow_user` `del_flag` char(1) DEFAULT '0' COMMENT '删除标志', `tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id', PRIMARY KEY (`id`) USING BTREE, - KEY `user_processed_type` (`processed_by`, `type`) + KEY `user_processed_type` (`processed_by`, `type`), + KEY `user_associated` (`associated`) USING BTREE ) ENGINE = InnoDB COMMENT ='流程用户表'; -- ---------------------------- diff --git a/script/sql/sqlserver/sqlserver_ry_workflow.sql b/script/sql/sqlserver/sqlserver_ry_workflow.sql index f376e8485..96ea62ad3 100644 --- a/script/sql/sqlserver/sqlserver_ry_workflow.sql +++ b/script/sql/sqlserver/sqlserver_ry_workflow.sql @@ -918,6 +918,8 @@ GO CREATE NONCLUSTERED INDEX user_processed_type ON flow_user (processed_by ASC, type ASC) GO +CREATE NONCLUSTERED INDEX user_associated_idx ON flow_user (associated ASC) +GO EXEC sp_addextendedproperty 'MS_Description', N'主键id', diff --git a/script/sql/update/oracle/update_5.3.0-5.3.1.sql b/script/sql/update/oracle/update_5.3.0-5.3.1.sql index 143c909d3..09000fe2d 100644 --- a/script/sql/update/oracle/update_5.3.0-5.3.1.sql +++ b/script/sql/update/oracle/update_5.3.0-5.3.1.sql @@ -1,6 +1,7 @@ ALTER TABLE flow_node DROP COLUMN skip_any_node; ALTER TABLE flow_node ADD (ext VARCHAR2(500)); COMMENT ON COLUMN flow_node.ext IS '扩展属性'; +create index USER_ASSOCIATED_IDX on FLOW_USER (ASSOCIATED); ALTER TABLE sys_oss ADD (ext1 VARCHAR2(500)); COMMENT ON COLUMN sys_oss.ext1 IS '扩展属性'; diff --git a/script/sql/update/postgres/update_5.3.0-5.3.1.sql b/script/sql/update/postgres/update_5.3.0-5.3.1.sql index 31bf7465e..de5dd5681 100644 --- a/script/sql/update/postgres/update_5.3.0-5.3.1.sql +++ b/script/sql/update/postgres/update_5.3.0-5.3.1.sql @@ -1,6 +1,7 @@ ALTER TABLE flow_node DROP COLUMN skip_any_node; ALTER TABLE flow_node ADD COLUMN ext varchar(500); COMMENT ON COLUMN flow_node.ext IS '扩展属性'; +CREATE INDEX user_associated_idx ON FLOW_USER USING btree (associated); ALTER TABLE sys_oss ADD COLUMN ext1 varchar(500)); COMMENT ON COLUMN sys_oss.ext1 IS '扩展属性'; diff --git a/script/sql/update/sqlserver/update_5.3.0-5.3.1.sql b/script/sql/update/sqlserver/update_5.3.0-5.3.1.sql index 8a22c00bb..50859deec 100644 --- a/script/sql/update/sqlserver/update_5.3.0-5.3.1.sql +++ b/script/sql/update/sqlserver/update_5.3.0-5.3.1.sql @@ -8,6 +8,9 @@ EXEC sp_addextendedproperty 'COLUMN', N'ext' GO +CREATE NONCLUSTERED INDEX user_associated_idx ON flow_user (associated ASC) +GO + ALTER TABLE sys_oss ADD ext1 nvarchar(500) NULL; EXEC sp_addextendedproperty diff --git a/script/sql/update/update_5.3.0-5.3.1.sql b/script/sql/update/update_5.3.0-5.3.1.sql index f1a0efd7b..f45cc4019 100644 --- a/script/sql/update/update_5.3.0-5.3.1.sql +++ b/script/sql/update/update_5.3.0-5.3.1.sql @@ -1,6 +1,7 @@ ALTER TABLE `flow_node` DROP COLUMN `skip_any_node`; ALTER TABLE `flow_node` ADD COLUMN `ext` text NULL COMMENT '扩展属性' AFTER `update_time`; +ALTER TABLE `flow_user` ADD INDEX `user_associated`(`associated`) USING BTREE ALTER TABLE `sys_oss` ADD COLUMN `ext1` text NULL COMMENT '扩展属性' AFTER `url`; From 778096d1002da92788d964b79cc0c2b2221f061b Mon Sep 17 00:00:00 2001 From: guo83551218 <83551218@qq.com> Date: Wed, 19 Mar 2025 05:23:34 +0000 Subject: [PATCH 13/20] =?UTF-8?q?!658=20fix=20=E4=BF=AE=E5=A4=8Dpg?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=20=E5=BC=BA=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E6=8A=A5=E9=94=99=20*=20fix=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dpg=E6=95=B0=E6=8D=AE=E5=BA=93=20=E5=BC=BA=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E8=BD=AC=E6=8D=A2=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/workflow/domain/bo/FlowNextNodeBo.java | 2 +- .../org/dromara/workflow/service/impl/FlwTaskServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowNextNodeBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowNextNodeBo.java index 385eb892b..12f0653ef 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowNextNodeBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowNextNodeBo.java @@ -21,7 +21,7 @@ public class FlowNextNodeBo implements Serializable { /** * 任务id */ - private String taskId; + private Long taskId; /** * 流程变量 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java index 209073bdb..d93ba00ab 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -575,7 +575,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService { */ @Override public List getNextNodeList(FlowNextNodeBo bo) { - String taskId = bo.getTaskId(); + Long taskId = bo.getTaskId(); Map variables = bo.getVariables(); Task task = taskService.getById(taskId); Instance instance = insService.getById(task.getInstanceId()); From 5e5d478cf24811f10870c8deb7880f660dfeda05 Mon Sep 17 00:00:00 2001 From: guo83551218 <83551218@qq.com> Date: Wed, 19 Mar 2025 06:50:24 +0000 Subject: [PATCH 14/20] =?UTF-8?q?!660=20fix=20=E4=BF=AE=E5=A4=8D=20pg?= =?UTF-8?q?=E5=BC=BA=E7=B1=BB=E5=9E=8B=E6=A0=A1=E9=AA=8C=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20*=20fix=20=E4=BF=AE=E5=A4=8D=20pg=E5=BC=BA=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/workflow/service/impl/FlwInstanceServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index b5c943e90..3c0b59541 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -186,7 +186,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { @Override @Transactional(rollbackFor = Exception.class) public boolean deleteByBusinessIds(List businessIds) { - List flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper().in(FlowInstance::getBusinessId, businessIds)); + List flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper().in(FlowInstance::getBusinessId, StreamUtils.toList(businessIds,Convert::toStr))); if (CollUtil.isEmpty(flowInstances)) { log.warn("未找到对应的流程实例信息,无法执行删除操作。"); return false; From 33698ee448fa2e6caccec96953ffc907d2f7e034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Thu, 20 Mar 2025 16:53:15 +0800 Subject: [PATCH 15/20] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2id=20=E5=8F=82=E6=95=B0=E4=B8=BAnull=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/impl/SysTaskAssigneeServiceImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java index 0a5f4b1d4..d4f2c0d4e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.system.service.impl; +import cn.hutool.core.convert.Convert; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.dto.TaskAssigneeDTO; import org.dromara.common.core.domain.model.TaskAssigneeBody; @@ -75,7 +76,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { Map params = bo.getParams(); params.put("beginTime", taskQuery.getBeginTime()); params.put("endTime", taskQuery.getEndTime()); - bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId())); + bo.setBelongDeptId(Convert.toLong(taskQuery.getGroupId())); TableDataInfo page = postService.selectPagePostList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), @@ -98,7 +99,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { Map params = bo.getParams(); params.put("beginTime", taskQuery.getBeginTime()); params.put("endTime", taskQuery.getEndTime()); - bo.setBelongDeptId(Long.valueOf(taskQuery.getGroupId())); + bo.setBelongDeptId(Convert.toLong(taskQuery.getGroupId())); TableDataInfo page = deptService.selectPageDeptList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), @@ -122,7 +123,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { Map params = bo.getParams(); params.put("beginTime", taskQuery.getBeginTime()); params.put("endTime", taskQuery.getEndTime()); - bo.setDeptId(Long.valueOf(taskQuery.getGroupId())); + bo.setDeptId(Convert.toLong(taskQuery.getGroupId())); TableDataInfo page = userService.selectPageUserList(bo, pageQuery); // 使用封装的字段映射方法进行转换 List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRows(), From 5de1ffff9008fa949e175c8bbaf716268e58ef25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 21 Mar 2025 13:53:23 +0800 Subject: [PATCH 16/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20excel?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=20=E4=B8=8B=E6=8B=89=E6=A1=86=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/excel/core/ExcelDownHandler.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java index 32fee7a6c..e8752653f 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java @@ -16,6 +16,7 @@ import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.ss.util.WorkbookUtil; import org.apache.poi.xssf.usermodel.XSSFDataValidation; +import org.dromara.common.core.domain.dto.DictDataDTO; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.DictService; import org.dromara.common.core.utils.SpringUtils; @@ -102,9 +103,9 @@ public class ExcelDownHandler implements SheetWriteHandler { String converterExp = format.readConverterExp(); if (StringUtils.isNotBlank(dictType)) { // 如果传递了字典名,则依据字典建立下拉 - Collection values = Optional.ofNullable(dictService.getAllDictByDictType(dictType)) + Collection values = Optional.ofNullable(dictService.getDictData(dictType)) .orElseThrow(() -> new ServiceException(String.format("字典 %s 不存在", dictType))) - .values(); + .stream().map(DictDataDTO::getDictLabel).toList(); options = new ArrayList<>(values); } else if (StringUtils.isNotBlank(converterExp)) { // 如果指定了确切的值,则直接解析确切的值 From 0f95e9393d7ff3be1d5ea3960dfda5ac3feb59ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 21 Mar 2025 13:55:38 +0800 Subject: [PATCH 17/20] update springboot 3.4.3 => 3.4.4 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 281035978..2c6e4f134 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ 5.3.1-BETA - 3.4.3 + 3.4.4 UTF-8 UTF-8 17 From 5626b97a19cd7c0415d3be560e8661c6e3ce14f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 21 Mar 2025 14:42:58 +0800 Subject: [PATCH 18/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E8=80=81=E7=89=88=E6=9C=AC=E6=95=B0=E6=8D=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E7=94=A8=E6=88=B7=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/PlusDataPermissionHandler.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java index a3547075b..6dee1214a 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java @@ -35,6 +35,7 @@ import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.expression.spel.support.StandardEvaluationContext; import org.springframework.util.ClassUtils; +import java.lang.reflect.Method; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; @@ -229,10 +230,7 @@ public class PlusDataPermissionHandler { // 获取资源对应的类对象 Class clazz = Resources.classForName(classMetadata.getClassName()); // 查找类中的特定注解 - if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) { - DataPermission dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class); - dataPermissionCacheMap.put(clazz.getName(), dataPermission); - } + findAnnotation(clazz); } } } catch (Exception e) { @@ -240,6 +238,29 @@ public class PlusDataPermissionHandler { } } + /** + * 在指定的类中查找特定的注解 DataPermission,并将带有这个注解的方法或类存储到 dataPermissionCacheMap 中 + * + * @param clazz 要查找的类 + */ + private void findAnnotation(Class clazz) { + DataPermission dataPermission; + for (Method method : clazz.getMethods()) { + if (method.isDefault() || method.isVarArgs()) { + continue; + } + String mappedStatementId = clazz.getName() + "." + method.getName(); + if (AnnotationUtil.hasAnnotation(method, DataPermission.class)) { + dataPermission = AnnotationUtil.getAnnotation(method, DataPermission.class); + dataPermissionCacheMap.put(mappedStatementId, dataPermission); + } + } + if (AnnotationUtil.hasAnnotation(clazz, DataPermission.class)) { + dataPermission = AnnotationUtil.getAnnotation(clazz, DataPermission.class); + dataPermissionCacheMap.put(clazz.getName(), dataPermission); + } + } + /** * 根据映射语句 ID 或类名获取对应的 DataPermission 注解对象 * @@ -251,6 +272,10 @@ public class PlusDataPermissionHandler { if (DataPermissionHelper.getPermission() != null) { return DataPermissionHelper.getPermission(); } + // 检查缓存中是否包含映射语句 ID 对应的 DataPermission 注解对象 + if (dataPermissionCacheMap.containsKey(mapperId)) { + return dataPermissionCacheMap.get(mapperId); + } // 如果缓存中不包含映射语句 ID 对应的 DataPermission 注解对象,则尝试使用类名作为键查找 String clazzName = mapperId.substring(0, mapperId.lastIndexOf(".")); if (dataPermissionCacheMap.containsKey(clazzName)) { From c0eeafb5cdeb6026a74542641b1d9b0c2fc14a3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 21 Mar 2025 15:14:54 +0800 Subject: [PATCH 19/20] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20excel?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=20=E4=B8=8B=E6=8B=89=E6=A1=86=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/excel/core/ExcelDownHandler.java | 5 ++--- .../system/service/impl/SysDictTypeServiceImpl.java | 12 +++++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java index e8752653f..32fee7a6c 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelDownHandler.java @@ -16,7 +16,6 @@ import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.ss.util.WorkbookUtil; import org.apache.poi.xssf.usermodel.XSSFDataValidation; -import org.dromara.common.core.domain.dto.DictDataDTO; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.DictService; import org.dromara.common.core.utils.SpringUtils; @@ -103,9 +102,9 @@ public class ExcelDownHandler implements SheetWriteHandler { String converterExp = format.readConverterExp(); if (StringUtils.isNotBlank(dictType)) { // 如果传递了字典名,则依据字典建立下拉 - Collection values = Optional.ofNullable(dictService.getDictData(dictType)) + Collection values = Optional.ofNullable(dictService.getAllDictByDictType(dictType)) .orElseThrow(() -> new ServiceException(String.format("字典 %s 不存在", dictType))) - .stream().map(DictDataDTO::getDictLabel).toList(); + .values(); options = new ArrayList<>(values); } else if (StringUtils.isNotBlank(converterExp)) { // 如果指定了确切的值,则直接解析确切的值 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java index 1e5188c38..c417b42ca 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java @@ -33,10 +33,7 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -265,7 +262,12 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService @Override public Map getAllDictByDictType(String dictType) { List list = SpringUtils.getAopProxy(this).selectDictDataByType(dictType); - return StreamUtils.toMap(list, SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel); + // 保证顺序 + LinkedHashMap map = new LinkedHashMap<>(); + for (SysDictDataVo vo : list) { + map.put(vo.getDictValue(), vo.getDictLabel()); + } + return map; } /** From fe40d7db32a8147c6d0dc2338675a4e779432df2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Fri, 21 Mar 2025 15:17:31 +0800 Subject: [PATCH 20/20] =?UTF-8?q?=E5=8F=91=E5=B8=83=205.3.1-BETA2=20?= =?UTF-8?q?=E5=85=AC=E6=B5=8B=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/ruoyi-monitor-admin.run.xml | 2 +- .run/ruoyi-server.run.xml | 2 +- .run/ruoyi-snailjob-server.run.xml | 2 +- README.md | 2 +- pom.xml | 2 +- ruoyi-common/ruoyi-common-bom/pom.xml | 2 +- script/docker/docker-compose.yml | 8 ++++---- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.run/ruoyi-monitor-admin.run.xml b/.run/ruoyi-monitor-admin.run.xml index 4e0c21057..3b5b97b4d 100644 --- a/.run/ruoyi-monitor-admin.run.xml +++ b/.run/ruoyi-monitor-admin.run.xml @@ -2,7 +2,7 @@ - diff --git a/.run/ruoyi-server.run.xml b/.run/ruoyi-server.run.xml index bf72a8bae..dddc04057 100644 --- a/.run/ruoyi-server.run.xml +++ b/.run/ruoyi-server.run.xml @@ -2,7 +2,7 @@ - diff --git a/.run/ruoyi-snailjob-server.run.xml b/.run/ruoyi-snailjob-server.run.xml index 885007b07..e48c539d2 100644 --- a/.run/ruoyi-snailjob-server.run.xml +++ b/.run/ruoyi-snailjob-server.run.xml @@ -2,7 +2,7 @@ - diff --git a/README.md b/README.md index 08832377e..ca67c874a 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus/blob/master/LICENSE) [![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
-[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-5.3.0--BETA-success.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus) +[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-5.3.0--BETA2-success.svg)](https://gitee.com/dromara/RuoYi-Vue-Plus) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.4-blue.svg)]() [![JDK-17](https://img.shields.io/badge/JDK-17-green.svg)]() [![JDK-21](https://img.shields.io/badge/JDK-21-green.svg)]() diff --git a/pom.xml b/pom.xml index 2c6e4f134..c99cbb252 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ Dromara RuoYi-Vue-Plus多租户管理系统 - 5.3.1-BETA + 5.3.1-BETA2 3.4.4 UTF-8 UTF-8 diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml index e82179891..c8ea1ffa4 100644 --- a/ruoyi-common/ruoyi-common-bom/pom.xml +++ b/ruoyi-common/ruoyi-common-bom/pom.xml @@ -14,7 +14,7 @@ - 5.3.1-BETA + 5.3.1-BETA2 diff --git a/script/docker/docker-compose.yml b/script/docker/docker-compose.yml index 35979cb3a..cd5b567a3 100644 --- a/script/docker/docker-compose.yml +++ b/script/docker/docker-compose.yml @@ -98,7 +98,7 @@ services: network_mode: "host" ruoyi-server1: - image: ruoyi/ruoyi-server:5.3.1-BETA + image: ruoyi/ruoyi-server:5.3.1-BETA2 container_name: ruoyi-server1 environment: # 时区上海 @@ -113,7 +113,7 @@ services: network_mode: "host" ruoyi-server2: - image: ruoyi/ruoyi-server:5.3.1-BETA + image: ruoyi/ruoyi-server:5.3.1-BETA2 container_name: ruoyi-server2 environment: # 时区上海 @@ -128,7 +128,7 @@ services: network_mode: "host" ruoyi-monitor-admin: - image: ruoyi/ruoyi-monitor-admin:5.3.1-BETA + image: ruoyi/ruoyi-monitor-admin:5.3.1-BETA2 container_name: ruoyi-monitor-admin environment: # 时区上海 @@ -140,7 +140,7 @@ services: network_mode: "host" ruoyi-snailjob-server: - image: ruoyi/ruoyi-snailjob-server:5.3.1-BETA + image: ruoyi/ruoyi-snailjob-server:5.3.1-BETA2 container_name: ruoyi-snailjob-server environment: # 时区上海