From b37690a4769690af118e653203078e81c7b09c80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E6=95=8F?= Date: Wed, 6 Nov 2024 18:28:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:(REQ-2993)=20=E6=95=B0=E6=8D=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、增加 包含班组/不包含班组 的纬度 2、调整之前的数据权限选项 --- .../common/enums/AttrPermissionEnum.java | 37 +++++++++++-------- .../client/common/enums/DataObjectEnums.java | 21 +++++++++++ .../tyr/client/common/enums/EnumTypeEnum.java | 3 ++ .../common/enums/RowPermissionEnum.java | 37 +++++++++---------- .../model/data/object/DataObjectRuleBO.java | 4 ++ .../data/object/DefaultDataObjectRuleBO.java | 4 ++ .../data/object/DataObjectController.java | 5 +++ .../repository/entity/DataObjectRule.java | 4 ++ 8 files changed, 80 insertions(+), 35 deletions(-) create mode 100644 tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataObjectEnums.java diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/AttrPermissionEnum.java b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/AttrPermissionEnum.java index 3144b4ba..575966e7 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/AttrPermissionEnum.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/AttrPermissionEnum.java @@ -1,41 +1,46 @@ package cn.axzo.tyr.client.common.enums; -import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; @Getter @AllArgsConstructor -public enum AttrPermissionEnum { - SELF_ONLY(1, "仅本人数据"), - SELF_SUBORDINATE(2, "本人及下属数据"), - DEPARTMENT_ONLY(3, "仅本部门数据"), +public enum AttrPermissionEnum{ + SELF_ONLY(1, "本人数据", true, true), + SELF_SUBORDINATE(2, "下属数据", true, true), + DEPARTMENT_ONLY(3, "本部门数据", true, true), - DEPARTMENT_SUBORDINATE(4, "本部门及以下数据"), + DEPARTMENT_SUBORDINATE(4, "直属下级部门数据", true, true), - UNIT_ONLY(5, "仅本单位数据(包含班组)"), + UNIT_ONLY(5, "本单位数据", true, true), - UNIT_DIRECT_SUBORDINATE(6, "本单位及下级直属单位数据"), + UNIT_DIRECT_SUBORDINATE(6, "直属下级单位数据", false, true), - UNIT_COOPERATE_SUBORDINATE(7, "本单位及下级协同(直属+合作)单位数据"), + UNIT_COOPERATE_SUBORDINATE(7, "下级单位数据", false, true), - UNIT_ALL_SUBORDINATE(8, "本单位及以下协同(直属+合作)单位数据"), - WORKSPACE(9, "本项目数据"), - EQUAL_TO_ROW(10, "同行级数据权限"), + WORKSPACE(8, "本项目部数据", false, true), - UNIT_ONLY_EXCLUDE_TEAM(11, "仅本单位数据(不包含班组)"), + EQUAL_TO_ROW(999, "同行级数据权限", true, true), ; private final Integer value; private final String desc; + private final Boolean supportedNotWorkspace; + private final Boolean supportedWorkspace; + + private static final List ROW_PERMISSION_FOR_WORKSPACE = Arrays.stream(AttrPermissionEnum.values()) + .filter(rp -> rp.supportedWorkspace).collect(Collectors.toList()); + private static final List ROW_PERMISSION_FOR_NOT_WORKSPACE = Arrays.stream(AttrPermissionEnum.values()) + .filter(rp -> rp.supportedNotWorkspace).collect(Collectors.toList()); public static List listAttrPermissionForWorkspace() { - return Lists.newArrayList(AttrPermissionEnum.values()); + return ROW_PERMISSION_FOR_WORKSPACE; } public static List listAttrPermissionForNotWorkspace() { - return Lists.newArrayList(SELF_ONLY, SELF_SUBORDINATE, - DEPARTMENT_ONLY, DEPARTMENT_SUBORDINATE, UNIT_ONLY, UNIT_ONLY_EXCLUDE_TEAM, EQUAL_TO_ROW); + return ROW_PERMISSION_FOR_NOT_WORKSPACE; } } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataObjectEnums.java b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataObjectEnums.java new file mode 100644 index 00000000..ad1df198 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/DataObjectEnums.java @@ -0,0 +1,21 @@ +package cn.axzo.tyr.client.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +public class DataObjectEnums { + /** + * 是否包含班组 + */ + @Getter + @AllArgsConstructor + public enum TeamInclusionEnum { + INCLUDE(1, "包含班组/小组", "包含班组"), + EXCLUDE(2, "不包含班组/小组", "不包含班组"); + + private final Integer value; + private final String descInWorkspace; + private final String descNotInWorkspace; + } + +} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/EnumTypeEnum.java b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/EnumTypeEnum.java index 5a77d075..7385b0d1 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/EnumTypeEnum.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/EnumTypeEnum.java @@ -16,6 +16,9 @@ public enum EnumTypeEnum { ROW_PERMISSION_AND_WORKSPACE(3, "行级权限规则&项目数据权限"), ATTR_PERMISSION_AND_NOT_WORKSPACE(4, "字段值查看范围&单位/OMS/政务监管平台的数据权限"), ATTR_PERMISSION_AND_WORKSPACE(5, "字段值查看范围&项目数据权限"), + TEAM_INCLUSION_AND_NOT_WORKSPACE(6, "是否包含班组"), + TEAM_INCLUSION_AND_WORKSPACE(7, "是否包含班组/小组"), + ; public final Integer value; diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/RowPermissionEnum.java b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/RowPermissionEnum.java index 729eb70f..56f786cb 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/RowPermissionEnum.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/common/enums/RowPermissionEnum.java @@ -1,10 +1,11 @@ package cn.axzo.tyr.client.common.enums; -import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * 行级权限规则 @@ -12,38 +13,36 @@ import java.util.List; @Getter @AllArgsConstructor public enum RowPermissionEnum { - SELF_ONLY(1, "仅本人数据"), - SELF_SUBORDINATE(2, "本人及下属数据"), - DEPARTMENT_ONLY(3, "仅本部门数据"), + SELF_ONLY(1, "本人数据", true, true), + SELF_SUBORDINATE(2, "下属数据", true, true), + DEPARTMENT_ONLY(3, "本部门数据", true, true), - DEPARTMENT_SUBORDINATE(4, "本部门及以下数据"), + DEPARTMENT_SUBORDINATE(4, "直属下级部门数据", true, true), - UNIT_ONLY(5, "仅本单位数据(包含班组)"), + UNIT_ONLY(5, "本单位数据", true, true), - UNIT_DIRECT_SUBORDINATE(6, "本单位及下级直属单位数据"), + UNIT_DIRECT_SUBORDINATE(6, "直属下级单位数据", false, true), - UNIT_COOPERATE_SUBORDINATE(7, "本单位及下级协同(直属+合作)单位数据"), - - UNIT_ALL_SUBORDINATE(8, "本单位及以下协同(直属+合作)单位数据"), - WORKSPACE(9, "本项目部数据"), - - UNIT_ONLY_EXCLUDE_TEAM(10, "仅本单位数据(不包含班组)"), -; + UNIT_COOPERATE_SUBORDINATE(7, "下级单位数据", false, true), + WORKSPACE(8, "本项目部数据", false, true); private final Integer value; private final String desc; + private final Boolean supportedNotWorkspace; + private final Boolean supportedWorkspace; - - + private static final List ROW_PERMISSION_FOR_WORKSPACE = Arrays.stream(RowPermissionEnum.values()) + .filter(rp -> rp.supportedWorkspace).collect(Collectors.toList()); + private static final List ROW_PERMISSION_FOR_NOT_WORKSPACE = Arrays.stream(RowPermissionEnum.values()) + .filter(rp -> rp.supportedNotWorkspace).collect(Collectors.toList()); public static List listRowPermissionForWorkspace() { - return Lists.newArrayList(RowPermissionEnum.values()); + return ROW_PERMISSION_FOR_WORKSPACE; } public static List listRowPermissionForNotWorkspace() { - return Lists.newArrayList(SELF_ONLY, SELF_SUBORDINATE, - DEPARTMENT_ONLY, DEPARTMENT_SUBORDINATE, UNIT_ONLY, UNIT_ONLY_EXCLUDE_TEAM); + return ROW_PERMISSION_FOR_NOT_WORKSPACE; } } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DataObjectRuleBO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DataObjectRuleBO.java index 1688ebc9..e4fcef79 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DataObjectRuleBO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DataObjectRuleBO.java @@ -54,6 +54,10 @@ public class DataObjectRuleBO { * 9:本项目部数据 10:仅本单位数据(不包含班组) */ private Integer rowPermission; + /** + * 是否包含班组,1 = 包含,2 = 不包含 + */ + private Integer teamInclusion; /** * 字段级权限规则 */ diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DefaultDataObjectRuleBO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DefaultDataObjectRuleBO.java index 2c44f8e7..32605ce1 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DefaultDataObjectRuleBO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/data/object/DefaultDataObjectRuleBO.java @@ -36,6 +36,10 @@ public class DefaultDataObjectRuleBO { * 5:仅本单位数据 6:本单位及下级直属单位数据 7:本单位及下级协同(直属+合作)单位数据 8:本单位及以下协同(直属+合作)单位数据 9:本项目数据 */ private Integer rowPermission; + /** + * 是否包含班组,1 = 包含,2 = 不包含 + */ + private Integer teamInclusion; /** * 字段级权限规则 */ diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/data/object/DataObjectController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/data/object/DataObjectController.java index e0fb5b4e..30319f9e 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/data/object/DataObjectController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/data/object/DataObjectController.java @@ -5,6 +5,7 @@ import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.tyr.client.common.annotation.RepeatedSubmit; import cn.axzo.tyr.client.common.enums.AttrPermissionEnum; +import cn.axzo.tyr.client.common.enums.DataObjectEnums; import cn.axzo.tyr.client.common.enums.EnumTypeEnum; import cn.axzo.tyr.client.common.enums.ReturnCodeEnum; import cn.axzo.tyr.client.common.enums.RowPermissionEnum; @@ -76,6 +77,10 @@ public class DataObjectController implements DataObjectApi { return ApiResult.ok(AttrPermissionEnum.listAttrPermissionForNotWorkspace().stream().map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDesc()).build()).collect(Collectors.toList())); case ATTR_PERMISSION_AND_WORKSPACE: return ApiResult.ok(AttrPermissionEnum.listAttrPermissionForWorkspace().stream().map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDesc()).build()).collect(Collectors.toList())); + case TEAM_INCLUSION_AND_NOT_WORKSPACE: + return ApiResult.ok(Arrays.stream(DataObjectEnums.TeamInclusionEnum.values()).map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDescNotInWorkspace()).build()).collect(Collectors.toList())); + case TEAM_INCLUSION_AND_WORKSPACE: + return ApiResult.ok(Arrays.stream(DataObjectEnums.TeamInclusionEnum.values()).map(e -> EnumRes.builder().value(e.getValue()).desc(e.getDescInWorkspace()).build()).collect(Collectors.toList())); default: throw new ServiceException(ReturnCodeEnum.TYPE_UNKNOWN.getMessage()); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRule.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRule.java index 7cf0f261..02fe4ef4 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRule.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRule.java @@ -37,6 +37,10 @@ public class DataObjectRule extends BaseOperatorEntity implement * 5:仅本单位数据 6:本单位及下级直属单位数据 7:本单位及下级协同(直属+合作)单位数据 8:本单位及以下协同(直属+合作)单位数据 9:本项目数据 */ private Integer rowPermission; + /** + * 是否包含班组,1 = 包含,2 = 不包含 + */ + private Integer teamInclusion; /** * 规则范围 1:岗位 2:角色 */