방선주 방선주 03-17
250317 방선주 codeManage 코드 개선
@40d5109ad4ab400e0cd8ef7d0b1e3f8b42dbfbe1
build/resources/main/mybatis/mapper/codeManage/codeManage-SQL.xml
--- build/resources/main/mybatis/mapper/codeManage/codeManage-SQL.xml
+++ build/resources/main/mybatis/mapper/codeManage/codeManage-SQL.xml
@@ -119,6 +119,9 @@
     <select id="findChildCd" parameterType="String" resultType="CodeManageVO">
         <include refid="selectCd" />
          WHERE up_cd = #{cd}
+        <if test="type =='user'">
+            AND use_yn = 'Y'
+        </if>
       ORDER BY cd_sn
     </select>
 
src/main/java/com/takensoft/cms/codeManage/dao/CodeManageDAO.java
--- src/main/java/com/takensoft/cms/codeManage/dao/CodeManageDAO.java
+++ src/main/java/com/takensoft/cms/codeManage/dao/CodeManageDAO.java
@@ -5,112 +5,147 @@
 import com.takensoft.common.HierachyVO;
 import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author  : takensoft
- * @since   : 2024.04.09
+ * @since   :2024.04.09
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.09  |   takensoft  | 최초 등록
+ *  2024.04.15  |   takensoft  | update 추가
+ *  2024.04.23  |   takensoft  | deleteCd 추가
+ *  2024.04.24  |   takensoft  | findByTopNode, findChildNode 추가
+ *  2024.04.26  |   takensoft  | updateUpCd 추가
+ *  2024.05.10  |    박정하     | codeUpdateByHierachy 추가
+ *  2025.03.13  |    방선주    | 코드 리펙토링
  *
- * 공통코드 정보 관련 Mapper
+ * 공통코드 정보 관련 DAO
  */
 @Mapper("codeManageDAO")
 public interface CodeManageDAO {
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param codeManageVO - 공통코드 객체
+     * @return boolean - 코드 중복 결과
+     *
      * 공통 코드 중복 검사
      */
     boolean findByCheckCd(CodeManageVO codeManageVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param codeManageVO - 공통코드 객체
+     * @return int - 공통 코드 등록 결과
+     *
      * 코드 등록
      */
     int save(CodeManageVO codeManageVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.15
+     * @param codeManageVO - 공통코드 객체
+     * @return int - 공통 코드 수정 결과
+     *
      * 코드 수정
      */
     int update(CodeManageVO codeManageVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param codeManageVO - 공통코드 객체
+     * @return int - 상위 코드 수정에 따른 하위 코드 변경 결과
+     *
      * 상위코드가 수정됨에 따라 하위코드의 상위코드값 변경
      */
     int updateUpCd(CodeManageVO codeManageVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * 코드 깊이 조회
+     * @param upCd - 상위 코드 명
+     * @return int - 상위 코드 깊이
+     *
+     * 상위코드가 수정됨에 따라 하위코드의 상위코드값 변경
      */
     int findByCdGrd(String upCd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param upCd - 상위 코드 명
+     * @return int - 코드 순서
+     *
      * 코드 순서 조회
      */
     int findByCdSn(String upCd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param
+     * @return List<CodeManageVO> - 공통코드 목록
+     *
      * 최상위 코드 조회
      */
     List<CodeManageVO> findTopCd();
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * 하위 코드 조회[관리자용]
+     * @param childMap - 상위 코드, type(mng, user)
+     * @return List<CodeManageVO> - 하위 코드 목록
+     *
+     * 하위 코드 조회
      */
-    List<CodeManageVO> findChildCd(String cd);
+    List<CodeManageVO> findChildCd(Map<String, Object> childMap);
+
+//    /**
+//     * @param cd - 상위 코드 명
+//     * @return List<CodeManageVO> - 하위 코드 목록
+//     *
+//     * 하위 코드 조회[관리자용]
+//     */
+//    List<CodeManageVO> findChildCd(String cd);
+
+//    /**
+//     * @param cd - 상위 코드 명
+//     * @return List<CodeManageVO> - 하위 코드 목록
+//     *
+//     * 하위 코드 조회[사용자용]
+//     */
+//    List<CodeManageVO> findChildCdUser(String cd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * 하위 코드 조회[사용자용]
-     */
-    List<CodeManageVO> findChildCdUser(String cd);
-
-    /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param cd - 코드 명
+     * @return CodeManageVO - 상세 코드 정보
+     *
      * 코드 상세 조회
      */
     CodeManageVO findByCd(String cd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.23
+     * @param cd - 코드 명
+     * @return int - 삭제 결과
+     *
      * 코드 삭제
      */
     int deleteCd(String cd);
 
     /************************************** Hierachy 전용 **************************************/
+
     /**
-     * @author takensoft
-     * @since 2024.04.24
+     * @param
+     * @return List<HierachyVO> - 공통 코드 목록
+     *
      * 최상위 코드 조회
      */
     List<HierachyVO> findByTopNode();
+
     /**
-     * @author takensoft
-     * @since 2024.04.24
+     * @param id - 상위 코드 명
+     * @return List<HierachyVO> - 공통 코드 목록
+     *
      * 하위 코드 조회
      */
     List<HierachyVO> findChildNode(String id);
     /************************************** Hierachy 전용 **************************************/
 
     /**
-     * @author 박정하
-     * @since 2024.05.10
+     * @param codeManageVO - 공통코드 객체
+     * @return int - 공통 코드 수정 결과
+     *
      * 공통 코드 목록 정보 수정 (hierachyVO 사용)
      */
-    public int codeUpdateByHierachy(CodeManageVO codeManageVO) throws Exception;
+    int codeUpdateByHierachy(CodeManageVO codeManageVO);
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/codeManage/service/CodeManageService.java
--- src/main/java/com/takensoft/cms/codeManage/service/CodeManageService.java
+++ src/main/java/com/takensoft/cms/codeManage/service/CodeManageService.java
@@ -7,100 +7,125 @@
 import java.util.List;
 
 /**
- * @author  : takensoft
- * @since   : 2024.04.09
+ * @author takensoft
+ * @since 2024.04.09
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.09  |  takensoft   | 최초 등록
+ *  2024.04.15  |  takensoft   | cdUpdate, findByCdSystem 추가
+ *  2024.04.19  |  takensoft   | findByChildCdCache 추가
+ *  2024.04.23  |  takensoft   | cdDelete, findByTopNode, findChildNode 추가
+ *  2024.05.10  |    박정하     | updateList, updateChildNode 추가
+ *  2025.03.14  |    방선주     | 코드 리펙토링
  *
  * 공통코드 정보 관련 인터페이스
  */
 public interface CodeManageService {
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param codeManageVO - 공통 코드 객체
+     * @return boolean - 중복 여부 결과
+     *
      * 코드 중복 검사
      */
-    public boolean findByCheckCd(CodeManageVO codeManageVO) throws Exception;
+    boolean findByCheckCd(CodeManageVO codeManageVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param codeManageVO - 공통 코드 객체
+     * @return int - 등록 결과
+     *
      * 코드 등록
      */
-    public int cdSave(CodeManageVO codeManageVO) throws Exception;
+    int cdSave(CodeManageVO codeManageVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.15
+     * @param codeManageVO - 공통 코드 객체
+     * @return int - 수정 결과
+     *
      * 코드 수정
      */
-    public int cdUpdate(CodeManageVO codeManageVO) throws Exception;
+    int cdUpdate(CodeManageVO codeManageVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * 전체 코드 조회 [관리자용 ]
+     * @param
+     * @return List<CodeManageVO> - 공통 코드 목록
+     *
+     * 전체 코드 조회 [관리자용]
      */
-    public List<CodeManageVO> findTopCd() throws Exception;
+    List<CodeManageVO> findTopCd();
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param cd - 상위 코드
+     * @return List<CodeManageVO> - 공통 코드 목록
+     *
      * 하위 코드 조회
      */
-    public List<CodeManageVO> findByChildCd(String cd) throws Exception;
+    List<CodeManageVO> findByChildCd(String cd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param cd - 상위 코드
+     * @return CodeManageVO - 공통 코드 객체
+     *
      * 코드 상세 조회
      */
-    public CodeManageVO findByCd(String cd) throws Exception;
+    CodeManageVO findByCd(String cd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.15
+     * @param cd - 상위 코드
+     * @return CodeManageVO - 공통 코드 객체
+     *
      * 특정 공통 목록 코드 조회(시스템 처리용)
      */
-    public CodeManageVO findByCdSystem(String cd) throws Exception;
+    CodeManageVO findByCdSystem(String cd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.19
+     * @param cd - 상위 코드
+     * @return List<CodeManageVO> - 공통 코드 목록
+     *
      * 하위 코드 조회(cache)
      */
-    public List<CodeManageVO> findByChildCdCache(String cd);
+    List<CodeManageVO> findByChildCdCache(String cd);
 
     /**
-     * @author takensoft
-     * @since 2024.04.23
+     * @param cd - 공통 코드 명
+     * @return int - 삭제 결과
+     *
      * 코드 삭제
      */
-    public int cdDelete(String cd) throws Exception;
+    int cdDelete(String cd);
 
     /************************************** Hierachy 전용 **************************************/
+
     /**
-     * @author takensoft
-     * @since 2024.04.24
+     * @param
+     * @return List<HierachyVO> - 최상위 공통 코드 목록
+     *
      * 최상위 코드 조회
      */
-    public List<HierachyVO> findByTopNode();
+    List<HierachyVO> findByTopNode();
+
     /**
-     * @author takensoft
-     * @since 2024.04.24
+     * @param id - 상위 코드
+     * @return int - 삭제 결과
+     *
      * 하위 코드 조회
      */
-    public List<HierachyVO> findChildNode(String id);
+    List<HierachyVO> findChildNode(String id);
     /************************************** Hierachy 전용 **************************************/
 
     /**
-     * @author 박정하
-     * @since 2024.05.10
+     * @param deptList - 부서 리스트
+     * @return int - 수정 결과
+     *
      * 공통 코드 목록 수정
      */
-    public int updateList(List<HierachyVO> deptList) throws Exception;
+    int updateList(List<HierachyVO> deptList);
+
     /**
-     * @author 박정하
-     * @since 2024.05.10
+     * @param childList - 부서 리스트
+     * @param upCodeManageVO - 상위 코드 객체
+     * @return int - 하위 코드 수정 결과
+     *
      * 하위 코드 수정
      */
-    public int updateChildNode(List<HierachyVO> childList, CodeManageVO upCodeManageVO) throws Exception;
+    int updateChildNode(List<HierachyVO> childList, CodeManageVO upCodeManageVO);
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/codeManage/service/Impl/CodeManageServiceImpl.java
--- src/main/java/com/takensoft/cms/codeManage/service/Impl/CodeManageServiceImpl.java
+++ src/main/java/com/takensoft/cms/codeManage/service/Impl/CodeManageServiceImpl.java
@@ -4,6 +4,8 @@
 import com.takensoft.cms.codeManage.service.CodeManageService;
 import com.takensoft.cms.codeManage.vo.CodeManageVO;
 import com.takensoft.cms.dept.vo.DeptVO;
+import com.takensoft.common.exception.CustomInsertFailException;
+import com.takensoft.common.exception.CustomUpdateFailException;
 import com.takensoft.common.util.JWTUtil;
 import com.takensoft.common.HierachyVO;
 import lombok.RequiredArgsConstructor;
@@ -11,18 +13,31 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cache.annotation.Cacheable;
+import org.springframework.dao.DataAccessException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author  : takensoft
- * @since   : 2024.04.09
+ * @since   :2024.04.09
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.09  |  takensoft   | 최초 등록
+ *  2024.04.15  |  takensoft   | cdUpdate, findByCdSystem 추가
+ *  2024.04.19  |  takensoft   | findByChildCdCache,  추가
+ *  2024.04.23  |  takensoft   | cdDelete 추가
+ *  2024.04.24  |  takensoft   | findByTopNode, findChildNode
+ *  2024.05.10  |    박정하     | updateList, updateChildNode 추가
+ *  2025.03.14  |    방선주     | 코드 리펙토링
+ *
+ * EgovAbstractServiceImpl - 전자정부 프레임워크에서 제공하는 추상 서비스 구현 클래스
+ * CodeManageService - 공통코드 정보 관련 인터페이스
  *
  * 공통코드 정보 관련 구현체
- * EgovAbstractServiceImpl : 전자정부 상속
- * AuthorService : 공통코드 정보 인터페이스 상속
  */
 @Service("codeManageService")
 @RequiredArgsConstructor
@@ -33,172 +48,304 @@
     private final CodeManageDAO codeManageDAO;
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param codeManageVO - 공통코드 정보
+     * @return boolean - 중복 여부
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 코드 중복 검사
      */
     @Override
-    public boolean findByCheckCd(CodeManageVO codeManageVO) throws Exception {
-        return codeManageDAO.findByCheckCd(codeManageVO);
+    public boolean findByCheckCd(CodeManageVO codeManageVO) {
+        try {
+            return codeManageDAO.findByCheckCd(codeManageVO);
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
+        }
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param codeManageVO - 공통코드 정보
+     * @return int - 등록 결과
+     * @throws CustomInsertFailException - 등록 실패 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 코드 등록
      */
     @Override
-    public int cdSave(CodeManageVO codeManageVO) throws Exception {
-        // 상위 코드가 존재 하는 경우
-        if(codeManageVO.getUpCd() != null && !codeManageVO.getUpCd().equals("")) {
-            // 상위 메뉴 아이디 보다 깊이(레벨) 1 추가
-            codeManageVO.setCdGrd(codeManageDAO.findByCdGrd(codeManageVO.getUpCd()) + 1);
-            // 동일한 깊이의 코드 순서 보다 1 추가
-            codeManageVO.setCdSn(codeManageDAO.findByCdSn(codeManageVO.getUpCd()) + 1);
-        // 상위 코드가 존재 하지 않는 경우
-        } else {
-            codeManageVO.setCdGrd(0);
-            codeManageVO.setCdSn(codeManageDAO.findByCdSn(null) + 1);
+    public int cdSave(CodeManageVO codeManageVO){
+        try {
+            // 상위 코드가 존재 하는 경우
+            if (codeManageVO.getUpCd() != null && !codeManageVO.getUpCd().equals("")) {
+                // 상위 메뉴 아이디 보다 깊이(레벨) 1 추가
+                codeManageVO.setCdGrd(codeManageDAO.findByCdGrd(codeManageVO.getUpCd()) + 1);
+                // 동일한 깊이의 코드 순서 보다 1 추가
+                codeManageVO.setCdSn(codeManageDAO.findByCdSn(codeManageVO.getUpCd()) + 1);
+                // 상위 코드가 존재 하지 않는 경우
+            } else {
+                codeManageVO.setCdGrd(0);
+                codeManageVO.setCdSn(codeManageDAO.findByCdSn(null) + 1);
+            }
+            // 등록된 토큰에서 사용자 정보 조회
+            codeManageVO.setRgtr(jwtUtil.getWriter());
+            // 코드 등록 결과
+            int result = codeManageDAO.save(codeManageVO);
+            if(result == 0) {
+                throw new CustomInsertFailException("공통 코드 등록 실패");
+            }
+            return result;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException npe) {
+            throw npe;
+        } catch (Exception e) {
+            throw e;
         }
-        // 등록된 토큰에서 사용자 정보 조회
-        codeManageVO.setRgtr(jwtUtil.getWriter());
-        return codeManageDAO.save(codeManageVO);
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.15
+     * @param codeManageVO - 공통코드 정보
+     * @return int - 등록 결과
+     * @throws CustomUpdateFailException - 수정 실패 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 코드 수정
      */
     @Override
-    public int cdUpdate(CodeManageVO codeManageVO) throws Exception {
-        // 등록된 토큰에서 사용자 정보 조회
-        codeManageVO.setMdfr(jwtUtil.getWriter());
-        // 코드 수정
-        int result = codeManageDAO.update(codeManageVO);
-        // 해당 코드가 변경됨에 따라 하위 코드의 상위코드값 변경
-        result += codeManageDAO.updateUpCd(codeManageVO);
-        return result;
+    public int cdUpdate(CodeManageVO codeManageVO){
+        try {
+            // 등록된 토큰에서 사용자 정보 조회
+            codeManageVO.setMdfr(jwtUtil.getWriter());
+            // 코드 수정
+            int result = codeManageDAO.update(codeManageVO);
+            if(result == 0) {
+                throw new CustomUpdateFailException("공통 코드 수정 실패");
+            }
+            // 해당 코드가 변경됨에 따라 하위 코드의 상위 코드값 변경
+            int updateChild =  codeManageDAO.updateUpCd(codeManageVO);
+            if(updateChild == 0) {
+                throw new CustomUpdateFailException("공통 코드 수정 실패");
+            }
+            return result;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException npe) {
+            throw npe;
+        } catch (Exception e) {
+            throw e;
+        }
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * 전체 코드 조회 [관리자용 ]
+     * @param
+     * @return List<CodeManageVO> - 공통 코드 목록
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
+     * 전체 코드 조회 [관리자용]
      */
     @Override
-    public List<CodeManageVO> findTopCd() throws Exception {
-        // 상위 코드 조회
-        List<CodeManageVO> topCdList = codeManageDAO.findTopCd();
-        // 상위 코드에 따른 하위 코드 조회
-        for(CodeManageVO codeManage : topCdList) {
-            List<CodeManageVO> childCd = findByChildCd(codeManage.getCd());
-            codeManage.setChildCdList(childCd);
+    public List<CodeManageVO> findTopCd(){
+        try {
+            // 상위 코드 조회
+            List<CodeManageVO> topCdList = codeManageDAO.findTopCd();
+            // 상위 코드에 따른 하위 코드 조회
+            for (CodeManageVO codeManage : topCdList) {
+                List<CodeManageVO> childCd = findByChildCd(codeManage.getCd());
+                codeManage.setChildCdList(childCd);
+            }
+            return topCdList;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
         }
-        return topCdList;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param cd - 상위 코드
+     * @return List<CodeManageVO> - 하위 코드 목록
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 하위 코드 조회
      */
     @Override
-    public List<CodeManageVO> findByChildCd(String cd) throws Exception {
-        List<CodeManageVO> childCdList = codeManageDAO.findChildCd(cd);
-        for(CodeManageVO codeManage : childCdList) {
-            List<CodeManageVO> childCd = findByChildCd(codeManage.getCd());
-            codeManage.setChildCdList(childCd);
+    public List<CodeManageVO> findByChildCd(String cd) {
+        try {
+            // 관리자 하위 코드 조회
+            Map<String, Object> childMap = new HashMap<>();
+            childMap.put("type", "mng");
+            childMap.put("cd", cd);
+
+            List<CodeManageVO> childCdList = codeManageDAO.findChildCd(childMap);
+            for (CodeManageVO codeManage : childCdList) {
+                List<CodeManageVO> childCd = findByChildCd(codeManage.getCd());
+                codeManage.setChildCdList(childCd);
+            }
+            return childCdList;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
         }
-        return childCdList;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
+     * @param cd - 공통코드 명
+     * @return LCodeManageVO - 공통 코드 상세
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 코드 상세 조회
      */
     @Override
-    public CodeManageVO findByCd(String cd) throws Exception {
-        return codeManageDAO.findByCd(cd);
+    public CodeManageVO findByCd(String cd) {
+        try {
+            return codeManageDAO.findByCd(cd);
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
+        }
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.15
+     * @param cd - 공통코드 명
+     * @return LCodeManageVO - 공통 코드 상세
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 특정 공통 목록 코드 조회(시스템 처리용)
      */
     @Override
-    public CodeManageVO findByCdSystem(String cd) throws Exception {
-        CodeManageVO codeManage = codeManageDAO.findByCd(cd);
-        codeManage.setChildCdList(findByChildCd(cd));
-        return codeManage;
+    public CodeManageVO findByCdSystem(String cd) {
+        try {
+            CodeManageVO codeManage = codeManageDAO.findByCd(cd);
+            codeManage.setChildCdList(findByChildCd(cd));
+            return codeManage;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
+        }
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.19
+     * @param cd - 공통코드 명
+     * @return List<CodeManageVO> - 공통 코드 상세
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 하위 코드 조회(cache)
      */
     @Override
     @Cacheable(value = "findByChildCdCache", key = "#cd")
     public List<CodeManageVO> findByChildCdCache(String cd) {
-        LOGGER.info("Loading search conditions from the database for boardType: {}", cd);
-        return codeManageDAO.findChildCdUser(cd);
+        try {
+//        return codeManageDAO.findChildCdUser(cd);
+            // 사용자 하위 코드 조회
+            Map<String, Object> childMap = new HashMap<>();
+            childMap.put("type", "user");
+            childMap.put("cd", cd);
+            return codeManageDAO.findChildCd(childMap);
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
+        }
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.23
+     * @param cd - 공통코드 명
+     * @return int - 삭제 결과
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 코드 삭제
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int cdDelete(String cd) throws Exception {
-        return codeManageDAO.deleteCd(cd);
+    public int cdDelete(String cd) {
+        try {
+            return codeManageDAO.deleteCd(cd);
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
+        }
     }
     /************************************** Hierachy 전용 **************************************/
+
     /**
-     * @author takensoft
-     * @since 2024.04.24
+     * @param
+     * @return List<HierachyVO> - 최상위 코드 목록
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 최상위 코드 조회
      */
     @Override
     public List<HierachyVO> findByTopNode() {
-        // 상위 코드 조회
-        List<HierachyVO> topCdList = codeManageDAO.findByTopNode();
-        // 상위 코드에 따른 하위 코드 조회
-        for(HierachyVO hierachy : topCdList) {
-            List<HierachyVO> child = findChildNode(hierachy.getId());
-            hierachy.setChildList(child);
+        try {
+            // 상위 코드 조회
+            List<HierachyVO> topCdList = codeManageDAO.findByTopNode();
+            // 상위 코드에 따른 하위 코드 조회
+            for (HierachyVO hierachy : topCdList) {
+                List<HierachyVO> child = findChildNode(hierachy.getId());
+                hierachy.setChildList(child);
+            }
+            return topCdList;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
         }
-        return topCdList;
     }
-
     /**
-     * @author takensoft
-     * @since 2024.04.24
+     * @param id - 상위 코드
+     * @return List<HierachyVO> - 하위 코드 목록
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 하위 코드 조회
      */
     @Override
     public List<HierachyVO> findChildNode(String id) {
-        List<HierachyVO> childList = codeManageDAO.findChildNode(id);
-        for(HierachyVO hierachyVO : childList) {
-            List<HierachyVO> child = findChildNode(hierachyVO.getId());
-            hierachyVO.setChildList(child);
+        try {
+            List<HierachyVO> childList = codeManageDAO.findChildNode(id);
+            for (HierachyVO hierachyVO : childList) {
+                List<HierachyVO> child = findChildNode(hierachyVO.getId());
+                hierachyVO.setChildList(child);
+            }
+            return childList;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
         }
-        return childList;
     }
     /************************************** Hierachy 전용 **************************************/
 
     /**
-     * @author 박정하
-     * @since 2024.05.10
+     * @param deptList - 부서 코드 목록
+     * @return int - 부서 코드 수정 결과
+     * @throws CustomUpdateFailException - 수정 실패 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서 코드 수정 (hierachyVO 사용)
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int updateList(List<HierachyVO> deptList) throws Exception {
+    public int updateList(List<HierachyVO> deptList) {
         int result = 0;
         String writer = jwtUtil.getWriter();
 
@@ -212,6 +359,53 @@
                 vo.setCdGrd(0);
                 vo.setCdSn(sn);
                 vo.setMdfr(writer);
+
+                int upCode = codeManageDAO.codeUpdateByHierachy(vo);
+                if(upCode == 0) {
+                    throw new CustomUpdateFailException("부서 코드 수정 실패");
+                }
+                result += upCode;
+
+                // 하위 노드 수정
+                if (hierachyVO.getChildList() != null && hierachyVO.getChildList().size() > 0) {
+
+                    int childResult = updateChildNode(hierachyVO.getChildList(), vo);
+                    if(childResult == 0) {
+                        throw new CustomUpdateFailException("부서 코드 수정 실패");
+                    }
+                }
+                sn++;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * @param childList - 부서 코드 목록
+     * @param upCodeManageVO - 상위 코드 정보
+     * @return int - 부서 코드 수정 결과
+     * @throws CustomUpdateFailException - 수정 실패 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
+     * 하위 코드 수정
+     */
+    @Override
+    public int updateChildNode(List<HierachyVO> childList, CodeManageVO upCodeManageVO){
+        try {
+            int result = 0;
+            String upDeptId = upCodeManageVO.getCd();
+            int grd = upCodeManageVO.getCdGrd() + 1;
+            int sn = 1;
+            String mdfr = upCodeManageVO.getMdfr();
+            for (HierachyVO hierachyVO : childList) {
+                // 현재 노드 수정
+                CodeManageVO vo = new CodeManageVO();
+                vo.setCd(hierachyVO.getId());
+                vo.setUpCd(upDeptId);
+                vo.setCdGrd(grd);
+                vo.setCdSn(sn);
+                vo.setMdfr(mdfr);
                 result += codeManageDAO.codeUpdateByHierachy(vo);
 
                 // 하위 노드 수정
@@ -220,37 +414,11 @@
                 }
                 sn++;
             }
+            return result;
+        } catch (DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw e;
         }
-        return result;
-    }
-    /**
-     * @author 박정하
-     * @since 2024.05.10
-     * 하위 코드 수정
-     */
-    @Override
-    public int updateChildNode(List<HierachyVO> childList, CodeManageVO upCodeManageVO) throws Exception {
-        int result = 0;
-        String upDeptId = upCodeManageVO.getCd();
-        int grd = upCodeManageVO.getCdGrd() + 1;
-        int sn = 1;
-        String mdfr = upCodeManageVO.getMdfr();
-        for(HierachyVO hierachyVO : childList) {
-            // 현재 노드 수정
-            CodeManageVO vo = new CodeManageVO();
-            vo.setCd(hierachyVO.getId());
-            vo.setUpCd(upDeptId);
-            vo.setCdGrd(grd);
-            vo.setCdSn(sn);
-            vo.setMdfr(mdfr);
-            result += codeManageDAO.codeUpdateByHierachy(vo);
-
-            // 하위 노드 수정
-            if (hierachyVO.getChildList() != null && hierachyVO.getChildList().size() > 0) {
-                result += updateChildNode(hierachyVO.getChildList(), vo);
-            }
-            sn++;
-        }
-        return result;
     }
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/codeManage/vo/CodeManageVO.java
--- src/main/java/com/takensoft/cms/codeManage/vo/CodeManageVO.java
+++ src/main/java/com/takensoft/cms/codeManage/vo/CodeManageVO.java
@@ -11,6 +11,10 @@
 /**
  * @author  : takensoft
  * @since   : 2024.04.09
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.09  |  takensoft   | 최초 등록
+ *  2025.03.17  |    방선주     | 코드 리펙토링
  *
  * 공통코드 정보 관련 VO
  */
@@ -19,68 +23,20 @@
 @NoArgsConstructor
 @AllArgsConstructor
 public class CodeManageVO {
-    /**
-     * 코드
-     */
-    private String cd;
-    /**
-     * 변경전 코드
-     */
-    private String originCd;
-    /**
-     * 상위코드
-     */
-    private String upCd;
-    /**
-     * 상위코드명
-     */
-    private String upCdNm;
-    /**
-     * 코드명
-     */
-    private String cdNm;
-    /**
-     * 코드값
-     */
-    private String cdVl;
-    /**
-     * 코드설명
-     */
-    private String cdExpln;
-    /**
-     * 코드깊이(레벨)
-     */
-    private int cdGrd;
-    /**
-     * 코드순서
-     */
-    private int cdSn;
-    /**
-     * 사용여부
-     */
-    private String useYn;
-    /**
-     * 시스템 제공 여부
-     */
-    private String sysPvsnYn;
-    /**
-     * 등록자
-     */
-    private String rgtr;
-    /**
-     * 등록일
-     */
-    private String regDt;
-    /**
-     * 수정자
-     */
-    private String mdfr;
-    /**
-     * 수정일
-     */
-    private String mdfcnDt;
-    /**
-     * 하위 코드 목록
-     */
-    private List<CodeManageVO> childCdList = new ArrayList<CodeManageVO>();
+    private String cd;          // 코드
+    private String originCd;    // 변경전 코드
+    private String upCd;        // 상위코드
+    private String upCdNm;      // 상위코드명
+    private String cdNm;        // 코드명
+    private String cdVl;        // 코드값
+    private String cdExpln;     // 코드설명
+    private int cdGrd;          // 코드깊이(레벨)
+    private int cdSn;           // 코드순서
+    private String useYn;       // 사용여부
+    private String sysPvsnYn;   // 시스템 제공 여부
+    private String rgtr;        // 등록자
+    private String regDt;       // 등록일
+    private String mdfr;        // 수정자
+    private String mdfcnDt;     // 수정일
+    private List<CodeManageVO> childCdList = new ArrayList<CodeManageVO>(); // 하위 코드 목록
 }
src/main/java/com/takensoft/cms/codeManage/web/CodeManageController.java
--- src/main/java/com/takensoft/cms/codeManage/web/CodeManageController.java
+++ src/main/java/com/takensoft/cms/codeManage/web/CodeManageController.java
@@ -20,17 +20,14 @@
 import java.util.Map;
 
 /**
- * @author  : takensoft
- * @since   : 2024.04.09
- *
- * 공통코드 정보 관련 컨트롤러
- */
-/**
  * @author takensoft
  * @since 2024.04.09
  * @modification
  *     since    |    author    | description
  *  2024.04.09  |  takensoft   | 최초 등록
+ *  2024.04.15  |  takensoft   | updateProc, deleteProc 추가
+ *  2024.05.10  |    박정하     | updateListProc
+ *  2025.03.13  |    방선주    | 코드 리펙토링
  *
  * 공통코드 정보 관련 컨트롤러
  */
@@ -44,19 +41,15 @@
     private final ResponseUtil resUtil;
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * @param codeManageVO
-     * @return
-     * @throws Exception
+     * @param codeManageVO - 등록할 공통코드 정보
+     * @return ResponseEntity - 등록 결과를 포함하는 응답
      *
      * 공통코드 등록
      */
     @PostMapping("/saveProc.json")
-    public ResponseEntity<?> saveProc(@RequestBody CodeManageVO codeManageVO) throws Exception {
+    public ResponseEntity<?> saveProc(@RequestBody CodeManageVO codeManageVO){
         // 코드 중복 검사
         boolean isExistence = codeManageService.findByCheckCd(codeManageVO);
-
         // 응답 처리
         if(isExistence) {
             return resUtil.errorRes(MessageCode.COMMON_DUPLICATION_CODE);
@@ -64,24 +57,17 @@
 
         // 코드 등록
         int result = codeManageService.cdSave(codeManageVO);
-        if(result > 0) {
-            return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
-        } else {
-            return resUtil.errorRes(MessageCode.COMMON_INSERT_FAIL);
-        }
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
      * @param
-     * @return
-     * @throws Exception
+     * @return ResponseEntity - 공통코드 목록 조회
      *
      * 공통코드 목록 조회 (관리자용)
      */
     @GetMapping(value = "/findAll.json")
-    public ResponseEntity<?> findAll() throws Exception {
+    public ResponseEntity<?> findAll(){
         // Tree용
         List<HierachyVO> hierachyList = codeManageService.findByTopNode();
 
@@ -94,16 +80,13 @@
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * @param codeManageVO
-     * @return
-     * @throws Exception
+     * @param codeManageVO - 공통코드 정보
+     * @return ResponseEntity - 공통코드 상세 조회
      *
      * 공통코드 상세 조회 (관리자용)
      */
     @PostMapping("/findByCd.json")
-    public ResponseEntity<?> findByCd(@RequestBody CodeManageVO codeManageVO) throws Exception {
+    public ResponseEntity<?> findByCd(@RequestBody CodeManageVO codeManageVO){
         // 공통코드 조회
         CodeManageVO code = codeManageService.findByCd(codeManageVO.getCd());
 
@@ -115,16 +98,13 @@
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.15
-     * @param codeManageVO
-     * @return
-     * @throws Exception
+     * @param codeManageVO - 공통코드 정보
+     * @return ResponseEntity - 공통코드 수정 결과를 포함하는 응답
      *
      * 공통코드 수정
      */
     @PostMapping("/updateProc.json")
-    public ResponseEntity<?> updateProc(@RequestBody CodeManageVO codeManageVO) throws Exception {
+    public ResponseEntity<?> updateProc(@RequestBody CodeManageVO codeManageVO){
 
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
@@ -142,46 +122,31 @@
         int result = codeManageService.cdUpdate(codeManageVO);
 
         // 응답 처리
-        if(result > 0) {
-            return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
-        } else {
-            return resUtil.errorRes(MessageCode.COMMON_UPDATE_FAIL);
-        }
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.15
-     * @param codeManageVO
-     * @return
-     * @throws Exception
+     * @param codeManageVO - 공통코드 정보
+     * @return ResponseEntity - 공통코드 삭제 결과를 포함하는 응답
      *
-     * 공통코드 삭제
+     * 공통 코드 삭제
      */
     @PostMapping("/deleteProc.json")
-    public ResponseEntity<?> deleteProc(@RequestBody CodeManageVO codeManageVO) throws Exception {
+    public ResponseEntity<?> deleteProc(@RequestBody CodeManageVO codeManageVO){
         // 공통 코드 삭제(하위 항목 모두)
         int result = codeManageService.cdDelete(codeManageVO.getCd());
-
         // 응답 처리
-        if(result > 0) {
-            return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
-        } else {
-            return resUtil.errorRes(MessageCode.COMMON_DELETE_FAIL);
-        }
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.09
-     * @param codeManageVO
-     * @return
-     * @throws Exception
+     * @param codeManageVO - 공통코드 정보
+     * @return ResponseEntity - 공통코드 상세 조회
      *
      * 특정 공통 목록 코드 조회(시스템 처리용)
      */
     @PostMapping("/findByCdSystem.json")
-    public ResponseEntity<?> findByCdSystem(@RequestBody CodeManageVO codeManageVO) throws Exception {
+    public ResponseEntity<?> findByCdSystem(@RequestBody CodeManageVO codeManageVO){
         // 메뉴 조회
         CodeManageVO code = codeManageService.findByCdSystem(codeManageVO.getCd());
 
@@ -193,27 +158,17 @@
     }
 
     /**
-     * @author 박정하
-     * @since 2024.05.10
-     * @param codeList
-     * @return
-     * @throws Exception
+     * @param codeList - 수정할 공통코드 목록
+     * @return ResponseEntity - 수정 결과를 포함하는 응답
      *
      * 공통 코드 목록 수정
      */
     @PostMapping(value = "/updateListProc.json")
-    public ResponseEntity<?> updateListProc(@RequestBody List<HierachyVO> codeList) throws Exception {
+    public ResponseEntity<?> updateListProc(@RequestBody List<HierachyVO> codeList){
         // 공통 코드 목록 수정
         int result = codeManageService.updateList(codeList);
 
         // 응답 처리
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8")));
-        ResponseData responseData = new ResponseData();
-        if(result > 0) {
-            return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
-        } else {
-            return resUtil.errorRes(MessageCode.COMMON_UPDATE_FAIL);
-        }
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
     }
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/contsType/web/ContsTypeController.java
--- src/main/java/com/takensoft/cms/contsType/web/ContsTypeController.java
+++ src/main/java/com/takensoft/cms/contsType/web/ContsTypeController.java
@@ -39,6 +39,7 @@
      *
      * 콘텐츠 유형 등록
      */
+
     @PostMapping("/saveProc.json")
     public ResponseEntity<?> savePorc(@RequestBody ContsTypeVO contsTypeVO){
         // 콘텐츠 유형 등록
src/main/resources/mybatis/mapper/codeManage/codeManage-SQL.xml
--- src/main/resources/mybatis/mapper/codeManage/codeManage-SQL.xml
+++ src/main/resources/mybatis/mapper/codeManage/codeManage-SQL.xml
@@ -119,20 +119,23 @@
     <select id="findChildCd" parameterType="String" resultType="CodeManageVO">
         <include refid="selectCd" />
          WHERE up_cd = #{cd}
+        <if test="type =='user'">
+            AND use_yn = 'Y'
+        </if>
       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>
+<!--    &lt;!&ndash;-->
+<!--        작성자 : takensoft-->
+<!--        작성일 : 2024.04.09-->
+<!--        내 용 : 하위 코드 조회 [사용자용]-->
+<!--    &ndash;&gt;-->
+<!--    <select id="findChildCdUser" parameterType="String" resultType="CodeManageVO">-->
+<!--        <include refid="selectCd" />-->
+<!--        WHERE up_cd = #{cd}-->
+<!--          AND use_yn = 'Y'-->
+<!--        ORDER BY cd_sn-->
+<!--    </select>-->
 
     <!--
         작성자 : takensoft
Add a comment
List