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 | 121 ++++++++++++++++++++++++++++++++++++++-- 1 files changed, 115 insertions(+), 6 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 45a8357..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 @@ -2,15 +2,124 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="org.jeecg.modules.dnc.mapper.PermissionStreamNewMapper"> <select id="loadProductMix" resultType="org.jeecg.modules.dnc.entity.ProductMix"> + 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 + 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, + 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 - mix.* + 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 + WHERE + 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 ON mix.id = nps.business_id - AND nps.user_id = #{userId} - AND nps.delete_flag = '0' + 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.business_id IS NOT NULL - OR nps.business_id IS NULL + 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