From 24e0bdd24a10449c98013cdb5bcc5e37735f5a91 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期一, 16 六月 2025 09:04:01 +0800 Subject: [PATCH] 对接刀具系统,涉密网封装结构树与文件 --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml | 111 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 95 insertions(+), 16 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml index de844de..6ebebfa 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/PermissionStreamNewMapper.xml @@ -4,11 +4,12 @@ <select id="loadProductMix" resultType="org.jeecg.modules.dnc.entity.ProductMix"> SELECT DISTINCT mix.id, - mix.tree_code 'code', - mix.name, + mix.tree_code, + mix.tree_name, mix.parent_id, mix.tree_type AS 'type', - mix.extend + mix.extend, + mix.create_time FROM nc_product_mix mix -- 杩炴帴鏉冮檺琛紝绛涢�夐儴闂ㄧ浉鍏宠褰� LEFT JOIN nc_permission_stream_new nps_depart ON mix.id = nps_depart.business_id @@ -25,22 +26,100 @@ AND nps_user.delete_flag = '0' WHERE nps_depart.business_id IS NOT NULL - AND nps_user.business_id IS NOT NULL; + AND nps_user.business_id IS NOT NULL + order by mix.tree_type, mix.create_time asc </select> <select id="loadProductMixAll" resultType="org.jeecg.modules.dnc.entity.ProductMix"> - SELECT DISTINCT - mix.id, - mix.tree_code 'code', - mix.name, - mix.parent_id, - mix.tree_type AS 'type', - mix.extend + SELECT DISTINCT mix.id, + mix.tree_code, + mix.tree_name , + mix.parent_id, + mix.tree_type AS 'type', + mix.extend, + mix.create_time + FROM nc_product_mix mix -- 杩炴帴鏉冮檺琛紝绛涢�夐儴闂ㄧ浉鍏宠褰� + LEFT JOIN nc_permission_stream_new nps_user ON mix.id = nps_user.business_id + AND nps_user.user_id = #{userId} + AND nps_user.delete_flag = '0' + WHERE nps_user.business_id IS NOT NULL + order by mix.tree_type, mix.create_time asc + </select> + <select id="loadProductMixByBusinessId" resultType="org.jeecg.modules.dnc.entity.ProductMix"> + WITH CTE_Hierarchy AS ( + SELECT + CAST(id AS VARCHAR(36)) AS id, + CAST(parent_id AS VARCHAR(36)) AS parent_id, + 1 AS LEVEL, + CAST('#' + id + '#' AS VARCHAR(MAX)) AS visit_path FROM - nc_product_mix mix -- 杩炴帴鏉冮檺琛紝绛涢�夐儴闂ㄧ浉鍏宠褰� - LEFT JOIN nc_permission_stream_new nps_user ON mix.id = nps_user.business_id - AND nps_user.user_id = #{userId} - AND nps_user.delete_flag = '0' + nc_product_mix WHERE - nps_user.business_id IS NOT NULL; + id = #{businessId} + AND tree_type = #{businessType} + UNION ALL + -- 鍚戜笂閫掑綊鐖惰妭鐐癸紙甯﹀惊鐜娴嬶級 + SELECT + CAST(p.id AS VARCHAR(36)), + CAST(p.parent_id AS VARCHAR(36)), + h.level + 1, + CAST(h.visit_path + '#' + p.id + '#' AS VARCHAR(MAX)) + FROM + nc_product_mix p + INNER JOIN CTE_Hierarchy h ON CAST(p.id AS VARCHAR(36)) = h.parent_id + WHERE + p.tree_type = #{businessType} + AND h.visit_path NOT LIKE '%#' + p.id + '#%' + AND h.level < 1000 + UNION ALL + -- 鍚戜笅閫掑綊瀛愯妭鐐癸紙甯﹀惊鐜娴嬶級 + SELECT + CAST(c.id AS VARCHAR(36)), + CAST(c.parent_id AS VARCHAR(36)), + h.level + 1, + CAST(h.visit_path + '#' + c.id + '#' AS VARCHAR(MAX)) + FROM + nc_product_mix c + INNER JOIN CTE_Hierarchy h ON CAST(c.parent_id AS VARCHAR(36)) = h.id + WHERE + c.tree_type = #{businessType} + AND h.visit_path NOT LIKE '%#' + c.id + '#%' + AND h.level < 1000 + ), + ExclusionCTE AS ( + SELECT DISTINCT id + FROM CTE_Hierarchy + WHERE LEVEL BETWEEN 1 AND 1000 + ) + SELECT DISTINCT + mix.id, + mix.tree_code, + mix.tree_name, + mix.parent_id, + mix.tree_type AS 'type', + mix.extend, + mix.create_time + FROM + nc_product_mix mix + LEFT JOIN nc_permission_stream_new nps_depart ON mix.id = nps_depart.business_id + AND nps_depart.delete_flag = '0' + <if test="productIdList != null and productIdList.size() > 0"> + AND nps_depart.depart_id IN + <foreach collection="productIdList" item="productId" index="index" open="(" close=")" separator=","> + #{productId} + </foreach> + </if> + AND nps_depart.user_id IS NULL + LEFT JOIN nc_permission_stream_new nps_user ON mix.id = nps_user.business_id + AND nps_user.user_id = #{userId} + AND nps_user.delete_flag = '0' + WHERE + nps_depart.business_id IS NOT NULL + AND nps_user.business_id IS NOT NULL + AND mix.tree_type = #{businessType} + AND NOT EXISTS (SELECT 1 FROM ExclusionCTE e WHERE e.id = mix.id) + ORDER BY + mix.tree_type, + mix.create_time ASC + OPTION (MAXRECURSION 0); </select> </mapper> -- Gitblit v1.9.3