Browse Source

支店区域不拆分,恢复回去

jwy
review512jwy@163.com 2 days ago
parent
commit
b3f3fcc4a0
  1. 2
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelRoleMapperExt.java
  2. 123
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml
  3. 44
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml
  4. 2
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/DeleteLevelParam.java
  5. 4
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/OptLevelParam.java
  6. 5
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/PageLevelSearchParam.java
  7. 7
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/BuildingPathDTO.java
  8. 2
      dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/LevelPageDTO.java
  9. 50
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/LevelRoleServiceImpl.java
  10. 58
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/LevelServiceImpl.java
  11. 19
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java

2
dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelRoleMapperExt.java

@ -40,6 +40,4 @@ public interface LevelRoleMapperExt extends DashboardLevelRoleMapper {
List<UserBindLevelRoleVO> getCanBeBoundUserPage(BaseSearchParams pageSearchParam); List<UserBindLevelRoleVO> getCanBeBoundUserPage(BaseSearchParams pageSearchParam);
Integer checkLevelManager(Long userId); Integer checkLevelManager(Long userId);
List<RefKey> selectAllStoreAreas(Map<String, Object> levelMap);
} }

123
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml

@ -6,15 +6,17 @@
<sql id="selectTable"> <sql id="selectTable">
<choose> <choose>
<when test="levelType == 1">dashboard_level_branch</when> <when test="levelType == 1">dashboard_level_branch</when>
<when test="levelType == 2">dashboard_level_store_area_merge</when> <when test="levelType == 2">dashboard_level_store</when>
<when test="levelType == 3">dashboard_level_site</when> <when test="levelType == 3">dashboard_level_area</when>
<when test="levelType == 4">dashboard_level_site</when>
</choose> </choose>
</sql> </sql>
<sql id="selectParentTable"> <sql id="selectParentTable">
<choose> <choose>
<when test="levelType == 2">dashboard_level_branch</when> <when test="levelType == 2">dashboard_level_branch</when>
<when test="levelType == 3">dashboard_level_store_area_merge</when> <when test="levelType == 3">dashboard_level_store</when>
<when test="levelType == 4">dashboard_level_area</when>
</choose> </choose>
</sql> </sql>
@ -168,8 +170,8 @@
GROUP_CONCAT(pa.`name`) AS parentNames, GROUP_CONCAT(pa.`name`) AS parentNames,
<include refid="commonField" /> <include refid="commonField" />
FROM FROM
dashboard_level_store_area_merge base dashboard_level_store base
LEFT JOIN dashboard_level_relation_branch_store_area rela ON base.`id` = rela.store_area_id LEFT JOIN dashboard_level_relation_branch_store rela ON base.`id` = rela.store_id
LEFT JOIN dashboard_level_branch pa ON rela.branch_id = pa.`id` LEFT JOIN dashboard_level_branch pa ON rela.branch_id = pa.`id`
WHERE WHERE
<include refid="commonWhere" /> <include refid="commonWhere" />
@ -181,10 +183,24 @@
GROUP_CONCAT(pa.id) AS parentIds, GROUP_CONCAT(pa.id) AS parentIds,
GROUP_CONCAT(pa.`name`) AS parentNames, GROUP_CONCAT(pa.`name`) AS parentNames,
<include refid="commonField" /> <include refid="commonField" />
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
<include refid="commonWhere" />
GROUP BY base.`id`
</when>
<when test="levelType == 4">
SELECT
4 AS levelType,
GROUP_CONCAT(pa.id) AS parentIds,
GROUP_CONCAT(pa.`name`) AS parentNames,
<include refid="commonField" />
FROM FROM
dashboard_level_site base dashboard_level_site base
LEFT JOIN dashboard_level_relation_store_area_site rela ON base.`id` = rela.site_id LEFT JOIN dashboard_level_relation_area_site rela ON base.`id` = rela.site_id
LEFT JOIN dashboard_level_store_area_merge pa ON rela.store_area_id = pa.`id` LEFT JOIN dashboard_level_area pa ON rela.area_id = pa.`id`
WHERE WHERE
<include refid="commonWhere" /> <include refid="commonWhere" />
GROUP BY base.`id` GROUP BY base.`id`
@ -197,7 +213,7 @@
SELECT DISTINCT building_id SELECT DISTINCT building_id
FROM ( FROM (
-- BUILDING(直接绑定) -- BUILDING
SELECT b.building_id SELECT b.building_id
FROM dashboard_level_role_user ru FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro JOIN dashboard_level_role_object ro
@ -226,41 +242,69 @@
UNION ALL UNION ALL
-- STORE_AREA → SITE → BUILDING(核心替代 AREA / 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_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
-- STORE → AREA → SITE → BUILDING
SELECT b.building_id SELECT b.building_id
FROM dashboard_level_role_user ru FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro JOIN dashboard_level_role_object ro
ON ru.level_role_id = ro.level_role_id ON ru.level_role_id = ro.level_role_id
JOIN dashboard_level_store_area_merge sam JOIN dashboard_level_store st
ON ro.ref_id = sam.id AND sam.flag = 0 ON ro.ref_id = st.id AND st.flag = 0
JOIN dashboard_level_relation_store_area_site rsas JOIN dashboard_level_relation_store_area rsa
ON sam.id = rsas.store_area_id 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_site s JOIN dashboard_level_site s
ON rsas.site_id = s.id AND s.flag = 0 ON ras.site_id = s.id AND s.flag = 0
JOIN dashboard_level_relation_site_building rsb JOIN dashboard_level_relation_site_building rsb
ON s.id = rsb.site_id ON s.id = rsb.site_id
JOIN basic_building b JOIN basic_building b
ON rsb.building_id = b.building_id AND b.flag = 0 ON rsb.building_id = b.building_id AND b.flag = 0
WHERE ru.user_id = #{userId} WHERE ru.user_id = #{userId}
AND ro.ref_type = 'STORE_AREA' AND ro.ref_type = 'STORE'
UNION ALL UNION ALL
-- BRANCH → STORE_AREA → SITE → BUILDING -- BRANCH → STOREAREA → SITE → BUILDING
SELECT b.building_id SELECT b.building_id
FROM dashboard_level_role_user ru FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro JOIN dashboard_level_role_object ro
ON ru.level_role_id = ro.level_role_id ON ru.level_role_id = ro.level_role_id
JOIN dashboard_level_branch br JOIN dashboard_level_branch br
ON ro.ref_id = br.id AND br.flag = 0 ON ro.ref_id = br.id AND br.flag = 0
JOIN dashboard_level_relation_branch_store_area rbsa JOIN dashboard_level_relation_branch_store rbs
ON br.id = rbsa.branch_id ON br.id = rbs.branch_id
JOIN dashboard_level_store_area_merge sam JOIN dashboard_level_store st
ON rbsa.store_area_id = sam.id AND sam.flag = 0 ON rbs.store_id = st.id AND st.flag = 0
JOIN dashboard_level_relation_store_area_site rsas JOIN dashboard_level_relation_store_area rsa
ON sam.id = rsas.store_area_id 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_site s JOIN dashboard_level_site s
ON rsas.site_id = s.id AND s.flag = 0 ON ras.site_id = s.id AND s.flag = 0
JOIN dashboard_level_relation_site_building rsb JOIN dashboard_level_relation_site_building rsb
ON s.id = rsb.site_id ON s.id = rsb.site_id
JOIN basic_building b JOIN basic_building b
@ -268,7 +312,7 @@
WHERE ru.user_id = #{userId} WHERE ru.user_id = #{userId}
AND ro.ref_type = 'BRANCH' AND ro.ref_type = 'BRANCH'
) t ) t;
</select> </select>
<select id="selectBuildingFullPath" resultType="com.dongjian.dashboard.back.vo.level.BuildingPathDTO"> <select id="selectBuildingFullPath" resultType="com.dongjian.dashboard.back.vo.level.BuildingPathDTO">
@ -276,8 +320,11 @@
br.id AS branch_id, br.id AS branch_id,
br.name AS branch_name, br.name AS branch_name,
sam.id AS store_area_id, st.id AS store_id,
sam.name AS store_area_name, st.name AS store_name,
a.id AS area_id,
a.name AS area_name,
s.id AS site_id, s.id AS site_id,
s.name AS site_name, s.name AS site_name,
@ -288,13 +335,17 @@
<when test="isADSC != null and isADSC"> <when test="isADSC != null and isADSC">
FROM dashboard_level_branch br FROM dashboard_level_branch br
LEFT JOIN dashboard_level_relation_branch_store_area rbsa ON rbsa.branch_id = br.id AND br.flag = 0 AND br.company_id = #{companyId} LEFT JOIN dashboard_level_relation_branch_store rbs ON rbs.branch_id = br.id AND br.flag = 0 AND br.company_id = #{companyId}
LEFT JOIN dashboard_level_store st ON st.id = rbs.store_id AND st.flag = 0
LEFT JOIN dashboard_level_store_area_merge sam ON sam.id = rbsa.store_area_id AND sam.flag = 0 LEFT JOIN dashboard_level_relation_store_area rsa ON rsa.store_id = st.id
LEFT JOIN dashboard_level_relation_store_area_site rsas ON rsas.store_area_id = sam.id LEFT JOIN dashboard_level_area a ON a.id = rsa.area_id AND a.flag = 0
LEFT JOIN dashboard_level_site s ON s.id = rsas.site_id AND s.flag = 0 LEFT JOIN dashboard_level_relation_area_site ras ON ras.area_id = a.id
LEFT JOIN dashboard_level_site s ON s.id = ras.site_id AND s.flag = 0
LEFT JOIN dashboard_level_relation_site_building rsb ON rsb.site_id = s.id LEFT JOIN dashboard_level_relation_site_building rsb ON rsb.site_id = s.id
@ -307,13 +358,17 @@
JOIN dashboard_level_site s ON rsb.site_id = s.id AND s.flag = 0 JOIN dashboard_level_site s ON rsb.site_id = s.id AND s.flag = 0
JOIN dashboard_level_relation_store_area_site rsas ON s.id = rsas.site_id JOIN dashboard_level_relation_area_site ras ON s.id = ras.site_id
JOIN dashboard_level_area a ON ras.area_id = a.id AND a.flag = 0
JOIN dashboard_level_relation_store_area rsa ON a.id = rsa.area_id
JOIN dashboard_level_store_area_merge sam ON rsas.store_area_id = sam.id AND sam.flag = 0 JOIN dashboard_level_store st ON rsa.store_id = st.id AND st.flag = 0
JOIN dashboard_level_relation_branch_store_area rbsa ON sam.id = rbsa.store_area_id JOIN dashboard_level_relation_branch_store rbs ON st.id = rbs.store_id
JOIN dashboard_level_branch br ON rbsa.branch_id = br.id AND br.flag = 0 JOIN dashboard_level_branch br ON rbs.branch_id = br.id AND br.flag = 0
</otherwise> </otherwise>
</choose> </choose>
<where> <where>

44
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml

@ -97,42 +97,28 @@
WHERE b.flag = 0 and b.company_id = #{companyId} WHERE b.flag = 0 and b.company_id = #{companyId}
</select> </select>
<select id="selectAllStoreAreas" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT s.id,
s.name,
r.branch_id AS parentId,
'STORE_AREA' AS type
FROM dashboard_level_store_area_merge s
LEFT JOIN dashboard_level_relation_branch_store_area r
ON s.id = r.store_area_id
WHERE s.flag = 0 and s.company_id = #{companyId}
</select>
<!-- 查用户绑定节点 --> <!-- 查用户绑定节点 -->
<select id="selectUserRefs" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey"> <select id="selectUserRefs" resultType="com.dongjian.dashboard.back.vo.levelrole.RefKey">
SELECT SELECT o.ref_type AS type,
o.ref_type AS type, o.ref_id AS id
o.ref_id AS id
FROM dashboard_level_role_user u FROM dashboard_level_role_user u
INNER JOIN dashboard_level_role_object o INNER JOIN dashboard_level_role_object o
ON u.level_role_id = o.level_role_id ON u.level_role_id = o.level_role_id
LEFT JOIN dashboard_level_branch b LEFT JOIN dashboard_level_branch b
ON o.ref_type = 'BRANCH' AND o.ref_id = b.id ON o.ref_type = 'BRANCH' AND o.ref_id = b.id
LEFT JOIN dashboard_level_store s
LEFT JOIN dashboard_level_store_area_merge sam ON o.ref_type = 'STORE' AND o.ref_id = s.id
ON o.ref_type = 'STORE_AREA' AND o.ref_id = sam.id LEFT JOIN dashboard_level_area a
ON o.ref_type = 'AREA' AND o.ref_id = a.id
LEFT JOIN dashboard_level_site si LEFT JOIN dashboard_level_site si
ON o.ref_type = 'SITE' AND o.ref_id = si.id ON o.ref_type = 'SITE' AND o.ref_id = si.id
LEFT JOIN basic_building bu LEFT JOIN basic_building bu
ON o.ref_type = 'BUILDING' AND o.ref_id = bu.building_id ON o.ref_type = 'BUILDING' AND o.ref_id = bu.building_id
WHERE u.user_id = #{userId} WHERE u.user_id = #{userId}
AND CASE o.ref_type AND CASE o.ref_type
WHEN 'BRANCH' THEN IFNULL(b.flag, 1) WHEN 'BRANCH' THEN IFNULL(b.flag, 1)
WHEN 'STORE_AREA' THEN IFNULL(sam.flag, 1) WHEN 'STORE' THEN IFNULL(s.flag, 1)
WHEN 'AREA' THEN IFNULL(a.flag, 1)
WHEN 'SITE' THEN IFNULL(si.flag, 1) WHEN 'SITE' THEN IFNULL(si.flag, 1)
WHEN 'BUILDING' THEN IFNULL(bu.flag, 1) WHEN 'BUILDING' THEN IFNULL(bu.flag, 1)
END = 0 END = 0
@ -145,24 +131,22 @@
FROM dashboard_level_role_object dlro FROM dashboard_level_role_object dlro
INNER JOIN dashboard_level_role dlr INNER JOIN dashboard_level_role dlr
ON dlr.id = dlro.level_role_id ON dlr.id = dlro.level_role_id
LEFT JOIN dashboard_level_branch b LEFT JOIN dashboard_level_branch b
ON dlro.ref_type = 'BRANCH' AND dlro.ref_id = b.id ON dlro.ref_type = 'BRANCH' AND dlro.ref_id = b.id
LEFT JOIN dashboard_level_store s
LEFT JOIN dashboard_level_store_area_merge sam ON dlro.ref_type = 'STORE' AND dlro.ref_id = s.id
ON dlro.ref_type = 'STORE_AREA' AND dlro.ref_id = sam.id LEFT JOIN dashboard_level_area a
ON dlro.ref_type = 'AREA' AND dlro.ref_id = a.id
LEFT JOIN dashboard_level_site si LEFT JOIN dashboard_level_site si
ON dlro.ref_type = 'SITE' AND dlro.ref_id = si.id ON dlro.ref_type = 'SITE' AND dlro.ref_id = si.id
LEFT JOIN basic_building bu LEFT JOIN basic_building bu
ON dlro.ref_type = 'BUILDING' AND dlro.ref_id = bu.building_id ON dlro.ref_type = 'BUILDING' AND dlro.ref_id = bu.building_id
WHERE dlr.flag != 1 WHERE dlr.flag != 1
AND dlr.id = #{roleId} AND dlr.id = #{roleId}
AND CASE dlro.ref_type AND CASE dlro.ref_type
WHEN 'BRANCH' THEN IFNULL(b.flag, 1) WHEN 'BRANCH' THEN IFNULL(b.flag, 1)
WHEN 'STORE_AREA' THEN IFNULL(sam.flag, 1) WHEN 'STORE' THEN IFNULL(s.flag, 1)
WHEN 'AREA' THEN IFNULL(a.flag, 1)
WHEN 'SITE' THEN IFNULL(si.flag, 1) WHEN 'SITE' THEN IFNULL(si.flag, 1)
WHEN 'BUILDING' THEN IFNULL(bu.flag, 1) WHEN 'BUILDING' THEN IFNULL(bu.flag, 1)
END = 0 END = 0

2
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/DeleteLevelParam.java

@ -21,6 +21,6 @@ public class DeleteLevelParam {
/** /**
* 物件级别类型 1-支社 2-各支店·area 3-site * 物件级别类型 1-支社 2-各支店·area 3-site
*/ */
@Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true) @Schema(description = "物件级别类型(1-支社、2-各支店、3-area、4-site)",example = "2", required = true)
private Integer levelType; private Integer levelType;
} }

4
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; private String levelName;
/** /**
* 物件级别类型 1-支社 2-各支店·area 3-site * 物件级别类型1-支社 2-各支店 3-area 4-site
*/ */
@Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true) @Schema(description = "级别类型:1-支社 2-各支店 3-area 4-site",example = "2", required = true)
private Integer levelType; private Integer levelType;
/** /**

5
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/level/PageLevelSearchParam.java

@ -33,10 +33,7 @@ public class PageLevelSearchParam extends BaseSearchParams {
@Schema(description = "编码",example = "2cc") @Schema(description = "编码",example = "2cc")
private String levelCode; private String levelCode;
/** @Schema(description = "级别类型:1-支社 2-各支店 3-area 4-site",example = "2", required = true)
* 物件级别类型 1-支社 2-各支店·area 3-site
*/
@Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true)
private Integer levelType; private Integer levelType;
} }

7
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/BuildingPathDTO.java

@ -4,14 +4,15 @@ import lombok.Data;
@Data @Data
public class BuildingPathDTO { public class BuildingPathDTO {
private Long branchId; private Long branchId;
private Long storeAreaId; private Long storeId;
private Long areaId;
private Long siteId; private Long siteId;
private Long buildingId; private Long buildingId;
private String branchName; private String branchName;
private String storeAreaName; private String storeName;
private String areaName;
private String siteName; private String siteName;
private String buildingName; private String buildingName;
} }

2
dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/level/LevelPageDTO.java

@ -35,7 +35,7 @@ public class LevelPageDTO {
/** /**
* 物件级别类型1-支社 2-各支店 3-area 4-site * 物件级别类型1-支社 2-各支店 3-area 4-site
*/ */
@Schema(description = "级别类型:1-支社 2-各支店·area 3-site ",example = "2", required = true) @Schema(description = "级别类型:1-支社 2-各支店 3-area 4-site",example = "2", required = true)
private Integer levelType; private Integer levelType;
/** /**

50
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/LevelRoleServiceImpl.java

@ -332,7 +332,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
Map<String, Object> levelMap = new HashMap<>(); Map<String, Object> levelMap = new HashMap<>();
levelMap.put("companyId", companyId); levelMap.put("companyId", companyId);
List<RefKey> branches = levelRoleMapperExt.selectAllBranches(levelMap); List<RefKey> branches = levelRoleMapperExt.selectAllBranches(levelMap);
List<RefKey> storeAreas = levelRoleMapperExt.selectAllStoreAreas(levelMap); List<RefKey> stores = levelRoleMapperExt.selectAllStores(levelMap);
List<RefKey> areas = levelRoleMapperExt.selectAllAreas(levelMap);
List<RefKey> sites = levelRoleMapperExt.selectAllSites(levelMap); List<RefKey> sites = levelRoleMapperExt.selectAllSites(levelMap);
List<RefKey> buildings = levelRoleMapperExt.selectAllBuildings(levelMap); List<RefKey> buildings = levelRoleMapperExt.selectAllBuildings(levelMap);
@ -340,7 +341,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
List<RefKey> userRefs = new ArrayList<>(); List<RefKey> userRefs = new ArrayList<>();
if (levelRoleMapperExt.checkLevelManager(userId) > 0){ if (levelRoleMapperExt.checkLevelManager(userId) > 0){
userRefs.addAll(branches); userRefs.addAll(branches);
userRefs.addAll(storeAreas); userRefs.addAll(stores);
userRefs.addAll(areas);
userRefs.addAll(sites); userRefs.addAll(sites);
userRefs.addAll(buildings); userRefs.addAll(buildings);
} else { } else {
@ -348,16 +350,17 @@ public class LevelRoleServiceImpl implements LevelRoleService {
paramMap.put("userId", userId); paramMap.put("userId", userId);
userRefs = levelRoleMapperExt.selectUserRefs(paramMap); userRefs = levelRoleMapperExt.selectUserRefs(paramMap);
// 名称填充 // 名称填充
fillNames(userRefs, branches, storeAreas, sites, buildings); fillNames(userRefs, branches, stores, areas, sites, buildings);
} }
// 构建 parentId → List<RefKey> 的多值 Map // 构建 parentId → List<RefKey> 的多值 Map
Map<Long, List<RefKey>> storeAreaMap = groupByParent(storeAreas); Map<Long, List<RefKey>> storeMap = groupByParent(stores);
Map<Long, List<RefKey>> areaMap = groupByParent(areas);
Map<Long, List<RefKey>> siteMap = groupByParent(sites); Map<Long, List<RefKey>> siteMap = groupByParent(sites);
Map<Long, List<RefKey>> buildingMap = groupByParent(buildings); Map<Long, List<RefKey>> buildingMap = groupByParent(buildings);
// 用于去重,避免重复根节点 // 用于去重,避免重复根节点
Set<String> visitedKeys = new HashSet<>(); // Set<String> visitedKeys = new HashSet<>();
// 组装树结构 // 组装树结构
List<TreeMenusDTO> result = new ArrayList<>(); List<TreeMenusDTO> result = new ArrayList<>();
@ -367,8 +370,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
TreeMenusDTO root = new TreeMenusDTO(); TreeMenusDTO root = new TreeMenusDTO();
String rootKey = ref.getType() + "-" + ref.getId(); String rootKey = ref.getType() + "-" + ref.getId();
if (visitedKeys.contains(rootKey)) continue; // 已存在跳过 // if (visitedKeys.contains(rootKey)) continue; // 已存在跳过
visitedKeys.add(rootKey); // visitedKeys.add(rootKey);
root.setKey(rootKey); root.setKey(rootKey);
root.setLabel(ref.getName()); root.setLabel(ref.getName());
@ -377,7 +380,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
// 构建该节点下的子树 // 构建该节点下的子树
root.setChildren(buildTree( root.setChildren(buildTree(
ref.getType(), ref.getId(), rootKey, ref.getType(), ref.getId(), rootKey,
storeAreaMap, siteMap, buildingMap, visitedKeys storeMap, areaMap, siteMap, buildingMap
// , visitedKeys
)); ));
result.add(root); result.add(root);
} }
@ -395,19 +399,22 @@ public class LevelRoleServiceImpl implements LevelRoleService {
private void fillNames(List<RefKey> userRefs, private void fillNames(List<RefKey> userRefs,
List<RefKey> branches, List<RefKey> branches,
List<RefKey> storeAreas, List<RefKey> stores,
List<RefKey> areas,
List<RefKey> sites, List<RefKey> sites,
List<RefKey> buildings) { List<RefKey> buildings) {
Map<Long, String> branchName = toNameMap(branches); Map<Long, String> branchName = toNameMap(branches);
Map<Long, String> storeAreaName = toNameMap(storeAreas); Map<Long, String> storeName = toNameMap(stores);
Map<Long, String> areaName = toNameMap(areas);
Map<Long, String> siteName = toNameMap(sites); Map<Long, String> siteName = toNameMap(sites);
Map<Long, String> buildingName = toNameMap(buildings); Map<Long, String> buildingName = toNameMap(buildings);
userRefs.removeIf(r -> { userRefs.removeIf(r -> {
String name = switch (r.getType()) { String name = switch (r.getType()) {
case "BRANCH" -> branchName.get(r.getId()); case "BRANCH" -> branchName.get(r.getId());
case "STORE_AREA" -> storeAreaName.get(r.getId()); case "STORE" -> storeName.get(r.getId());
case "AREA" -> areaName.get(r.getId());
case "SITE" -> siteName.get(r.getId()); case "SITE" -> siteName.get(r.getId());
case "BUILDING" -> buildingName.get(r.getId()); case "BUILDING" -> buildingName.get(r.getId());
default -> null; default -> null;
@ -437,18 +444,20 @@ public class LevelRoleServiceImpl implements LevelRoleService {
private List<TreeMenusDTO> buildTree(String type, private List<TreeMenusDTO> buildTree(String type,
Long parentId, Long parentId,
String parentKey, String parentKey,
Map<Long, List<RefKey>> storeAreaMap, Map<Long, List<RefKey>> storeMap,
Map<Long, List<RefKey>> areaMap,
Map<Long, List<RefKey>> siteMap, Map<Long, List<RefKey>> siteMap,
Map<Long, List<RefKey>> buildingMap, Map<Long, List<RefKey>> buildingMap
Set<String> visitedKeys) { // ,Set<String> visitedKeys
) {
Map<Long, List<RefKey>> childMap = switch (type) { Map<Long, List<RefKey>> childMap = switch (type) {
case "BRANCH" -> storeAreaMap; case "BRANCH" -> storeMap;
case "STORE_AREA" -> siteMap; case "STORE" -> areaMap;
case "AREA" -> siteMap;
case "SITE" -> buildingMap; case "SITE" -> buildingMap;
default -> null; default -> null;
}; };
if (childMap == null) return Collections.emptyList(); if (childMap == null) return Collections.emptyList();
// 直接取 parentId 的子节点 // 直接取 parentId 的子节点
@ -460,8 +469,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
for (RefKey c : children) { for (RefKey c : children) {
String key = c.getType() + "-" + c.getId(); String key = c.getType() + "-" + c.getId();
if (visitedKeys.contains(key)) continue; // 已存在跳过 // if (visitedKeys.contains(key)) continue; // 已存在跳过
visitedKeys.add(key); // visitedKeys.add(key);
TreeMenusDTO node = new TreeMenusDTO(); TreeMenusDTO node = new TreeMenusDTO();
node.setKey(key); node.setKey(key);
@ -470,7 +479,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
node.setChildren(buildTree( node.setChildren(buildTree(
c.getType(), c.getId(), key, c.getType(), c.getId(), key,
storeAreaMap, siteMap, buildingMap, visitedKeys storeMap, areaMap, siteMap, buildingMap
// , visitedKeys
)); ));
list.add(node); list.add(node);

58
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); insertLevelRelation(param, levelEntity, 1);
//单独插入楼宇和site关系 //单独插入楼宇和site关系
if (3 == param.getLevelType()) { if (4 == param.getLevelType()) {
insertSiteBuildingRelation(param, levelEntity, 1); insertSiteBuildingRelation(param, levelEntity, 1);
} }
} }
@ -127,13 +127,18 @@ public class LevelServiceImpl implements LevelService {
switch (param.getLevelType()){ switch (param.getLevelType()){
case 2: case 2:
levelRelationEntity.setParentField("branch_id"); levelRelationEntity.setParentField("branch_id");
levelRelationEntity.setChildField("store_area_id"); levelRelationEntity.setChildField("store_id");
levelRelationEntity.setTableName("dashboard_level_relation_branch_store_area"); levelRelationEntity.setTableName("dashboard_level_relation_branch_store");
break; break;
case 3: case 3:
levelRelationEntity.setParentField("store_area_id"); levelRelationEntity.setParentField("store_id");
levelRelationEntity.setChildField("area_id");
levelRelationEntity.setTableName("dashboard_level_relation_store_area");
break;
case 4:
levelRelationEntity.setParentField("area_id");
levelRelationEntity.setChildField("site_id"); levelRelationEntity.setChildField("site_id");
levelRelationEntity.setTableName("dashboard_level_relation_store_area_site"); levelRelationEntity.setTableName("dashboard_level_relation_area_site");
break; break;
} }
levelRelationEntity.setParentId(parentId); levelRelationEntity.setParentId(parentId);
@ -163,7 +168,7 @@ public class LevelServiceImpl implements LevelService {
if(StringUtils.isBlank(param.getLevelName()) || param.getLevelName().length() > 255){ if(StringUtils.isBlank(param.getLevelName()) || param.getLevelName().length() > 255){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [levelName] error"); return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [levelName] error");
} }
if(null == param.getLevelType() || param.getLevelType() < 1 || param.getLevelType() > 3){ if(null == param.getLevelType() || param.getLevelType() < 1 || param.getLevelType() > 4){
return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [levelType] error"); return new SimpleDataResponse(ResponseCode.MSG_ERROR, "Parameter [levelType] error");
} }
if(1 != param.getLevelType() && CollectionUtils.isEmpty(param.getParentIdList())){ if(1 != param.getLevelType() && CollectionUtils.isEmpty(param.getParentIdList())){
@ -204,19 +209,23 @@ public class LevelServiceImpl implements LevelService {
deleteLevelRelationEntity.setChildId(param.getId()); deleteLevelRelationEntity.setChildId(param.getId());
switch (param.getLevelType()){ switch (param.getLevelType()){
case 2: case 2:
deleteLevelRelationEntity.setChildField("store_area_id"); deleteLevelRelationEntity.setChildField("store_id");
deleteLevelRelationEntity.setTableName("dashboard_level_relation_branch_store_area"); deleteLevelRelationEntity.setTableName("dashboard_level_relation_branch_store");
break; break;
case 3: case 3:
deleteLevelRelationEntity.setChildField("area_id");
deleteLevelRelationEntity.setTableName("dashboard_level_relation_store_area");
break;
case 4:
deleteLevelRelationEntity.setChildField("site_id"); deleteLevelRelationEntity.setChildField("site_id");
deleteLevelRelationEntity.setTableName("dashboard_level_relation_store_area_site"); deleteLevelRelationEntity.setTableName("dashboard_level_relation_area_site");
break; break;
} }
levelMapperExt.deleteLevelRelation(deleteLevelRelationEntity); levelMapperExt.deleteLevelRelation(deleteLevelRelationEntity);
//插入关联 //插入关联
insertLevelRelation(param, levelEntity, 2); insertLevelRelation(param, levelEntity, 2);
//单独插入楼宇和site关系 //单独插入楼宇和site关系
if (3 == param.getLevelType()) { if (4 == param.getLevelType()) {
insertSiteBuildingRelation(param, levelEntity, 2); insertSiteBuildingRelation(param, levelEntity, 2);
} }
} }
@ -240,13 +249,17 @@ public class LevelServiceImpl implements LevelService {
switch (levelType){ switch (levelType){
case 1: case 1:
levelRelationEntity.setParentField("branch_id"); levelRelationEntity.setParentField("branch_id");
levelRelationEntity.setTableName("dashboard_level_relation_branch_store_area"); levelRelationEntity.setTableName("dashboard_level_relation_branch_store");
break; break;
case 2: case 2:
levelRelationEntity.setParentField("store_area_id"); levelRelationEntity.setParentField("store_id");
levelRelationEntity.setTableName("dashboard_level_relation_store_area_site"); levelRelationEntity.setTableName("dashboard_level_relation_store_area");
break; break;
case 3: case 3:
levelRelationEntity.setParentField("area_id");
levelRelationEntity.setTableName("dashboard_level_relation_area_site");
break;
case 4:
levelRelationEntity.setParentField("site_id"); levelRelationEntity.setParentField("site_id");
levelRelationEntity.setTableName("dashboard_level_relation_site_building"); levelRelationEntity.setTableName("dashboard_level_relation_site_building");
break; break;
@ -258,8 +271,9 @@ public class LevelServiceImpl implements LevelService {
//基础表删除 //基础表删除
String tableName = switch (levelType) { String tableName = switch (levelType) {
case 1 -> "dashboard_level_branch"; case 1 -> "dashboard_level_branch";
case 2 -> "dashboard_level_store_area_merge"; case 2 -> "dashboard_level_store";
case 3 -> "dashboard_level_site"; case 3 -> "dashboard_level_area";
case 4 -> "dashboard_level_site";
default -> ""; default -> "";
}; };
levelMapperExt.deleteLevelByIdList(tableName, idList); levelMapperExt.deleteLevelByIdList(tableName, idList);
@ -269,15 +283,19 @@ public class LevelServiceImpl implements LevelService {
switch (levelType){ switch (levelType){
case 1: case 1:
deleteEntity.setChildField("branch_id"); deleteEntity.setChildField("branch_id");
deleteEntity.setTableName("dashboard_level_relation_branch_store_area"); deleteEntity.setTableName("dashboard_level_relation_branch_store");
break; break;
case 2: case 2:
deleteEntity.setChildField("store_area_id"); deleteEntity.setChildField("store_id");
deleteEntity.setTableName("dashboard_level_relation_branch_store_area"); deleteEntity.setTableName("dashboard_level_relation_branch_store");
break; break;
case 3: case 3:
deleteEntity.setChildField("area_id");
deleteEntity.setTableName("dashboard_level_relation_store_area");
break;
case 4:
deleteEntity.setChildField("site_id"); deleteEntity.setChildField("site_id");
deleteEntity.setTableName("dashboard_level_relation_store_area_site"); deleteEntity.setTableName("dashboard_level_relation_area_site");
break; break;
} }
levelMapperExt.deleteLevelRelationByIdList(deleteEntity, idList); levelMapperExt.deleteLevelRelationByIdList(deleteEntity, idList);
@ -312,7 +330,7 @@ public class LevelServiceImpl implements LevelService {
PageHelper.startPage(pageSearchParam.getPageNum() == null ? 1 : pageSearchParam.getPageNum(), pageSearchParam.getPageSize() == null ? 20 : pageSearchParam.getPageSize()); PageHelper.startPage(pageSearchParam.getPageNum() == null ? 1 : pageSearchParam.getPageNum(), pageSearchParam.getPageSize() == null ? 20 : pageSearchParam.getPageSize());
List<LevelPageDTO> resultList = levelMapperExt.getListPage(pageSearchParam); List<LevelPageDTO> resultList = levelMapperExt.getListPage(pageSearchParam);
if (3 == levelType && CollectionUtils.isNotEmpty(resultList)){ if (4 == levelType && CollectionUtils.isNotEmpty(resultList)){
for (LevelPageDTO levelPageDTO : resultList) { for (LevelPageDTO levelPageDTO : resultList) {
List<BuildingPageVO> buildingList = basicBuildingMapperExt.getBuildingListBySiteId(levelPageDTO.getId()); List<BuildingPageVO> buildingList = basicBuildingMapperExt.getBuildingListBySiteId(levelPageDTO.getId());
if (CollectionUtils.isNotEmpty(buildingList)) { if (CollectionUtils.isNotEmpty(buildingList)) {

19
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java

@ -307,19 +307,26 @@ public class OverviewServiceImpl implements OverviewService {
nodeMap.putIfAbsent(branchKey, nodeMap.putIfAbsent(branchKey,
createNode(branchKey, "ROOT", row.getBranchName())); createNode(branchKey, "ROOT", row.getBranchName()));
if (row.getStoreAreaId() == null) { if (row.getStoreId() == null) {
continue; continue;
} }
String storeAreaKey = "STORE_AREA-" + row.getStoreAreaId() + "-" + branchKey; String storeKey = "STORE-" + row.getStoreId() + "-" + branchKey;
nodeMap.putIfAbsent(storeAreaKey, nodeMap.putIfAbsent(storeKey,
createNode(storeAreaKey, branchKey, row.getStoreAreaName())); createNode(storeKey, branchKey, row.getStoreName()));
if (row.getAreaId() == null) {
continue;
}
String areaKey = "AREA-" + row.getAreaId() + "-" + storeKey;
nodeMap.putIfAbsent(areaKey,
createNode(areaKey, storeKey, row.getAreaName()));
if (row.getSiteId() == null) { if (row.getSiteId() == null) {
continue; continue;
} }
String siteKey = "SITE-" + row.getSiteId() + "-" + storeAreaKey; String siteKey = "SITE-" + row.getSiteId() + "-" + areaKey;
nodeMap.putIfAbsent(siteKey, nodeMap.putIfAbsent(siteKey,
createNode(siteKey, storeAreaKey, row.getSiteName())); createNode(siteKey, areaKey, row.getSiteName()));
boolean isAllowedBuilding = !isADSC || bindBuildingIdSet.contains(row.getBuildingId()); boolean isAllowedBuilding = !isADSC || bindBuildingIdSet.contains(row.getBuildingId());
if (isAllowedBuilding) { if (isAllowedBuilding) {

Loading…
Cancel
Save