Browse Source

支店,区域不合并,拆分开

jwy
review512jwy@163.com 3 days ago
parent
commit
0a6afbe84c
  1. 4
      data-center-business-controller/src/main/resources/db/migration/V80__store_code.sql
  2. 4
      data-center-business-controller/src/main/resources/db/migration/V81__area_code.sql
  3. 4
      data-center-business-controller/src/main/resources/db/migration/V82__building_contract.sql
  4. 2
      data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/LevelRoleMapperExt.java
  5. 119
      data-center-business-dao/src/main/resources/mappers/ex/BasicSalesforceMapperExt.xml
  6. 92
      data-center-business-dao/src/main/resources/mappers/ex/LevelMapperExt.xml
  7. 42
      data-center-business-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml
  8. 4
      data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/level/DeleteLevelParam.java
  9. 4
      data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/level/OptLevelParam.java
  10. 5
      data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/level/PageLevelSearchParam.java
  11. 2
      data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/level/LevelPageDTO.java
  12. 14
      data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/salesforce/SalesforcePageVO.java
  13. 33
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/LevelRoleServiceImpl.java
  14. 50
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/LevelServiceImpl.java

4
data-center-business-controller/src/main/resources/db/migration/V80__store_code.sql

@ -0,0 +1,4 @@
ALTER TABLE `dashboard_level_store` ADD code VARCHAR(255) AFTER `name`;
ALTER TABLE `dashboard_level_store` ADD COLUMN `sort_order` INT DEFAULT 0 COMMENT '排序顺序,数字越大越靠前' AFTER `code`;

4
data-center-business-controller/src/main/resources/db/migration/V81__area_code.sql

@ -0,0 +1,4 @@
ALTER TABLE `dashboard_level_area` ADD code VARCHAR(255) AFTER `name`;
ALTER TABLE `dashboard_level_area` ADD COLUMN `sort_order` INT DEFAULT 0 COMMENT '排序顺序,数字越大越靠前' AFTER `code`;

4
data-center-business-controller/src/main/resources/db/migration/V82__building_contract.sql

@ -0,0 +1,4 @@
ALTER TABLE `basic_building` ADD site_manager varchar(255) DEFAULT NULL COMMENT '网点管理者(Site担当)';
ALTER TABLE `basic_building` ADD king_contract_no varchar(255) DEFAULT NULL COMMENT 'King合同编号';

2
data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/LevelRoleMapperExt.java

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

119
data-center-business-dao/src/main/resources/mappers/ex/BasicSalesforceMapperExt.xml

@ -23,7 +23,7 @@
WITH
-- building → 最新 site(唯一)
-- building -> 最新 site
latest_site AS (
SELECT *
FROM (
@ -39,68 +39,98 @@
WHERE t.rn = 1
),
-- 基于 site → 最新 store_area
latest_store_area AS (
-- site -> 最新 area
latest_area AS (
SELECT *
FROM (
SELECT
ls.building_id,
rsas.site_id,
rsas.store_area_id,
ras.site_id,
ras.area_id,
ROW_NUMBER() OVER (
PARTITION BY ls.building_id
ORDER BY rsas.created_at DESC, rsas.store_area_id DESC
ORDER BY ras.created_at DESC, ras.area_id DESC
) AS rn
FROM latest_site ls
JOIN dashboard_level_relation_store_area_site rsas
ON ls.site_id = rsas.site_id
JOIN dashboard_level_relation_area_site ras
ON ls.site_id = ras.site_id
) t
WHERE t.rn = 1
),
-- 基于 store_area → 最新 branch
-- area -> 最新 store
latest_store AS (
SELECT *
FROM (
SELECT
la.building_id,
rsa.area_id,
rsa.store_id,
ROW_NUMBER() OVER (
PARTITION BY la.building_id
ORDER BY rsa.created_at DESC, rsa.store_id DESC
) AS rn
FROM latest_area la
JOIN dashboard_level_relation_store_area rsa
ON la.area_id = rsa.area_id
) t
WHERE t.rn = 1
),
-- store -> 最新 branch
latest_branch AS (
SELECT *
FROM (
SELECT
lsa.building_id,
rbsa.store_area_id,
rbsa.branch_id,
ls.building_id,
rbs.store_id,
rbs.branch_id,
ROW_NUMBER() OVER (
PARTITION BY lsa.building_id
ORDER BY rbsa.created_at DESC, rbsa.branch_id DESC
PARTITION BY ls.building_id
ORDER BY rbs.created_at DESC, rbs.branch_id DESC
) AS rn
FROM latest_store_area lsa
JOIN dashboard_level_relation_branch_store_area rbsa
ON lsa.store_area_id = rbsa.store_area_id
FROM latest_store ls
JOIN dashboard_level_relation_branch_store rbs
ON ls.store_id = rbs.store_id
) t
WHERE t.rn = 1
)
SELECT
bsales.id,
bsales.company_id,
bsales.building_id,
bb.name AS buildingName,
bb.udf_building_id,
bcomp.company_name,
bsales.salesforce_id,
bsales.remark,
-- site
s.id AS site_id,
s.code AS siteCode,
s.name AS siteName,
sam.id AS store_area_id,
sam.code AS storeAreaCode,
sam.name AS storeAreaName,
-- area
a.id AS area_id,
a.code AS areaCode,
a.name AS areaName,
-- store
st.id AS store_id,
st.code AS storeCode,
st.name AS storeName,
-- branch
br.id AS branch_id,
br.code AS branchCode,
br.name AS branchName
FROM
basic_salesforce bsales
FROM basic_salesforce bsales
LEFT JOIN basic_building bb
ON bb.salesforce_primary_id = bsales.id
@ -109,37 +139,58 @@
INNER JOIN data_center_aeon_admin.basic_company bcomp
ON bcomp.id = bsales.company_id
-- 严格链路 JOIN
LEFT JOIN latest_site ls
ON ls.building_id = bsales.building_id
-- site
LEFT JOIN latest_site lsite
ON lsite.building_id = bsales.building_id
LEFT JOIN dashboard_level_site s
ON s.id = ls.site_id AND s.flag = 0
ON s.id = lsite.site_id
AND s.flag = 0
-- area
LEFT JOIN latest_area la
ON la.building_id = bsales.building_id
LEFT JOIN latest_store_area lsa
ON lsa.building_id = bsales.building_id
LEFT JOIN dashboard_level_area a
ON a.id = la.area_id
AND a.flag = 0
LEFT JOIN dashboard_level_store_area_merge sam
ON sam.id = lsa.store_area_id AND sam.flag = 0
-- store
LEFT JOIN latest_store lst
ON lst.building_id = bsales.building_id
LEFT JOIN dashboard_level_store st
ON st.id = lst.store_id
AND st.flag = 0
-- branch
LEFT JOIN latest_branch lb
ON lb.building_id = bsales.building_id
LEFT JOIN dashboard_level_branch br
ON br.id = lb.branch_id AND br.flag = 0
ON br.id = lb.branch_id
AND br.flag = 0
WHERE
bsales.flag != 1
AND bcomp.flag != 1
AND bsales.company_id IN
<foreach collection="companyIdList" item="item" open="(" separator="," close=")">
<foreach collection="companyIdList"
item="item"
open="("
separator=","
close=")">
#{item}
</foreach>
<if test="idList != null">
<if test="idList != null and idList.size() > 0">
AND bsales.id IN
<foreach collection="idList" item="item" open="(" separator="," close=")">
<foreach collection="idList"
item="item"
open="("
separator=","
close=")">
#{item}
</foreach>
</if>

92
data-center-business-dao/src/main/resources/mappers/ex/LevelMapperExt.xml

@ -6,15 +6,17 @@
<sql id="selectTable">
<choose>
<when test="levelType == 1">dashboard_level_branch</when>
<when test="levelType == 2">dashboard_level_store_area_merge</when>
<when test="levelType == 3">dashboard_level_site</when>
<when test="levelType == 2">dashboard_level_store</when>
<when test="levelType == 3">dashboard_level_area</when>
<when test="levelType == 4">dashboard_level_site</when>
</choose>
</sql>
<sql id="selectParentTable">
<choose>
<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>
</sql>
@ -168,8 +170,8 @@
GROUP_CONCAT(pa.`name`) AS parentNames,
<include refid="commonField" />
FROM
dashboard_level_store_area_merge base
LEFT JOIN dashboard_level_relation_branch_store_area rela ON base.`id` = rela.store_area_id
dashboard_level_store base
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`
WHERE
<include refid="commonWhere" />
@ -182,9 +184,23 @@
GROUP_CONCAT(pa.`name`) AS parentNames,
<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
dashboard_level_site base
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`
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`
WHERE
<include refid="commonWhere" />
GROUP BY base.`id`
@ -198,7 +214,7 @@
SELECT DISTINCT building_id
FROM (
-- BUILDING(直接绑定)
-- BUILDING
SELECT b.building_id
FROM dashboard_level_role_user ru
JOIN dashboard_level_role_object ro
@ -227,41 +243,69 @@
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
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_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_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_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
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_AREA'
AND ro.ref_type = 'STORE'
UNION ALL
-- BRANCH → STORE_AREA → SITE → BUILDING
-- BRANCH → STOREAREA → 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_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_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_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
ON s.id = rsb.site_id
JOIN basic_building b
@ -269,7 +313,7 @@
WHERE ru.user_id = #{userId}
AND ro.ref_type = 'BRANCH'
) t
) t;
</select>
</mapper>

42
data-center-business-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml

@ -97,42 +97,28 @@
WHERE b.flag = 0 and b.company_id = #{companyId}
</select>
<select id="selectAllStoreAreas" resultType="com.techsor.datacenter.business.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.techsor.datacenter.business.vo.levelrole.RefKey">
SELECT
o.ref_type AS type,
SELECT o.ref_type AS type,
o.ref_id AS id
FROM dashboard_level_role_user u
INNER JOIN dashboard_level_role_object o
ON u.level_role_id = o.level_role_id
LEFT JOIN dashboard_level_branch b
ON o.ref_type = 'BRANCH' AND o.ref_id = b.id
LEFT JOIN dashboard_level_store_area_merge sam
ON o.ref_type = 'STORE_AREA' AND o.ref_id = sam.id
LEFT JOIN dashboard_level_store s
ON o.ref_type = 'STORE' AND o.ref_id = s.id
LEFT JOIN dashboard_level_area a
ON o.ref_type = 'AREA' AND o.ref_id = a.id
LEFT JOIN dashboard_level_site si
ON o.ref_type = 'SITE' AND o.ref_id = si.id
LEFT JOIN basic_building bu
ON o.ref_type = 'BUILDING' AND o.ref_id = bu.building_id
WHERE u.user_id = #{userId}
AND CASE o.ref_type
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 'BUILDING' THEN IFNULL(bu.flag, 1)
END = 0
@ -145,24 +131,22 @@
FROM dashboard_level_role_object dlro
INNER JOIN dashboard_level_role dlr
ON dlr.id = dlro.level_role_id
LEFT JOIN dashboard_level_branch b
ON dlro.ref_type = 'BRANCH' AND dlro.ref_id = b.id
LEFT JOIN dashboard_level_store_area_merge sam
ON dlro.ref_type = 'STORE_AREA' AND dlro.ref_id = sam.id
LEFT JOIN dashboard_level_store s
ON dlro.ref_type = 'STORE' AND dlro.ref_id = s.id
LEFT JOIN dashboard_level_area a
ON dlro.ref_type = 'AREA' AND dlro.ref_id = a.id
LEFT JOIN dashboard_level_site si
ON dlro.ref_type = 'SITE' AND dlro.ref_id = si.id
LEFT JOIN basic_building bu
ON dlro.ref_type = 'BUILDING' AND dlro.ref_id = bu.building_id
WHERE dlr.flag != 1
AND dlr.id = #{roleId}
AND CASE dlro.ref_type
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 'BUILDING' THEN IFNULL(bu.flag, 1)
END = 0

4
data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/level/DeleteLevelParam.java

@ -19,8 +19,8 @@ public class DeleteLevelParam {
private String ids;
/**
* 物件级别类型 1-支社 2-各支店·area 3-site
* 物件级别类型1-支社2-各支店3-area4-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;
}

4
data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/level/OptLevelParam.java

@ -27,9 +27,9 @@ public class OptLevelParam {
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;
/**

5
data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/level/PageLevelSearchParam.java

@ -33,10 +33,7 @@ public class PageLevelSearchParam extends BaseSearchParams {
@Schema(description = "编码",example = "2cc")
private String levelCode;
/**
* 物件级别类型 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;
}

2
data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/level/LevelPageDTO.java

@ -33,7 +33,7 @@ public class LevelPageDTO {
/**
* 物件级别类型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;
/**

14
data-center-business-model/src/main/java/com/techsor/datacenter/business/vo/salesforce/SalesforcePageVO.java

@ -34,11 +34,17 @@ public class SalesforcePageVO {
@Schema(description = "支社编码", example = "user1", required = false)
private String branchCode;
@Schema(description = "支店区域名称", example = "user1", required = false)
private String storeAreaName;
// @Schema(description = "支店区域名称", example = "user1", required = false)
// private String storeAreaName;
//
// @Schema(description = "支店区域编码", example = "user1", required = false)
// private String storeAreaCode;
private String areaCode;
private String areaName;
@Schema(description = "支店区域编码", example = "user1", required = false)
private String storeAreaCode;
private String storeCode;
private String storeName;
@Schema(description = "site名称", example = "user1", required = false)
private String siteName;

33
data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/LevelRoleServiceImpl.java

@ -332,7 +332,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
Map<String, Object> levelMap = new HashMap<>();
levelMap.put("companyId", companyId);
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> buildings = levelRoleMapperExt.selectAllBuildings(levelMap);
@ -340,7 +341,8 @@ public class LevelRoleServiceImpl implements LevelRoleService {
List<RefKey> userRefs = new ArrayList<>();
if (levelRoleMapperExt.checkLevelManager(userId) > 0){
userRefs.addAll(branches);
userRefs.addAll(storeAreas);
userRefs.addAll(stores);
userRefs.addAll(areas);
userRefs.addAll(sites);
userRefs.addAll(buildings);
} else {
@ -348,11 +350,12 @@ public class LevelRoleServiceImpl implements LevelRoleService {
paramMap.put("userId", userId);
userRefs = levelRoleMapperExt.selectUserRefs(paramMap);
// 名称填充
fillNames(userRefs, branches, storeAreas, sites, buildings);
fillNames(userRefs, branches, stores, areas, sites, buildings);
}
// 构建 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>> buildingMap = groupByParent(buildings);
@ -377,7 +380,7 @@ public class LevelRoleServiceImpl implements LevelRoleService {
// 构建该节点下的子树
root.setChildren(buildTree(
ref.getType(), ref.getId(), rootKey,
storeAreaMap, siteMap, buildingMap, visitedKeys
storeMap, areaMap, siteMap, buildingMap, visitedKeys
));
result.add(root);
}
@ -395,19 +398,22 @@ public class LevelRoleServiceImpl implements LevelRoleService {
private void fillNames(List<RefKey> userRefs,
List<RefKey> branches,
List<RefKey> storeAreas,
List<RefKey> stores,
List<RefKey> areas,
List<RefKey> sites,
List<RefKey> buildings) {
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> buildingName = toNameMap(buildings);
userRefs.removeIf(r -> {
String name = switch (r.getType()) {
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 "BUILDING" -> buildingName.get(r.getId());
default -> null;
@ -437,18 +443,19 @@ public class LevelRoleServiceImpl implements LevelRoleService {
private List<TreeMenusDTO> buildTree(String type,
Long parentId,
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>> buildingMap,
Set<String> visitedKeys) {
Map<Long, List<RefKey>> childMap = switch (type) {
case "BRANCH" -> storeAreaMap;
case "STORE_AREA" -> siteMap;
case "BRANCH" -> storeMap;
case "STORE" -> areaMap;
case "AREA" -> siteMap;
case "SITE" -> buildingMap;
default -> null;
};
if (childMap == null) return Collections.emptyList();
// 直接取 parentId 的子节点
@ -470,7 +477,7 @@ public class LevelRoleServiceImpl implements LevelRoleService {
node.setChildren(buildTree(
c.getType(), c.getId(), key,
storeAreaMap, siteMap, buildingMap, visitedKeys
storeMap, areaMap, siteMap, buildingMap, visitedKeys
));
list.add(node);

50
data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/LevelServiceImpl.java

@ -92,13 +92,18 @@ public class LevelServiceImpl implements LevelService {
switch (param.getLevelType()){
case 2:
levelRelationEntity.setParentField("branch_id");
levelRelationEntity.setChildField("store_area_id");
levelRelationEntity.setTableName("dashboard_level_relation_branch_store_area");
levelRelationEntity.setChildField("store_id");
levelRelationEntity.setTableName("dashboard_level_relation_branch_store");
break;
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.setTableName("dashboard_level_relation_store_area_site");
levelRelationEntity.setTableName("dashboard_level_relation_area_site");
break;
}
levelRelationEntity.setParentId(parentId);
@ -169,12 +174,16 @@ public class LevelServiceImpl implements LevelService {
deleteLevelRelationEntity.setChildId(param.getId());
switch (param.getLevelType()){
case 2:
deleteLevelRelationEntity.setChildField("store_area_id");
deleteLevelRelationEntity.setTableName("dashboard_level_relation_branch_store_area");
deleteLevelRelationEntity.setChildField("store_id");
deleteLevelRelationEntity.setTableName("dashboard_level_relation_branch_store");
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_store_area_site");
deleteLevelRelationEntity.setTableName("dashboard_level_relation_area_site");
break;
}
levelMapperExt.deleteLevelRelation(deleteLevelRelationEntity);
@ -201,13 +210,17 @@ public class LevelServiceImpl implements LevelService {
switch (levelType){
case 1:
levelRelationEntity.setParentField("branch_id");
levelRelationEntity.setTableName("dashboard_level_relation_branch_store_area");
levelRelationEntity.setTableName("dashboard_level_relation_branch_store");
break;
case 2:
levelRelationEntity.setParentField("store_area_id");
levelRelationEntity.setTableName("dashboard_level_relation_store_area_site");
levelRelationEntity.setParentField("store_id");
levelRelationEntity.setTableName("dashboard_level_relation_store_area");
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;
@ -219,8 +232,9 @@ public class LevelServiceImpl implements LevelService {
//基础表删除
String tableName = switch (levelType) {
case 1 -> "dashboard_level_branch";
case 2 -> "dashboard_level_store_area_merge";
case 3 -> "dashboard_level_site";
case 2 -> "dashboard_level_store";
case 3 -> "dashboard_level_area";
case 4 -> "dashboard_level_site";
default -> "";
};
levelMapperExt.deleteLevelByIdList(tableName, idList);
@ -230,15 +244,19 @@ public class LevelServiceImpl implements LevelService {
switch (levelType){
case 1:
deleteEntity.setChildField("branch_id");
deleteEntity.setTableName("dashboard_level_relation_branch_store_area");
deleteEntity.setTableName("dashboard_level_relation_branch_store");
break;
case 2:
deleteEntity.setChildField("store_area_id");
deleteEntity.setTableName("dashboard_level_relation_branch_store_area");
deleteEntity.setChildField("store_id");
deleteEntity.setTableName("dashboard_level_relation_branch_store");
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_store_area_site");
deleteEntity.setTableName("dashboard_level_relation_area_site");
break;
}
levelMapperExt.deleteLevelRelationByIdList(deleteEntity, idList);

Loading…
Cancel
Save