From 9df0a8de1c2258e4918b35c31d3116b2d0a1babd Mon Sep 17 00:00:00 2001 From: Tyler Ge Date: Wed, 29 Oct 2025 01:26:05 +0000 Subject: [PATCH 01/24] =?UTF-8?q?!780=20fix:=20=E4=BF=AE=E5=A4=8DCompleteT?= =?UTF-8?q?askDTO=E4=B8=ADgetVariables()=E4=B8=ADvariables=20=3D=3D=20null?= =?UTF-8?q?=20=E6=97=B6=E7=9A=84=E8=BF=94=E5=9B=9E=E5=80=BC=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20*=20fix:=20=E4=BF=AE=E5=A4=8DCompleteTaskDTO?= =?UTF-8?q?=E4=B8=ADgetVariables()=E4=B8=ADvariables=20=3D=3D=20null=20?= =?UTF-8?q?=E6=97=B6=E7=9A=84=E8=BF=94=E5=9B=9E=E5=80=BC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/core/domain/dto/CompleteTaskDTO.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/CompleteTaskDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/CompleteTaskDTO.java index e011874a2..21a561e61 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/CompleteTaskDTO.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/CompleteTaskDTO.java @@ -67,7 +67,8 @@ public class CompleteTaskDTO implements Serializable { public Map getVariables() { if (variables == null) { - return new HashMap<>(16); + variables = new HashMap<>(16); + return variables; } variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); return variables; -- Gitee From d2a45156a2e0c8e827f51b882fcfa6658bb90eed 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, 29 Oct 2025 10:13:38 +0800 Subject: [PATCH 02/24] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20warmflow?= =?UTF-8?q?=E7=9A=84=E5=AE=98=E6=96=B9sql=E4=B9=A6=E5=86=99=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/sqlserver/sqlserver_ry_workflow.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/script/sql/sqlserver/sqlserver_ry_workflow.sql b/script/sql/sqlserver/sqlserver_ry_workflow.sql index f187e3879..5405ef1ec 100644 --- a/script/sql/sqlserver/sqlserver_ry_workflow.sql +++ b/script/sql/sqlserver/sqlserver_ry_workflow.sql @@ -1261,7 +1261,7 @@ EXEC sp_addextendedproperty 'COLUMN', N'component_name' GO --- method_name 字段注释 +EXEC sp_addextendedproperty 'MS_Description', N'方法名', 'SCHEMA', N'dbo', 'TABLE', N'flow_spel', -- Gitee From 9bff358afdc6b04180f64dbfdf2e603259bf5f9d Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Sun, 9 Nov 2025 08:44:25 +0800 Subject: [PATCH 03/24] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E4=BA=BA=E6=8F=90=E4=BA=A4=E5=8F=AF=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/listener/WorkflowGlobalListener.java | 3 ++- .../dromara/workflow/service/impl/TestLeaveServiceImpl.java | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index d158e2623..dfea2547f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -144,7 +144,8 @@ public class WorkflowGlobalListener implements GlobalListener { //申请人提交事件 Boolean submit = MapUtil.getBool(variable, FlowConstant.SUBMIT); if (submit != null && submit) { - flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, instance.getFlowStatus(), variable, true); + String status = determineFlowStatus(instance); + flowProcessEventHandler.processHandler(definition.getFlowCode(), instance, status, variable, true); } else { // 判断流程状态(发布:撤销,退回,作废,终止,已完成事件) String status = determineFlowStatus(instance); 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 ae11d18e9..a2dd9cec0 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 @@ -199,7 +199,10 @@ public class TestLeaveServiceImpl implements ITestLeaveService { testLeave.setApplyCode(businessCode); } testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + log.info("申请人提交"); } + String status = BusinessStatusEnum.findByStatus(processEvent.getStatus()); + log.info("当前流程状态为{}", status); baseMapper.updateById(testLeave); } -- Gitee From 37038449ab2a3d1d37a90a2b2530ffa3754f7277 Mon Sep 17 00:00:00 2001 From: Angus <760515805@qq.com> Date: Tue, 11 Nov 2025 01:58:55 +0000 Subject: [PATCH 04/24] =?UTF-8?q?!781=20Excel=E6=A8=A1=E7=89=88=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E6=95=B0=E6=8D=AE=E4=B8=8B=E6=8B=89=20*=20Excel?= =?UTF-8?q?=E6=A8=A1=E7=89=88=E5=8A=A8=E6=80=81=E6=95=B0=E6=8D=AE=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=20*=20Excel=E6=A8=A1=E7=89=88=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8B=E6=8B=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/annotation/ExcelDynamicOptions.java | 20 +++++++++++++++++++ .../common/excel/core/ExcelDownHandler.java | 14 +++++++++++++ .../excel/service/ExcelOptionsProvider.java | 18 +++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java create mode 100644 ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/service/ExcelOptionsProvider.java diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java new file mode 100644 index 000000000..b0160b5b9 --- /dev/null +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java @@ -0,0 +1,20 @@ +package org.dromara.common.excel.annotation; + +import java.lang.annotation.*; + +/** + * Excel动态下拉选项注解 + * + * @author Angus + */ +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface ExcelDynamicOptions { + + /** + * 提供者类全限定名 + * 实现org.dromara.common.excel.service.ExcelOptionsProvider实现类接口 + */ + Class providerClass(); +} 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 139728390..b94c51410 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 @@ -23,7 +23,9 @@ import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.annotation.ExcelDynamicOptions; import org.dromara.common.excel.annotation.ExcelEnumFormat; +import org.dromara.common.excel.service.ExcelOptionsProvider; import java.lang.reflect.Field; import java.util.*; @@ -117,6 +119,18 @@ public class ExcelDownHandler implements SheetWriteHandler { ExcelEnumFormat format = field.getDeclaredAnnotation(ExcelEnumFormat.class); List values = EnumUtil.getFieldValues(format.enumClass(), format.textField()); options = StreamUtils.toList(values, Convert::toStr); + } else if (field.isAnnotationPresent(ExcelDynamicOptions.class)) { + // 处理动态下拉选项 + ExcelDynamicOptions dynamicOptions = field.getDeclaredAnnotation(ExcelDynamicOptions.class); + Class providerClass = dynamicOptions.providerClass(); + if (providerClass == null) { + throw new ServiceException("使用ExcelDynamicOptions注解,必须给providerClass赋予ExcelOptionsProvider的实现类" + + ",字段:{}", field.getName()); + } + // 获取提供者实例 + ExcelOptionsProvider provider = (ExcelOptionsProvider) SpringUtils.getBean(providerClass); + Set optionSets = provider.getOptions(); + options = new ArrayList<>(CollUtil.isNotEmpty(optionSets) ? new ArrayList<>(optionSets) : Collections.emptyList()); } if (ObjectUtil.isNotEmpty(options)) { // 仅当下拉可选项不为空时执行 diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/service/ExcelOptionsProvider.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/service/ExcelOptionsProvider.java new file mode 100644 index 000000000..f51d753ba --- /dev/null +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/service/ExcelOptionsProvider.java @@ -0,0 +1,18 @@ +package org.dromara.common.excel.service; + +import java.util.Set; + +/** + * Excel下拉选项数据提供接口 + * + * @author Angus + */ +public interface ExcelOptionsProvider { + + /** + * 获取下拉选项数据 + * + * @return 下拉选项列表 + */ + Set getOptions(); +} -- Gitee From fa6c9696f0c8ea41161c298fe08a50e862e61be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BF=97=E9=BE=99?= <13002717124@163.com> Date: Tue, 11 Nov 2025 05:34:06 +0000 Subject: [PATCH 05/24] =?UTF-8?q?!785=20FlwSpelController=E7=B1=BB?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E8=A1=A5=E5=85=A8=20*=20FlwSpelController?= =?UTF-8?q?=E7=B1=BB=E6=B3=A8=E9=87=8A=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/workflow/controller/FlwSpelController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java index 212b6592a..251c48e1f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java @@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; /** - * 流程spel达式定义 + * 流程spel表达式定义 * * @author Michelle.Chung * @date 2025-07-04 -- Gitee From 888c14615d32ad6be9752ff890b4636f3f60922e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E8=BE=9E=E6=9C=AA=E5=AF=92?= <545073804@qq.com> Date: Tue, 11 Nov 2025 17:02:53 +0800 Subject: [PATCH 06/24] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20!781Excel?= =?UTF-8?q?=20=E6=A8=A1=E7=89=88=E5=8A=A8=E6=80=81=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=20=E6=B3=9B=E5=9E=8B=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/annotation/ExcelDynamicOptions.java | 7 +++++-- .../common/excel/core/ExcelDownHandler.java | 14 +++++--------- .../{service => core}/ExcelOptionsProvider.java | 3 ++- 3 files changed, 12 insertions(+), 12 deletions(-) rename ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/{service => core}/ExcelOptionsProvider.java (85%) diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java index b0160b5b9..c26bd68ff 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/annotation/ExcelDynamicOptions.java @@ -1,5 +1,7 @@ package org.dromara.common.excel.annotation; +import org.dromara.common.excel.core.ExcelOptionsProvider; + import java.lang.annotation.*; /** @@ -14,7 +16,8 @@ public @interface ExcelDynamicOptions { /** * 提供者类全限定名 - * 实现org.dromara.common.excel.service.ExcelOptionsProvider实现类接口 + *

+ * {@link org.dromara.common.excel.core.ExcelOptionsProvider} 接口实现类 class */ - Class providerClass(); + Class providerClass(); } 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 b94c51410..05c79c410 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 @@ -25,7 +25,6 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDynamicOptions; import org.dromara.common.excel.annotation.ExcelEnumFormat; -import org.dromara.common.excel.service.ExcelOptionsProvider; import java.lang.reflect.Field; import java.util.*; @@ -122,15 +121,12 @@ public class ExcelDownHandler implements SheetWriteHandler { } else if (field.isAnnotationPresent(ExcelDynamicOptions.class)) { // 处理动态下拉选项 ExcelDynamicOptions dynamicOptions = field.getDeclaredAnnotation(ExcelDynamicOptions.class); - Class providerClass = dynamicOptions.providerClass(); - if (providerClass == null) { - throw new ServiceException("使用ExcelDynamicOptions注解,必须给providerClass赋予ExcelOptionsProvider的实现类" + - ",字段:{}", field.getName()); - } // 获取提供者实例 - ExcelOptionsProvider provider = (ExcelOptionsProvider) SpringUtils.getBean(providerClass); - Set optionSets = provider.getOptions(); - options = new ArrayList<>(CollUtil.isNotEmpty(optionSets) ? new ArrayList<>(optionSets) : Collections.emptyList()); + ExcelOptionsProvider provider = SpringUtils.getBean(dynamicOptions.providerClass()); + Set providerOptions = provider.getOptions(); + if (CollUtil.isNotEmpty(providerOptions)) { + options = new ArrayList<>(providerOptions); + } } if (ObjectUtil.isNotEmpty(options)) { // 仅当下拉可选项不为空时执行 diff --git a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/service/ExcelOptionsProvider.java b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelOptionsProvider.java similarity index 85% rename from ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/service/ExcelOptionsProvider.java rename to ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelOptionsProvider.java index f51d753ba..85f939ae7 100644 --- a/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/service/ExcelOptionsProvider.java +++ b/ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/ExcelOptionsProvider.java @@ -1,4 +1,4 @@ -package org.dromara.common.excel.service; +package org.dromara.common.excel.core; import java.util.Set; @@ -15,4 +15,5 @@ public interface ExcelOptionsProvider { * @return 下拉选项列表 */ Set getOptions(); + } -- Gitee From f35938a068b6c21e34e83a3ded28f51750a7758f Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 13 Nov 2025 09:02:33 +0800 Subject: [PATCH 07/24] =?UTF-8?q?update=20=E5=8D=87=E7=BA=A7=20snailjob=20?= =?UTF-8?q?=E5=92=8C=20warm-flow=20=E7=89=88=E6=9C=AC=E8=87=B3=201.8.1=20?= =?UTF-8?q?=E5=92=8C=201.8.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b6baf1b12..f64b5331d 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 3.51.0 2.2.7 4.3.1 - 1.8.0 + 1.8.1 1.5.0 0.2.0 1.18.40 @@ -48,7 +48,7 @@ 8.7.2-20250603 - 1.8.2 + 1.8.3 3.4.2 -- Gitee From d1d47d2599dc52a5ae81f2eaba59f32001d77b2f Mon Sep 17 00:00:00 2001 From: Jack <1426290722@qq.com> Date: Thu, 13 Nov 2025 08:31:04 +0000 Subject: [PATCH 08/24] =?UTF-8?q?!786=20update=20=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E7=9A=84=E9=A2=84=E7=AD=BE=E5=90=8DURL=20*?= =?UTF-8?q?=20update=20=E4=B8=8A=E4=BC=A0=E8=AF=B7=E6=B1=82=E7=9A=84?= =?UTF-8?q?=E9=A2=84=E7=AD=BE=E5=90=8DURL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/oss/core/OssClient.java | 30 ++++++++++++++++--- .../service/impl/SysOssServiceImpl.java | 2 +- 2 files changed, 27 insertions(+), 5 deletions(-) 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 b9a90dc75..2540dbd0e 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 @@ -33,6 +33,7 @@ import java.nio.channels.WritableByteChannel; import java.nio.file.Files; import java.nio.file.Path; import java.time.Duration; +import java.util.Map; import java.util.Optional; import java.util.function.Consumer; @@ -317,13 +318,13 @@ public class OssClient { } /** - * 获取私有URL链接 + * 创建下载请求的预签名URL * * @param objectKey 对象KEY * @param expiredTime 链接授权到期时间 */ - public String getPrivateUrl(String objectKey, Duration expiredTime) { - // 使用 AWS S3 预签名 URL 的生成器 获取对象的预签名 URL + public String createPresignedGetUrl(String objectKey, Duration expiredTime) { + // 使用 AWS S3 预签名 URL 的生成器 获取下载对象的预签名 URL URL url = presigner.presignGetObject( x -> x.signatureDuration(expiredTime) .getObjectRequest( @@ -332,7 +333,28 @@ public class OssClient { .build()) .build()) .url(); - return url.toString(); + return url.toExternalForm(); + } + + /** + * 创建上传请求的预签名URL + * + * @param objectKey 对象KEY + * @param expiredTime 链接授权到期时间 + * @param metadata 元数据 + */ + public String createPresignedPutUrl(String objectKey, Duration expiredTime, Map metadata) { + // 使用 AWS S3 预签名 URL 的生成器 获取上传文件对象的预签名 URL + URL url = presigner.presignPutObject( + x -> x.signatureDuration(expiredTime) + .putObjectRequest( + y -> y.bucket(properties.getBucketName()) + .key(objectKey) + .metadata(metadata) + .build()) + .build()) + .url(); + return url.toExternalForm(); } /** 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 33341a91d..db42d6ae4 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 @@ -270,7 +270,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService { OssClient storage = OssFactory.instance(oss.getService()); // 仅修改桶类型为 private 的URL,临时URL时长为120s if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) { - oss.setUrl(storage.getPrivateUrl(oss.getFileName(), Duration.ofSeconds(120))); + oss.setUrl(storage.createPresignedGetUrl(oss.getFileName(), Duration.ofSeconds(120))); } return oss; } -- Gitee From 5a57e6b835865e1972988eaa29ce8b096adfb1a7 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 Nov 2025 16:34:03 +0800 Subject: [PATCH 09/24] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=9B=B4?= =?UTF-8?q?=E6=AD=A3=E6=B3=A8=E9=87=8A=E6=8F=8F=E8=BF=B0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/FlwSpelController.java | 16 ++++++------- .../org/dromara/workflow/domain/FlowSpel.java | 2 +- .../workflow/domain/bo/FlowSpelBo.java | 2 +- .../workflow/domain/vo/FlowSpelVo.java | 2 +- .../workflow/mapper/FlwSpelMapper.java | 2 +- .../workflow/service/IFlwSpelService.java | 24 +++++++++---------- .../service/impl/FlwSpelServiceImpl.java | 24 +++++++++---------- script/sql/oracle/oracle_ry_workflow.sql | 10 ++++---- script/sql/postgres/postgres_ry_workflow.sql | 10 ++++---- .../sql/sqlserver/sqlserver_ry_workflow.sql | 10 ++++---- .../sql/update/oracle/update_5.4.1-5.5.0.sql | 10 ++++---- .../update/postgres/update_5.4.1-5.5.0.sql | 10 ++++---- .../update/sqlserver/update_5.4.1-5.5.0.sql | 10 ++++---- script/sql/update/update_5.4.1-5.5.0.sql | 10 ++++---- 14 files changed, 71 insertions(+), 71 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java index 251c48e1f..7d3932e7c 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwSpelController.java @@ -38,7 +38,7 @@ public class FlwSpelController extends BaseController { private final IFlwSpelService flwSpelService; /** - * 查询流程spel达式定义列表 + * 查询流程spel表达式定义列表 */ @SaCheckPermission("workflow:spel:list") @GetMapping("/list") @@ -47,7 +47,7 @@ public class FlwSpelController extends BaseController { } /** - * 获取流程spel达式定义详细信息 + * 获取流程spel表达式定义详细信息 * * @param id 主键 */ @@ -58,10 +58,10 @@ public class FlwSpelController extends BaseController { } /** - * 新增流程spel达式定义 + * 新增流程spel表达式定义 */ @SaCheckPermission("workflow:spel:add") - @Log(title = "流程spel达式定义", businessType = BusinessType.INSERT) + @Log(title = "流程spel表达式定义", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping() public R add(@Validated(AddGroup.class) @RequestBody FlowSpelBo bo) { @@ -69,10 +69,10 @@ public class FlwSpelController extends BaseController { } /** - * 修改流程spel达式定义 + * 修改流程spel表达式定义 */ @SaCheckPermission("workflow:spel:edit") - @Log(title = "流程spel达式定义", businessType = BusinessType.UPDATE) + @Log(title = "流程spel表达式定义", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() public R edit(@Validated(EditGroup.class) @RequestBody FlowSpelBo bo) { @@ -80,12 +80,12 @@ public class FlwSpelController extends BaseController { } /** - * 删除流程spel达式定义 + * 删除流程spel表达式定义 * * @param ids 主键串 */ @SaCheckPermission("workflow:spel:remove") - @Log(title = "流程spel达式定义", businessType = BusinessType.DELETE) + @Log(title = "流程spel表达式定义", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] ids) { return toAjax(flwSpelService.deleteWithValidByIds(List.of(ids), true)); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java index be74ccb90..89a7ae9fb 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowSpel.java @@ -10,7 +10,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; import java.io.Serial; /** - * 流程spel达式定义对象 flow_spel + * 流程spel表达式定义对象 flow_spel * * @author Michelle.Chung * @date 2025-07-04 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java index ebad8eafb..da78935c6 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowSpelBo.java @@ -10,7 +10,7 @@ import jakarta.validation.constraints.*; import org.dromara.workflow.domain.FlowSpel; /** - * 流程spel达式定义业务对象 flow_spel + * 流程spel表达式定义业务对象 flow_spel * * @author Michelle.Chung * @date 2025-07-04 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java index 24f1437e8..76ead83d9 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowSpelVo.java @@ -14,7 +14,7 @@ import java.util.Date; /** - * 流程spel达式定义视图对象 flow_spel + * 流程spel表达式定义视图对象 flow_spel * * @author Michelle.Chung * @date 2025-07-04 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java index d3204958f..12dff9f77 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwSpelMapper.java @@ -5,7 +5,7 @@ import org.dromara.workflow.domain.vo.FlowSpelVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** - * 流程spel达式定义Mapper接口 + * 流程spel表达式定义Mapper接口 * * @author Michelle.Chung * @date 2025-07-04 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java index 02781682a..7c4453433 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwSpelService.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Map; /** - * 流程spel达式定义Service接口 + * 流程spel表达式定义Service接口 * * @author Michelle.Chung * @date 2025-07-04 @@ -20,48 +20,48 @@ import java.util.Map; public interface IFlwSpelService { /** - * 查询流程spel达式定义 + * 查询流程spel表达式定义 * * @param id 主键 - * @return 流程spel达式定义 + * @return 流程spel表达式定义 */ FlowSpelVo queryById(Long id); /** - * 分页查询流程spel达式定义列表 + * 分页查询流程spel表达式定义列表 * * @param bo 查询条件 * @param pageQuery 分页参数 - * @return 流程spel达式定义分页列表 + * @return 流程spel表达式定义分页列表 */ TableDataInfo queryPageList(FlowSpelBo bo, PageQuery pageQuery); /** - * 查询符合条件的流程spel达式定义列表 + * 查询符合条件的流程spel表达式定义列表 * * @param bo 查询条件 - * @return 流程spel达式定义列表 + * @return 流程spel表达式定义列表 */ List queryList(FlowSpelBo bo); /** - * 新增流程spel达式定义 + * 新增流程spel表达式定义 * - * @param bo 流程spel达式定义 + * @param bo 流程spel表达式定义 * @return 是否新增成功 */ Boolean insertByBo(FlowSpelBo bo); /** - * 修改流程spel达式定义 + * 修改流程spel表达式定义 * - * @param bo 流程spel达式定义 + * @param bo 流程spel表达式定义 * @return 是否修改成功 */ Boolean updateByBo(FlowSpelBo bo); /** - * 校验并批量删除流程spel达式定义信息 + * 校验并批量删除流程spel表达式定义信息 * * @param ids 待删除的主键集合 * @param isValid 是否进行有效性校验 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java index e06b31448..3790cdfd4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwSpelServiceImpl.java @@ -28,7 +28,7 @@ import java.util.List; import java.util.Map; /** - * 流程spel达式定义Service业务层处理 + * 流程spel表达式定义Service业务层处理 * * @author Michelle.Chung * @date 2025-07-04 @@ -42,10 +42,10 @@ public class FlwSpelServiceImpl implements IFlwSpelService { private final FlwSpelMapper baseMapper; /** - * 查询流程spel达式定义 + * 查询流程spel表达式定义 * * @param id 主键 - * @return 流程spel达式定义 + * @return 流程spel表达式定义 */ @Override public FlowSpelVo queryById(Long id){ @@ -53,11 +53,11 @@ public class FlwSpelServiceImpl implements IFlwSpelService { } /** - * 分页查询流程spel达式定义列表 + * 分页查询流程spel表达式定义列表 * * @param bo 查询条件 * @param pageQuery 分页参数 - * @return 流程spel达式定义分页列表 + * @return 流程spel表达式定义分页列表 */ @Override public TableDataInfo queryPageList(FlowSpelBo bo, PageQuery pageQuery) { @@ -67,10 +67,10 @@ public class FlwSpelServiceImpl implements IFlwSpelService { } /** - * 查询符合条件的流程spel达式定义列表 + * 查询符合条件的流程spel表达式定义列表 * * @param bo 查询条件 - * @return 流程spel达式定义列表 + * @return 流程spel表达式定义列表 */ @Override public List queryList(FlowSpelBo bo) { @@ -92,9 +92,9 @@ public class FlwSpelServiceImpl implements IFlwSpelService { } /** - * 新增流程spel达式定义 + * 新增流程spel表达式定义 * - * @param bo 流程spel达式定义 + * @param bo 流程spel表达式定义 * @return 是否新增成功 */ @Override @@ -109,9 +109,9 @@ public class FlwSpelServiceImpl implements IFlwSpelService { } /** - * 修改流程spel达式定义 + * 修改流程spel表达式定义 * - * @param bo 流程spel达式定义 + * @param bo 流程spel表达式定义 * @return 是否修改成功 */ @Override @@ -129,7 +129,7 @@ public class FlwSpelServiceImpl implements IFlwSpelService { } /** - * 校验并批量删除流程spel达式定义信息 + * 校验并批量删除流程spel表达式定义信息 * * @param ids 待删除的主键集合 * @param isValid 是否进行有效性校验 diff --git a/script/sql/oracle/oracle_ry_workflow.sql b/script/sql/oracle/oracle_ry_workflow.sql index 3130f325c..e7a82f489 100644 --- a/script/sql/oracle/oracle_ry_workflow.sql +++ b/script/sql/oracle/oracle_ry_workflow.sql @@ -493,11 +493,11 @@ INSERT INTO sys_menu VALUES ('11626', '流程分类删除', '11622', '4', '#', ' INSERT INTO sys_menu VALUES ('11627', '流程分类导出', '11622', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, SYSDATE, 1, SYSDATE, '流程达式定义菜单'); -INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11802', '流程spel表达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel表达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel表达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel表达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel表达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11638', '请假申请', '5', '1', 'leave', 'workflow/leave/index', '', '1', '0', 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, SYSDATE, NULL, NULL, '请假申请菜单'); INSERT INTO sys_menu VALUES ('11639', '请假申请查询', '11638', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); diff --git a/script/sql/postgres/postgres_ry_workflow.sql b/script/sql/postgres/postgres_ry_workflow.sql index 370f526eb..4e0db460a 100644 --- a/script/sql/postgres/postgres_ry_workflow.sql +++ b/script/sql/postgres/postgres_ry_workflow.sql @@ -471,11 +471,11 @@ INSERT INTO sys_menu VALUES ('11626', '流程分类删除', '11622', '4', '#', ' INSERT INTO sys_menu VALUES ('11627', '流程分类导出', '11622', '5', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:category:export', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, now(), 1, now(), '流程达式定义菜单'); -INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11802', '流程spel表达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel表达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel表达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel表达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel表达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); INSERT INTO sys_menu VALUES ('11638', '请假申请', '5', '1', 'leave', 'workflow/leave/index', '', '1', '0', 'C', '0', '0', 'workflow:leave:list', '#', 103, 1, now(), NULL, NULL, '请假申请菜单'); INSERT INTO sys_menu VALUES ('11639', '请假申请查询', '11638', '1', '#', '', '', '1', '0', 'F', '0', '0', 'workflow:leave:query', '#', 103, 1, now(), NULL, NULL, ''); diff --git a/script/sql/sqlserver/sqlserver_ry_workflow.sql b/script/sql/sqlserver/sqlserver_ry_workflow.sql index 5405ef1ec..df2e883f3 100644 --- a/script/sql/sqlserver/sqlserver_ry_workflow.sql +++ b/script/sql/sqlserver/sqlserver_ry_workflow.sql @@ -1618,15 +1618,15 @@ GO INSERT sys_menu VALUES (11801, N'流程表达式', N'11616', 2, N'spel', N'workflow/spel/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:spel:list', N'input', 103, 1, GETDATE(), 1, GETDATE(), N'流程达式定义菜单'); GO -INSERT sys_menu VALUES (11802, N'流程spel达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11802, N'流程spel表达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11803, N'流程spel达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11803, N'流程spel表达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11804, N'流程spel达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11804, N'流程spel表达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11805, N'流程spel达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11805, N'流程spel表达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11806, N'流程spel达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11806, N'流程spel表达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -- 请假测试相关按钮 diff --git a/script/sql/update/oracle/update_5.4.1-5.5.0.sql b/script/sql/update/oracle/update_5.4.1-5.5.0.sql index c4fe2a2f7..455501ffe 100644 --- a/script/sql/update/oracle/update_5.4.1-5.5.0.sql +++ b/script/sql/update/oracle/update_5.4.1-5.5.0.sql @@ -38,11 +38,11 @@ INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'i INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, SYSDATE, 1, SYSDATE); INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, SYSDATE, 1, SYSDATE, '流程达式定义菜单'); -INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11802', '流程spel表达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel表达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel表达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel表达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, SYSDATE, NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel表达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, SYSDATE, NULL, NULL, ''); ALTER TABLE flow_definition ADD model_value VARCHAR2(40) DEFAULT 'CLASSICS' NOT NULL; COMMENT ON COLUMN flow_definition.model_value IS '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)'; diff --git a/script/sql/update/postgres/update_5.4.1-5.5.0.sql b/script/sql/update/postgres/update_5.4.1-5.5.0.sql index 46e960509..0bc80b4f6 100644 --- a/script/sql/update/postgres/update_5.4.1-5.5.0.sql +++ b/script/sql/update/postgres/update_5.4.1-5.5.0.sql @@ -37,11 +37,11 @@ INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'i INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, now(), 1, now()); INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', 2, 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, now(), 1, now(), '流程达式定义菜单'); -INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11802', '流程spel表达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel表达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel表达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel表达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, now(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel表达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, now(), NULL, NULL, ''); ALTER TABLE flow_definition ADD COLUMN model_value VARCHAR(40) NOT NULL DEFAULT 'CLASSICS'; COMMENT ON COLUMN flow_definition.model_value IS '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)'; diff --git a/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql b/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql index c2cc1b5b3..ce6b6ddf5 100644 --- a/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql +++ b/script/sql/update/sqlserver/update_5.4.1-5.5.0.sql @@ -123,15 +123,15 @@ GO INSERT sys_menu VALUES (11801, N'流程表达式', N'11616', 2, N'spel', N'workflow/spel/index', N'', 1, 0, N'C', N'0', N'0', N'workflow:spel:list', N'input', 103, 1, GETDATE(), 1, GETDATE(), N'流程达式定义菜单'); GO -INSERT sys_menu VALUES (11802, N'流程spel达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11802, N'流程spel表达式定义查询', N'11801', 1, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:query', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11803, N'流程spel达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11803, N'流程spel表达式定义新增', N'11801', 2, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:add', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11804, N'流程spel达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11804, N'流程spel表达式定义修改', N'11801', 3, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:edit', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11805, N'流程spel达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11805, N'流程spel表达式定义删除', N'11801', 4, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:remove', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO -INSERT sys_menu VALUES (11806, N'流程spel达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); +INSERT sys_menu VALUES (11806, N'流程spel表达式定义导出', N'11801', 5, N'#', N'', NULL, 1, 0, N'F', N'0', N'0', N'workflow:spel:export', N'#', 103, 1, GETDATE(), NULL, NULL, N''); GO ALTER TABLE flow_definition ADD model_value VARCHAR(40) NOT NULL CONSTRAINT DF_flow_definition_model_value DEFAULT 'CLASSICS'; diff --git a/script/sql/update/update_5.4.1-5.5.0.sql b/script/sql/update/update_5.4.1-5.5.0.sql index 980d098a9..a0d29fe6c 100644 --- a/script/sql/update/update_5.4.1-5.5.0.sql +++ b/script/sql/update/update_5.4.1-5.5.0.sql @@ -22,11 +22,11 @@ INSERT INTO flow_spel VALUES (1, 'spelRuleComponent', 'selectDeptLeaderById', 'i INSERT INTO flow_spel VALUES (2, NULL, NULL, 'initiator', '${initiator}', '流程发起人', '0', '0', 103, 1, sysdate(), 1, sysdate()); INSERT INTO sys_menu VALUES ('11801', '流程表达式', '11616', '2', 'spel', 'workflow/spel/index', '', 1, 0, 'C', '0', '0', 'workflow:spel:list', 'input', 103, 1, sysdate(), 1, sysdate(), '流程达式定义菜单'); -INSERT INTO sys_menu VALUES ('11802', '流程spel达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11803', '流程spel达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11804', '流程spel达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11805', '流程spel达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); -INSERT INTO sys_menu VALUES ('11806', '流程spel达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11802', '流程spel表达式定义查询', '11801', 1, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:query', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11803', '流程spel表达式定义新增', '11801', 2, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:add', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11804', '流程spel表达式定义修改', '11801', 3, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:edit', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11805', '流程spel表达式定义删除', '11801', 4, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:remove', '#', 103, 1, sysdate(), NULL, NULL, ''); +INSERT INTO sys_menu VALUES ('11806', '流程spel表达式定义导出', '11801', 5, '#', '', NULL, 1, 0, 'F', '0', '0', 'workflow:spel:export', '#', 103, 1, sysdate(), NULL, NULL, ''); ALTER TABLE `flow_definition` ADD COLUMN `model_value` varchar(40) NOT NULL DEFAULT 'CLASSICS' COMMENT '设计器模式(CLASSICS经典模式 MIMIC仿钉钉模式)' AFTER `flow_name`; -- Gitee From 75618347fab0ffd49330e51749b3a27821828a08 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Fri, 14 Nov 2025 09:38:00 +0800 Subject: [PATCH 10/24] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E4=B8=9A=E5=8A=A1ID=E7=9A=84=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E6=94=AF=E6=8C=81=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E4=B8=9A=E5=8A=A1ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/core/service/WorkflowService.java | 2 +- .../dromara/workflow/controller/FlwInstanceController.java | 4 +++- .../org/dromara/workflow/service/IFlwInstanceService.java | 2 +- .../dromara/workflow/service/impl/FlwInstanceServiceImpl.java | 4 ++-- .../dromara/workflow/service/impl/TestLeaveServiceImpl.java | 3 ++- .../dromara/workflow/service/impl/WorkflowServiceImpl.java | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java index 706d357e7..8efeb76ef 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/WorkflowService.java @@ -20,7 +20,7 @@ public interface WorkflowService { * @param businessIds 业务id * @return 结果 */ - boolean deleteInstance(List businessIds); + boolean deleteInstance(List businessIds); /** * 获取当前流程状态 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java index c798dc5c2..56efbcc74 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java @@ -1,7 +1,9 @@ package org.dromara.workflow.controller; +import cn.hutool.core.convert.Convert; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -76,7 +78,7 @@ public class FlwInstanceController extends BaseController { */ @DeleteMapping("/deleteByBusinessIds/{businessIds}") public R deleteByBusinessIds(@PathVariable List businessIds) { - return toAjax(flwInstanceService.deleteByBusinessIds(businessIds)); + return toAjax(flwInstanceService.deleteByBusinessIds(StreamUtils.toList(businessIds, Convert::toStr))); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java index 54ffe977e..814b89d0f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -75,7 +75,7 @@ public interface IFlwInstanceService { * @param businessIds 业务id * @return 结果 */ - boolean deleteByBusinessIds(List businessIds); + boolean deleteByBusinessIds(List businessIds); /** * 按照实例id删除流程实例 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 be6dfaf1a..ffa4216b3 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 @@ -181,8 +181,8 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { */ @Override @Transactional(rollbackFor = Exception.class) - public boolean deleteByBusinessIds(List businessIds) { - List flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper().in(FlowInstance::getBusinessId, StreamUtils.toList(businessIds, Convert::toStr))); + public boolean deleteByBusinessIds(List businessIds) { + List flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper().in(FlowInstance::getBusinessId, businessIds)); if (CollUtil.isEmpty(flowInstances)) { log.warn("未找到对应的流程实例信息,无法执行删除操作。"); return false; 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 a2dd9cec0..ec0be3ce4 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 @@ -18,6 +18,7 @@ import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.page.PageQuery; @@ -167,7 +168,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { @Override @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(List ids) { - workflowService.deleteInstance(ids); + workflowService.deleteInstance(StreamUtils.toList(ids, Convert::toStr)); return baseMapper.deleteByIds(ids) > 0; } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java index 8f8314060..6e174c2b4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -46,7 +46,7 @@ public class WorkflowServiceImpl implements WorkflowService { * @return 结果 */ @Override - public boolean deleteInstance(List businessIds) { + public boolean deleteInstance(List businessIds) { return flwInstanceService.deleteByBusinessIds(businessIds); } -- Gitee From 181f461984f361732e24eb97a0172f551fd23563 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, 14 Nov 2025 13:21:40 +0800 Subject: [PATCH 11/24] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20pg=E6=9B=B4?= =?UTF-8?q?=E6=96=B0sql=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 --- .../update/postgres/update_5.5.0-5.5.1.sql | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/script/sql/update/postgres/update_5.5.0-5.5.1.sql b/script/sql/update/postgres/update_5.5.0-5.5.1.sql index 8fa28c007..f1449f0f6 100644 --- a/script/sql/update/postgres/update_5.5.0-5.5.1.sql +++ b/script/sql/update/postgres/update_5.5.0-5.5.1.sql @@ -1,25 +1,25 @@ -ALTER TABLE flow_definition ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL; -ALTER TABLE flow_definition ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_definition ADD create_by VARCHAR(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_definition ADD update_by VARCHAR(64) DEFAULT '' NOT NULL; COMMENT ON COLUMN flow_definition.create_by IS '创建人'; COMMENT ON COLUMN flow_definition.update_by IS '更新人'; -ALTER TABLE flow_node ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL; -ALTER TABLE flow_node ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_node ADD create_by VARCHAR(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_node ADD update_by VARCHAR(64) DEFAULT '' NOT NULL; COMMENT ON COLUMN flow_node.create_by IS '创建人'; COMMENT ON COLUMN flow_node.update_by IS '更新人'; -ALTER TABLE flow_skip ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL; -ALTER TABLE flow_skip ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_skip ADD create_by VARCHAR(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_skip ADD update_by VARCHAR(64) DEFAULT '' NOT NULL; COMMENT ON COLUMN flow_skip.create_by IS '创建人'; COMMENT ON COLUMN flow_skip.update_by IS '更新人'; -ALTER TABLE flow_instance ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_instance ADD update_by VARCHAR(64) DEFAULT '' NOT NULL; COMMENT ON COLUMN flow_instance.update_by IS '更新人'; -ALTER TABLE flow_task ADD create_by VARCHAR2(64) DEFAULT '' NOT NULL; -ALTER TABLE flow_task ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_task ADD create_by VARCHAR(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_task ADD update_by VARCHAR(64) DEFAULT '' NOT NULL; COMMENT ON COLUMN flow_task.create_by IS '创建人'; COMMENT ON COLUMN flow_task.update_by IS '更新人'; -ALTER TABLE flow_user ADD update_by VARCHAR2(64) DEFAULT '' NOT NULL; +ALTER TABLE flow_user ADD update_by VARCHAR(64) DEFAULT '' NOT NULL; COMMENT ON COLUMN flow_user.update_by IS '更新人'; -- Gitee From f70a37c05014463013b8a22188a01349aaebc0c5 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 Nov 2025 16:23:51 +0800 Subject: [PATCH 12/24] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=B0=86?= =?UTF-8?q?=E7=89=B9=E6=AE=8A=E6=96=B9=E6=B3=95=E6=94=B9=E4=B8=BA=E7=A7=81?= =?UTF-8?q?=E6=9C=89=E7=A6=81=E6=AD=A2=E4=B8=8D=E6=87=82=E7=9A=84=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=B9=B1=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/mybatis/helper/DataPermissionHelper.java | 4 ++-- .../java/org/dromara/common/tenant/helper/TenantHelper.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java index f03d74e83..8963648c0 100644 --- a/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java +++ b/ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/helper/DataPermissionHelper.java @@ -112,7 +112,7 @@ public class DataPermissionHelper { /** * 开启忽略数据权限(开启后需手动调用 {@link #disableIgnore()} 关闭) */ - public static void enableIgnore() { + private static void enableIgnore() { IgnoreStrategy ignoreStrategy = getIgnoreStrategy(); if (ObjectUtil.isNull(ignoreStrategy)) { InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().dataPermission(true).build()); @@ -126,7 +126,7 @@ public class DataPermissionHelper { /** * 关闭忽略数据权限 */ - public static void disableIgnore() { + private static void disableIgnore() { IgnoreStrategy ignoreStrategy = getIgnoreStrategy(); if (ObjectUtil.isNotNull(ignoreStrategy)) { boolean noOtherIgnoreStrategy = !Boolean.TRUE.equals(ignoreStrategy.getDynamicTableName()) diff --git a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java index 4b6981a10..98f03f3ad 100644 --- a/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java +++ b/ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java @@ -55,7 +55,7 @@ public class TenantHelper { /** * 开启忽略租户(开启后需手动调用 {@link #disableIgnore()} 关闭) */ - public static void enableIgnore() { + private static void enableIgnore() { IgnoreStrategy ignoreStrategy = getIgnoreStrategy(); if (ObjectUtil.isNull(ignoreStrategy)) { InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build()); @@ -69,7 +69,7 @@ public class TenantHelper { /** * 关闭忽略租户 */ - public static void disableIgnore() { + private static void disableIgnore() { IgnoreStrategy ignoreStrategy = getIgnoreStrategy(); if (ObjectUtil.isNotNull(ignoreStrategy)) { boolean noOtherIgnoreStrategy = !Boolean.TRUE.equals(ignoreStrategy.getDynamicTableName()) -- Gitee From fc35a1469f7bc131abb0966a069601f957428ef4 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 Nov 2025 17:41:07 +0800 Subject: [PATCH 13/24] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20pg=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/workflow/domain/bo/FlowInstanceBo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java index fb1fe611b..bb1621f91 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java @@ -50,6 +50,6 @@ public class FlowInstanceBo implements Serializable { /** * 申请人Ids */ - private List createByIds; + private List createByIds; } -- Gitee From 6d4cc28dcd397d3a3f256149c8e0f0ad7bd1d51e Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 20 Nov 2025 16:38:46 +0800 Subject: [PATCH 14/24] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=8F=91=E9=80=81=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86=E5=B9=B6=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=9C=AA=E5=A4=84=E7=90=86=E7=9A=84=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwCommonServiceImpl.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java index 8f8d61eb0..8d4708b8e 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCommonServiceImpl.java @@ -88,23 +88,28 @@ public class FlwCommonServiceImpl implements IFlwCommonService { if (ObjectUtil.isEmpty(messageTypeEnum)) { continue; } - switch (messageTypeEnum) { - case SYSTEM_MESSAGE -> { - SseMessageDto dto = new SseMessageDto(); - dto.setUserIds(userIds); - dto.setMessage(message); - SseMessageUtils.publishMessage(dto); + try { + switch (messageTypeEnum) { + case SYSTEM_MESSAGE -> { + SseMessageDto dto = new SseMessageDto(); + dto.setUserIds(userIds); + dto.setMessage(message); + SseMessageUtils.publishMessage(dto); + } + case EMAIL_MESSAGE -> MailUtils.sendText(emails, subject, message); + case SMS_MESSAGE -> { + // TODO: 补充短信发送逻辑 + log.info("【短信发送 - TODO】用户数量={} 内容={}", userList.size(), message); + } + default -> log.warn("【消息发送】未处理的消息类型:{}", messageTypeEnum); } - case EMAIL_MESSAGE -> MailUtils.sendText(emails, subject, message); - case SMS_MESSAGE -> { - //todo 短信发送 - } - default -> throw new IllegalStateException("Unexpected value: " + messageTypeEnum); + } catch (Exception ex) { + // 记录错误但不抛出,确保主逻辑不受影响 + log.error("【消息发送失败】类型={},原因={}", messageTypeEnum, ex.getMessage(), ex); } } } - /** * 申请人节点编码 * -- Gitee From 8d51adee107d312599628582ae227c9c35c8e958 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 Nov 2025 17:46:24 +0800 Subject: [PATCH 15/24] =?UTF-8?q?reset=20=E5=9B=9E=E6=BB=9A=20snailjob=201?= =?UTF-8?q?.8.1=E7=89=88=E6=9C=AC=E5=88=B01.8.0=E7=89=88=E6=9C=AC=20?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E4=B8=A5=E9=87=8D=E4=BE=9D=E8=B5=96=E5=86=B2?= =?UTF-8?q?=E7=AA=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index f64b5331d..6a445e137 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 3.51.0 2.2.7 4.3.1 - 1.8.1 + 1.8.0 1.5.0 0.2.0 1.18.40 -- Gitee From c9272acce2d361e060537ac312788c5febdaef72 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Fri, 21 Nov 2025 09:47:05 +0800 Subject: [PATCH 16/24] =?UTF-8?q?update=20=E5=A2=9E=E5=8A=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=AE=9A=E4=B9=89=E5=8F=91=E5=B8=83=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E6=B5=81=E7=A8=8B=E5=9C=A8=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E5=89=8D=E5=B7=B2=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/workflow/service/impl/FlwTaskServiceImpl.java | 3 +++ 1 file changed, 3 insertions(+) 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 6703ebdc1..551cb45f5 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 @@ -137,6 +137,9 @@ public class FlwTaskServiceImpl implements IFlwTaskService { // 将流程定义内的扩展参数设置到变量中 Definition definition = FlowEngine.defService().getPublishByFlowCode(startProcessBo.getFlowCode()); + if (ObjectUtil.isNull(definition)) { + throw new ServiceException("流程【" + startProcessBo.getFlowCode() + "】未发布,请先在流程设计器中发布流程定义"); + } Dict dict = JsonUtils.parseMap(definition.getExt()); boolean autoPass = !ObjectUtil.isNull(dict) && dict.getBool(FlowConstant.AUTO_PASS); variables.put(FlowConstant.AUTO_PASS, autoPass); -- Gitee From 0418b6c6ff36ba382c44db982f389a1154a7d2ea Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Mon, 24 Nov 2025 01:18:49 +0000 Subject: [PATCH 17/24] =?UTF-8?q?!788=20update=20=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=9C=8D=E5=8A=A1=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=A4=9A=E7=A7=8D=E9=85=8D=E7=BD=AE=E8=8E=B7=E5=8F=96=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E6=94=AF=E6=8C=81=E4=B8=8D=E5=90=8C=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E7=9A=84=E9=85=8D=E7=BD=AE=E8=A7=A3=E6=9E=90=20*=20up?= =?UTF-8?q?date=20=E5=8F=82=E6=95=B0=E9=85=8D=E7=BD=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E5=A4=9A=E7=A7=8D=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=96=B9=E6=B3=95=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=B1=BB=E5=9E=8B=E7=9A=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/service/ConfigService.java | 82 +++++++++++++++++++ .../service/impl/SysConfigServiceImpl.java | 53 ++++++++++++ 2 files changed, 135 insertions(+) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java index 7328c690d..9ae52c789 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/ConfigService.java @@ -1,5 +1,11 @@ package org.dromara.common.core.service; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; + +import java.math.BigDecimal; +import java.util.List; + /** * 通用 参数配置服务 * @@ -15,4 +21,80 @@ public interface ConfigService { */ String getConfigValue(String configKey); + /** + * 根据参数 key 获取布尔值 + * + * @param configKey 参数 key + * @return Boolean 值 + */ + default Boolean getConfigBool(String configKey) { + return Convert.toBool(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取整数值 + * + * @param configKey 参数 key + * @return Integer 值 + */ + default Integer getConfigInt(String configKey) { + return Convert.toInt(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取长整型值 + * + * @param configKey 参数 key + * @return Long 值 + */ + default Long getConfigLong(String configKey) { + return Convert.toLong(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取 BigDecimal 值 + * + * @param configKey 参数 key + * @return BigDecimal 值 + */ + default BigDecimal getConfigDecimal(String configKey) { + return Convert.toBigDecimal(getConfigValue(configKey)); + } + + /** + * 根据参数 key 获取 Map 类型的配置 + * + * @param configKey 参数 key + * @return Dict 对象,如果配置为空或无法解析,返回空 Dict + */ + Dict getConfigMap(String configKey); + + /** + * 根据参数 key 获取 Map 类型的配置列表 + * + * @param configKey 参数 key + * @return Dict 列表,如果配置为空或无法解析,返回空列表 + */ + List getConfigArrayMap(String configKey); + + /** + * 根据参数 key 获取指定类型的配置对象 + * + * @param configKey 参数 key + * @param clazz 目标对象类型 + * @param 目标对象泛型 + * @return 对象实例,如果配置为空或无法解析,返回 null + */ + T getConfigObject(String configKey, Class clazz); + + /** + * 根据参数 key 获取指定类型的配置列表 + * + * @param configKey 参数 key + * @param clazz 目标元素类型 + * @param 元素类型泛型 + * @return 指定类型列表,如果配置为空或无法解析,返回空列表 + */ + List getConfigArray(String configKey, Class clazz); + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java index d96fa1246..6b0b2a27e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -1,6 +1,7 @@ package org.dromara.system.service.impl; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -14,6 +15,7 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.ObjectUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.redis.utils.CacheUtils; @@ -82,6 +84,7 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { /** * 获取注册开关 + * * @param tenantId 租户id * @return true开启,false关闭 */ @@ -212,4 +215,54 @@ public class SysConfigServiceImpl implements ISysConfigService, ConfigService { return SpringUtils.getAopProxy(this).selectConfigByKey(configKey); } + /** + * 根据参数 key 获取 Map 类型的配置 + * + * @param configKey 参数 key + * @return Dict 对象,如果配置为空或无法解析,返回空 Dict + */ + @Override + public Dict getConfigMap(String configKey) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseMap(configValue); + } + + /** + * 根据参数 key 获取 Map 类型的配置列表 + * + * @param configKey 参数 key + * @return Dict 列表,如果配置为空或无法解析,返回空列表 + */ + @Override + public List getConfigArrayMap(String configKey) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseArrayMap(configValue); + } + + /** + * 根据参数 key 获取指定类型的配置对象 + * + * @param configKey 参数 key + * @param clazz 目标对象类型 + * @return 对象实例,如果配置为空或无法解析,返回 null + */ + @Override + public T getConfigObject(String configKey, Class clazz) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseObject(configValue, clazz); + } + + /** + * 根据参数 key 获取指定类型的配置列表= + * + * @param configKey 参数 key + * @param clazz 目标元素类型 + * @return 指定类型列表,如果配置为空或无法解析,返回空列表 + */ + @Override + public List getConfigArray(String configKey, Class clazz) { + String configValue = getConfigValue(configKey); + return JsonUtils.parseArray(configValue, clazz); + } + } -- Gitee From 041e226059923db3bdfc9759dc375c98fc5b2340 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, 24 Nov 2025 10:05:29 +0800 Subject: [PATCH 18/24] =?UTF-8?q?update=20springboot=203.5.7=20=3D>=203.5.?= =?UTF-8?q?8=20update=20springdoc=202.8.13=20=3D>=202.8.14=20update=20redi?= =?UTF-8?q?sson=203.51.0=20=3D>=203.52.0=20update=20fury=20=E6=9B=B4?= =?UTF-8?q?=E5=90=8D=E4=B8=BA=20fory=200.9.0=20=3D>=200.13.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++--- ruoyi-common/ruoyi-common-redis/pom.xml | 16 ++++++---------- .../dromara/common/redis/config/RedisConfig.java | 5 ++--- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 6a445e137..3ba5b2087 100644 --- a/pom.xml +++ b/pom.xml @@ -14,12 +14,12 @@ 5.5.1 - 3.5.7 + 3.5.8 UTF-8 UTF-8 17 3.5.16 - 2.8.13 + 2.8.14 0.15.0 1.3.0 2.3 @@ -28,7 +28,7 @@ 3.9.1 5.8.40 3.5.5 - 3.51.0 + 3.52.0 2.2.7 4.3.1 1.8.0 diff --git a/ruoyi-common/ruoyi-common-redis/pom.xml b/ruoyi-common/ruoyi-common-redis/pom.xml index d7d99cacc..576be5e14 100644 --- a/ruoyi-common/ruoyi-common-redis/pom.xml +++ b/ruoyi-common/ruoyi-common-redis/pom.xml @@ -43,16 +43,12 @@ jackson-datatype-jsr310 - - - - - - - - - - + + + org.apache.fory + fory-core + 0.13.1 + diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java index 7ba94751a..9c4f7f1a5 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java @@ -53,9 +53,8 @@ public class RedisConfig { om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 指定序列化输入的类型,类必须是非final修饰的。序列化时将对象全类名一起保存下来 om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); -// LoggerFactory.useSlf4jLogging(true); -// FuryCodec furyCodec = new FuryCodec(); -// CompositeCodec codec = new CompositeCodec(StringCodec.INSTANCE, furyCodec, furyCodec); + // ForyCodec foryCodec = new ForyCodec(); + // CompositeCodec codec = new CompositeCodec(StringCodec.INSTANCE, foryCodec, foryCodec); TypedJsonJacksonCodec jsonCodec = new TypedJsonJacksonCodec(Object.class, om); // 组合序列化 key 使用 String 内容使用通用 json 格式 CompositeCodec codec = new CompositeCodec(StringCodec.INSTANCE, jsonCodec, jsonCodec); -- Gitee From 6a2c74537efd974a0b6cdeacbe829caf1ecd3fc2 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, 24 Nov 2025 11:54:52 +0800 Subject: [PATCH 19/24] =?UTF-8?q?update=20=E5=A2=9E=E5=8A=A0=20fory=20?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E6=97=A5=E5=BF=97=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/common/redis/config/RedisConfig.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java index 9c4f7f1a5..4c39196e8 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/config/RedisConfig.java @@ -53,6 +53,8 @@ public class RedisConfig { om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 指定序列化输入的类型,类必须是非final修饰的。序列化时将对象全类名一起保存下来 om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); + // org.apache.fory.logging.LoggerFactory 包别引入错了 + // LoggerFactory.useSlf4jLogging(true); // ForyCodec foryCodec = new ForyCodec(); // CompositeCodec codec = new CompositeCodec(StringCodec.INSTANCE, foryCodec, foryCodec); TypedJsonJacksonCodec jsonCodec = new TypedJsonJacksonCodec(Object.class, om); -- Gitee From e67fc5ebd40c92440e42f354d7fa9b370aa4b78a Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Mon, 24 Nov 2025 06:20:37 +0000 Subject: [PATCH 20/24] =?UTF-8?q?!789=20update=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=84=B1=E6=95=8F=E5=B7=A5=E5=85=B7=E7=B1=BB=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=81=B5=E6=B4=BB=E9=85=8D=E7=BD=AE=E5=8F=AF=E8=A7=81=E9=95=BF?= =?UTF-8?q?=E5=BA=A6=E5=92=8C=E6=8E=A9=E7=A0=81=E9=95=BF=E5=BA=A6=20*=20up?= =?UTF-8?q?date=20=E5=A2=9E=E5=8A=A0=E8=84=B1=E6=95=8F=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=E6=94=AF=E6=8C=81=E7=81=B5=E6=B4=BB=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8F=AF=E8=A7=81=E9=95=BF=E5=BA=A6=E5=92=8C=E6=8E=A9=E7=A0=81?= =?UTF-8?q?=E9=95=BF=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sensitive/core/SensitiveStrategy.java | 8 +++ .../sensitive/utils/DesensitizedUtils.java | 54 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/utils/DesensitizedUtils.java diff --git a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java index 087132ea3..02e8b1b8a 100644 --- a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java +++ b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/core/SensitiveStrategy.java @@ -3,6 +3,7 @@ package org.dromara.common.sensitive.core; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.DesensitizedUtil; import lombok.AllArgsConstructor; +import org.dromara.common.sensitive.utils.DesensitizedUtils; import java.util.function.Function; @@ -80,6 +81,13 @@ public enum SensitiveStrategy { */ FIRST_MASK(DesensitizedUtil::firstMask), + /** + * 通用字符串脱敏 + * 可配置前后可见长度和中间掩码长度 + * 默认示例:前4位可见,后4位可见,中间固定4个* + */ + STRING_MASK(s -> DesensitizedUtils.mask(s, 4, 4, 4)), + /** * 清空为"" */ diff --git a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/utils/DesensitizedUtils.java b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/utils/DesensitizedUtils.java new file mode 100644 index 000000000..8f408b2fe --- /dev/null +++ b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/utils/DesensitizedUtils.java @@ -0,0 +1,54 @@ +package org.dromara.common.sensitive.utils; + +import cn.hutool.core.util.DesensitizedUtil; +import cn.hutool.core.util.StrUtil; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +/** + * 脱敏工具类 + * + * @author AprilWind + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class DesensitizedUtils extends DesensitizedUtil { + + /** + * 灵活脱敏方法 + * + * @param value 原始字符串 + * @param prefixVisible 前面可见长度 + * @param suffixVisible 后面可见长度 + * @param maskLength 中间掩码长度(固定显示多少 *,如果总长度不足则自动缩减) + * @return 脱敏后字符串 + */ + public static String mask(String value, int prefixVisible, int suffixVisible, int maskLength) { + if (StrUtil.isBlank(value)) { + return value; + } + + int len = value.length(); + + // 总长度小于等于前后可见长度 → 全部掩码 + if (len <= prefixVisible + suffixVisible) { + return StrUtil.repeat('*', len); + } + + // 可用长度 = 总长度 - 前后可见长度 + int available = len - prefixVisible - suffixVisible; + + // 中间掩码长度不能超过可用长度 + int actualMaskLength = Math.min(maskLength, available); + + // 剩余字符尽量显示在中间掩码旁 + int remaining = available - actualMaskLength; + String middleChars = remaining > 0 ? value.substring(prefixVisible, prefixVisible + remaining) : ""; + String middleMask = StrUtil.repeat('*', actualMaskLength); + + String prefix = value.substring(0, prefixVisible); + String suffix = value.substring(len - suffixVisible); + + return prefix + middleChars + middleMask + suffix; + } + +} -- Gitee From b1d3d87360490369727cecdf3456c8726746cef0 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Mon, 24 Nov 2025 18:06:09 +0800 Subject: [PATCH 21/24] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E9=80=89=E4=BA=BA=E5=AE=A1=E6=89=B9=E5=90=8E=20=20?= =?UTF-8?q?=E5=86=8D=E6=AC=A1=E9=A9=B3=E5=9B=9E=E5=88=B0=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E9=80=89=E4=BA=BA=E7=8E=AF=E8=8A=82=E5=90=8E=20=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E4=BA=BA=E8=83=BD=E7=9C=8B=E5=88=B0=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/WorkflowGlobalListener.java | 54 ++++++++++++++++--- .../service/impl/FlwTaskServiceImpl.java | 7 ++- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index dfea2547f..706d1c280 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.TypeReference; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.enums.BusinessStatusEnum; @@ -104,20 +105,61 @@ public class WorkflowGlobalListener implements GlobalListener { Definition definition = listenerVariable.getDefinition(); Instance instance = listenerVariable.getInstance(); String applyNodeCode = flwCommonService.applyNodeCode(definition.getId()); + String hisStatus = flowParams != null ? flowParams.getHisStatus() : null; + for (Task flowTask : nextTasks) { - // 如果办理或者退回并行存在需要指定办理人,则直接覆盖办理人 - if (variable.containsKey(flowTask.getNodeCode()) && TaskStatusEnum.isPassOrBack(flowParams.getHisStatus())) { - String userIds = variable.get(flowTask.getNodeCode()).toString(); - flowTask.setPermissionList(List.of(userIds.split(StringUtils.SEPARATOR))); - variable.remove(flowTask.getNodeCode()); + String nodeCode = flowTask.getNodeCode(); + + // 处理办理或退回时指定办理人的情况 + if (TaskStatusEnum.PASS.getStatus().equals(hisStatus)) { + processTaskPermission(variable, flowTask, hisStatus); + } else if (TaskStatusEnum.BACK.getStatus().equals(hisStatus)) { + processTaskPermission(variable, flowTask, hisStatus); } + // 如果是申请节点,则把启动人添加到办理人 - if (flowTask.getNodeCode().equals(applyNodeCode)) { + if (nodeCode.equals(applyNodeCode) && StringUtils.isNotBlank(instance.getCreateBy())) { flowTask.setPermissionList(List.of(instance.getCreateBy())); } } } + /** + * 处理任务权限设置 + * + * @param variable 变量集合 + * @param flowTask 流程任务 + * @param taskStatus 任务状态 + */ + private void processTaskPermission(Map variable, Task flowTask, String taskStatus) { + String nodeKey = taskStatus + StrUtil.COLON + flowTask.getNodeCode(); + + // 检查是否存在状态相关的变量 + if (!variable.containsKey(nodeKey)) { + return; + } + + // 获取用户ID字符串 + Object userIdsObj = variable.get(nodeKey); + if (userIdsObj == null) { + return; + } + + String userIds = userIdsObj.toString(); + if (StringUtils.isBlank(userIds)) { + return; + } + + // 分割用户ID并设置权限列表 + String[] userIdArray = userIds.split(StringUtils.SEPARATOR); + if (userIdArray.length > 0) { + flowTask.setPermissionList(List.of(userIdArray)); + // 移除已处理的状态变量 + variable.remove(nodeKey); + FlowEngine.insService().removeVariables(flowTask.getInstanceId(),nodeKey); + } + } + /** * 完成监听器,当前任务完成后执行 * 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 551cb45f5..a2d4c337a 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 @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; @@ -308,10 +309,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService { List variableUserIds = Arrays.asList(userIds.split(StringUtils.SEPARATOR)); hashSet.addAll(popUserIds); hashSet.addAll(variableUserIds); - map.put(entry.getKey(), StringUtils.joinComma(hashSet)); + map.put(TaskStatusEnum.PASS.getStatus() + StrUtil.COLON + entry.getKey(), StringUtils.joinComma(hashSet)); + map.put(TaskStatusEnum.BACK.getStatus() + StrUtil.COLON + entry.getKey(), StringUtils.joinComma(hashSet)); } } else { - map.put(entry.getKey(), entry.getValue()); + map.put(TaskStatusEnum.PASS.getStatus() + StrUtil.COLON + entry.getKey(), entry.getValue()); + map.put(TaskStatusEnum.BACK.getStatus() + StrUtil.COLON + entry.getKey(), entry.getValue()); } } return map; -- Gitee From dd5f72cc99b5a4592885f62b4bffdfb53794dd74 Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Tue, 25 Nov 2025 11:25:14 +0800 Subject: [PATCH 22/24] =?UTF-8?q?update=20=E8=A1=A5=E5=85=85=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/controller/FlwDefinitionController.java | 1 + .../dromara/workflow/controller/FlwInstanceController.java | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java index 10d9de838..54e412ae0 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java @@ -187,6 +187,7 @@ public class FlwDefinitionController extends BaseController { @RepeatSubmit() @PutMapping("/active/{id}") @Transactional(rollbackFor = Exception.class) + @Log(title = "流程定义", businessType = BusinessType.UPDATE) public R active(@PathVariable Long id, @RequestParam boolean active) { return R.ok(active ? defService.active(id) : defService.unActive(id)); } diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java index 56efbcc74..a8a5fc604 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java @@ -77,6 +77,7 @@ public class FlwInstanceController extends BaseController { * @param businessIds 业务id */ @DeleteMapping("/deleteByBusinessIds/{businessIds}") + @Log(title = "流程实例管理", businessType = BusinessType.DELETE) public R deleteByBusinessIds(@PathVariable List businessIds) { return toAjax(flwInstanceService.deleteByBusinessIds(StreamUtils.toList(businessIds, Convert::toStr))); } @@ -87,6 +88,7 @@ public class FlwInstanceController extends BaseController { * @param instanceIds 实例id */ @DeleteMapping("/deleteByInstanceIds/{instanceIds}") + @Log(title = "流程实例管理", businessType = BusinessType.DELETE) public R deleteByInstanceIds(@PathVariable List instanceIds) { return toAjax(flwInstanceService.deleteByInstanceIds(instanceIds)); } @@ -97,6 +99,7 @@ public class FlwInstanceController extends BaseController { * @param instanceIds 实例id */ @DeleteMapping("/deleteHisByInstanceIds/{instanceIds}") + @Log(title = "流程实例管理", businessType = BusinessType.DELETE) public R deleteHisByInstanceIds(@PathVariable List instanceIds) { return toAjax(flwInstanceService.deleteHisByInstanceIds(instanceIds)); } @@ -108,6 +111,7 @@ public class FlwInstanceController extends BaseController { */ @RepeatSubmit() @PutMapping("/cancelProcessApply") + @Log(title = "流程实例管理", businessType = BusinessType.UPDATE) public R cancelProcessApply(@RequestBody FlowCancelBo bo) { return toAjax(flwInstanceService.cancelProcessApply(bo)); } @@ -120,6 +124,7 @@ public class FlwInstanceController extends BaseController { */ @RepeatSubmit() @PutMapping("/active/{id}") + @Log(title = "流程实例管理", businessType = BusinessType.UPDATE) public R active(@PathVariable Long id, @RequestParam boolean active) { return R.ok(active ? insService.active(id) : insService.unActive(id)); } @@ -162,6 +167,7 @@ public class FlwInstanceController extends BaseController { */ @RepeatSubmit() @PutMapping("/updateVariable") + @Log(title = "流程实例管理", businessType = BusinessType.UPDATE) public R updateVariable(@Validated @RequestBody FlowVariableBo bo) { return toAjax(flwInstanceService.updateVariable(bo)); } -- Gitee From aca2b6d49822587f52ef7ccb77706eaf6954984d Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Tue, 25 Nov 2025 11:26:10 +0800 Subject: [PATCH 23/24] =?UTF-8?q?update=20=E8=A1=A5=E5=85=85=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/workflow/controller/FlwTaskController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java index 4370ff82b..f372fbb0f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -216,6 +216,7 @@ public class FlwTaskController extends BaseController { * @return 结果 */ @PostMapping("/urgeTask") + @Log(title = "任务管理", businessType = BusinessType.INSERT) public R urgeTask(@RequestBody FlowUrgeTaskBo bo) { return toAjax(flwTaskService.urgeTask(bo)); } -- Gitee From 65d677ac900076312b03ef09af05b0b23e93a62b Mon Sep 17 00:00:00 2001 From: gssong <1742057357@qq.com> Date: Tue, 25 Nov 2025 18:52:25 +0800 Subject: [PATCH 24/24] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=E6=8E=92?= =?UTF-8?q?=E4=BB=96=E7=BD=91=E5=85=B3=E6=89=A7=E8=A1=8C=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E9=A9=B3=E5=9B=9E=E9=80=89=E5=88=B0=E6=9C=AA=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E7=BD=91=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwTaskServiceImpl.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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 a2d4c337a..3b056879d 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 @@ -535,8 +535,20 @@ public class FlwTaskServiceImpl implements IFlwTaskService { } //获取可驳回的前置节点 List nodes = nodeService.previousNodeList(task.getDefinitionId(), nowNodeCode); - if (CollUtil.isNotEmpty(nodes)) { - return StreamUtils.filter(nodes, e -> NodeType.BETWEEN.getKey().equals(e.getNodeType())); + List taskList = hisTaskService.getByInsId(task.getInstanceId()); + + Map nodeMap = StreamUtils.toIdentityMap(nodes, Node::getNodeCode); + List backNodeList = new ArrayList<>(); + for (HisTask hisTask : taskList) { + Node nodeValue = nodeMap.get(hisTask.getNodeCode()); + if (nodeValue != null) { + backNodeList.add(nodeValue); + } + } + if (CollUtil.isNotEmpty(backNodeList)) { + List prefixOrSuffixNodes = StreamUtils.filter(backNodeList, e -> NodeType.BETWEEN.getKey().equals(e.getNodeType())); + Collections.reverse(prefixOrSuffixNodes); + return prefixOrSuffixNodes; } return nodes; } -- Gitee