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. 177
      data-center-business-dao/src/main/resources/mappers/ex/BasicSalesforceMapperExt.xml
  6. 110
      data-center-business-dao/src/main/resources/mappers/ex/LevelMapperExt.xml
  7. 44
      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. 37
      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); List<UserBindLevelRoleVO> getCanBeBoundUserPage(BaseSearchParams pageSearchParam);
Integer checkLevelManager(Long userId); Integer checkLevelManager(Long userId);
List<RefKey> selectAllStoreAreas(Map<String, Object> levelMap);
} }

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

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

110
data-center-business-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>
@ -163,13 +165,13 @@
</when> </when>
<when test="levelType == 2"> <when test="levelType == 2">
SELECT SELECT
2 AS levelType, 2 AS levelType,
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 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" />
@ -177,14 +179,28 @@
</when> </when>
<when test="levelType == 3"> <when test="levelType == 3">
SELECT SELECT
3 AS levelType, 3 AS levelType,
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 FROM
dashboard_level_site base dashboard_level_area base
LEFT JOIN dashboard_level_relation_store_area_site rela ON base.`id` = rela.site_id LEFT JOIN dashboard_level_relation_store_area rela ON base.`id` = rela.area_id
LEFT JOIN dashboard_level_store_area_merge pa ON rela.store_area_id = pa.`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_area_site rela ON base.`id` = rela.site_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`
@ -198,7 +214,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
@ -227,41 +243,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
@ -269,7 +313,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>
</mapper> </mapper>

44
data-center-business-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.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 id="selectUserRefs" resultType="com.techsor.datacenter.business.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

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; 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; 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; 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
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") @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;
} }

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 * 物件级别类型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;
/** /**

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) @Schema(description = "支社编码", example = "user1", required = false)
private String branchCode; private String branchCode;
@Schema(description = "支店区域名称", example = "user1", required = false) // @Schema(description = "支店区域名称", example = "user1", required = false)
private String storeAreaName; // 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 storeCode;
private String storeAreaCode; private String storeName;
@Schema(description = "site名称", example = "user1", required = false) @Schema(description = "site名称", example = "user1", required = false)
private String siteName; private String siteName;

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

@ -202,7 +202,7 @@ public class LevelRoleServiceImpl implements LevelRoleService {
return new SimpleDataResponse(ResponseCode.SERVER_ERROR, e.getMessage()); return new SimpleDataResponse(ResponseCode.SERVER_ERROR, e.getMessage());
} }
} }
@Override @Override
public PageInfo<LevelRolePageDTO> getListPage(PageLevelRoleSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType) { public PageInfo<LevelRolePageDTO> getListPage(PageLevelRoleSearchParam pageSearchParam, Long companyId, Long userId, Integer languageType) {
//list防${}注入 //list防${}注入
@ -286,7 +286,7 @@ public class LevelRoleServiceImpl implements LevelRoleService {
@Override @Override
public PageInfo<UserBindLevelRoleVO> getCanBeBoundUserPage(BaseSearchParams pageSearchParam, Long companyId, public PageInfo<UserBindLevelRoleVO> getCanBeBoundUserPage(BaseSearchParams pageSearchParam, Long companyId,
Long userId, Integer languageType, Integer utcOffset) { Long userId, Integer languageType, Integer utcOffset) {
//list防${}注入 //list防${}注入
if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) { if (StringUtils.isBlank(pageSearchParam.getCompanyIds())) {
pageSearchParam.setCompanyIdList(Collections.singletonList(companyId)); pageSearchParam.setCompanyIdList(Collections.singletonList(companyId));
@ -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,11 +350,12 @@ 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);
@ -377,7 +380,7 @@ 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 +398,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 +443,19 @@ 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 的子节点
@ -470,7 +477,7 @@ 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);

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()){ 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);
@ -169,12 +174,16 @@ 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);
@ -201,13 +210,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;
@ -219,8 +232,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);
@ -230,15 +244,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);

Loading…
Cancel
Save