diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BasicUserMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BasicUserMapperExt.java
index fa711dd..4491ce2 100644
--- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BasicUserMapperExt.java
+++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BasicUserMapperExt.java
@@ -25,4 +25,6 @@ public interface BasicUserMapperExt extends BasicUserMapper{
Integer checkBuildingManager(Long userId);
Integer checkLevelManager(Long userId);
+
+ Integer getAdscFlagByUserId(@Param("userId") Long userId);
}
diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
index 93f8233..b5086d9 100644
--- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
+++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
@@ -125,5 +125,12 @@
INNER JOIN data_center_aeon_admin.basic_role_menu_relation rmr ON br.id = rmr.role_id
WHERE rmr.menu_id = 88 AND br.flag != 1 AND rru.user_id = #{userId}
-
+
+
\ No newline at end of file
diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml
index 9bbc136..6772f7d 100644
--- a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml
+++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml
@@ -6,17 +6,15 @@
dashboard_level_branch
- dashboard_level_store
- dashboard_level_area
- dashboard_level_site
+ dashboard_level_store_area_merge
+ dashboard_level_site
dashboard_level_branch
- dashboard_level_store
- dashboard_level_area
+ dashboard_level_store_area_merge
@@ -46,9 +44,22 @@
INSERT INTO
- (company_id, name, remark, created_by, created_at)
+ (company_id, name, `code`, remark, created_by, created_at)
VALUES
- (#{companyId}, #{name}, #{remark}, #{createdBy}, #{createdAt})
+ (
+ #{companyId},
+ #{name},
+
+ #{code}
+ NULL
+ ,
+
+ #{remark}
+ NULL
+ ,
+ #{createdBy},
+ #{createdAt}
+ )
@@ -70,6 +81,7 @@
SET
name = #{name},
+ `code` = #{code},
remark = #{remark},
updated_at = #{updatedAt},
updated_by = #{updatedBy}
@@ -102,6 +114,7 @@
base.`id`,
base.company_id,
base.`name` AS levelName,
+ base.`code` AS levelCode,
base.remark,
base.created_by,
base.created_at,
@@ -117,6 +130,9 @@
AND base.`name` like CONCAT('%',#{levelName},'%')
+
+ AND base.`code` like CONCAT('%',#{levelCode},'%')
+
AND pa.id IN #{item}
@@ -144,8 +160,8 @@
GROUP_CONCAT(pa.`name`) AS parentNames,
FROM
- dashboard_level_store base
- LEFT JOIN dashboard_level_relation_branch_store rela ON base.`id` = rela.store_id
+ dashboard_level_store_area_merge base
+ LEFT JOIN dashboard_level_relation_branch_store_area rela ON base.`id` = rela.store_area_id
LEFT JOIN dashboard_level_branch pa ON rela.branch_id = pa.`id`
WHERE
@@ -157,24 +173,10 @@
GROUP_CONCAT(pa.id) AS parentIds,
GROUP_CONCAT(pa.`name`) AS parentNames,
- FROM
- dashboard_level_area base
- LEFT JOIN dashboard_level_relation_store_area rela ON base.`id` = rela.area_id
- LEFT JOIN dashboard_level_store pa ON rela.store_id = pa.`id`
- WHERE
-
- GROUP BY base.`id`
-
-
- SELECT
- 4 AS levelType,
- GROUP_CONCAT(pa.id) AS parentIds,
- GROUP_CONCAT(pa.`name`) AS parentNames,
-
FROM
dashboard_level_site base
- LEFT JOIN dashboard_level_relation_area_site rela ON base.`id` = rela.site_id
- LEFT JOIN dashboard_level_area pa ON rela.area_id = pa.`id`
+ LEFT JOIN dashboard_level_relation_store_area_site rela ON base.`id` = rela.site_id
+ LEFT JOIN dashboard_level_store_area_merge pa ON rela.store_area_id = pa.`id`
WHERE
GROUP BY base.`id`
@@ -187,6 +189,7 @@
SELECT DISTINCT building_id
FROM (
+ -- BUILDING(直接绑定)
SELECT b.building_id
FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro
@@ -199,6 +202,7 @@
UNION ALL
+ -- SITE → BUILDING
SELECT b.building_id
FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro
@@ -214,66 +218,41 @@
UNION ALL
+ -- STORE_AREA → SITE → BUILDING(核心替代 AREA / STORE)
SELECT b.building_id
FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro
ON ru.level_role_id = ro.level_role_id
- JOIN dashboard_level_area a
- ON ro.ref_id = a.id AND a.flag = 0
- JOIN dashboard_level_relation_area_site ras
- ON a.id = ras.area_id
- JOIN dashboard_level_site s
- ON ras.site_id = s.id AND s.flag = 0
- JOIN dashboard_level_relation_site_building rsb
- ON s.id = rsb.site_id
- JOIN basic_building b
- ON rsb.building_id = b.building_id AND b.flag = 0
- WHERE ru.user_id = #{userId}
- AND ro.ref_type = 'AREA'
-
- UNION ALL
-
- SELECT b.building_id
- FROM dashboard_level_role_user ru
- JOIN dashboard_level_role_object ro
- ON ru.level_role_id = ro.level_role_id
- JOIN dashboard_level_store st
- ON ro.ref_id = st.id AND st.flag = 0
- JOIN dashboard_level_relation_store_area rsa
- ON st.id = rsa.store_id
- JOIN dashboard_level_area a
- ON rsa.area_id = a.id AND a.flag = 0
- JOIN dashboard_level_relation_area_site ras
- ON a.id = ras.area_id
+ JOIN dashboard_level_store_area_merge sam
+ ON ro.ref_id = sam.id AND sam.flag = 0
+ JOIN dashboard_level_relation_store_area_site rsas
+ ON sam.id = rsas.store_area_id
JOIN dashboard_level_site s
- ON ras.site_id = s.id AND s.flag = 0
+ ON rsas.site_id = s.id AND s.flag = 0
JOIN dashboard_level_relation_site_building rsb
ON s.id = rsb.site_id
JOIN basic_building b
ON rsb.building_id = b.building_id AND b.flag = 0
WHERE ru.user_id = #{userId}
- AND ro.ref_type = 'STORE'
+ AND ro.ref_type = 'STORE_AREA'
UNION ALL
+ -- BRANCH → STORE_AREA → SITE → BUILDING
SELECT b.building_id
FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro
ON ru.level_role_id = ro.level_role_id
JOIN dashboard_level_branch br
ON ro.ref_id = br.id AND br.flag = 0
- JOIN dashboard_level_relation_branch_store rbs
- ON br.id = rbs.branch_id
- JOIN dashboard_level_store st
- ON rbs.store_id = st.id AND st.flag = 0
- JOIN dashboard_level_relation_store_area rsa
- ON st.id = rsa.store_id
- JOIN dashboard_level_area a
- ON rsa.area_id = a.id AND a.flag = 0
- JOIN dashboard_level_relation_area_site ras
- ON a.id = ras.area_id
+ JOIN dashboard_level_relation_branch_store_area rbsa
+ ON br.id = rbsa.branch_id
+ JOIN dashboard_level_store_area_merge sam
+ ON rbsa.store_area_id = sam.id AND sam.flag = 0
+ JOIN dashboard_level_relation_store_area_site rsas
+ ON sam.id = rsas.store_area_id
JOIN dashboard_level_site s
- ON ras.site_id = s.id AND s.flag = 0
+ ON rsas.site_id = s.id AND s.flag = 0
JOIN dashboard_level_relation_site_building rsb
ON s.id = rsb.site_id
JOIN basic_building b
@@ -281,7 +260,7 @@
WHERE ru.user_id = #{userId}
AND ro.ref_type = 'BRANCH'
- ) t;
+ ) t
diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/DeleteLevelParam.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/DeleteLevelParam.java
index db7601b..9d19f7a 100644
--- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/DeleteLevelParam.java
+++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/DeleteLevelParam.java
@@ -19,8 +19,8 @@ public class DeleteLevelParam {
private String ids;
/**
- * 物件级别类型(1-支社、2-各支店、3-area、4-site)
+ * 物件级别类型 (1-支社 2-各支店·area 3-site)
*/
- @Schema(description = "物件级别类型(1-支社、2-各支店、3-area、4-site)",example = "2", required = true)
+ @Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true)
private Integer levelType;
}
\ No newline at end of file
diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/LevelEntity.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/LevelEntity.java
index 58f8895..dc2fc73 100644
--- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/LevelEntity.java
+++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/LevelEntity.java
@@ -1,5 +1,6 @@
package com.dongjian.dashboard.back.dto.level;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
@@ -32,6 +33,11 @@ public class LevelEntity {
*/
private String remark;
+ /**
+ * 编码
+ */
+ private String code;
+
/**
* 创建时间
*/
diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/OptLevelParam.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/OptLevelParam.java
index d9dba3a..78103b5 100644
--- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/OptLevelParam.java
+++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/OptLevelParam.java
@@ -27,9 +27,9 @@ public class OptLevelParam {
private String levelName;
/**
- * 物件级别类型:1-支社 2-各支店 3-area 4-site
+ * 物件级别类型 (1-支社 2-各支店·area 3-site)
*/
- @Schema(description = "级别类型:1-支社 2-各支店 3-area 4-site",example = "2", required = true)
+ @Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true)
private Integer levelType;
/**
@@ -48,6 +48,13 @@ public class OptLevelParam {
private List buildingIdList;
+ /**
+ * 编码
+ */
+ @Schema(description = "编码",example = "2cc")
+ private String code;
+
+
@Schema(description = "所属企业ID",example = "2", hidden = true)
private Long companyId;
}
\ No newline at end of file
diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/PageLevelSearchParam.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/PageLevelSearchParam.java
index a27a100..99477d2 100644
--- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/PageLevelSearchParam.java
+++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/PageLevelSearchParam.java
@@ -30,7 +30,13 @@ public class PageLevelSearchParam extends BaseSearchParams {
@Schema(description = "名称",example = "jyk2")
private String levelName;
- @Schema(description = "级别类型:1-支社 2-各支店 3-area 4-site",example = "2", required = true)
+ @Schema(description = "编码",example = "2cc")
+ private String levelCode;
+
+ /**
+ * 物件级别类型 (1-支社 2-各支店·area 3-site)
+ */
+ @Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true)
private Integer levelType;
}
\ No newline at end of file
diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/BuildingPathDTO.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/BuildingPathDTO.java
index daac4b4..2b9ae01 100644
--- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/BuildingPathDTO.java
+++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/BuildingPathDTO.java
@@ -4,15 +4,14 @@ import lombok.Data;
@Data
public class BuildingPathDTO {
+
private Long branchId;
- private Long storeId;
- private Long areaId;
+ private Long storeAreaId;
private Long siteId;
private Long buildingId;
private String branchName;
- private String storeName;
- private String areaName;
+ private String storeAreaName;
private String siteName;
private String buildingName;
}
\ No newline at end of file
diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/LevelPageDTO.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/LevelPageDTO.java
index 335132f..6a87423 100644
--- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/LevelPageDTO.java
+++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/LevelPageDTO.java
@@ -26,10 +26,16 @@ public class LevelPageDTO {
@Schema(description = "名称)",example = "2", required = true)
private String levelName;
+ /**
+ * 物件级别名称
+ */
+ @Schema(description = "编码)",example = "2cc", required = false)
+ private String levelCode;
+
/**
* 物件级别类型:1-支社 2-各支店 3-area 4-site
*/
- @Schema(description = "级别类型:1-支社 2-各支店 3-area 4-site",example = "2", required = true)
+ @Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true)
private Integer levelType;
/**
diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
index 04f0132..bb8d253 100644
--- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
+++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
@@ -825,4 +825,9 @@ public class CommonOpt {
};
}
+ public boolean isADSC(Long userId) {
+ Integer flag = basicUserMapperExt.getAdscFlagByUserId(userId);
+ return flag != null && flag == 1;
+ }
+
}
diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/LevelServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/LevelServiceImpl.java
index 042d40a..67e7fa4 100644
--- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/LevelServiceImpl.java
+++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/LevelServiceImpl.java
@@ -79,7 +79,7 @@ public class LevelServiceImpl implements LevelService {
//插入关联
insertLevelRelation(param, levelEntity, 1);
//单独插入楼宇和site关系
- if (4 == param.getLevelType()) {
+ if (3 == param.getLevelType()) {
insertSiteBuildingRelation(param, levelEntity, 1);
}
}
@@ -127,18 +127,13 @@ public class LevelServiceImpl implements LevelService {
switch (param.getLevelType()){
case 2:
levelRelationEntity.setParentField("branch_id");
- levelRelationEntity.setChildField("store_id");
- levelRelationEntity.setTableName("dashboard_level_relation_branch_store");
+ levelRelationEntity.setChildField("store_area_id");
+ levelRelationEntity.setTableName("dashboard_level_relation_branch_store_area");
break;
case 3:
- levelRelationEntity.setParentField("store_id");
- levelRelationEntity.setChildField("area_id");
- levelRelationEntity.setTableName("dashboard_level_relation_store_area");
- break;
- case 4:
- levelRelationEntity.setParentField("area_id");
+ levelRelationEntity.setParentField("store_area_id");
levelRelationEntity.setChildField("site_id");
- levelRelationEntity.setTableName("dashboard_level_relation_area_site");
+ levelRelationEntity.setTableName("dashboard_level_relation_store_area_site");
break;
}
levelRelationEntity.setParentId(parentId);
@@ -168,7 +163,7 @@ public class LevelServiceImpl implements LevelService {
if(StringUtils.isBlank(param.getLevelName()) || param.getLevelName().length() > 255){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [levelName] error");
}
- if(null == param.getLevelType() || param.getLevelType() < 1 || param.getLevelType() > 4){
+ if(null == param.getLevelType() || param.getLevelType() < 1 || param.getLevelType() > 3){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [levelType] error");
}
if(1 != param.getLevelType() && CollectionUtils.isEmpty(param.getParentIdList())){
@@ -209,23 +204,19 @@ public class LevelServiceImpl implements LevelService {
deleteLevelRelationEntity.setChildId(param.getId());
switch (param.getLevelType()){
case 2:
- deleteLevelRelationEntity.setChildField("store_id");
- deleteLevelRelationEntity.setTableName("dashboard_level_relation_branch_store");
+ deleteLevelRelationEntity.setChildField("store_area_id");
+ deleteLevelRelationEntity.setTableName("dashboard_level_relation_branch_store_area");
break;
case 3:
- deleteLevelRelationEntity.setChildField("area_id");
- deleteLevelRelationEntity.setTableName("dashboard_level_relation_store_area");
- break;
- case 4:
deleteLevelRelationEntity.setChildField("site_id");
- deleteLevelRelationEntity.setTableName("dashboard_level_relation_area_site");
+ deleteLevelRelationEntity.setTableName("dashboard_level_relation_store_area_site");
break;
}
levelMapperExt.deleteLevelRelation(deleteLevelRelationEntity);
//插入关联
insertLevelRelation(param, levelEntity, 2);
//单独插入楼宇和site关系
- if (4 == param.getLevelType()) {
+ if (3 == param.getLevelType()) {
insertSiteBuildingRelation(param, levelEntity, 2);
}
}
@@ -249,17 +240,13 @@ public class LevelServiceImpl implements LevelService {
switch (levelType){
case 1:
levelRelationEntity.setParentField("branch_id");
- levelRelationEntity.setTableName("dashboard_level_relation_branch_store");
+ levelRelationEntity.setTableName("dashboard_level_relation_branch_store_area");
break;
case 2:
- levelRelationEntity.setParentField("store_id");
- levelRelationEntity.setTableName("dashboard_level_relation_store_area");
+ levelRelationEntity.setParentField("store_area_id");
+ levelRelationEntity.setTableName("dashboard_level_relation_store_area_site");
break;
case 3:
- levelRelationEntity.setParentField("area_id");
- levelRelationEntity.setTableName("dashboard_level_relation_area_site");
- break;
- case 4:
levelRelationEntity.setParentField("site_id");
levelRelationEntity.setTableName("dashboard_level_relation_site_building");
break;
@@ -271,9 +258,8 @@ public class LevelServiceImpl implements LevelService {
//基础表删除
String tableName = switch (levelType) {
case 1 -> "dashboard_level_branch";
- case 2 -> "dashboard_level_store";
- case 3 -> "dashboard_level_area";
- case 4 -> "dashboard_level_site";
+ case 2 -> "dashboard_level_store_area_merge";
+ case 3 -> "dashboard_level_site";
default -> "";
};
levelMapperExt.deleteLevelByIdList(tableName, idList);
@@ -283,19 +269,15 @@ public class LevelServiceImpl implements LevelService {
switch (levelType){
case 1:
deleteEntity.setChildField("branch_id");
- deleteEntity.setTableName("dashboard_level_relation_branch_store");
+ deleteEntity.setTableName("dashboard_level_relation_branch_store_area");
break;
case 2:
- deleteEntity.setChildField("store_id");
- deleteEntity.setTableName("dashboard_level_relation_branch_store");
+ deleteEntity.setChildField("store_area_id");
+ deleteEntity.setTableName("dashboard_level_relation_branch_store_area");
break;
case 3:
- deleteEntity.setChildField("area_id");
- deleteEntity.setTableName("dashboard_level_relation_store_area");
- break;
- case 4:
deleteEntity.setChildField("site_id");
- deleteEntity.setTableName("dashboard_level_relation_area_site");
+ deleteEntity.setTableName("dashboard_level_relation_store_area_site");
break;
}
levelMapperExt.deleteLevelRelationByIdList(deleteEntity, idList);
@@ -330,7 +312,7 @@ public class LevelServiceImpl implements LevelService {
PageHelper.startPage(pageSearchParam.getPageNum() == null ? 1 : pageSearchParam.getPageNum(), pageSearchParam.getPageSize() == null ? 20 : pageSearchParam.getPageSize());
List resultList = levelMapperExt.getListPage(pageSearchParam);
- if (4 == levelType && CollectionUtils.isNotEmpty(resultList)){
+ if (3 == levelType && CollectionUtils.isNotEmpty(resultList)){
for (LevelPageDTO levelPageDTO : resultList) {
List buildingList = basicBuildingMapperExt.getBuildingListBySiteId(levelPageDTO.getId());
if (CollectionUtils.isNotEmpty(buildingList)) {
diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java
index 2ddfa37..2b52fc6 100644
--- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java
+++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java
@@ -274,37 +274,57 @@ public class OverviewServiceImpl implements OverviewService {
@Override
public SimpleDataResponse> getOverallBoundLevel(Long companyId, Long userId, Integer languageType) {
+
+ // 20260429需求:ADSC用户,楼宇以上能看全部,到了楼宇这一级,还是要看绑定的角色对应的楼宇
+ boolean isADSC = commonOpt.isADSC(userId);
+
+ List bindBuildingIdList = commonOpt.getBindBuildingIdList(userId, List.of(companyId));
+
+ Set bindBuildingIdSet =
+ bindBuildingIdList == null || bindBuildingIdList.isEmpty()
+ ? Collections.emptySet()
+ : new HashSet<>(bindBuildingIdList);
+
Map buildingMap = new HashMap<>();
buildingMap.put("companyId", companyId);
- buildingMap.put("bindBuildingIdList", commonOpt.getBindBuildingIdList(userId, List.of(companyId)));
- List selectBuildingFullPath = levelMapperExt.selectBuildingFullPath(buildingMap);
+ if (isADSC) {
+ buildingMap.put("isADSC", true);
+ } else {
+ // 普通用户:全链路限制 building
+ buildingMap.put("isADSC", false);
+ buildingMap.put("bindBuildingIdList", bindBuildingIdList);
+ }
- // 构建节点
- Map nodeMap = new HashMap<>();
+ List list = levelMapperExt.selectBuildingFullPath(buildingMap);
- for (BuildingPathDTO row : selectBuildingFullPath) {
+ Map nodeMap = new LinkedHashMap<>();
- String branchKey = "BRANCH-" + row.getBranchId();
-
- String storeKey = "STORE-" + row.getStoreId() + "-" + branchKey;
- String areaKey = "AREA-" + row.getAreaId() + "-" + storeKey;
- String siteKey = "SITE-" + row.getSiteId() + "-" + areaKey;
- String buildingKey = "BUILDING-" + row.getBuildingId() + "-" + siteKey;
+ for (BuildingPathDTO row : list) {
+ String branchKey = "BRANCH-" + row.getBranchId();
nodeMap.putIfAbsent(branchKey,
createNode(branchKey, "ROOT", row.getBranchName()));
- nodeMap.putIfAbsent(storeKey,
- createNode(storeKey, branchKey, row.getStoreName()));
-
- nodeMap.putIfAbsent(areaKey,
- createNode(areaKey, storeKey, row.getAreaName()));
+ if (row.getStoreAreaId() == null) {
+ continue;
+ }
+ String storeAreaKey = "STORE_AREA-" + row.getStoreAreaId() + "-" + branchKey;
+ nodeMap.putIfAbsent(storeAreaKey,
+ createNode(storeAreaKey, branchKey, row.getStoreAreaName()));
+ if (row.getSiteId() == null) {
+ continue;
+ }
+ String siteKey = "SITE-" + row.getSiteId() + "-" + storeAreaKey;
nodeMap.putIfAbsent(siteKey,
- createNode(siteKey, areaKey, row.getSiteName()));
+ createNode(siteKey, storeAreaKey, row.getSiteName()));
- nodeMap.putIfAbsent(buildingKey,
- createNode(buildingKey, siteKey, row.getBuildingName()));
+ boolean isAllowedBuilding = !isADSC || bindBuildingIdSet.contains(row.getBuildingId());
+ if (isAllowedBuilding) {
+ String buildingKey = "BUILDING-" + row.getBuildingId() + "-" + siteKey;
+ nodeMap.putIfAbsent(buildingKey,
+ createNode(buildingKey, siteKey, row.getBuildingName()));
+ }
}
List allNodes = new ArrayList<>(nodeMap.values());