
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">
<mapper namespace="com.takensoft.taken_bi_manager.department.dao.DeptDAO">
<!--
작성자 : 박정하
작성일 : 2025.01.08
내 용 : 상위 부서 조회
-->
<select id="selectParentListByDept" resultType="HierachyVO">
SELECT dept_code AS id
, upper_dept AS up_id
, dept_nm AS nm
, dept_dp AS dp
, dept_ordr AS ordr
FROM dept_info
WHERE upper_dept IS NULL
AND use_at = true
ORDER BY dept_ordr, dept_dp
</select>
<!--
작성자 : 박정하
작성일 : 2025.01.08
내 용 : 하위 부서 조회
-->
<select id="selectChildListByDept" parameterType="String" resultType="HierachyVO">
SELECT dept_code AS id
, upper_dept AS up_id
, dept_nm AS nm
, dept_dp AS dp
, dept_ordr AS ordr
FROM dept_info
WHERE upper_dept = #{id}
AND use_at = true
ORDER BY dept_ordr, dept_dp
</select>
<!-- 부서코드 중복 체크 -->
<select id="checkDuplicateOrgCode" parameterType="String" resultType="int">
SELECT COUNT(*)
FROM dept_info
WHERE dept_code = #{dept_code}
</select>
<!-- 부서 목록 조회 -->
<select id="selectDeptList" parameterType="SearchVO" resultType="DeptVO">
SELECT dept_code
, upper_dept
, org_code
, dept_nm
, dept_dp
, dept_ordr
, use_at
, creat_dt
, updt_id
, creat_id
, updt_id
, dept_dc
, dept_addr
FROM dept_info
WHERE use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.key == 'role_chk'">
<if test="item.value == 0">
AND upper_dept IS NOT NULL
</if>
<if test="item.value == 1">
AND upper_dept IS NULL
</if>
</when>
<when test="item.key == 'currentCode' and item.value != null and item.value != ''">
AND dept_code != #{item.value}
</when>
<when test="item.key != null and item.key !='' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</when>
<when test="item.key == null and item.value != null and item.value !=''">
AND (
dept_code LIKE CONCAT('%', #{item.value}, '%')
OR dept_nm LIKE CONCAT('%', #{item.value}, '%')
)
</when>
</choose>
</foreach>
ORDER BY dept_ordr, dept_dp, dept_nm ASC
<if test="perPage != 0 and currentPage != 0">
LIMIT #{perPage} OFFSET ((#{currentPage} - 1) * #{perPage})
</if>
</select>
<select id="selectDeptListCount" parameterType="SearchVO">
SELECT COUNT(*)
FROM dept_info
WHERE use_at = true
<foreach item="item" index="index" collection="searchObjectList">
<choose>
<when test="item.key == 'role_chk'">
<if test="item.value == 0">
AND upper_dept IS NOT NULL
</if>
<if test="item.value == 1">
AND upper_dept IS NULL
</if>
</when>
<when test="item.key == 'currentCode' and item.value != null and item.value != ''">
AND dept_code != #{item.value}
</when>
<when test="item.key != null and item.key !='' and item.value != null and item.value != ''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</when>
<when test="item.key == null and item.value != null and item.value !=''">
AND (
dept_code LIKE CONCAT('%', #{item.value}, '%')
OR dept_nm LIKE CONCAT('%', #{item.value}, '%')
)
</when>
</choose>
</foreach>
</select>
<!-- 부서 등록 -->
<insert id="insertDept" parameterType="DeptVO">
INSERT INTO dept_info
(
dept_code,
org_code,
dept_nm,
dept_dc,
upper_dept,
dept_dp,
use_at,
creat_dt,
dept_ordr,
creat_id
)
VALUES
(
#{dept_code},
#{dept_code},
#{dept_nm},
#{dept_dc},
#{upper_dept},
#{dept_dp},
'Y',
CURRENT_TIMESTAMP,
#{dept_ordr},
#{creat_id}
)
</insert>
<!-- 상위 부서가 없는 부서들 중에서 가장 큰 dept_ordr 조회 -->
<select id="getMaxDeptOrdrNoUpperDept" resultType="int">
SELECT COALESCE(MAX(dept_ordr), 0)
FROM dept_info
WHERE upper_dept IS NULL OR upper_dept = ''
</select>
<!-- 해당 상위부서의 하위부서들 중에서 가장 큰 dept_ordr 조회 -->
<select id="getMaxDeptOrdrByUpperDept" parameterType="String" resultType="int">
SELECT COALESCE(MAX(dept_ordr),0)
FROM dept_info
WHERE upper_dept = #{upper_dept}
</select>
<!-- 2024.07.29 PJH 부서 상세 조회 (with.userId) -->
<select id="getDepartmentByUserId" parameterType="String" resultType="DeptVO">
SELECT oi.org_code
, oi.dept_addr
, oi.dept_nm
, oi.dept_code
, oi.upper_dept
, oi.dept_dp
, oi.dept_ordr
, oi.use_at
FROM dept_user AS om
LEFT JOIN dept_info AS oi
ON om.dept_code = oi.dept_code
WHERE om.user_id = #{userId}
</select>
<!-- 상위 부서 코드 조회 2024.07.29 PJH -->
<select id="getUpDeptCode" parameterType="String" resultType="String">
SELECT upper_dept
FROM dept_info
WHERE dept_code = #{dept_code}
</select>
<!-- 부서 상세 조회 -->
<select id="getDepartmentByDeptCode" parameterType="String" resultType="DeptVO">
SELECT org_code
, dept_addr
, dept_nm
, dept_code
, upper_dept
, dept_dp
, dept_ordr
, use_at
FROM dept_info
WHERE dept_code = #{dept_code}
</select>
<!-- 부서 수정 -->
<update id="updateDepartment" parameterType="DeptVO">
UPDATE dept_info
SET
dept_nm = #{dept_nm}
, dept_dc = #{dept_dc}
, upper_dept = #{upper_dept}
, updt_dt = CURRENT_TIMESTAMP
, updt_id = #{updt_id}
, dept_addr = #{dept_addr}
, dept_dp = #{dept_dp}
WHERE dept_code = #{dept_code}
</update>
<!-- 부서 삭제-->
<delete id="deleteDepartment" parameterType="DeptVO" >
UPDATE dept_info
SET use_at = 'false'
WHERE dept_code = #{dept_code}
</delete>
<!-- org_code를 upper_dept로 사용하는 부서 조회 -->
<select id="getDepartmentsByUpperDept" parameterType="string" resultType="DeptVO">
SELECT org_code
, dept_addr
, dept_nm
, dept_code
, upper_dept
, dept_dp
, dept_ordr
FROM dept_info
WHERE upper_dept = #{dept_code}
ORDER BY dept_ordr
</select>
<!-- 하위부서정보 수정 -->
<update id="updateChildAddr" parameterType="DeptVO">
UPDATE dept_info
SET dept_addr = #{dept_addr}
, dept_dp = #{dept_dp}
WHERE dept_code = #{dept_code}
</update>
<!-- org_code로 dept_addr 가져오기 -->
<select id="getDeptAddrByOrgCode" parameterType="string" resultType="string">
SELECT dept_addr
FROM dept_info
WHERE dept_code = #{dept_code}
</select>
<!-- org_code로 dept_dp 가져오기 -->
<select id="getDeptDpByOrgCode" parameterType="string" resultType="int">
SELECT dept_dp
FROM dept_info
WHERE dept_code = #{dept_code}
</select>
<!-- 부서히스토리 등록 -->
<insert id="insertDeptHistory" parameterType="DeptVO">
INSERT INTO dept_history
(
dept_code
, dept_his_creat_dt
, dept_his_type
, upper_dept
, org_code
, befor_dept_nm
, now_dept_nm
, dept_dp
, dept_ordr
)
VALUES
(
#{dept_code}
, CURRENT_TIMESTAMP
, #{dept_his_type}
, #{upper_dept}
, #{dept_code}
, #{befor_dept_nm}
, #{dept_nm}
, #{dept_dp}
, #{dept_ordr}
)
</insert>
<!--
작성자 : 이세현
작성일 : 2024-03-22
내용 : 조직 삭제에 필요한 쿼리
-->
<!-- 깊이(dept_dp)가 맨 마지막인지 확인-->
<select id="isLastDepth" parameterType="String" resultType="int">
SELECT COUNT(*)
FROM dept_info
WHERE upper_code = #{dept_code}
AND use_at = true
</select>
<!-- 부서 멤버 연계테이블에서 삭제 -->
<delete id="deleteDeptMember" parameterType="String">
DELETE FROM dept_user
WHERE dept_code = #{dept_code}
</delete>
<!-- 부서 상세 조회 -->
<select id="selectDept" parameterType="String" resultType="DeptVO">
SELECT dept_code
, upper_dept
, org_code
, dept_nm
, dept_dp
, dept_ordr
, use_at
, creat_dt
, updt_dt
, creat_id
, updt_id
, dept_dc
, dept_addr
, (SELECT oi.dept_nm FROM dept_info AS oi WHERE oi.dept_code = dept_info.upper_dept) AS upper_dept_nm
FROM dept_info
WHERE dept_code = #{deptCode}
</select>
</mapper>