
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
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="String" 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 dmi.dept_id = #{deptId}
</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>
<!--
작성자 : 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>
</mapper>