From 3c57c0e7f9c16661fe9761140bf4d42a154a87df 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, 11 Feb 2025 09:51:31 +0800 Subject: [PATCH 01/21] =?UTF-8?q?update=20springboot-admin=203.4.1=20=3D>?= =?UTF-8?q?=203.4.2=20=E4=BF=AE=E5=A4=8D=E9=87=8D=E6=96=B0=E7=99=BB?= =?UTF-8?q?=E5=BD=95404=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 1d4366f2d..2856eefc2 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ 3.5.10 3.9.1 5.8.35 - 3.4.1 + 3.4.2 3.44.0 2.2.7 4.3.1 From 78abb617cecc0f07795e83691aa149f89d8c81f2 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, 11 Feb 2025 16:03:14 +0800 Subject: [PATCH 02/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20nginx?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9=20=E5=A2=9E=E5=8A=A0=E9=9D=99=E6=80=81=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BC=A0=E8=BE=93=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/docker/nginx/conf/nginx.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/script/docker/nginx/conf/nginx.conf b/script/docker/nginx/conf/nginx.conf index 3c79d97f6..22b074f1d 100644 --- a/script/docker/nginx/conf/nginx.conf +++ b/script/docker/nginx/conf/nginx.conf @@ -14,6 +14,8 @@ http { keepalive_timeout 65; # 限制body大小 client_max_body_size 100m; + # 开启静态资源压缩 + gzip_static on; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' From 2746af21f0f4228d6cd30b2f27fc742c40c2f583 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: Thu, 13 Feb 2025 17:39:30 +0800 Subject: [PATCH 03/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E6=A0=B9?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=A5=96=E7=BA=A7=E5=88=97=E8=A1=A8=E5=B8=B8?= =?UTF-8?q?=E9=87=8F=E5=92=8C=E5=A4=87=E6=B3=A8=EF=BC=8C=E4=BB=A5=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E6=AD=A7=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/core/constant/SystemConstants.java | 5 +++++ .../org/dromara/system/service/impl/SysDeptServiceImpl.java | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/SystemConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/SystemConstants.java index 55240bbf8..8a37a51fc 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/SystemConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/SystemConstants.java @@ -72,4 +72,9 @@ public interface SystemConstants { */ Long SUPER_ADMIN_ID = 1L; + /** + * 根部门祖级列表 + */ + String ROOT_DEPT_ANCESTORS = "0"; + } 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 ca062bee6..ecd309f4e 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 @@ -323,8 +323,10 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { dept.setAncestors(oldDept.getAncestors()); } int result = baseMapper.updateById(dept); - if (SystemConstants.NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) - && !StringUtils.equals(SystemConstants.NORMAL, dept.getAncestors())) { + // 如果部门状态为启用,且部门祖级列表不为空,且部门祖级列表不等于根部门祖级列表(如果部门祖级列表不等于根部门祖级列表,则说明存在上级部门) + if (SystemConstants.NORMAL.equals(dept.getStatus()) + && StringUtils.isNotEmpty(dept.getAncestors()) + && !StringUtils.equals(SystemConstants.ROOT_DEPT_ANCESTORS, dept.getAncestors())) { // 如果该部门是启用状态,则启用该部门的所有上级部门 updateParentDeptStatusNormal(dept); } From eb17eb655919aa8f24b3f6e8d2e0992921f64e26 Mon Sep 17 00:00:00 2001 From: QianRj <14974713+qianrj@user.noreply.gitee.com> Date: Sat, 15 Feb 2025 04:58:37 +0000 Subject: [PATCH 04/21] =?UTF-8?q?!646=20fix=20=E4=BF=AE=E5=A4=8DCaffeine?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E6=9C=AA=E6=B8=85=E7=A9=BA=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E9=83=A8=E9=97=A8=E5=88=9B=E5=BB=BA=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=BB=B6=E8=BF=9F=E9=97=AE=E9=A2=98=20*=20fix=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8DCaffeine=E7=BC=93=E5=AD=98=E6=9C=AA=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E9=83=A8=E9=97=A8=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BB=B6=E8=BF=9F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/common/redis/manager/CaffeineCacheDecorator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/manager/CaffeineCacheDecorator.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/manager/CaffeineCacheDecorator.java index 6e83df13a..8662c537d 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/manager/CaffeineCacheDecorator.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/manager/CaffeineCacheDecorator.java @@ -78,6 +78,7 @@ public class CaffeineCacheDecorator implements Cache { @Override public void clear() { + CAFFEINE.invalidateAll(); cache.clear(); } From 236dd6e054658ddb21bc0bd3e6cc979713786218 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 Feb 2025 15:22:42 +0800 Subject: [PATCH 05/21] =?UTF-8?q?update=20=E5=88=A0=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-modules/ruoyi-workflow/README.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 ruoyi-modules/ruoyi-workflow/README.md diff --git a/ruoyi-modules/ruoyi-workflow/README.md b/ruoyi-modules/ruoyi-workflow/README.md deleted file mode 100644 index 59096b10e..000000000 --- a/ruoyi-modules/ruoyi-workflow/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# 工作流说明 - -工作流目前在未成熟阶段 后续仍会经历重构 甚至重写(生产使用前请慎重考虑后续是否要更新维护) \ No newline at end of file From 906a031172691f928cb3cef638a061fb41d845d8 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 19 Feb 2025 09:07:46 +0800 Subject: [PATCH 06/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E4=B8=8B=E5=B2=97=E4=BD=8D=E5=90=8D=E7=A7=B0=E9=87=8D?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/system/service/impl/SysPostServiceImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java index 5888985a7..894f6acc8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -154,6 +154,7 @@ public class SysPostServiceImpl implements ISysPostService, PostService { public boolean checkPostNameUnique(SysPostBo post) { boolean exist = baseMapper.exists(new LambdaQueryWrapper() .eq(SysPost::getPostName, post.getPostName()) + .eq(SysPost::getDeptId, post.getDeptId()) .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId())); return !exist; } From 214cbac9a6864b72406a8e70aac42113e1f4f9e0 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 Feb 2025 09:43:10 +0800 Subject: [PATCH 07/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20ProcessTask?= =?UTF-8?q?Event=20=E6=94=B9=E5=90=8D=E4=B8=BA=20ProcessCreateTaskEvent=20?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E9=94=99=E8=AF=AF=E7=90=86=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Event.java => ProcessCreateTaskEvent.java} | 4 ++-- .../handler/FlowProcessEventHandler.java | 22 +++++++++---------- .../listener/WorkflowGlobalListener.java | 2 +- .../service/impl/TestLeaveServiceImpl.java | 20 ++++++++--------- 4 files changed, 24 insertions(+), 24 deletions(-) rename ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/{ProcessTaskEvent.java => ProcessCreateTaskEvent.java} (85%) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java similarity index 85% rename from ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java rename to ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java index 33bc6e5a6..05047ab84 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessTaskEvent.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/event/ProcessCreateTaskEvent.java @@ -6,12 +6,12 @@ import java.io.Serial; import java.io.Serializable; /** - * 流程办理监听 + * 流程创建任务监听 * * @author may */ @Data -public class ProcessTaskEvent implements Serializable { +public class ProcessCreateTaskEvent implements Serializable { @Serial private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java index 4b215ef60..3efc52da8 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -1,9 +1,9 @@ package org.dromara.workflow.handler; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessCreateTaskEvent; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; -import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.workflow.common.ConditionalOnEnable; @@ -23,7 +23,7 @@ import java.util.Map; public class FlowProcessEventHandler { /** - * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等) + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * * @param flowCode 流程定义编码 * @param businessId 业务id @@ -44,23 +44,23 @@ public class FlowProcessEventHandler { } /** - * 执行办理任务监听 + * 执行创建任务监听 * * @param flowCode 流程定义编码 * @param nodeCode 审批节点编码 * @param taskId 任务id * @param businessId 业务id */ - public void processTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) { + public void processCreateTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) { String tenantId = TenantHelper.getTenantId(); log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 节点编码: {}, 任务ID: {}, 业务ID: {}", tenantId, flowCode, nodeCode, taskId, businessId); - ProcessTaskEvent processTaskEvent = new ProcessTaskEvent(); - processTaskEvent.setTenantId(tenantId); - processTaskEvent.setFlowCode(flowCode); - processTaskEvent.setNodeCode(nodeCode); - processTaskEvent.setTaskId(taskId); - processTaskEvent.setBusinessId(businessId); - SpringUtils.context().publishEvent(processTaskEvent); + ProcessCreateTaskEvent processCreateTaskEvent = new ProcessCreateTaskEvent(); + processCreateTaskEvent.setTenantId(tenantId); + processCreateTaskEvent.setFlowCode(flowCode); + processCreateTaskEvent.setNodeCode(nodeCode); + processCreateTaskEvent.setTaskId(taskId); + processCreateTaskEvent.setBusinessId(businessId); + SpringUtils.context().publishEvent(processCreateTaskEvent); } /** diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java index b18785484..272f9de92 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -52,7 +52,7 @@ public class WorkflowGlobalListener implements GlobalListener { Task task = listenerVariable.getTask(); if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(flowStatus)) { // 判断流程状态(发布审批中事件) - flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId); + flowProcessEventHandler.processCreateTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId); } } 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 2c431737b..537361c3e 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 @@ -9,9 +9,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessCreateTaskEvent; import org.dromara.common.core.domain.event.ProcessDeleteEvent; import org.dromara.common.core.domain.event.ProcessEvent; -import org.dromara.common.core.domain.event.ProcessTaskEvent; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.MapstructUtils; @@ -123,7 +123,7 @@ public class TestLeaveServiceImpl implements ITestLeaveService { } /** - * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等) + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) * 正常使用只需#processEvent.flowCode=='leave1' * 示例为了方便则使用startsWith匹配了全部示例key * @@ -151,19 +151,19 @@ public class TestLeaveServiceImpl implements ITestLeaveService { } /** - * 执行办理任务监听 - * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 执行任务创建监听 + * 示例:也可通过 @EventListener(condition = "#processCreateTaskEvent.flowCode=='leave1'")进行判断 * 在方法中判断流程节点key - * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * if ("xxx".equals(processCreateTaskEvent.getNodeCode())) { * //执行业务逻辑 * } * - * @param processTaskEvent 参数 + * @param processCreateTaskEvent 参数 */ - @EventListener(condition = "#processTaskEvent.flowCode.startsWith('leave')") - public void processTaskHandler(ProcessTaskEvent processTaskEvent) { - log.info("当前任务执行了{}", processTaskEvent.toString()); - TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessId())); + @EventListener(condition = "#processCreateTaskEvent.flowCode.startsWith('leave')") + public void processCreateTaskHandler(ProcessCreateTaskEvent processCreateTaskEvent) { + log.info("当前任务创建了{}", processCreateTaskEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processCreateTaskEvent.getBusinessId())); testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); baseMapper.updateById(testLeave); } From 381be5a1a1a6fe4c3d28f4bad323aaef307c9e48 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 Feb 2025 13:27:46 +0800 Subject: [PATCH 08/21] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20oracle=20?= =?UTF-8?q?=E8=A1=A8=E5=88=AB=E5=90=8D=E4=B8=8D=E8=83=BD=E5=86=99as?= =?UTF-8?q?=E5=85=B3=E9=94=AE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/workflow/FlwTaskMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml index 73e4ec789..f539030b4 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml +++ b/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml @@ -31,7 +31,7 @@ d.version, uu.processed_by, uu.type - from flow_task as t + from flow_task t left join flow_user uu on uu.associated = t.id left join flow_definition d on t.definition_id = d.id left join flow_instance i on t.instance_id = i.id From d80f6ab69561201bd93e9aa67949f38b77c6f312 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 Feb 2025 17:46:04 +0800 Subject: [PATCH 09/21] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20oracle=20?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E7=A7=9F=E6=88=B7=E6=8A=A5=E9=94=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/impl/SysTenantServiceImpl.java | 15 +++++++++++++++ .../service/impl/FlwDefinitionServiceImpl.java | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java index f31bd3027..b2f4872be 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -179,10 +179,20 @@ public class SysTenantServiceImpl implements ISysTenantService { for (SysDictType dictType : dictTypeList) { dictType.setDictId(null); dictType.setTenantId(tenantId); + dictType.setCreateDept(null); + dictType.setCreateBy(null); + dictType.setCreateTime(null); + dictType.setUpdateBy(null); + dictType.setUpdateTime(null); } for (SysDictData dictData : dictDataList) { dictData.setDictCode(null); dictData.setTenantId(tenantId); + dictData.setCreateDept(null); + dictData.setCreateBy(null); + dictData.setCreateTime(null); + dictData.setUpdateBy(null); + dictData.setUpdateTime(null); } dictTypeMapper.insertBatch(dictTypeList); dictDataMapper.insertBatch(dictDataList); @@ -192,6 +202,11 @@ public class SysTenantServiceImpl implements ISysTenantService { for (SysConfig config : sysConfigList) { config.setConfigId(null); config.setTenantId(tenantId); + config.setCreateDept(null); + config.setCreateBy(null); + config.setCreateTime(null); + config.setUpdateBy(null); + config.setUpdateTime(null); } configMapper.insertBatch(sysConfigList); diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java index 591339b3e..b4ebcdf08 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -219,6 +219,11 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService { .eq(FlowCategory::getTenantId, DEFAULT_TENANT_ID).eq(FlowCategory::getCategoryId, FlowConstant.FLOW_CATEGORY_ID)); flowCategory.setCategoryId(null); flowCategory.setTenantId(tenantId); + flowCategory.setCreateDept(null); + flowCategory.setCreateBy(null); + flowCategory.setCreateTime(null); + flowCategory.setUpdateBy(null); + flowCategory.setUpdateTime(null); flwCategoryMapper.insert(flowCategory); List defIds = StreamUtils.toList(flowDefinitions, FlowDefinition::getId); List flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper().in(FlowNode::getDefinitionId, defIds)); From e8700ac44ba40961e55fda81a180db569f450ca6 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 Feb 2025 09:37:24 +0800 Subject: [PATCH 10/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=A4=9A=E4=BD=99=E5=93=8D=E5=BA=94=E5=A4=B4=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/encrypt/filter/EncryptResponseBodyWrapper.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java index c0af232ee..7bbca49d0 100644 --- a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java +++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/EncryptResponseBodyWrapper.java @@ -76,10 +76,7 @@ public class EncryptResponseBodyWrapper extends HttpServletResponseWrapper { String encryptPassword = EncryptUtils.encryptByRsa(encryptAes, publicKey); // 设置响应头 - servletResponse.addHeader("Access-Control-Expose-Headers", headerFlag); servletResponse.setHeader(headerFlag, encryptPassword); - servletResponse.setHeader("Access-Control-Allow-Origin", "*"); - servletResponse.setHeader("Access-Control-Allow-Methods", "*"); servletResponse.setCharacterEncoding(StandardCharsets.UTF_8.toString()); // 获取原始内容 From bdb86e2b3add8f23807fabe66138637d4785932d 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 Feb 2025 10:10:09 +0800 Subject: [PATCH 11/21] update springboot 3.4.2 => 3.4.3 update springdoc 2.8.4 => 2.8.5 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 2856eefc2..cc86e9b83 100644 --- a/pom.xml +++ b/pom.xml @@ -14,12 +14,12 @@ 5.3.0 - 3.4.2 + 3.4.3 UTF-8 UTF-8 17 3.5.16 - 2.8.4 + 2.8.5 0.15.0 4.0.3 2.3 From a217c495d1ea6abc4c3594f53a988f004429ce58 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 Feb 2025 15:40:31 +0800 Subject: [PATCH 12/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E7=A7=9F?= =?UTF-8?q?=E6=88=B7=E8=A1=A8=E4=BC=81=E4=B8=9A=E5=90=8D=E4=B8=8E=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E8=A1=A8=E9=95=BF=E5=BA=A6=E4=BF=9D=E6=8C=81=E4=B8=80?= =?UTF-8?q?=E8=87=B4=20=E9=98=B2=E6=AD=A2=E9=95=BF=E5=BA=A6=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script/sql/oracle/oracle_ry_vue_5.X.sql | 2 +- script/sql/postgres/postgres_ry_vue_5.X.sql | 2 +- script/sql/ry_vue_5.X.sql | 2 +- script/sql/sqlserver/sqlserver_ry_vue_5.X.sql | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/script/sql/oracle/oracle_ry_vue_5.X.sql b/script/sql/oracle/oracle_ry_vue_5.X.sql index 94024c999..8390bceef 100644 --- a/script/sql/oracle/oracle_ry_vue_5.X.sql +++ b/script/sql/oracle/oracle_ry_vue_5.X.sql @@ -75,7 +75,7 @@ create table sys_tenant ( tenant_id varchar2(20) not null, contact_user_name varchar2(20) default '', contact_phone varchar2(20) default '', - company_name varchar2(50) default '', + company_name varchar2(30) default '', license_number varchar2(30) default '', address varchar2(200) default '', intro varchar2(200) default '', diff --git a/script/sql/postgres/postgres_ry_vue_5.X.sql b/script/sql/postgres/postgres_ry_vue_5.X.sql index d18cfebd4..463896625 100644 --- a/script/sql/postgres/postgres_ry_vue_5.X.sql +++ b/script/sql/postgres/postgres_ry_vue_5.X.sql @@ -75,7 +75,7 @@ create table if not exists sys_tenant tenant_id varchar(20) not null, contact_user_name varchar(20) default null::varchar, contact_phone varchar(20) default null::varchar, - company_name varchar(50) default null::varchar, + company_name varchar(30) default null::varchar, license_number varchar(30) default null::varchar, address varchar(200) default null::varchar, intro varchar(200) default null::varchar, diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql index 48e5f35b5..95cb04cea 100644 --- a/script/sql/ry_vue_5.X.sql +++ b/script/sql/ry_vue_5.X.sql @@ -45,7 +45,7 @@ create table sys_tenant tenant_id varchar(20) not null comment '租户编号', contact_user_name varchar(20) comment '联系人', contact_phone varchar(20) comment '联系电话', - company_name varchar(50) comment '企业名称', + company_name varchar(30) comment '企业名称', license_number varchar(30) comment '统一社会信用代码', address varchar(200) comment '地址', intro varchar(200) comment '企业简介', diff --git a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql index 9f8481a22..6fdba1e0d 100644 --- a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql +++ b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql @@ -222,7 +222,7 @@ CREATE TABLE sys_tenant tenant_id nvarchar(20) NOT NULL, contact_user_name nvarchar(20) NULL, contact_phone nvarchar(20) NULL, - company_name nvarchar(50) NULL, + company_name nvarchar(30) NULL, license_number nvarchar(30) NULL, address nvarchar(200) NULL, intro nvarchar(200) NULL, From bb475a6088fa83d9e62efdd1b40f44fe697f30f4 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 Feb 2025 20:31:58 +0800 Subject: [PATCH 13/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E9=85=8D=E7=BD=AE=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/IndexController.java | 12 ++---- .../src/main/resources/application-dev.yml | 4 +- .../src/main/resources/application-prod.yml | 4 +- .../src/main/resources/application.yml | 37 +++++++------------ .../java/org/dromara/test/DemoUnitTest.java | 10 ++--- .../common/core/config/RuoYiConfig.java | 33 ----------------- ...ot.autoconfigure.AutoConfiguration.imports | 1 - 7 files changed, 27 insertions(+), 74 deletions(-) delete mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/RuoYiConfig.java diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/IndexController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/IndexController.java index c444f28c9..cdcfed62a 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/IndexController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/IndexController.java @@ -1,9 +1,9 @@ package org.dromara.web.controller; import cn.dev33.satoken.annotation.SaIgnore; -import org.dromara.common.core.config.RuoYiConfig; -import org.dromara.common.core.utils.StringUtils; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,16 +17,12 @@ import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { - /** - * 系统基础配置 - */ - private final RuoYiConfig ruoyiConfig; - /** * 访问首页,提示语 */ @GetMapping("/") public String index() { - return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", ruoyiConfig.getName(), ruoyiConfig.getVersion()); + return StringUtils.format("欢迎使用{}后台管理框架,请通过前端地址访问。", SpringUtils.getApplicationName()); } + } diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 5465921cb..d2c45eae1 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -120,8 +120,8 @@ redisson: nettyThreads: 8 # 单节点配置 singleServerConfig: - # 客户端名称 - clientName: ${ruoyi.name} + # 客户端名称 不能用中文 + clientName: RuoYi-Vue-Plus # 最小空闲连接数 connectionMinimumIdleSize: 8 # 连接池大小 diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 80c1f969c..1c7eae428 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -123,8 +123,8 @@ redisson: nettyThreads: 32 # 单节点配置 singleServerConfig: - # 客户端名称 - clientName: ${ruoyi.name} + # 客户端名称 不能用中文 + clientName: RuoYi-Vue-Plus # 最小空闲连接数 connectionMinimumIdleSize: 32 # 连接池大小 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index dbe16888d..2a134a977 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -1,24 +1,3 @@ -# 项目相关配置 -ruoyi: - # 名称 - name: RuoYi-Vue-Plus - # 版本 - version: ${revision} - # 版权年份 - copyrightYear: 2024 - -captcha: - enable: true - # 页面 <参数设置> 可开启关闭 验证码校验 - # 验证码类型 math 数组计算 char 字符验证 - type: MATH - # line 线段干扰 circle 圆圈干扰 shear 扭曲干扰 - category: CIRCLE - # 数字验证码位数 - numberLength: 1 - # 字符验证码长度 - charLength: 4 - # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 @@ -41,6 +20,18 @@ server: # 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载 worker: 256 +captcha: + enable: true + # 页面 <参数设置> 可开启关闭 验证码校验 + # 验证码类型 math 数组计算 char 字符验证 + type: MATH + # line 线段干扰 circle 圆圈干扰 shear 扭曲干扰 + category: CIRCLE + # 数字验证码位数 + numberLength: 1 + # 字符验证码长度 + charLength: 4 + # 日志配置 logging: level: @@ -61,7 +52,7 @@ user: # Spring配置 spring: application: - name: ${ruoyi.name} + name: RuoYi-Vue-Plus threads: # 开启虚拟线程 仅jdk21可用 virtual: @@ -191,7 +182,7 @@ springdoc: # persistAuthorization: true info: # 标题 - title: '标题:${ruoyi.name}多租户管理系统_接口文档' + title: '标题:RuoYi-Vue-Plus多租户管理系统_接口文档' # 描述 description: '描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...' # 版本 diff --git a/ruoyi-admin/src/test/java/org/dromara/test/DemoUnitTest.java b/ruoyi-admin/src/test/java/org/dromara/test/DemoUnitTest.java index 5b3dfdc91..2d11a10f0 100644 --- a/ruoyi-admin/src/test/java/org/dromara/test/DemoUnitTest.java +++ b/ruoyi-admin/src/test/java/org/dromara/test/DemoUnitTest.java @@ -1,6 +1,6 @@ package org.dromara.test; -import org.dromara.common.core.config.RuoYiConfig; +import org.dromara.common.web.config.properties.CaptchaProperties; import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -17,19 +17,19 @@ import java.util.concurrent.TimeUnit; public class DemoUnitTest { @Autowired - private RuoYiConfig ruoYiConfig; + private CaptchaProperties captchaProperties; @DisplayName("测试 @SpringBootTest @Test @DisplayName 注解") @Test public void testTest() { - System.out.println(ruoYiConfig); + System.out.println(captchaProperties); } @Disabled @DisplayName("测试 @Disabled 注解") @Test public void testDisabled() { - System.out.println(ruoYiConfig); + System.out.println(captchaProperties); } @Timeout(value = 2L, unit = TimeUnit.SECONDS) @@ -37,7 +37,7 @@ public class DemoUnitTest { @Test public void testTimeout() throws InterruptedException { Thread.sleep(3000); - System.out.println(ruoYiConfig); + System.out.println(captchaProperties); } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/RuoYiConfig.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/RuoYiConfig.java deleted file mode 100644 index cc0d2dfce..000000000 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/config/RuoYiConfig.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.dromara.common.core.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * 读取项目相关配置 - * - * @author Lion Li - */ - -@Data -@Component -@ConfigurationProperties(prefix = "ruoyi") -public class RuoYiConfig { - - /** - * 项目名称 - */ - private String name; - - /** - * 版本 - */ - private String version; - - /** - * 版权年份 - */ - private String copyrightYear; - -} diff --git a/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 3395e73bd..43c7fcfe0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-common/ruoyi-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,6 +1,5 @@ org.dromara.common.core.config.ApplicationConfig org.dromara.common.core.config.AsyncConfig -org.dromara.common.core.config.RuoYiConfig org.dromara.common.core.config.ThreadPoolConfig org.dromara.common.core.config.ValidatorConfig org.dromara.common.core.utils.SpringUtils From 7b679e60e07490eb87e41f3e8a7a14c472111950 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Tue, 25 Feb 2025 17:55:54 +0800 Subject: [PATCH 14/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E8=AE=BE=E8=AE=A1=E5=99=A8=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E4=BA=BA=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=AD=A3=E5=B8=B8=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/impl/SysTaskAssigneeServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) 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 23dd0520c..2fbf2408b 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 @@ -53,6 +53,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { 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()), @@ -75,6 +76,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { 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()), @@ -106,6 +108,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { 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()), @@ -143,6 +146,7 @@ public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { 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, From b537899e62f35de3a35fec86f878ac477a4e40b6 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Tue, 25 Feb 2025 22:18:58 +0800 Subject: [PATCH 15/21] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0warm-flow?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B01.6.7-M1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../src/main/resources/application.yml | 8 ++ .../common/core/domain/dto/DeptDTO.java | 1 - .../common/core/domain/dto/DictDataDTO.java | 41 ++++++ .../common/core/domain/dto/DictTypeDTO.java | 41 ++++++ .../common/core/service/DictService.java | 20 +++ .../service/impl/SysDictTypeServiceImpl.java | 35 ++++- .../service/impl/FlwNodeExtServiceImpl.java | 125 ++++++++++++++++++ script/sql/ry_workflow.sql | 4 +- script/sql/update/update_5.3.0-5.3.1.sql | 6 + 10 files changed, 278 insertions(+), 5 deletions(-) create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictDataDTO.java create mode 100644 ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictTypeDTO.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java create mode 100644 script/sql/update/update_5.3.0-5.3.1.sql diff --git a/pom.xml b/pom.xml index cc86e9b83..3d8a5c7e3 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ 8.7.2-20250101 - 1.6.6 + 1.6.7-M1 3.2.2 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 2a134a977..86deca2b2 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -272,3 +272,11 @@ warm-flow: ui: true # 默认Authorization,如果有多个token,用逗号分隔 token-name: ${sa-token.token-name},clientid + # 流程状态对应的三元色 + chart-status-color: + ## 未办理 + - 157,255,0 + ## 待办理 + - 0,0,0 + ## 已办理 + - 255,200,0 diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java index 65c012faf..7b748b0b5 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DeptDTO.java @@ -11,7 +11,6 @@ import java.io.Serializable; * * @author AprilWind */ - @Data @NoArgsConstructor public class DeptDTO implements Serializable { diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictDataDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictDataDTO.java new file mode 100644 index 000000000..dff1a75dd --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictDataDTO.java @@ -0,0 +1,41 @@ +package org.dromara.common.core.domain.dto; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 字典数据DTO + * + * @author AprilWind + */ +@Data +@NoArgsConstructor +public class DictDataDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 字典标签 + */ + private String dictLabel; + + /** + * 字典键值 + */ + private String dictValue; + + /** + * 是否默认(Y是 N否) + */ + private String isDefault; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictTypeDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictTypeDTO.java new file mode 100644 index 000000000..43ab142c2 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/DictTypeDTO.java @@ -0,0 +1,41 @@ +package org.dromara.common.core.domain.dto; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 字典类型DTO + * + * @author AprilWind + */ +@Data +@NoArgsConstructor +public class DictTypeDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 字典主键 + */ + private Long dictId; + + /** + * 字典名称 + */ + private String dictName; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DictService.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DictService.java index b78a7f257..7c5097764 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DictService.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DictService.java @@ -1,5 +1,9 @@ package org.dromara.common.core.service; +import org.dromara.common.core.domain.dto.DictDataDTO; +import org.dromara.common.core.domain.dto.DictTypeDTO; + +import java.util.List; import java.util.Map; /** @@ -64,4 +68,20 @@ public interface DictService { */ Map getAllDictByDictType(String dictType); + /** + * 根据字典类型查询详细信息 + * + * @param dictType 字典类型 + * @return 字典类型详细信息 + */ + DictTypeDTO getDictTypeDto(String dictType); + + /** + * 根据字典类型查询字典数据列表 + * + * @param dictType 字典类型 + * @return 字典数据列表 + */ + List getDictDataDto(String dictType); + } 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 1be0b7f40..acf2816e8 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 @@ -1,5 +1,6 @@ package org.dromara.system.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -8,6 +9,8 @@ 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.domain.dto.DictDataDTO; +import org.dromara.common.core.domain.dto.DictTypeDTO; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.DictService; import org.dromara.common.core.utils.MapstructUtils; @@ -249,10 +252,40 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService } } + /** + * 获取字典下所有的字典值与标签 + * + * @param dictType 字典类型 + * @return dictValue为key,dictLabel为值组成的Map + */ @Override public Map getAllDictByDictType(String dictType) { - List list = selectDictDataByType(dictType); + List list = SpringUtils.getAopProxy(this).selectDictDataByType(dictType); return StreamUtils.toMap(list, SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel); } + /** + * 根据字典类型查询详细信息 + * + * @param dictType 字典类型 + * @return 字典类型详细信息 + */ + @Override + public DictTypeDTO getDictTypeDto(String dictType) { + SysDictTypeVo vo = SpringUtils.getAopProxy(this).selectDictTypeByType(dictType); + return BeanUtil.toBean(vo, DictTypeDTO.class); + } + + /** + * 根据字典类型查询字典数据列表 + * + * @param dictType 字典类型 + * @return 字典数据列表 + */ + @Override + public List getDictDataDto(String dictType) { + List list = SpringUtils.getAopProxy(this).selectDictDataByType(dictType); + return BeanUtil.copyToList(list, DictDataDTO.class); + } + } 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 new file mode 100644 index 000000000..fe25268fc --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwNodeExtServiceImpl.java @@ -0,0 +1,125 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +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; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 流程设计器-节点扩展属性 + * + * @author AprilWind + */ +@ConditionalOnEnable +@Slf4j +@RequiredArgsConstructor +@Service +public class FlwNodeExtServiceImpl implements NodeExtService { + + /** + * 权限页 + */ + private static final String BUTTON_PERMISSION_TAB = "wf_button_tab"; + + /** + * 权限页页签名称 + */ + private static final String LIMITS_OF_AUTHORITY = "权限"; + + /** + * 字典类型逗号分隔 + */ + private static final String DICT_TYPES = "wf_button_permission"; + + /** + * 基础设置 + */ + private static final int TYPE_BASE_SETTING = 1; + + /** + * 新页签 + */ + private static final int TYPE_NEW_TAB = 2; + private final DictService dictService; + + /** + * 获取节点扩展属性 + * + * @return 结果 + */ + @Override + public List getNodeExt() { + List nodeExtList = new ArrayList<>(); + // 构建按钮权限页面 + nodeExtList.add(buildNodeExt(BUTTON_PERMISSION_TAB, TYPE_NEW_TAB, DICT_TYPES)); + return nodeExtList; + } + + /** + * 构建一个 NodeExt 对象 + * + * @param code 编码,此json中唯一 + * @param type 节点类型,1:基础设置,2:新页签 + * @return 返回构建好的 NodeExt 对象 + */ + private NodeExt buildNodeExt(String code, int type, String dictTypes) { + NodeExt nodeExt = new NodeExt(); + // 从系统参数配置里面获取信息构建新页面或者基础设置 + // 编码,此json中唯一 + nodeExt.setCode(code); + // 1:基础设置 2:新页签 + nodeExt.setType(type); + // 名称,如果type为新页签时,作为页签名称 + nodeExt.setName(LIMITS_OF_AUTHORITY); + nodeExt.setChilds(StringUtils.splitList(dictTypes) + .stream().map(this::buildChildNode).toList() + ); + return nodeExt; + } + + /** + * 构建一个 ChildNode 对象 + * + * @param dictType 字典类型 + * @return 返回构建好的 ChildNode 对象 + */ + private NodeExt.ChildNode buildChildNode(String dictType) { + NodeExt.ChildNode childNode = new NodeExt.ChildNode(); + if (StringUtils.isBlank(dictType)) { + return childNode; + } + DictTypeDTO dictTypeDTO = dictService.getDictTypeDto(dictType); + if (ObjectUtil.isNull(dictTypeDTO)) { + return childNode; + } + // 编码,此json中唯一 + childNode.setCode(dictType); + // label名称 + childNode.setLabel(dictTypeDTO.getDictName()); + // 描述 + childNode.setDesc(dictTypeDTO.getRemark()); + // 1:输入框 2:输入框 3:下拉框 4:选择框 + childNode.setType(4); + // 是否必填 + childNode.setMust(false); + // 是否多选 + childNode.setMultiple(true); + // 字典,下拉框和复选框时用到 + childNode.setDict(dictService.getDictDataDto(dictType) + .stream().map(x -> + new NodeExt.DictItem(x.getDictLabel(), x.getDictValue(), Convert.toBool(x.getIsDefault(), false)) + ).toList()); + return childNode; + } + +} diff --git a/script/sql/ry_workflow.sql b/script/sql/ry_workflow.sql index 9455636a0..652f4c084 100644 --- a/script/sql/ry_workflow.sql +++ b/script/sql/ry_workflow.sql @@ -24,7 +24,7 @@ CREATE TABLE `flow_definition` CREATE TABLE `flow_node` ( - `id` bigint unsigned NOT NULL COMMENT '主键id', + `id` bigint NOT NULL COMMENT '主键id', `node_type` tinyint(1) NOT NULL COMMENT '节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)', `definition_id` bigint NOT NULL COMMENT '流程定义id', `node_code` varchar(100) NOT NULL COMMENT '流程节点编码', @@ -32,7 +32,6 @@ CREATE TABLE `flow_node` `permission_flag` varchar(200) DEFAULT NULL COMMENT '权限标识(权限类型:权限标识,可以多个,用逗号隔开)', `node_ratio` decimal(6, 3) DEFAULT NULL COMMENT '流程签署比例值', `coordinate` varchar(100) DEFAULT NULL COMMENT '坐标', - `skip_any_node` varchar(100) DEFAULT 'N' COMMENT '是否可以退回任意节点(Y是 N否)即将删除', `any_node_skip` varchar(100) DEFAULT NULL COMMENT '任意结点跳转', `listener_type` varchar(100) DEFAULT NULL COMMENT '监听器类型', `listener_path` varchar(400) DEFAULT NULL COMMENT '监听器路径', @@ -43,6 +42,7 @@ CREATE TABLE `flow_node` `version` varchar(20) NOT NULL COMMENT '版本', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', + `ext` text COMMENT '扩展属性', `del_flag` char(1) DEFAULT '0' COMMENT '删除标志', `tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id', PRIMARY KEY (`id`) USING BTREE 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 new file mode 100644 index 000000000..8c313b25b --- /dev/null +++ b/script/sql/update/update_5.3.0-5.3.1.sql @@ -0,0 +1,6 @@ +ALTER TABLE `flow_node` DROP COLUMN `skip_any_node`; +ALTER TABLE `flow_node` + ADD COLUMN `ext` text NULL COMMENT '扩展属性' AFTER `update_time`; + +INSERT INTO sys_dict_type VALUES (16, '000000', '按钮权限', 'wf_button_permission', 103, 1, sysdate(), NULL, NULL, '按钮权限列表'); +INSERT INTO sys_dict_data VALUES (60, '000000', 1, '是否弹窗选人', '1', 'wf_button_permission', '', 'default', 'N', 103, 1, sysdate(), NULL, NULL,'是否弹窗选人'); From 0673cf88491ce394810e2176b035a1b62a7270cf Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Tue, 25 Feb 2025 22:56:27 +0800 Subject: [PATCH 16/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E8=AE=BE=E8=AE=A1=E5=99=A8-=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E5=B1=9E=E6=80=A7=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FlwNodeExtServiceImpl.java | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 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 fe25268fc..f7e58ed70 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 @@ -13,7 +13,9 @@ import org.dromara.workflow.common.ConditionalOnEnable; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 流程设计器-节点扩展属性 @@ -27,14 +29,14 @@ import java.util.List; public class FlwNodeExtServiceImpl implements NodeExtService { /** - * 权限页 + * 权限页code */ - private static final String BUTTON_PERMISSION_TAB = "wf_button_tab"; + private static final String PERMISSION_TAB = "wf_button_tab"; /** - * 权限页页签名称 + * 权限页名称 */ - private static final String LIMITS_OF_AUTHORITY = "权限"; + private static final String PERMISSION_TAB_NAME = "权限"; /** * 字典类型逗号分隔 @@ -50,6 +52,16 @@ public class FlwNodeExtServiceImpl implements NodeExtService { * 新页签 */ private static final int TYPE_NEW_TAB = 2; + + /** + * 存储不同 dictType 对应的配置信息 + */ + private static final Map> CHILD_NODE_MAP = new HashMap<>(); + + static { + CHILD_NODE_MAP.put("wf_button_permission", Map.of("type", 4, "must", false, "multiple", true)); + } + private final DictService dictService; /** @@ -61,26 +73,24 @@ public class FlwNodeExtServiceImpl implements NodeExtService { public List getNodeExt() { List nodeExtList = new ArrayList<>(); // 构建按钮权限页面 - nodeExtList.add(buildNodeExt(BUTTON_PERMISSION_TAB, TYPE_NEW_TAB, DICT_TYPES)); + nodeExtList.add(buildNodeExt(PERMISSION_TAB, PERMISSION_TAB_NAME, TYPE_NEW_TAB, DICT_TYPES)); return nodeExtList; } /** * 构建一个 NodeExt 对象 * - * @param code 编码,此json中唯一 - * @param type 节点类型,1:基础设置,2:新页签 + * @param code 编码,此json中唯一 + * @param name 名称,如果type为新页签时,作为页签名称 + * @param type 节点类型,1:基础设置,2:新页签 + * @param dictTypes 字典类型逗号分隔 * @return 返回构建好的 NodeExt 对象 */ - private NodeExt buildNodeExt(String code, int type, String dictTypes) { + private NodeExt buildNodeExt(String code, String name, int type, String dictTypes) { NodeExt nodeExt = new NodeExt(); - // 从系统参数配置里面获取信息构建新页面或者基础设置 - // 编码,此json中唯一 nodeExt.setCode(code); - // 1:基础设置 2:新页签 nodeExt.setType(type); - // 名称,如果type为新页签时,作为页签名称 - nodeExt.setName(LIMITS_OF_AUTHORITY); + nodeExt.setName(name); nodeExt.setChilds(StringUtils.splitList(dictTypes) .stream().map(this::buildChildNode).toList() ); @@ -108,12 +118,13 @@ public class FlwNodeExtServiceImpl implements NodeExtService { childNode.setLabel(dictTypeDTO.getDictName()); // 描述 childNode.setDesc(dictTypeDTO.getRemark()); + Map map = CHILD_NODE_MAP.get(dictType); // 1:输入框 2:输入框 3:下拉框 4:选择框 - childNode.setType(4); + childNode.setType(Convert.toInt(map.get("type"), 1)); // 是否必填 - childNode.setMust(false); + childNode.setMust(Convert.toBool(map.get("must"), false)); // 是否多选 - childNode.setMultiple(true); + childNode.setMultiple(Convert.toBool(map.get("multiple"), true)); // 字典,下拉框和复选框时用到 childNode.setDict(dictService.getDictDataDto(dictType) .stream().map(x -> From 319a89e3205f7a49a810c3ac8efb021884cf55ab 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, 25 Feb 2025 23:39:02 +0800 Subject: [PATCH 17/21] =?UTF-8?q?fix=20=E4=BF=AE=E5=A4=8D=20oracle=20?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=AD=97=E5=85=B8=E6=8A=A5=E9=94=99=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/system/service/impl/SysTenantServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java index b2f4872be..a73415c64 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -448,6 +448,9 @@ public class SysTenantServiceImpl implements ISysTenantService { data.setTenantId(tenantId); data.setCreateTime(null); data.setUpdateTime(null); + data.setCreateDept(null); + data.setCreateBy(null); + data.setUpdateBy(null); set.add(tenantId); saveDataList.add(data); } @@ -469,6 +472,9 @@ public class SysTenantServiceImpl implements ISysTenantService { data.setTenantId(tenantId); data.setCreateTime(null); data.setUpdateTime(null); + data.setCreateDept(null); + data.setCreateBy(null); + data.setUpdateBy(null); set.add(tenantId); saveDataList.add(data); } From 71180584dab104c40351f87ef4cf8070d4201535 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 26 Feb 2025 09:54:20 +0800 Subject: [PATCH 18/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E5=85=B8=E7=B1=BB=E5=9E=8B=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=A2=9E=E5=8A=A0=E4=B8=80=E7=BA=A7=E7=BC=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/common/core/constant/CacheNames.java | 5 +++++ .../dromara/system/service/impl/SysDictTypeServiceImpl.java | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java index bf8efc550..519034cf2 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java @@ -30,6 +30,11 @@ public interface CacheNames { */ String SYS_DICT = "sys_dict"; + /** + * 数据字典类型 + */ + String SYS_DICT_TYPE = "sys_dict_type"; + /** * 租户 */ 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 acf2816e8..9d80d50e4 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 @@ -124,6 +124,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService * @param dictType 字典类型 * @return 字典类型 */ + @Cacheable(cacheNames = CacheNames.SYS_DICT_TYPE, key = "#dictType") @Override public SysDictTypeVo selectDictTypeByType(String dictType) { return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysDictType::getDictType, dictType)); @@ -143,6 +144,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); } CacheUtils.evict(CacheNames.SYS_DICT, dictType.getDictType()); + CacheUtils.evict(CacheNames.SYS_DICT_TYPE, dictType.getDictType()); } baseMapper.deleteByIds(Arrays.asList(dictIds)); } @@ -153,6 +155,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService @Override public void resetDictCache() { CacheUtils.clear(CacheNames.SYS_DICT); + CacheUtils.clear(CacheNames.SYS_DICT_TYPE); } /** @@ -191,6 +194,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService int row = baseMapper.updateById(dict); if (row > 0) { CacheUtils.evict(CacheNames.SYS_DICT, oldDict.getDictType()); + CacheUtils.evict(CacheNames.SYS_DICT_TYPE, oldDict.getDictType()); return dictDataMapper.selectDictDataByType(dict.getDictType()); } throw new ServiceException("操作失败"); From 8763bfa3d32b91ca24d9c572ad5a9a5ee46bd6a2 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Thu, 27 Feb 2025 17:31:08 +0800 Subject: [PATCH 19/21] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E6=8E=92=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/src/main/resources/application.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 86deca2b2..76ed0d695 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -219,7 +219,6 @@ xss: # 排除链接(多个用逗号分隔) excludeUrls: - /system/notice - - /warm-flow/save-xml # 全局线程池相关配置 # 如使用JDK21请直接使用虚拟线程 不要开启此配置 From c0e0b41d13a4d2cc95c697ac3dfc90447f74ac38 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Fri, 28 Feb 2025 12:05:35 +0800 Subject: [PATCH 20/21] =?UTF-8?q?update=20=E6=9B=B4=E6=96=B0warm-flow?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B01.6.7-M2,=E6=9D=83=E9=99=90=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=94=B9=E4=B8=BA=E6=9E=9A=E4=B8=BE=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../common/enums/ButtonPermissionEnum.java | 30 +++++ .../workflow/common/enums/NodeExtEnum.java | 26 +++++ .../service/impl/FlwNodeExtServiceImpl.java | 110 +++++++++++++----- 4 files changed, 139 insertions(+), 29 deletions(-) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/ButtonPermissionEnum.java create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/NodeExtEnum.java diff --git a/pom.xml b/pom.xml index 3d8a5c7e3..8bde7d395 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ 8.7.2-20250101 - 1.6.7-M1 + 1.6.7-M2 3.2.2 diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/ButtonPermissionEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/ButtonPermissionEnum.java new file mode 100644 index 000000000..6bc818c4c --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/ButtonPermissionEnum.java @@ -0,0 +1,30 @@ +package org.dromara.workflow.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 按钮权限枚举 + * + * @author AprilWind + */ +@Getter +@AllArgsConstructor +public enum ButtonPermissionEnum implements NodeExtEnum { + + /** + * 是否弹窗选人 + */ + APPROVE("是否弹窗选人", "1", false), + + /** + * 是否能委托 + */ + REJECT("是否能委托", "2", false); + + private final String label; + private final String value; + private final boolean selected; + +} + diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/NodeExtEnum.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/NodeExtEnum.java new file mode 100644 index 000000000..dfa9e9a99 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/NodeExtEnum.java @@ -0,0 +1,26 @@ +package org.dromara.workflow.common.enums; + +/** + * 节点扩展属性枚举 + * + * @author AprilWind + */ +public interface NodeExtEnum { + + /** + * 选项label + */ + String getLabel(); + + /** + * 选项值 + */ + String getValue(); + + /** + * 是否默认选中 + */ + boolean isSelected(); + +} + 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 f7e58ed70..0b4d4b790 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 @@ -10,12 +10,11 @@ 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; +import org.dromara.workflow.common.enums.ButtonPermissionEnum; +import org.dromara.workflow.common.enums.NodeExtEnum; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 流程设计器-节点扩展属性 @@ -39,9 +38,9 @@ public class FlwNodeExtServiceImpl implements NodeExtService { private static final String PERMISSION_TAB_NAME = "权限"; /** - * 字典类型逗号分隔 + * 枚举类型标识 */ - private static final String DICT_TYPES = "wf_button_permission"; + private static final String ENUM_TYPE_PREFIX = "enum:"; /** * 基础设置 @@ -59,7 +58,8 @@ public class FlwNodeExtServiceImpl implements NodeExtService { private static final Map> CHILD_NODE_MAP = new HashMap<>(); static { - CHILD_NODE_MAP.put("wf_button_permission", Map.of("type", 4, "must", false, "multiple", true)); + CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getName(), + Map.of("label", "权限按钮", "type", 4, "must", false, "multiple", true)); } private final DictService dictService; @@ -73,26 +73,29 @@ public class FlwNodeExtServiceImpl implements NodeExtService { public List getNodeExt() { List nodeExtList = new ArrayList<>(); // 构建按钮权限页面 - nodeExtList.add(buildNodeExt(PERMISSION_TAB, PERMISSION_TAB_NAME, TYPE_NEW_TAB, DICT_TYPES)); + nodeExtList.add(buildNodeExt(PERMISSION_TAB, PERMISSION_TAB_NAME, TYPE_NEW_TAB, + ENUM_TYPE_PREFIX + ButtonPermissionEnum.class.getName())); return nodeExtList; } /** * 构建一个 NodeExt 对象 * - * @param code 编码,此json中唯一 - * @param name 名称,如果type为新页签时,作为页签名称 - * @param type 节点类型,1:基础设置,2:新页签 - * @param dictTypes 字典类型逗号分隔 + * @param code 编码,此json中唯一 + * @param name 名称,如果type为新页签时,作为页签名称 + * @param type 节点类型,1:基础设置,2:新页签 + * @param sourceTypes 字典/枚举类型来源(逗号分隔) * @return 返回构建好的 NodeExt 对象 */ - private NodeExt buildNodeExt(String code, String name, int type, String dictTypes) { + private NodeExt buildNodeExt(String code, String name, int type, String sourceTypes) { NodeExt nodeExt = new NodeExt(); nodeExt.setCode(code); nodeExt.setType(type); nodeExt.setName(name); - nodeExt.setChilds(StringUtils.splitList(dictTypes) - .stream().map(this::buildChildNode).toList() + nodeExt.setChilds(StringUtils.splitList(sourceTypes) + .stream().map(this::buildChildNode) + .filter(ObjectUtil::isNotNull) + .toList() ); return nodeExt; } @@ -100,31 +103,61 @@ public class FlwNodeExtServiceImpl implements NodeExtService { /** * 构建一个 ChildNode 对象 * + * @param sourceType 字典类型 + * @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); + } + return null; + } + + /** + * 根据字典构建一个 ChildNode 对象 + * * @param dictType 字典类型 * @return 返回构建好的 ChildNode 对象 */ - private NodeExt.ChildNode buildChildNode(String dictType) { - NodeExt.ChildNode childNode = new NodeExt.ChildNode(); - if (StringUtils.isBlank(dictType)) { - return childNode; - } + private NodeExt.ChildNode buildChildNodeFromDict(String dictType) { DictTypeDTO dictTypeDTO = dictService.getDictTypeDto(dictType); if (ObjectUtil.isNull(dictTypeDTO)) { - return childNode; + return null; } + NodeExt.ChildNode childNode = buildChildNodeMap(dictType); // 编码,此json中唯一 childNode.setCode(dictType); // label名称 childNode.setLabel(dictTypeDTO.getDictName()); // 描述 childNode.setDesc(dictTypeDTO.getRemark()); - Map map = CHILD_NODE_MAP.get(dictType); - // 1:输入框 2:输入框 3:下拉框 4:选择框 - childNode.setType(Convert.toInt(map.get("type"), 1)); - // 是否必填 - childNode.setMust(Convert.toBool(map.get("must"), false)); - // 是否多选 - childNode.setMultiple(Convert.toBool(map.get("multiple"), true)); // 字典,下拉框和复选框时用到 childNode.setDict(dictService.getDictDataDto(dictType) .stream().map(x -> @@ -133,4 +166,25 @@ public class FlwNodeExtServiceImpl implements NodeExtService { return childNode; } + /** + * 根据 CHILD_NODE_MAP 中的配置信息,构建一个基本的 ChildNode 对象 + * 该方法用于设置 ChildNode 的常规属性,例如 label、type、是否必填、是否多选等 + * + * @param key CHILD_NODE_MAP 的 key + * @return 返回构建好的 ChildNode 对象 + */ + private NodeExt.ChildNode buildChildNodeMap(String key) { + NodeExt.ChildNode childNode = new NodeExt.ChildNode(); + Map map = CHILD_NODE_MAP.get(key); + // label名称 + childNode.setLabel((String) map.get("label")); + // 1:输入框 2:输入框 3:下拉框 4:选择框 + childNode.setType(Convert.toInt(map.get("type"), 1)); + // 是否必填 + childNode.setMust(Convert.toBool(map.get("must"), false)); + // 是否多选 + childNode.setMultiple(Convert.toBool(map.get("multiple"), true)); + return childNode; + } + } From 2623d0b3438f247b0c3c68bfcd26d387215da9ec Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Fri, 28 Feb 2025 14:46:59 +0800 Subject: [PATCH 21/21] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=E9=94=99=E8=AF=AF=EF=BC=8C=E8=A1=A5=E5=85=85=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dromara/common/core/domain/dto/RoleDTO.java | 2 +- .../src/main/java/org/dromara/system/domain/SysRole.java | 2 +- .../src/main/java/org/dromara/system/domain/bo/SysRoleBo.java | 2 +- .../src/main/java/org/dromara/system/domain/vo/SysRoleVo.java | 4 ++-- script/sql/oracle/oracle_ry_vue_5.X.sql | 2 +- script/sql/postgres/postgres_ry_vue_5.X.sql | 2 +- script/sql/ry_vue_5.X.sql | 2 +- script/sql/sqlserver/sqlserver_ry_vue_5.X.sql | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java index aea8e7a9d..d14ffbb0f 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/dto/RoleDTO.java @@ -35,7 +35,7 @@ public class RoleDTO implements Serializable { private String roleKey; /** - * 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) + * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限) */ private String dataScope; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java index a7c0ad5a0..aa1b19a4f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java @@ -42,7 +42,7 @@ public class SysRole extends TenantEntity { private Integer roleSort; /** - * 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) + * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限) */ private String dataScope; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java index 3207bad1e..5e3e60260 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java @@ -49,7 +49,7 @@ public class SysRoleBo extends BaseEntity { private Integer roleSort; /** - * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) + * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限) */ private String dataScope; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java index ffb2c6d5a..1913170ed 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java @@ -51,10 +51,10 @@ public class SysRoleVo implements Serializable { private Integer roleSort; /** - * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) + * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限) */ @ExcelProperty(value = "数据范围", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限") + @ExcelDictFormat(readConverterExp = "1=全部数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限,6=部门及以下或本人数据权限") private String dataScope; /** diff --git a/script/sql/oracle/oracle_ry_vue_5.X.sql b/script/sql/oracle/oracle_ry_vue_5.X.sql index 8390bceef..a1c1d99e1 100644 --- a/script/sql/oracle/oracle_ry_vue_5.X.sql +++ b/script/sql/oracle/oracle_ry_vue_5.X.sql @@ -352,7 +352,7 @@ comment on column sys_role.tenant_id is '租户编号'; comment on column sys_role.role_name is '角色名称'; comment on column sys_role.role_key is '角色权限字符串'; comment on column sys_role.role_sort is '显示顺序'; -comment on column sys_role.data_scope is '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)'; +comment on column sys_role.data_scope is '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限)'; comment on column sys_role.menu_check_strictly is '菜单树选择项是否关联显示'; comment on column sys_role.dept_check_strictly is '部门树选择项是否关联显示'; comment on column sys_role.status is '角色状态(0正常 1停用)'; diff --git a/script/sql/postgres/postgres_ry_vue_5.X.sql b/script/sql/postgres/postgres_ry_vue_5.X.sql index 463896625..22c60650b 100644 --- a/script/sql/postgres/postgres_ry_vue_5.X.sql +++ b/script/sql/postgres/postgres_ry_vue_5.X.sql @@ -353,7 +353,7 @@ comment on column sys_role.tenant_id is '租户编号'; comment on column sys_role.role_name is '角色名称'; comment on column sys_role.role_key is '角色权限字符串'; comment on column sys_role.role_sort is '显示顺序'; -comment on column sys_role.data_scope is '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)'; +comment on column sys_role.data_scope is '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限)'; comment on column sys_role.menu_check_strictly is '菜单树选择项是否关联显示'; comment on column sys_role.dept_check_strictly is '部门树选择项是否关联显示'; comment on column sys_role.status is '角色状态(0正常 1停用)'; diff --git a/script/sql/ry_vue_5.X.sql b/script/sql/ry_vue_5.X.sql index 95cb04cea..f2167fa30 100644 --- a/script/sql/ry_vue_5.X.sql +++ b/script/sql/ry_vue_5.X.sql @@ -208,7 +208,7 @@ create table sys_role ( role_name varchar(30) not null comment '角色名称', role_key varchar(100) not null comment '角色权限字符串', role_sort int(4) not null comment '显示顺序', - data_scope char(1) default '1' comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', + data_scope char(1) default '1' comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限)', menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示', dept_check_strictly tinyint(1) default 1 comment '部门树选择项是否关联显示', status char(1) not null comment '角色状态(0正常 1停用)', diff --git a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql index 6fdba1e0d..c6d2960d5 100644 --- a/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql +++ b/script/sql/sqlserver/sqlserver_ry_vue_5.X.sql @@ -2318,7 +2318,7 @@ EXEC sys.sp_addextendedproperty 'COLUMN', N'role_sort' GO EXEC sys.sp_addextendedproperty - 'MS_Description', N'数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)' , + 'MS_Description', N'数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限 5:仅本人数据权限 6:部门及以下或本人数据权限)' , 'SCHEMA', N'dbo', 'TABLE', N'sys_role', 'COLUMN', N'data_scope'