<?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="org.springblade.system.mapper.UserMapper">

    <!-- 通用查询映射结果 -->
    <resultMap id="userResultMap" type="org.springblade.system.pojo.entity.User">
        <result column="id" property="id"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="create_user" property="createUser"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
        <result column="code" property="code"/>
        <result column="user_type" property="userType"/>
        <result column="account" property="account"/>
        <result column="password" property="password"/>
        <result column="name" property="name"/>
        <result column="real_name" property="realName"/>
        <result column="email" property="email"/>
        <result column="phone" property="phone"/>
        <result column="birthday" property="birthday"/>
        <result column="sex" property="sex"/>
        <result column="role_id" property="roleId"/>
        <result column="dept_id" property="deptId"/>
        <result column="post_id" property="postId"/>
    </resultMap>

    <select id="selectUserPage" resultMap="userResultMap">
        select * from blade_user where is_deleted = 0
        <if test="tenantId!=null and tenantId != ''">
            and tenant_id = #{tenantId}
        </if>
        <if test="user.tenantId!=null and user.tenantId != ''">
            and tenant_id = #{user.tenantId}
        </if>
        <if test="user.account!=null and user.account != ''">
            and account = #{user.account}
        </if>
        <if test="user.realName!=null and user.realName != ''">
            and real_name = #{user.realName}
        </if>
        <if test="user.userType!=null and user.userType != ''">
            and user_type = #{user.userType}
        </if>
        <if test="deptIdList!=null and deptIdList.size>0">
            and id in (
            SELECT
            user_id
            FROM
            blade_user_dept
            WHERE
            dept_id IN
            <foreach collection="deptIdList" index="index" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
            )
        </if>
        ORDER BY id
    </select>

    <select id="getUser" resultMap="userResultMap">
        SELECT
            *
        FROM
            blade_user
        WHERE
            tenant_id = #{param1} and account = #{param2} and is_deleted = 0
    </select>

    <select id="exportUser" resultType="org.springblade.system.excel.UserExcel">
        SELECT id, tenant_id, user_type, account, name, real_name, email, phone, birthday, role_id, dept_id, post_id FROM blade_user ${ew.customSqlSegment}
    </select>

    <select id="selecySyfw" resultType="org.springblade.system.pojo.vo.SyVO">
        select count(0) as syfw from jdrh.rhzf_fw_info fw left join jdrh.blade_dept bd on fw.create_dept = bd.id where fw.is_deleted = 0 and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
    </select>

    <select id="selectSydw" resultType="org.springblade.system.pojo.vo.SyVO">
        select count(0) as sydw from jdrh.ybss_sydw ys left join jdrh.blade_dept bd on ys.create_dept = bd.id where ys.is_deleted = 0 and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
    </select>

    <select id="selectSyrk" resultType="org.springblade.system.pojo.vo.SyVO">
        SELECT
            *
        FROM
            (
                SELECT
                    count(0) as syrk
                FROM
                    jdrh.rhzf_ry_czrk cz
                left join jdrh.blade_dept bd on cz.create_dept = bd.id
                WHERE
                    cz.is_deleted = 0
                and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
                UNION ALL
                SELECT
                    count(0) as syrk
                FROM
                    jdrh.rhzf_ry_jwrk jw
                left join jdrh.blade_dept bd on jw.create_dept = bd.id
                WHERE
                    jw.is_deleted = 0
                and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
                UNION ALL
                SELECT
                    count(0) as syrk
                FROM
                    jdrh.rhzf_ry_jzrk jz
                left join jdrh.blade_dept bd on jz.create_dept = bd.id
                WHERE
                    jz.is_deleted = 0
                and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
                UNION ALL
                SELECT
                    count(0) as syrk
                FROM
                    jdrh.rhzf_ry_wlrk wl
                left join jdrh.blade_dept bd on wl.create_dept = bd.id
                WHERE
                    wl.is_deleted = 0
                and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
                UNION ALL
                SELECT
                    count(0) as syrk
                FROM
                    jdrh.rhzf_ry_zzrk zz
                left join jdrh.blade_dept bd on zz.create_dept = bd.id
                WHERE
                    zz.is_deleted = 0
                and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
            ) rys
    </select>

    <select id="selectZdr" resultType="org.springblade.system.pojo.vo.SyVO">
        select
    </select>

    <select id="selectJxcs" resultType="org.springblade.system.pojo.vo.SyVO">
        select count(0) as jxcs from jdrh.cs_info info left join jdrh.blade_dept bd on bd.id = info.create_dept where info.is_deleted = '0' and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
    </select>

    <select id="selectXfyh" resultType="org.springblade.system.pojo.vo.SyVO">
        select count(0) as jxcs from jdrh.cs_info info left join jdrh.blade_dept bd on bd.id = info.create_dept where info.is_deleted = '0' and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
    </select>

    <select id="selectMdjf" resultType="org.springblade.system.pojo.vo.SyVO">
        select count(0) as mdjf from jdrh.mdjf_dj mdjf left join jdrh.blade_dept bd on bd.id = mdjf.jfsssq where mdjf.is_deleted = '0' and ((#{deptId} LIKE '%' || bd.id || '%') OR (bd.ancestors LIKE '%' || #{deptId} || '%'))
    </select>

    <select id="getUserInfo" resultType="org.springblade.system.pojo.vo.UserInfoVO">
        SELECT
            bu.id,
            bu.name,
            bu.phone,
            bu.dept_id,
            parent.id AS parentId,
            parent.dept_name AS parentName
        FROM
            blade_user bu
        LEFT JOIN blade_dept dept ON dept.id = SPLIT_PART( bu.dept_id, ',', 1 ) :: int8
	    LEFT JOIN blade_dept parent ON parent.id = dept.parent_id
        WHERE
            bu.id = #{userId}
          AND bu.is_deleted = 0
    </select>

    <select id="getUserByDeptId" resultType="org.springblade.system.pojo.entity.User">
        SELECT
            *
        FROM
            blade_user
        WHERE
            is_deleted = 0
          AND dept_id ILIKE '%' || #{params.deptId} || '%';
    </select>
</mapper>
