<?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.sxkj.system.mapper.DeptMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="deptResultMap" type="org.sxkj.system.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="deployment_mode" property="deploymentMode"/>
|
<result column="is_deleted" property="isDeleted"/>
|
</resultMap>
|
|
<resultMap id="deptVOResultMap" type="org.sxkj.system.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="deployment_mode" property="deploymentMode"/>
|
<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">
|
<choose>
|
<when test="param2==0">
|
and dept.parent_id = 0
|
</when>
|
<otherwise>
|
and dept.id = #{param2}
|
</otherwise>
|
</choose>
|
</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.is_deleted = 0
|
<if test="param3!=null">
|
<choose>
|
<when test="param3>0">
|
and dept.parent_id = #{param2}
|
</when>
|
<otherwise>
|
and (dept.id = #{param2} or dept.ancestors like concat('%',#{param2},'%'))
|
</otherwise>
|
</choose>
|
</if>
|
|
<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>
|
|
<!--获取部门树形结构-->
|
<select id="getTreeList" resultType="org.sxkj.common.node.TreeStringNode">
|
SELECT
|
id,
|
dept_name as name,
|
parent_id,
|
sort
|
FROM
|
blade_dept
|
where is_deleted = 0
|
<if test="deptId!=null and deptId!=''">
|
and (id = #{deptId} or ancestors like concat('%',#{deptId},'%'))
|
</if>
|
</select>
|
|
<!--自定义详情查询-根据系统配置id-->
|
<select id="getDetailBySysConfigId" resultType="org.sxkj.system.vo.DeptVO">
|
select bd.* from blade_dept bd
|
left join sys_config sc on sc.dept_id = bd.id and sc.is_deleted = 0
|
where bd.is_deleted = 0
|
and sc.id = #{dept.sysConfigId}
|
</select>
|
|
<!--下拉机构列表查询-->
|
<select id="selectDeptList" resultType="org.sxkj.system.vo.DeptVO">
|
select
|
bd.*,sc.id as sysConfigId,sc.name as sysName
|
from blade_dept bd
|
left join sys_config sc on sc.dept_id = bd.id and sc.is_deleted = 0
|
where bd.is_deleted = 0
|
and (
|
bd.id = #{deptId}
|
or bd.ancestors like concat('%',#{deptId},'%')
|
)
|
</select>
|
|
<!--查询父级机构信息(一级机构)-->
|
<select id="getParentDeptInfo" resultType="org.sxkj.system.vo.DeptVO">
|
select
|
bd.*,sc.name as sysName
|
from blade_dept bd
|
left join sys_config sc on sc.dept_id = bd.id and sc.is_deleted = 0
|
where bd.is_deleted = 0
|
and (
|
bd.id = #{deptId}
|
or bd.ancestors like concat('%',#{deptId},'%')
|
)
|
and bd.dept_category = 1
|
limit 1
|
</select>
|
|
<!--查询机构树(除本机机构以外的机构)-->
|
<select id="getDeptTreeByNotItself" resultType="org.sxkj.common.node.TreeStringNode">
|
SELECT
|
bd.id,
|
bd.dept_name as name,
|
bd.parent_id,
|
bd.sort
|
FROM
|
blade_dept bd
|
left join manage_device_per_share ddps on ddps.loan_to_dept_id = bd.id
|
where bd.is_deleted = 0
|
and bd.id != #{deptId}
|
and ifnull(device_sn,'') != #{deviceSn}
|
and bd.id not in (
|
-- 排除当前部门的所有上级部门
|
select parent_dept.id
|
from blade_dept parent_dept
|
where parent_dept.is_deleted = 0
|
and concat(',', (select ancestors from blade_dept where id = #{deptId} and is_deleted = 0), ',') like concat('%,', parent_dept.id, ',%')
|
)
|
and bd.id not in (
|
-- 排除最上级部门的所有子部门
|
select child_dept.id
|
from blade_dept child_dept
|
where child_dept.is_deleted = 0
|
and child_dept.ancestors like concat((select case when (select ancestors from blade_dept where id = #{deptId} and is_deleted = 0) = '0' then #{deptId} else substring_index((select ancestors from blade_dept where id = #{deptId} and is_deleted = 0), ',', 1) end), ',%')
|
)
|
and bd.ancestors not like concat('%,', #{deptId}, ',%')
|
and bd.ancestors != #{deptId}
|
</select>
|
|
<!--懒加载获取部门树形结构(子集)-->
|
<select id="getChildLazyTree" 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 dept.parent_id = #{param1}
|
</if>
|
<if test="param2.deptName!=null and param2.deptName!=''">
|
and dept.dept_name like concat(concat('%', #{param2.deptName}),'%')
|
</if>
|
<if test="param2.fullName!=null and param2.fullName!=''">
|
and dept.full_name like concat(concat('%', #{param2.fullName}),'%')
|
</if>
|
ORDER BY dept.sort
|
</select>
|
<select id="getFullRegionName" resultType="string">
|
SELECT
|
CONCAT(p.name, ' ', c.name, ' ', r.name) AS full_region_name
|
FROM blade_region r
|
LEFT JOIN blade_region c ON r.parent_code = c.code <!-- 市级 -->
|
LEFT JOIN blade_region p ON c.parent_code = p.code <!-- 省级 -->
|
WHERE r.code = #{areaCode}
|
</select>
|
<select id="getSingleRegionName" resultType="string">
|
<!-- 省级:后 10 位为 0 -->
|
SELECT p.name AS full_region_name
|
FROM blade_region p
|
WHERE SUBSTRING(#{areaCode}, 3, 10) = '0000000000'
|
AND p.code = #{areaCode}
|
|
UNION
|
|
<!-- 市级:后 8 位为 0,且不是省级 -->
|
SELECT CONCAT(p.name, ' ', c.name) AS full_region_name
|
FROM blade_region c
|
LEFT JOIN blade_region p ON c.parent_code = p.code
|
WHERE SUBSTRING(#{areaCode}, 5, 8) = '00000000'
|
AND SUBSTRING(#{areaCode}, 3, 10) != '0000000000'
|
AND c.code = #{areaCode}
|
|
UNION
|
|
<!-- 县级:后 8 位不全为 0 -->
|
SELECT CONCAT(p.name, ' ', c.name, ' ', r.name) AS full_region_name
|
FROM blade_region r
|
LEFT JOIN blade_region c ON r.parent_code = c.code
|
LEFT JOIN blade_region p ON c.parent_code = p.code
|
WHERE SUBSTRING(#{areaCode}, 5, 8) != '00000000'
|
AND r.code = #{areaCode}
|
</select>
|
|
<select id="selectDeptPage" resultType="org.sxkj.system.vo.DeptVO">
|
SELECT
|
bd.*,
|
br.name AS area_name
|
FROM
|
blade_dept bd LEFT JOIN blade_region br ON br.code = bd.area_code
|
WHERE
|
bd.is_deleted = 0
|
<if test="param2.deptName!=null and param2.deptName!=''">
|
and bd.dept_name like concat(concat('%', #{param2.deptName}),'%')
|
</if>
|
<if test="param2.fullName!=null and param2.fullName!=''">
|
and bd.full_name like concat(concat('%', #{param2.fullName}),'%')
|
</if>
|
<if test="param2.areaCode!=null and param2.areaCode!=''">
|
and bd.area_code = #{param2.areaCode}
|
</if>
|
ORDER BY bd.create_time DESC
|
</select>
|
|
<select id="exportDept" resultType="org.sxkj.system.excel.DeptExcel">
|
SELECT
|
bd.*,
|
br.name AS area_name
|
FROM
|
blade_dept bd
|
LEFT JOIN
|
blade_region br ON br.code = bd.area_code
|
WHERE
|
bd.is_deleted = 0
|
<if test="deptName!=null and deptName!=''">
|
and bd.dept_name like concat(concat('%', #{deptName}),'%')
|
</if>
|
<if test="fullName!=null and fullName!=''">
|
and bd.full_name like concat(concat('%', #{fullName}),'%')
|
</if>
|
<if test="areaCode!=null and areaCode!=''">
|
and bd.area_code = #{areaCode}
|
</if>
|
</select>
|
|
|
</mapper>
|