You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
4.2 KiB

<?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.modules.system.mapper.DeptMapper">
<!-- 通用查询映射结果 -->
<resultMap id="deptResultMap" type="org.springblade.modules.system.pojo.entity.Dept">
<id column="id" property="id"/>
<result column="parent_id" property="parentId"/>
<result column="dept_name" property="deptName"/>
<result column="full_name" property="fullName"/>
<result column="ancestors" property="ancestors"/>
<result column="dept_category" property="deptCategory"/>
<result column="sort" property="sort"/>
<result column="remark" property="remark"/>
<result column="is_deleted" property="isDeleted"/>
</resultMap>
<resultMap id="deptVOResultMap" type="org.springblade.modules.system.pojo.vo.DeptVO">
<id column="id" property="id"/>
<result column="parent_id" property="parentId"/>
<result column="dept_name" property="deptName"/>
<result column="full_name" property="fullName"/>
<result column="ancestors" property="ancestors"/>
<result column="dept_category" property="deptCategory"/>
<result column="sort" property="sort"/>
<result column="remark" property="remark"/>
<result column="is_deleted" property="isDeleted"/>
<result column="has_children" property="hasChildren"/>
</resultMap>
<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>
<select id="lazyList" resultMap="deptVOResultMap">
SELECT
dept.* ,
(
SELECT
CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
FROM
blade_dept
WHERE
parent_id = dept.id and is_deleted = 0
) AS "has_children"
FROM
blade_dept dept
WHERE dept.is_deleted = 0
<if test="param1!=null and param1!=''">
and dept.tenant_id = #{param1}
</if>
<if test="param2!=null">
and dept.parent_id = #{param2}
</if>
<if test="param3.deptName!=null and param3.deptName!=''">
and dept.dept_name like concat(concat('%', #{param3.deptName}),'%')
</if>
<if test="param3.fullName!=null and param3.fullName!=''">
and dept.full_name like concat(concat('%', #{param3.fullName}),'%')
</if>
ORDER BY dept.sort
</select>
<select id="tree" resultMap="treeNodeResultMap">
select id, parent_id, dept_name as title, id as "value", id as "key" from blade_dept where is_deleted = 0
<if test="_parameter!=null and _parameter!=''">
and tenant_id = #{_parameter}
</if>
ORDER BY sort
</select>
<select id="lazyTree" resultMap="treeNodeResultMap" >
SELECT
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
FROM
blade_dept
WHERE
parent_id = dept.id and is_deleted = 0
) 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>
ORDER BY dept.sort
</select>
<select id="getDeptNames" resultType="java.lang.String">
SELECT
dept_name
FROM
blade_dept
WHERE
id IN
<foreach collection="array" item="ids" index="index" open="(" close=")" separator=",">
#{ids}
</foreach>
and is_deleted = 0
</select>
</mapper>