
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.09
내 용 : 공통코드 관련
-->
<mapper namespace="com.takensoft.cms.codeManage.dao.CodeManageDAO">
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 공통코드 중복 확인
-->
<select id="findByCheckCd" resultType="boolean">
SELECT COUNT(cd)
FROM cd_mng
WHERE cd = #{cd}
<if test="originCd != null and originCd != ''">
AND cd != #{originCd}
</if>
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 코드 등록
-->
<insert id="save" parameterType="CodeManageVO">
INSERT INTO cd_mng (
cd
, up_cd
, cd_nm
, cd_vl
, cd_expln
, cd_grd
, cd_sn
, use_yn
, sys_pvsn_yn
, rgtr
, reg_dt
) VALUES (
#{cd}
, #{upCd}
, #{cdNm}
, #{cdVl}
, #{cdExpln}
, #{cdGrd}
, #{cdSn}
, 'Y'
, 1
, #{rgtr}
, NOW()
)
</insert>
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 코드 깊이 조회
-->
<select id="findByCdGrd" parameterType="String" resultType="Integer">
SELECT cd_grd
FROM cd_mng
WHERE cd = #{upCd}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 코드 순서 조회
-->
<select id="findByCdSn" parameterType="String" resultType="Integer">
SELECT COALESCE(MAX(cd_sn), 0)
FROM cd_mng
WHERE use_yn = 'Y'
<choose>
<when test="upCd != null and upCd != ''">
AND up_cd = #{upCd}
</when>
<otherwise>
AND up_cd IS NULL
</otherwise>
</choose>
</select>
<sql id="selectCd">
SELECT cd
, up_cd
, cd_nm
, cd_vl
, cd_expln
, cd_grd
, cd_sn
, use_yn
, sys_pvsn_yn
, rgtr
, TO_CHAR(reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, mdfr
, TO_CHAR(mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
FROM cd_mng
</sql>
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 최상위 코드 조회 [관리자용]
-->
<select id="findTopCd" resultType="CodeManageVO">
<include refid="selectCd" />
WHERE up_cd IS NULL
ORDER BY cd_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 하위 코드 조회 [관리자용]
-->
<select id="findChildCd" parameterType="String" resultType="CodeManageVO">
<include refid="selectCd" />
WHERE up_cd = #{cd}
ORDER BY cd_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 하위 코드 조회 [사용자용]
-->
<select id="findChildCdUser" parameterType="String" resultType="CodeManageVO">
<include refid="selectCd" />
WHERE up_cd = #{cd}
AND use_yn = 'Y'
ORDER BY cd_sn
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.09
내 용 : 코드 상세 조회
-->
<select id="findByCd" parameterType="String" resultType="CodeManageVO">
SELECT cm.cd
, cm.up_cd
, cm2.cd_nm AS up_cd_nm
, cm.cd_nm
, cm.cd_vl
, cm.cd_expln
, cm.cd_grd
, cm.cd_sn
, cm.use_yn
, cm.sys_pvsn_yn
, cm.rgtr
, TO_CHAR(cm.reg_dt, 'YYYY-MM-DD HH24:MI') AS reg_dt
, cm.mdfr
, TO_CHAR(cm.mdfcn_dt, 'YYYY-MM-DD HH24:MI') AS mdfcn_dt
FROM cd_mng cm
LEFT JOIN cd_mng cm2
ON cm.up_cd = cm2.cd
WHERE cm.cd = #{cd}
</select>
<!--
작성자 : takensoft
작성일 : 2024.04.15
내 용 : 코드 수정
-->
<update id="update" parameterType="CodeManageVO">
UPDATE cd_mng
SET cd = #{cd}
, up_cd = #{upCd}
, cd_nm = #{cdNm}
, cd_vl = #{cdVl}
, cd_expln = #{cdExpln}
, cd_grd = #{cdGrd}
, cd_sn = #{cdSn}
, use_yn = #{useYn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE cd = #{originCd}
</update>
<!--
작성자 : takensoft
작성일 : 2024.04.26
내 용 : 상위코드가 수정됨에 따라 하위코드의 상위코드값 변경
-->
<update id="updateUpCd" parameterType="CodeManageVO">
UPDATE cd_mng
SET up_cd = #{cd}
WHERE up_cd = #{originCd}
</update>
<!--
작성자 : takensoft
작성일 : 2024.04.23
내 용 : 코드 삭제
-->
<delete id="deleteCd" parameterType="String">
WITH RECURSIVE CodeHierarchy AS (
SELECT cd
, up_cd
FROM cd_mng
WHERE cd = #{cd}
UNION ALL
SELECT cm.cd
, cm.up_cd
FROM cd_mng cm
JOIN CodeHierarchy ch
ON cm.up_cd = ch.cd
)
DELETE FROM cd_mng WHERE cd IN (SELECT cd FROM CodeHierarchy)
</delete>
<!-- 공통코드 관리(관리자 페이지 Tree 호출 전용) -->
<sql id="selectNode">
SELECT cd AS id
, up_cd AS up_id
, cd_nm AS nm
FROM cd_mng
</sql>
<select id="findByTopNode" resultType="HierachyVO">
<include refid="selectNode" />
WHERE up_cd IS NULL
ORDER BY cd_sn
</select>
<select id="findChildNode" parameterType="String" resultType="HierachyVO">
<include refid="selectNode" />
WHERE up_cd = #{id}
ORDER BY cd_sn
</select>
<!--
작성자 : 박정하
작성일 : 2024.05.10
내 용 : 공통 코드 정보 수정 (hierachyVO 사용)
-->
<update id="codeUpdateByHierachy" parameterType="CodeManageVO">
UPDATE cd_mng
SET up_cd = #{upCd}
, cd_grd = #{cdGrd}
, cd_sn = #{cdSn}
, mdfr = #{mdfr}
, mdfcn_dt = NOW()
WHERE cd = #{cd}
</update>
</mapper>