
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.DepartmentDAO">
<!-- 부서 등록 -->
<insert id="insertDepartment" parameterType="DepartmentVO">
INSERT INTO orgnzt_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>
<!-- 부서코드 중복 체크 -->
<select id="checkDuplicateOrgCode" parameterType="String" resultType="int">
SELECT COUNT(*)
FROM orgnzt_info
WHERE dept_code = #{dept_code}
</select>
<!-- 상위 부서가 없는 부서들 중에서 가장 큰 dept_ordr 조회 -->
<select id="getMaxDeptOrdrNoUpperDept" resultType="int">
SELECT COALESCE(MAX(dept_ordr), 0)
FROM orgnzt_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 orgnzt_info
WHERE upper_dept = #{upper_dept}
</select>
<!-- 부서 목록 조회 -->
<select id="selectDepartments" resultType="DepartmentVO">
SELECT orgnzt_info.*
, author_info.author
, (SELECT dept_nm FROM orgnzt_info AS oi WHERE oi.dept_code = orgnzt_info.upper_dept) AS upper_dept_nm
FROM orgnzt_info
LEFT JOIN orgnzt_author
ON orgnzt_info.dept_code = orgnzt_author.dept_code
LEFT JOIN author_info
ON orgnzt_author.author = author_info.author
WHERE orgnzt_info.use_at = true
ORDER BY dept_ordr, dept_dp
</select>
<!-- 2024.07.29 PJH 부서 상세 조회 (with.userId) -->
<select id="getDepartmentByUserId" parameterType="String" resultType="DepartmentVO">
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 orgnzt_member AS om
LEFT JOIN orgnzt_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 orgnzt_info
WHERE dept_code = #{dept_code}
</select>
<!-- 부서 상세 조회 -->
<select id="getDepartmentByDeptCode" parameterType="String" resultType="DepartmentVO">
SELECT org_code
, dept_addr
, dept_nm
, dept_code
, upper_dept
, dept_dp
, dept_ordr
, use_at
FROM orgnzt_info
WHERE dept_code = #{dept_code}
</select>
<!-- 부서 수정 -->
<update id="updateDepartment" parameterType="DepartmentVO">
UPDATE orgnzt_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="DepartmentVO" >
UPDATE orgnzt_info
SET use_at = 'false'
WHERE dept_code = #{dept_code}
</delete>
<!-- 부서 목록 조회 -->
<select id="selectDeptList" parameterType="SearchVO" resultType="DepartmentVO">
SELECT dept_code
, dept_nm
FROM orgnzt_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 == null and item.value != null and item.value !=''">
AND (
dept_code LIKE CONCAT('%', #{item.value}, '%')
OR dept_nm LIKE CONCAT('%', #{item.value}, '%')
)
</when>
<when test="item.type != null and item.type !='' and item.value != null and item.value !='' and item.type == ''">
AND ${item.key} = #{item.value}
</when>
<when test="item.type != null and item.type !='' and item.value != null and item.value !=''">
AND ${item.key} LIKE CONCAT('%', #{item.value}, '%')
</when>
</choose>
</foreach>
ORDER BY dept_code ,dept_ordr, dept_dp ASC
</select>
<!-- orgnzt_author에 데이터 삽입 -->
<insert id="insertOrgnztAuthor" parameterType="DepartmentVO">
INSERT INTO orgnzt_author
(
dept_code,
author
)
VALUES
(
#{dept_code},
#{author}
)
</insert>
<!-- orgnzt_author 데이터 수정 -->
<update id="updateOrgnztAuthor" parameterType="DepartmentVO">
UPDATE orgnzt_author
SET author = #{author}
WHERE dept_code = #{dept_code}
</update>
<!-- org_code를 upper_dept로 사용하는 부서 조회 -->
<select id="getDepartmentsByUpperDept" parameterType="string" resultType="DepartmentVO">
SELECT org_code
, dept_addr
, dept_nm
, dept_code
, upper_dept
, dept_dp
, dept_ordr
FROM orgnzt_info
WHERE upper_dept = #{dept_code}
ORDER BY dept_ordr
</select>
<!-- 하위부서정보 수정 -->
<update id="updateChildAddr" parameterType="DepartmentVO">
UPDATE orgnzt_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 orgnzt_info
WHERE dept_code = #{dept_code}
</select>
<!-- org_code로 dept_dp 가져오기 -->
<select id="getDeptDpByOrgCode" parameterType="string" resultType="int">
SELECT dept_dp
FROM orgnzt_info
WHERE dept_code = #{dept_code}
</select>
<!-- 부서히스토리 등록 -->
<insert id="insertDeptHistory" parameterType="DepartmentVO">
INSERT INTO orgnzt_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 orgnzt_info
WHERE upper_code = #{dept_code}
AND use_at = true
</select>
<!-- 부서 권한 연계테이블에서 삭제 -->
<delete id="deleteDeptAuthor" parameterType="String">
DELETE FROM orgnzt_author
WHERE dept_code = #{dept_code}
</delete>
<!-- 부서 멤버 연계테이블에서 해당 부서의 멤버수 조회 -->
<select id="selectDeptMember" parameterType="String">
SELECT COUNT(*)
FROM orgnzt_member
WHERE dept_code = #{dept_code}
</select>
<!-- 부서 멤버 연계테이블에서 삭제 -->
<delete id="deleteDeptMember" parameterType="String">
DELETE FROM orgnzt_member
WHERE dept_code = #{dept_code}
</delete>
</mapper>