
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<?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">
<!--
작성자 : takensoft
작성일 : 2024.04.24
내 용 : 부서 관련
-->
<mapper namespace="com.takensoft.cms.dept.dao.DeptDAO">
<!-- 부서 정보 resultMap(권한포함) -->
<resultMap id="deptMap" type="DeptVO">
<result property="deptId" column="dept_id" />
<result property="upDeptId" column="up_dept_id" />
<result property="deptNm" column="dept_nm" />
<result property="upDeptNm" column="up_dept_nm" />
<result property="deptExpln" column="dept_expln" />
<result property="deptGrd" column="dept_grd" />
<result property="deptSn" column="dept_sn" />
<result property="useYn" column="use_yn" />
<result property="rgtr" column="rgtr" />
<result property="regDt" column="reg_dt" />
<result property="mdfr" column="mdfr" />
<result property="mdfcnDt" column="mdfcn_dt" />
<collection property="authrtList" column="{deptId = dept_id}" javaType="java.util.ArrayList" ofType="DeptAuthrtVO" select="findByDeptAuthrt" />
</resultMap>
<!-- 부서, 권한 매핑 -->
<resultMap id="authMap" type="DeptAuthrtVO">
<result property="deptId" column="dept_id" />
<result property="authrtCd" column="authrt_cd" />
<result property="rgtr" column="rgtr" />
<result property="regDt" column="reg_dt" />
</resultMap>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 부서 등록
-->
<insert id="save" parameterType="DeptVO">
INSERT INTO dept_info (
dept_id
, up_dept_id
, dept_nm
, dept_expln
, dept_grd
, dept_sn
, use_yn
, rgtr
, reg_dt
) VALUES (
#{deptId}
, #{upDeptId}
, #{deptNm}
, #{deptExpln}
, #{deptGrd}
, #{deptSn}
, 'Y'
, #{rgtr}
, NOW()
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 부서 권한 등록
-->
<insert id="authrtSave" parameterType="DeptAuthrtVO">
INSERT INTO dept_authrt_info (
authrt_cd
, dept_id
, rgtr
, reg_dt
) VALUES (
#{authrtCd}
, #{deptId}
, #{rgtr}
, NOW()
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.29
내 용 : 부서 사용자 등록
-->
<insert id="deptMbrSave" parameterType="DeptMbrVO">
INSERT INTO dept_mbr_info (
dept_id
, mbr_id
, rgtr
, reg_dt
) VALUES (
#{deptId}
, #{mbrId}
, #{rgtr}
, NOW()
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 부서 깊이(레벨) 조회
-->
<select id="findByDeptGrd" parameterType="String" resultType="Integer">
SELECT dept_grd
FROM dept_info
WHERE dept_id = #{upDeptId}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 부서 순서 조회
-->
<select id="findByDeptSn" parameterType="String" resultType="Integer">
SELECT COALESCE(MAX(dept_sn), 0)
FROM dept_info
WHERE use_yn = 'Y'
<choose>
<when test="upDeptId != null and upDeptId != ''">
AND up_dept_id = #{upDeptId}
</when>
<otherwise>
AND up_dept_id IS NULL
</otherwise>
</choose>
</select>
<!-- 부서 관리(관리자 페이지 Tree 호출용) -->
<sql id="selecteNode">
SELECT dept_id AS id
, up_dept_id AS up_id
, dept_nm AS nm
FROM dept_info
</sql>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 상위 부서 조회
-->
<select id="findByTopNode" resultType="HierachyVO">
<include refid="selecteNode" />
WHERE up_dept_id IS NULL
AND use_yn = 'Y'
ORDER BY dept_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.25
내 용 : 하위 부서 조회
-->
<select id="findChildNode" parameterType="String" resultType="HierachyVO">
<include refid="selecteNode" />
WHERE up_dept_id = #{id}
AND use_yn = 'Y'
ORDER BY dept_sn
</select>
<!-- 부서 관리(관리자 페이지 Tree 호출용) -->
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 부서정보 조회
-->
<select id="findByDept" parameterType="String" resultMap="deptMap">
SELECT di.dept_id
, di.up_dept_id
, di.dept_nm
, di2.dept_nm AS up_dept_nm
, di.dept_expln
, di.dept_grd
, di.dept_sn
, di.use_yn
, di.rgtr
, TO_CHAR(di.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, di.mdfr
, TO_CHAR(di.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
FROM dept_info di
LEFT JOIN dept_info di2
ON di.up_dept_id = di2.dept_id
WHERE di.dept_id = #{deptId}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 부서 권한 정보 조회
-->
<select id="findByDeptAuthrt" parameterType="DeptVO" resultMap="authMap">
SELECT dai.authrt_cd
, dai.dept_id
, dai.rgtr
, TO_CHAR(dai.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
FROM dept_authrt_info dai
WHERE dai.dept_id = #{deptId}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 부서정보 수정
-->
<update id="update" parameterType="DeptVO">
UPDATE dept_info
SET up_dept_id = #{upDeptId}
, dept_nm = #{deptNm}
, dept_expln = #{deptExpln}
, dept_grd = #{deptGrd}
, dept_sn = #{deptSn}
, use_yn = #{useYn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE dept_id = #{deptId}
</update>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 부서권한 삭제
-->
<delete id="deleteAuth" parameterType="String">
DELETE
FROM dept_authrt_info
WHERE dept_id = #{deptId}
</delete>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 부서 사용자 등록을 위한 사용자 정보 목록 조회 (부서에 등록되지 않은 사용자 목록)
-->
<select id="findByMber" parameterType="Map" resultType="DeptMbrVO">
SELECT mi.mbr_id
, mi.lgn_id
, mi.mbr_nm
, mi.ncnm
, mi.eml
, mi.mbl_telno
FROM mbr_info mi
WHERE NOT EXISTS (
SELECT 1
FROM dept_mbr_info dmi
WHERE dmi.mbr_id = mi.mbr_id
)
AND mi.use_yn = 'Y'
AND mi.mbr_stts = '1'
<if test="searchText != null and searchText != ''">
AND mi.mbr_nm LIKE '%' || #{searchText} || '%'
</if>
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 부서에 등록된 사용자 목록 조회
-->
<select id="findByDeptMber" parameterType="Map" resultType="DeptMbrVO">
SELECT dmi.dept_id
, mi.mbr_id
, mi.lgn_id
, mi.mbr_nm
, mi.ncnm
, mi.eml
, mi.mbl_telno
, dmi.rgtr
, TO_CHAR(dmi.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
FROM dept_mbr_info dmi
LEFT JOIN mbr_info mi
ON dmi.mbr_id = mi.mbr_id
WHERE 1=1
<if test="deptId != null and deptId != ''">
AND dmi.dept_id = #{deptId}
</if>
<if test="mbrId != null and mbrId != ''">
AND dmi.mbr_id = #{mbrId}
</if>
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 상위,하위 부서 삭제
-->
<update id="deleteDept" parameterType="String">
WITH RECURSIVE DeptHierarchy AS (
SELECT dept_id
, up_dept_id
FROM dept_info
WHERE dept_id = #{deptId}
UNION ALL
SELECT di.dept_id
, di.up_dept_id
FROM dept_info di
JOIN DeptHierarchy dh
ON di.up_dept_id = dh.dept_id
)
UPDATE dept_info SET use_yn = 'N' WHERE dept_id IN (SELECT dept_id FROM DeptHierarchy);
</update>
<!--
작성자 : 하석형
작성일 : 2025.04.04
내 용 : 상위, 하위 부서의 사용자 수 조회
-->
<select id="countDeptInDeptMbr" parameterType="String" resultType="int">
WITH RECURSIVE DeptHierarchy AS (
SELECT dept_id, up_dept_id FROM dept_info WHERE dept_id = #{deptId}
UNION ALL
SELECT di.dept_id, di.up_dept_id
FROM dept_info di
JOIN DeptHierarchy dh ON di.up_dept_id = dh.dept_id
)
SELECT COUNT(*) FROM dept_mbr_info WHERE dept_id IN (SELECT dept_id FROM DeptHierarchy)
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 상위, 하위 부서 삭제에 따른 부서의 사용자 삭제
-->
<delete id="deleteDeptInDeptMbr" parameterType="String">
WITH RECURSIVE DeptHierarchy AS (
SELECT dept_id
, up_dept_id
FROM dept_info
WHERE dept_id = #{deptId}
UNION ALL
SELECT di.dept_id
, di.up_dept_id
FROM dept_info di
JOIN DeptHierarchy dh
ON di.up_dept_id = dh.dept_id
)
DELETE FROM dept_mbr_info WHERE dept_id IN (SELECT dept_id FROM DeptHierarchy);
</delete>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 부서에 등록된 사용자 제거
-->
<delete id="deleteDeptMbr" parameterType="Map">
DELETE
FROM dept_mbr_info
WHERE 1 = 1
AND mbr_id = #{mbrId}
</delete>
<!--
작성자 : 박정하
작성일 : 2024.05.10
내 용 : 부서 정보 수정 (hierachyVO 사용)
-->
<update id="deptUpdateByHierachy" parameterType="DeptVO">
UPDATE dept_info
SET up_dept_id = #{upDeptId}
, dept_grd = #{deptGrd}
, dept_sn = #{deptSn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE dept_id = #{deptId}
</update>
<!--
작성자 : 하석형
작성일 : 2025.05.16
내 용 : 부서 권한 목록 조회 (권한 코드로 조회)
-->
<select id="findDeptAuthrtByAuthrtCd" parameterType="String" resultType="DeptAuthrtVO">
SELECT dai.authrt_cd
, dai.dept_id
, dai.rgtr
, TO_CHAR(dai.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
FROM dept_authrt_info dai
WHERE dai.authrt_cd = #{authrtCd}
</select>
</mapper>