linwe
2024-08-09 8b7258c9427882bb1798f1502eaa35184c6e374e
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -28,10 +28,12 @@
        <result column="has_children" property="hasChildren"/>
    </resultMap>
    <resultMap id="treeNodeResultMap" type="org.springblade.modules.system.vo.DeptVO">
    <resultMap id="treeNodeResultMap" type="org.springblade.core.tool.node.TreeNode">
        <id column="id" property="id"/>
        <result column="parent_id" property="parentId"/>
        <result column="title" property="title"/>
        <result column="value" property="value"/>
        <result column="key" property="key"/>
        <result column="has_children" property="hasChildren"/>
    </resultMap>
@@ -61,36 +63,38 @@
        <if test="param3.fullName!=null and param3.fullName!=''">
            and dept.full_name like concat(concat('%', #{param3.fullName}),'%')
        </if>
        <if test="param3.showWg != null and param3.showWg != ''">
            and dept.dept_name not LIKE '第%网格'
        </if>
        ORDER BY dept.sort
    </select>
    <select id="tree" resultMap="treeNodeResultMap">
        SELECT
        a.id,
        a.dept_name AS title,
        a.parent_id,
        b.id,
        IF
        ( b.id > 0, FALSE, TRUE ) disabled
        FROM
        blade_dept a
        LEFT JOIN (
        SELECT
        id,
        dept_name AS title,
        parent_id
        FROM
        ( SELECT * FROM blade_dept WHERE is_deleted = 0 AND tenant_id = #{param1} ORDER BY parent_id, id ) org_query,
        ( SELECT @id := #{param2} ) initialisation
        WHERE
        ( FIND_IN_SET( parent_id, @id ) > 0 OR FIND_IN_SET( id, @id ) > 0 )
        AND @id := CONCAT( @id, ',', id )
        ORDER BY
        sort
        ) b ON a.id = b.id
        WHERE
        is_deleted = 0
        AND tenant_id = #{param1}  ORDER BY a.sort
        <if test="param2!=null">
            SELECT
            id,
            dept_name AS title,
            id AS "value",
            id AS "key",
            parent_id
            FROM
            ( SELECT * FROM blade_dept WHERE is_deleted = 0 AND tenant_id = #{param1} ORDER BY parent_id, id )
            org_query,
            ( SELECT @id := #{param2} ) initialisation
            WHERE
            (FIND_IN_SET( parent_id, @id ) > 0 or FIND_IN_SET( id, @id ) > 0)
            AND @id := CONCAT(@id,',',id) ORDER BY sort
        </if>
        <if test="param2==null">
            select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0
            <if test="param1!=null and param1!=''">
                and tenant_id = #{param1}
            </if>
            ORDER BY sort
        </if>
    </select>
    <select id="lazyTree" resultMap="treeNodeResultMap">
@@ -98,6 +102,8 @@
        dept.id,
        dept.parent_id,
        dept.dept_name AS title,
        dept.id AS "value",
        dept.id AS "key",
        (
        SELECT
        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
@@ -108,11 +114,15 @@
        ) AS "has_children"
        FROM
        blade_dept dept
        WHERE
        dept.parent_id = #{param2} AND dept.is_deleted = 0
        <if test="param1!=null and param1!=''">
            and dept.tenant_id = #{param1}
        </if>
        <where>
            <if test="param2!=null and param2!=''">
                and dept.parent_id = #{param2}
            </if>
            AND dept.is_deleted = 0
            <if test="param1!=null and param1!=''">
                and dept.tenant_id = #{param1}
            </if>
        </where>
        ORDER BY dept.sort
    </select>
@@ -137,6 +147,134 @@
        and c.id = #{id}
    </select>
    <select id="getDeptMap" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        SELECT
        cast(dept.id as char) as id,
        dept.parent_id parentId,
        dept.dept_name AS name,
        1 as isMan,
        0 AS phone,
        (
        SELECT
        CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
        FROM
        blade_dept
        WHERE
        parent_id = dept.id and is_deleted = 0
        ) AS hasChildren
        FROM
        blade_dept dept WHERE dept.is_deleted = 0
        <if test="treeNode.id!=null and treeNode.id!=''">
            and dept.id = #{treeNode.id}
        </if>
    </select>
    <select id="getDeptMapAndChildren" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        SELECT
        cast(dept.id as char) as id,
        dept.parent_id parentId,
        dept.dept_name AS name,
        1 as isMan,
        0 AS phone,
        0 as email,
        (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM blade_dept  WHERE  parent_id = dept.id and is_deleted = 0) AS hasChildren,
        IFNULL(bu.num,0) AS userCount
        FROM
        blade_dept dept
        LEFT JOIN
        (
        SELECT COUNT(*) num,dept_id FROM blade_user where is_deleted = 0 GROUP BY dept_id
        ) bu on dept.id = bu.dept_id
        WHERE dept.is_deleted = 0
        <if test="treeNode.id!=null and treeNode.id!=''">
            and dept.id = #{treeNode.id}
        </if>
        union
        SELECT
        cast(dept.id as char) as id,
        dept.parent_id parentId,
        dept.dept_name AS name,
        1 as isMan,
        0 AS phone,
        0 as email,
        (SELECT CASE WHEN count(1) > 0 THEN 1 ELSE 0 END FROM blade_dept  WHERE  parent_id = dept.id and is_deleted = 0) AS hasChildren,
        IFNULL(bu.num,0) AS userCount
        FROM
        blade_dept dept
        LEFT JOIN
        (
        SELECT COUNT(*) num,dept_id FROM blade_user where is_deleted = 0 GROUP BY dept_id
        ) bu on dept.id = bu.dept_id
        WHERE dept.is_deleted = 0
        <if test="treeNode.id!=null and treeNode.id!=''">
            AND ancestors LIKE CONCAT( '%',  #{treeNode.id}, '%')
        </if>
    </select>
    <select id="getDeptMapAndChild" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        SELECT
            cast( dept.id AS CHAR ) AS id,
            dept.parent_id parentId,
            dept.dept_name AS NAME,
            1 AS isMan,
            0 AS phone,
            ( SELECT CASE WHEN count( 1 ) > 0 THEN 1 ELSE 0 END FROM blade_dept WHERE parent_id = dept.id AND is_deleted = 0 ) AS hasChildren
        FROM
            blade_dept dept
        WHERE
            dept.is_deleted = 0
          AND dept.parent_id = #{treeNode.id}
    </select>
    <!--查询组织机构树数据(下级包含人员信息)(排除组织机构对应不上的人员)-->
    <select id="getUserMap" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        select
        bu.id,
        bu.dept_id parentId,
        bu.real_name AS name,
        bu.phone,
        bu.email,
        2 as isMan,
        0 as hasChildren
        from blade_user bu join blade_dept bd on find_in_set(bu.dept_id,bd.id)
        where 1=1 and bu.is_deleted = 0 and bu.status = 1
        <if test="treeNode.id!=null and treeNode.id!=''">
            and (bu.dept_id = #{treeNode.id} or bd.ancestors LIKE CONCAT( '%',  #{treeNode.id}, '%'))
        </if>
    </select>
    <select id="getUserMapByDeptIds" resultType="org.springblade.modules.system.node.DeptUserTreeNode">
        select
        bu.id,
        bu.dept_id parentId,
        bu.real_name AS name,
        bu.phone,
        bu.email,
        2 as isMan,
        0 as hasChildren
        from blade_user bu join blade_dept bd on find_in_set(bu.dept_id,bd.id)
        where 1=1 and bu.is_deleted = 0 and bu.status = 1
        <if test="deptIds !=null and deptIds!=''">
            and bu.dept_id in
            <foreach collection="deptIds.split(',')" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
    </select>
    <!--查询网格对应的机构信息(包含父级机构名称)-->
    <select id="getGridDeptAndParentList" resultType="org.springblade.modules.system.vo.DeptVO">
        select bd.*,bd1.dept_name as parentName from blade_dept bd
@@ -144,4 +282,12 @@
        where bd.dept_name like '%网格%'
    </select>
    <!--查询对应的派出所-->
    <select id="getDeptByDeptIds" resultType="org.springblade.modules.system.entity.Dept">
        select * from blade_dept
        where is_deleted = 0
      and locate(id,#{deptId})>0
      and dept_name like '%派出所%'
    </select>
</mapper>