diff --git a/data-center-business-controller/src/main/resources/db/migration/V80__store_code.sql b/data-center-business-controller/src/main/resources/db/migration/V80__store_code.sql new file mode 100644 index 0000000..53c03cf --- /dev/null +++ b/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`; + diff --git a/data-center-business-controller/src/main/resources/db/migration/V81__area_code.sql b/data-center-business-controller/src/main/resources/db/migration/V81__area_code.sql new file mode 100644 index 0000000..141c027 --- /dev/null +++ b/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`; + diff --git a/data-center-business-controller/src/main/resources/db/migration/V82__building_contract.sql b/data-center-business-controller/src/main/resources/db/migration/V82__building_contract.sql new file mode 100644 index 0000000..9c5cf48 --- /dev/null +++ b/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合同编号'; + diff --git a/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/LevelRoleMapperExt.java b/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/LevelRoleMapperExt.java index a63d6dc..e79b42c 100644 --- a/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/LevelRoleMapperExt.java +++ b/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 getCanBeBoundUserPage(BaseSearchParams pageSearchParam); Integer checkLevelManager(Long userId); - - List selectAllStoreAreas(Map levelMap); } \ No newline at end of file diff --git a/data-center-business-dao/src/main/resources/mappers/ex/BasicSalesforceMapperExt.xml b/data-center-business-dao/src/main/resources/mappers/ex/BasicSalesforceMapperExt.xml index 78dc748..da83f2c 100644 --- a/data-center-business-dao/src/main/resources/mappers/ex/BasicSalesforceMapperExt.xml +++ b/data-center-business-dao/src/main/resources/mappers/ex/BasicSalesforceMapperExt.xml @@ -23,130 +23,181 @@ WITH - -- building → 最新 site(唯一) + -- building -> 最新 site latest_site AS ( SELECT * FROM ( - SELECT - rsb.building_id, - rsb.site_id, - ROW_NUMBER() OVER ( - PARTITION BY rsb.building_id - ORDER BY rsb.created_at DESC, rsb.site_id DESC - ) AS rn - FROM dashboard_level_relation_site_building rsb + SELECT + rsb.building_id, + rsb.site_id, + ROW_NUMBER() OVER ( + PARTITION BY rsb.building_id + ORDER BY rsb.created_at DESC, rsb.site_id DESC + ) AS rn + FROM dashboard_level_relation_site_building rsb ) t 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, - ROW_NUMBER() OVER ( - PARTITION BY ls.building_id - ORDER BY rsas.created_at DESC, rsas.store_area_id DESC - ) AS rn + ras.site_id, + ras.area_id, + ROW_NUMBER() OVER ( + PARTITION BY ls.building_id + 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, - ROW_NUMBER() OVER ( - PARTITION BY lsa.building_id - ORDER BY rbsa.created_at DESC, rbsa.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 + ls.building_id, + rbs.store_id, + rbs.branch_id, + ROW_NUMBER() OVER ( + PARTITION BY ls.building_id + ORDER BY rbs.created_at DESC, rbs.branch_id DESC + ) AS rn + 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 - AND bb.flag = 0 + ON bb.salesforce_primary_id = bsales.id + AND bb.flag = 0 INNER JOIN data_center_aeon_admin.basic_company bcomp - ON bcomp.id = bsales.company_id + 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 dashboard_level_area a + ON a.id = la.area_id + AND a.flag = 0 - LEFT JOIN latest_store_area lsa - ON lsa.building_id = bsales.building_id + -- store + LEFT JOIN latest_store lst + ON lst.building_id = bsales.building_id - LEFT JOIN dashboard_level_store_area_merge sam - ON sam.id = lsa.store_area_id AND sam.flag = 0 + 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 + 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 - - #{item} - - - - AND bsales.id IN - + bsales.flag != 1 + AND bcomp.flag != 1 + + AND bsales.company_id IN + #{item} - - - AND bsales.salesforce_id LIKE CONCAT('%',#{salesforceId},'%') - + + AND bsales.id IN + + #{item} + + + + + AND bsales.salesforce_id LIKE CONCAT('%', #{salesforceId}, '%') + ORDER BY bsales.id DESC diff --git a/data-center-business-dao/src/main/resources/mappers/ex/LevelMapperExt.xml b/data-center-business-dao/src/main/resources/mappers/ex/LevelMapperExt.xml index 7d09f64..28316d8 100644 --- a/data-center-business-dao/src/main/resources/mappers/ex/LevelMapperExt.xml +++ b/data-center-business-dao/src/main/resources/mappers/ex/LevelMapperExt.xml @@ -6,15 +6,17 @@ dashboard_level_branch - dashboard_level_store_area_merge - dashboard_level_site + dashboard_level_store + dashboard_level_area + dashboard_level_site dashboard_level_branch - dashboard_level_store_area_merge + dashboard_level_store + dashboard_level_area @@ -163,13 +165,13 @@ SELECT - 2 AS levelType, - GROUP_CONCAT(pa.id) AS parentIds, - GROUP_CONCAT(pa.`name`) AS parentNames, - + 2 AS levelType, + GROUP_CONCAT(pa.id) AS parentIds, + GROUP_CONCAT(pa.`name`) AS parentNames, + 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 @@ -177,14 +179,28 @@ SELECT - 3 AS levelType, - GROUP_CONCAT(pa.id) AS parentIds, - GROUP_CONCAT(pa.`name`) AS parentNames, - + 3 AS levelType, + GROUP_CONCAT(pa.id) AS parentIds, + GROUP_CONCAT(pa.`name`) AS parentNames, + 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` + dashboard_level_area base + LEFT JOIN dashboard_level_relation_store_area rela ON base.`id` = rela.area_id + LEFT JOIN dashboard_level_store pa ON rela.store_id = pa.`id` + WHERE + + GROUP BY base.`id` + + + SELECT + 4 AS levelType, + GROUP_CONCAT(pa.id) AS parentIds, + GROUP_CONCAT(pa.`name`) AS parentNames, + + FROM + dashboard_level_site base + LEFT JOIN dashboard_level_relation_area_site rela ON base.`id` = rela.site_id + LEFT JOIN dashboard_level_area pa ON rela.area_id = pa.`id` WHERE 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 → STORE → AREA → SITE → BUILDING SELECT b.building_id FROM dashboard_level_role_user ru JOIN dashboard_level_role_object ro ON ru.level_role_id = ro.level_role_id JOIN dashboard_level_branch br ON ro.ref_id = br.id AND br.flag = 0 - JOIN dashboard_level_relation_branch_store_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; \ No newline at end of file diff --git a/data-center-business-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml b/data-center-business-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml index db7a8e0..bc08967 100644 --- a/data-center-business-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml +++ b/data-center-business-dao/src/main/resources/mappers/ex/LevelRoleMapperExt.xml @@ -97,42 +97,28 @@ WHERE b.flag = 0 and b.company_id = #{companyId} - -