From 0a00c2fb39c8bc0121724a197a1f2d559bb2c8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=98=86=E9=B9=8F?= Date: Tue, 30 Jul 2024 14:15:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(REQ-2300):=20=E8=AE=B0=E5=BD=95=E8=A7=92?= =?UTF-8?q?=E8=89=B2code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/data/object/DataObjectRuleBO.java | 12 ++++++++ .../entity/DataObjectRuleScope.java | 4 +++ .../service/impl/DataObjectServiceImpl.java | 28 +++++++++++++++++++ 3 files changed, 44 insertions(+) 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 fc5e43ba..f09eddd7 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 @@ -39,6 +39,10 @@ public class DataObjectRuleBO { * 岗位/角色id */ private List relationId; + /** + * 岗位列表 + */ + private List jobs; /** * 行级数据权限(单选) 1:仅本人数据 2:本人及下属数据 3:仅本部门数据 4:本部门及以下数据 @@ -51,4 +55,12 @@ public class DataObjectRuleBO { */ private List attributePermissionBOList; + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class JobInfo{ + private Long id; + private String code; + } } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRuleScope.java b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRuleScope.java index 03e4673b..5b35d9e4 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRuleScope.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/repository/entity/DataObjectRuleScope.java @@ -36,4 +36,8 @@ public class DataObjectRuleScope extends BaseOperatorEntity * 岗位id/角色id */ private Long relationId; + /** + * 岗位编码 + */ + private String relationCode; } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataObjectServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataObjectServiceImpl.java index e60bcdea..dd52c28f 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataObjectServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/DataObjectServiceImpl.java @@ -36,6 +36,7 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import groovy.lang.Tuple2; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -92,6 +93,7 @@ public class DataObjectServiceImpl implements DataObjectService { } List dataObjectRules = DataObjectMapper.INSTANCE.ruleBOs2Rules(req.getDataObjectRuleBOList()); + handleJobs(dataObjectRules, req.getDataObjectRuleBOList()); int size = (CollUtil.isNotEmpty(defaultDataObjectRules) ? defaultDataObjectRules.size() : 0) + (CollUtil.isNotEmpty(dataObjectRules) ? dataObjectRules.size() : 0); @@ -200,6 +202,7 @@ public class DataObjectServiceImpl implements DataObjectService { } List dataObjectRules = DataObjectMapper.INSTANCE.ruleBOs2Rules(req.getDataObjectRuleBOList()); + handleJobs(dataObjectRules, req.getDataObjectRuleBOList()); int size = (CollUtil.isNotEmpty(defaultDataObjectRules) ? defaultDataObjectRules.size() : 0) + (CollUtil.isNotEmpty(dataObjectRules) ? dataObjectRules.size() : 0); List generalObjectRuleList = new ArrayList<>(size); @@ -451,4 +454,29 @@ public class DataObjectServiceImpl implements DataObjectService { return res; } + + private void handleJobs(List dataObjectRules, List dataObjectRuleBOList) { + if (CollectionUtils.isEmpty(dataObjectRules) || CollectionUtils.isEmpty(dataObjectRuleBOList)) { + return; + } + + Map jobInfoMap = Maps.newHashMap(); + for (DataObjectRuleBO ruleBO : dataObjectRuleBOList) { + if (1 == ruleBO.getRuleScopeType() && CollectionUtils.isNotEmpty(ruleBO.getJobs())) { + ruleBO.getJobs().forEach(e -> { + jobInfoMap.put(e.getId(), e); + }); + } + } + + for (DataObjectRule rule : dataObjectRules) { + if (1 == rule.getRuleScopeType() && CollectionUtils.isNotEmpty(rule.getDataObjectRuleScopeList())) { + rule.getDataObjectRuleScopeList().forEach(e -> { + if (Objects.nonNull(e.getRelationId()) && jobInfoMap.containsKey(e.getRelationId())) { + e.setRelationCode(jobInfoMap.get(e.getRelationId()).getCode()); + } + }); + } + } + } }