value
2024-05-23 05c569f74a1c94b84145abe34f2b2385d68fdec6
cnas-server/src/main/resources/mapper/DepartmentMapper.xml
@@ -1,43 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.mom.mapper.DepartmentMapper">
    <select id="selectDepartment" resultType="com.yuanchu.mom.pojo.Department">
        WITH RECURSIVE DepartmentHierarchy AS (
            SELECT id, name, father_id
            FROM department
            WHERE father_id IS NULL
            UNION ALL
            SELECT d.id, d.name, d.father_id
            FROM department d
                     JOIN DepartmentHierarchy dh ON d.father_id = dh.id
        )
    <select id="selectDepartment" resultType="com.yuanchu.mom.dto.DepartmentDto">
        SELECT id, name, father_id
        FROM DepartmentHierarchy;
        FROM department
    </select>
    <select id="showUserById" resultType="com.yuanchu.mom.dto.UserDto">
        select * from (select id, name, age, email, phone,depart_id
        from user where state=1 and SUBSTRING_INDEX(depart_id, ',', -1) in
        <foreach collection="ids" item="id" separator="," open="(" close=")">
            #{id}
        </foreach> ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectSonById" resultType="java.lang.Integer">
        WITH RECURSIVE DepartmentHierarchy AS (
            SELECT id, name, father_id
            FROM department
            WHERE id = #{id}
            UNION ALL
            SELECT d.id, d.name, d.father_id
            FROM department d
                     JOIN DepartmentHierarchy dh ON d.father_id = dh.id
        )
        SELECT au.id
        FROM (SELECT * FROM department WHERE father_id IS NOT NULL) au,
             (SELECT @father_id := #{id}) pd
        WHERE FIND_IN_SET(father_id, @father_id) > 0
                  AND @father_id := concat(@father_id, ',', id)
        UNION
        SELECT id
        FROM DepartmentHierarchy
        order by id desc;
        FROM department
        WHERE id = #{id}
        ORDER BY id
    </select>
</mapper>