방선주 방선주 03-14
250314 방선주 dept 폴더 내 코드 개선
@bc0a6e0d1f3ecf9f25bfc17423c57914f94e32b0
src/main/java/com/takensoft/cms/dept/dao/DeptDAO.java
--- src/main/java/com/takensoft/cms/dept/dao/DeptDAO.java
+++ src/main/java/com/takensoft/cms/dept/dao/DeptDAO.java
@@ -11,122 +11,144 @@
 
 /**
  * @author  : takensoft
- * @since   : 2024.04.24
+ * @since   :2024.04.24
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.24  |  takensoft   | 최초 등록
+ *  2024.05.10  |    박정하     | deptUpdateByHierachy 추가
+ *  2025.03.13  |    방선주     | 코드 리펙토링
  *
- * 부서 정보 관련 Mapper
+ * 부서 정보 관련 DAO
  */
 @Mapper("deptDAO")
 public interface DeptDAO {
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param deptVO - 부서 정보 객체
+     * @return int - 등록 성공 여부
+     *
      * 부서 등록
      */
     int save(DeptVO deptVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param deptAuthrtVO - 부서 권한 정보 객체
+     * @return int - 등록 성공 여부
+     *
      * 부서 권한 등록
      */
     int authrtSave(DeptAuthrtVO deptAuthrtVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.29
+     * @param deptMbrVO - 부서 사용자 정보 객체
+     * @return int - 등록 성공 여부
+     *
      * 부서 사용자 등록
      */
     int deptMbrSave(DeptMbrVO deptMbrVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param upDeptId - 상위 부서 ID
+     * @return int - 부서 깊이(레벨)
+     *
      * 부서 깊이(레벨) 조회
      */
     int findByDeptGrd(String upDeptId);
 
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param upDeptId - 상위 부서 ID
+     * @return int - 부서 순서
+     *
      * 부서 순서 조회
      */
     int findByDeptSn(String upDeptId);
 
     /************************************** Hierachy 전용 **************************************/
+
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param
+     * @return List<HierachyVO> - 부서 정보 목록
+     *
      * 최상위 부서 조회
      */
     List<HierachyVO> findByTopNode();
+
     /**
-     * @author takensoft
-     * @since 2024.04.24
+     * @param id - 상위 부서 ID
+     * @return List<HierachyVO> - 하위 부서 목록
+     *
      * 하위 부서 조회
      */
     List<HierachyVO> findChildNode(String id);
     /************************************** Hierachy 전용 **************************************/
-
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptId - 부서 ID
+     * @return DeptVO - 부서 정보 객체
+     *
      * 부서 정보 조회
      */
     DeptVO findByDept(String deptId);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptVO - 부서 정보 객체
+     * @return int - 수정 성공 여부
+     *
      * 부서 정보 수정
      */
     int update(DeptVO deptVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptId - 부서 ID
+     * @return int - 삭제 성공 여부
+     *
      * 부서 권한 삭제
      */
     int deleteAuth(String deptId);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param params - 부서 ID, 사용자 ID
+     * @return int - List<DeptMbrVO> - 부서 사용자 정보 목록
+     *
      * 부서 사용자 등록을 위한 사용자 정보 목록 조회 (부서에 등록되지 않은 사용자 목록)
      */
     List<DeptMbrVO> findByMber(Map<String, String> params);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptId - 부서 ID
+     * @return int - List<DeptMbrVO>- 부서 사용자 정보 목록
+     *
      * 부서에 등록된 사용자 목록 조회
      */
     List<DeptMbrVO> findByDeptMber(String deptId);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptId - 부서 ID
+     * @return int - 삭제 성공 여부
+     *
      * 상위,하위 부서 삭제
      */
     int deleteDept(String deptId);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptId - 부서 ID
+     * @return int - 삭제 성공 여부
+     *
      * 상위, 하위 부서 삭제에 따른 부서의 사용자 삭제
      */
     int deleteDeptInDeptMbr(String deptId);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param params - 부서 ID, 사용자 ID
+     * @return int - 삭제 성공 여부
+     *
      * 부서에 등록된 사용자 제거
      */
     int deleteDeptMbr(Map<String, Object> params);
 
     /**
-     * @author 박정하
-     * @since 2024.05.10
+     * @param deptVO - 부서 정보 객체
+     * @return int - 수정 성공 여부
+     *
      * 부서 정보 수정 (hierachyVO 사용)
      */
-    public int deptUpdateByHierachy(DeptVO deptVO) throws Exception;
+    int deptUpdateByHierachy(DeptVO deptVO);
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/dept/service/DeptService.java
--- src/main/java/com/takensoft/cms/dept/service/DeptService.java
+++ src/main/java/com/takensoft/cms/dept/service/DeptService.java
@@ -9,86 +9,107 @@
 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.05.10  |    박정하     | updateList, updateChildNode 추가
+ *  2025.03.13  |    방선주     | 코드 리펙토링
  *
  * 부서 정보 관련 인터페이스
  */
 public interface DeptService {
+
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param deptVO - 부서 정보
+     * @return int - 등록 성공 여부
+     *
      * 부서 등록
      */
-    public HashMap<String, Object> deptSave(DeptVO deptVO) throws Exception;
+    HashMap<String, Object> deptSave(DeptVO deptVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.29
+     * @param deptMbrVO - 부서 사용자 정보
+     * @return int - 등록 성공 여부
+     *
      * 부서 사용자 등록
      */
-    public int deptMbrSave(DeptMbrVO deptMbrVO) throws Exception;
+    int deptMbrSave(DeptMbrVO deptMbrVO);
 
-    /************************************** Hierachy 전용 **************************************/
-    /**
-     * @author takensoft
-     * @since 2024.04.25
-     * 최상위 코드 조회
-     */
-    public List<HierachyVO> findByTopNode() throws Exception;
-    /**
-     * @author takensoft
-     * @since 2024.04.25
-     * 하위 코드 조회
-     */
-    public List<HierachyVO> findChildNode(String id) throws Exception;
     /************************************** Hierachy 전용 **************************************/
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param
+     * @return List<HierachyVO> - 최상위 부서 목록
+     *
+     * 최상위 부서 조회
+     */
+    List<HierachyVO> findByTopNode();
+
+    /**
+     * @param id - 상위 부서 ID
+     * @return List<HierachyVO> - 하위 부서 목록
+     *
+     * 하위 부서 조회
+     */
+    List<HierachyVO> findChildNode(String id);
+    /************************************** Hierachy 전용 **************************************/
+
+    /**
+     * @param params - 부서 정보
+     * @return Map<String, Object> - 부서 정보
+     *
      * 부서 정보 조회
      */
-    public Map<String, Object> findByDept(HashMap<String, Object> params) throws Exception;
+    Map<String, Object> findByDept(HashMap<String, Object> params);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptVO - 부서 정보
+     * @return int - 수정 성공 여부
+     *
      * 부서 정보 수정
      */
-    public int deptUpdate(DeptVO deptVO) throws Exception;
+    int deptUpdate(DeptVO deptVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptVO - 부서 정보
+     * @return int - 삭제 성공 여부
+     *
      * 부서 정보 삭제
      */
-    public int deptDelete(DeptVO deptVO) throws Exception;
+    int deptDelete(DeptVO deptVO);
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptMbrList - 부서 사용자 정보
+     * @return int - 삭제 성공 여부
+     *
      * 부서 사용자 삭제
      */
-    public int deptMbrDelete(List<DeptMbrVO> deptMbrList) throws Exception;
+    int deptMbrDelete(List<DeptMbrVO> deptMbrList);
 
     /**
-     * @author takensoft
-     * @since 2024.04.29
+     * @param params - 부서 사용자 정보
+     * @return Map<String, Object> - 부서에 등록되지 않는 사용자 정보
+     *
      * 부서에 등록되지 않는 사용자 조회
      */
-    public Map<String, Object> findByMbr(Map<String, String> params) throws Exception;
+    Map<String, Object> findByMbr(Map<String, String> params);
 
     /**
-     * @author 박정하
-     * @since 2024.05.09
+     * @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 upDeptVO - 상위 부서 정보
+     * @return int - 수정 성공 여부
+     *
      * 하위 부서 수정
      */
-    public int updateChildNode(List<HierachyVO> childList, DeptVO upDeptVO) throws Exception;
+    int updateChildNode(List<HierachyVO> childList, DeptVO upDeptVO);
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/dept/service/Impl/DeptServiceImpl.java
--- src/main/java/com/takensoft/cms/dept/service/Impl/DeptServiceImpl.java
+++ src/main/java/com/takensoft/cms/dept/service/Impl/DeptServiceImpl.java
@@ -6,6 +6,9 @@
 import com.takensoft.cms.dept.vo.DeptMbrVO;
 import com.takensoft.cms.dept.vo.DeptVO;
 import com.takensoft.common.HierachyVO;
+import com.takensoft.common.exception.CustomDeleteFailException;
+import com.takensoft.common.exception.CustomInsertFailException;
+import com.takensoft.common.exception.CustomUpdateFailException;
 import com.takensoft.common.idgen.service.IdgenService;
 import com.takensoft.common.util.JWTUtil;
 import com.takensoft.common.util.Secret;
@@ -13,6 +16,7 @@
 import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.dao.DataAccessException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -22,11 +26,17 @@
 
 /**
  * @author  : takensoft
- * @since   : 2024.04.24
+ * @since   :2024.04.24
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.24  |  takensoft   | 최초 등록
+ *  2024.05.10  |    박정하     | updateList, updateChildNode 추가
+ *  2025.03.14  |    방선주     | 코드 리펙토링
  *
- * 부서 정보 관련 구현체
- * EgovAbstractServiceImpl : 전자정부 상속
- * DeptService : 부서 정보 인터페이스 상속
+ * EgovAbstractServiceImpl - 전자정부 프레임워크에서 제공하는 추상 서비스 구현 클래스
+ * DeptService - 부서 정보 관련 서비스 인터페이스
+ *
+ * 부서 정보 관련 DAO
  */
 @Service("deptService")
 @RequiredArgsConstructor
@@ -38,252 +48,423 @@
     private final IdgenService deptIdgn;
 
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param deptVO - 부서 정보 VO
+     * @return HashMap<String, Object> - 부서 정보
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서 등록
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public HashMap<String, Object> deptSave(DeptVO deptVO) throws Exception {
-        String deptId = deptIdgn.getNextStringId(); // 부서 아이디 생성
-        deptVO.setDeptId(deptId);
+    public HashMap<String, Object> deptSave(DeptVO deptVO) {
+        try {
+            int insertResult = 0;   // 부서 등록 결과
+            String deptId = deptIdgn.getNextStringId(); // 부서 아이디 생성
+            deptVO.setDeptId(deptId);
 
-        // 상위 부서가 존재하는 경우
-        if(deptVO.getUpDeptId() != null && !deptVO.getUpDeptId().equals("")) {
-            // 상위 부서보다 깊이(레벨) + 1
-            deptVO.setDeptGrd(deptDAO.findByDeptGrd(deptVO.getUpDeptId()) + 1);
-            // 동일한 깊이의 부서 순서보다 + 1
-            deptVO.setDeptSn(deptDAO.findByDeptSn(deptVO.getUpDeptId()) + 1);
-        // 상위 부서가 존재 하지 않는 경우
-        } else {
-            deptVO.setDeptGrd(0);
-            deptVO.setDeptSn(deptDAO.findByDeptSn(null) + 1);
-        }
-        deptVO.setRgtr(jwtUtil.getWriter()); // 작성자 정보 등록
-        int insertResult = deptDAO.save(deptVO);
-        // 부서 권한 등록
-        if(deptVO.getAuthrtList().size() > 0) {
-            for(DeptAuthrtVO vo : deptVO.getAuthrtList()) {
-                vo.setDeptId(deptId);
-                vo.setRgtr(jwtUtil.getWriter());
-                insertResult += deptDAO.authrtSave(vo);
+            // 상위 부서가 존재하는 경우
+            if (deptVO.getUpDeptId() != null && !deptVO.getUpDeptId().equals("")) {
+                // 상위 부서보다 깊이(레벨) + 1
+                deptVO.setDeptGrd(deptDAO.findByDeptGrd(deptVO.getUpDeptId()) + 1);
+                // 동일한 깊이의 부서 순서보다 + 1
+                deptVO.setDeptSn(deptDAO.findByDeptSn(deptVO.getUpDeptId()) + 1);
+                // 상위 부서가 존재 하지 않는 경우
+            } else {
+                deptVO.setDeptGrd(0);
+                deptVO.setDeptSn(deptDAO.findByDeptSn(null) + 1);
             }
+            deptVO.setRgtr(jwtUtil.getWriter()); // 작성자 정보 등록
+            insertResult = deptDAO.save(deptVO);
+            if(insertResult == 0) {
+                throw new CustomInsertFailException("부서 등록 실패");
+            }
+            // 부서 권한 등록
+            if (deptVO.getAuthrtList().size() > 0) {
+                for (DeptAuthrtVO vo : deptVO.getAuthrtList()) {
+                    vo.setDeptId(deptId);
+                    vo.setRgtr(jwtUtil.getWriter());
+                    int insertDeptAuth = deptDAO.authrtSave(vo); // 부서 권한 등록 결과
+                    if(insertDeptAuth == 0) {
+                        throw new CustomInsertFailException("부서 권한 등록 실패");
+                    }
+                }
+            }
+            HashMap<String, Object> result = new HashMap<>();
+            result.put("deptId", deptId);
+            result.put("insertResult", insertResult); // 부서 등록
+            return result;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException ne) {
+            throw ne;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        HashMap<String, Object> result = new HashMap<>();
-        result.put("deptId", deptId);
-        result.put("insertResult", insertResult); // 부서 등록
-        return result;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.29
+     * @param deptMbrVO - 부서 사용자 정보 VO
+     * @return int - 부서 사용자 등록 결과
+     * @throws CustomInsertFailException - 부서 사용자 등록 실패 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서 사용자 등록
      */
     @Override
-    public int deptMbrSave(DeptMbrVO deptMbrVO) throws Exception {
-        deptMbrVO.setRgtr(jwtUtil.getWriter()); // 작성자 정보 등록
-        return deptDAO.deptMbrSave(deptMbrVO);
+    public int deptMbrSave(DeptMbrVO deptMbrVO) {
+        try {
+            // 부서 사용자 등록 결과
+            int result = 0;
+            deptMbrVO.setRgtr(jwtUtil.getWriter()); // 작성자 정보 등록
+            result = deptDAO.deptMbrSave(deptMbrVO); // 부서 사용자 등록
+            if(result == 0) {
+                throw new CustomInsertFailException("부서 사용자 등록 실패");
+            }
+            return result;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException ne) {
+            throw ne;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
     /************************************** Hierachy 전용 **************************************/
+
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param
+     * @return List<HierachyVO> - 최상위 부서 목록
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 최상위 부서 조회
      */
     @Override
-    public List<HierachyVO> findByTopNode() throws Exception {
-        List<HierachyVO> topDeptList = deptDAO.findByTopNode();
-        for(HierachyVO vo : topDeptList) {
-            List<HierachyVO> child = findChildNode(vo.getId());
-            vo.setChildList(child);
+    public List<HierachyVO> findByTopNode() {
+        try {
+            List<HierachyVO> topDeptList = deptDAO.findByTopNode();
+            for (HierachyVO vo : topDeptList) {
+                List<HierachyVO> child = findChildNode(vo.getId());
+                vo.setChildList(child);
+            }
+            return topDeptList;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        return topDeptList;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.25
+     * @param id - 상위 부서 아이디
+     * @return List<HierachyVO> - 하위 부서 목록
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 하위 부서 조회
      */
     @Override
-    public List<HierachyVO> findChildNode(String id) throws Exception {
-        List<HierachyVO> childList = deptDAO.findChildNode(id);
-        for(HierachyVO vo : childList) {
-            List<HierachyVO> child = findChildNode(vo.getId());
-            vo.setChildList(child);
+    public List<HierachyVO> findChildNode(String id) {
+        try {
+            List<HierachyVO> childList = deptDAO.findChildNode(id);
+            for (HierachyVO vo : childList) {
+                List<HierachyVO> child = findChildNode(vo.getId());
+                vo.setChildList(child);
+            }
+            return childList;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        return childList;
     }
     /************************************** Hierachy 전용 **************************************/
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param params- 부서 아이디
+     * @return Map<String, Object> - 부서 정보
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서 정보 조회
      */
     @Override
-    public Map<String, Object> findByDept(HashMap<String, Object> params) throws Exception {
-        String deptId = params.get("deptId").toString(); // 아이디 추출
-        DeptVO dept = deptDAO.findByDept(deptId); // 부서 정보 조회
-        List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(deptId); // 부서에 등록된 사용자 정보 조회
-        // 사용자 정보 복호화
-        if(deptMbr.size() > 0) {
-            for(DeptMbrVO vo : deptMbr) {
-                // 연락처 복호화
-                vo.setMblTelno(Secret.decrypt(vo.getMblTelno().toString()));
+    public Map<String, Object> findByDept(HashMap<String, Object> params) {
+        try {
+            String deptId = params.get("deptId").toString(); // 아이디 추출
+            DeptVO dept = deptDAO.findByDept(deptId); // 부서 정보 조회
+            List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(deptId); // 부서에 등록된 사용자 정보 조회
+            // 사용자 정보 복호화
+            if (deptMbr.size() > 0) {
+                for (DeptMbrVO vo : deptMbr) {
+                    // 연락처 복호화
+                    vo.setMblTelno(Secret.decrypt(vo.getMblTelno().toString()));
+                }
             }
+            Map<String, Object> result = new HashMap<String, Object>(); // 반환 객체 생성
+            result.put("dept", dept); // 부서 상세 정보
+            result.put("deptMbr", deptMbr); // 부서 사용자 목록 정보
+            return result;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException ne) {
+            throw ne;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        Map<String, Object> result = new HashMap<String, Object>(); // 반환 객체 생성
-        result.put("dept", dept); // 부서 상세 정보
-        result.put("deptMbr", deptMbr); // 부서 사용자 목록 정보
-        return result;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptVO - 부서 정보 VO
+     * @return int - 부서 정보 수정 결과
+     * @throws CustomUpdateFailException - 수정 실패 예외 발생 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서 정보 수정
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deptUpdate(DeptVO deptVO) throws Exception {
-        deptVO.setMdfr(jwtUtil.getWriter()); // 토큰에서 사용자 정보 추출
-        int result = deptDAO.update(deptVO); // 부서정보 수정
-        result += deptDAO.deleteAuth(deptVO.getDeptId()); // 부서 권한 삭제
-        // 부서 권한 등록
-        if(deptVO.getAuthrtList().size() > 0) {
-            for(DeptAuthrtVO vo : deptVO.getAuthrtList()) {
-                vo.setDeptId(deptVO.getDeptId());
-                vo.setRgtr(jwtUtil.getWriter());
-                result += deptDAO.authrtSave(vo);
+    public int deptUpdate(DeptVO deptVO) {
+        try {
+            // 부서 정보 수정 결과
+            int result = 0;
+            deptVO.setMdfr(jwtUtil.getWriter()); // 토큰에서 사용자 정보 추출
+            result = deptDAO.update(deptVO); // 부서정보 수정
+            if (result == 0) {
+                throw new CustomUpdateFailException("부서 정보 수정 실패");
             }
+            // 부서 권한 삭제 결과
+            int deleteDeptAuth = deptDAO.deleteAuth(deptVO.getDeptId()); // 부서 권한 삭제
+            if (deleteDeptAuth == 0) {
+                throw new CustomUpdateFailException("부서 권한 삭제 실패");
+            }
+            // 부서 권한 등록
+            if (deptVO.getAuthrtList().size() > 0) {
+                for (DeptAuthrtVO vo : deptVO.getAuthrtList()) {
+                    vo.setDeptId(deptVO.getDeptId());
+                    vo.setRgtr(jwtUtil.getWriter());
+                    int insertDeptAuth = deptDAO.authrtSave(vo); // 부서 권한 등록 결과
+                    if (insertDeptAuth == 0) {
+                        throw new CustomInsertFailException("부서 권한 등록 실패");
+                    }
+                }
+            }
+            return result;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException ne) {
+            throw ne;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        return result;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptVO - 부서 정보 VO
+     * @return int - 부서 정보 삭제 결과
+     * @throws CustomDeleteFailException - 삭제 실패 예외 발생 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서 정보 삭제
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deptDelete(DeptVO deptVO) throws Exception {
-        int result = deptDAO.deleteDept(deptVO.getDeptId());
-        result += deptDAO.deleteDeptInDeptMbr(deptVO.getDeptId());
-        return result;
+    public int deptDelete(DeptVO deptVO) {
+        int delResult = 0; // 부서 삭제 결과
+        delResult = deptDAO.deleteDept(deptVO.getDeptId());
+        if (delResult == 0) {
+            throw new CustomDeleteFailException("부서 삭제 실패");
+        }
+
+        int deleteDeptAuth = 0; // 부서 권한 삭제 결과
+        deleteDeptAuth = deptDAO.deleteDeptInDeptMbr(deptVO.getDeptId());
+        if (deleteDeptAuth == 0) {
+            throw new CustomDeleteFailException("부서 권한 삭제 실패");
+        }
+        return delResult;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
+     * @param deptMbrList - 부서 사용자 정보 VO
+     * @return int - 부서 사용자 정보 삭제 결과
+     * @throws CustomDeleteFailException - 삭제 실패 예외 발생 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서 사용자 삭제
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int deptMbrDelete(List<DeptMbrVO> deptMbrList) throws Exception {
-        int result = 0;
+    public int deptMbrDelete(List<DeptMbrVO> deptMbrList) {
+        int result = 0; // 부서 사용자 삭제 결과
         if(deptMbrList.size() == 0) return 0;
+
         for(DeptMbrVO vo : deptMbrList) {
             Map<String, Object> param = new HashMap<String, Object>();
             param.put("mbrId", vo.getMbrId());
-            result += deptDAO.deleteDeptMbr(param);
+            int delMbrResult = deptDAO.deleteDeptMbr(param); // 부서 사용자 삭제
+            if (delMbrResult == 0) {
+                throw new CustomDeleteFailException("부서 사용자 삭제 실패");
+            }
+            result += delMbrResult;
         }
         return result;
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.29
+     * @param params - 부서 아이디
+     * @return Map<String, Object> - 부서에 등록되지 않는 사용자 정보
+     * @throws CustomDeleteFailException - 삭제 실패 예외 발생 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 부서에 등록되지 않는 사용자 조회
      */
     @Override
-    public Map<String, Object> findByMbr(Map<String, String> params) throws Exception {
-        List<DeptMbrVO> mbrList = deptDAO.findByMber(params); // 부서에 등록되지 않는 사용자 조회
-        // 사용자 정보 복호화
-        if(mbrList.size() > 0) {
-            for(DeptMbrVO vo : mbrList) {
-                // 연락처 복호화
-                vo.setMblTelno(Secret.decrypt(vo.getMblTelno().toString()));
+    public Map<String, Object> findByMbr(Map<String, String> params) {
+        try {
+            List<DeptMbrVO> mbrList = deptDAO.findByMber(params); // 부서에 등록되지 않는 사용자 조회
+            // 사용자 정보 복호화
+            if (mbrList.size() > 0) {
+                for (DeptMbrVO vo : mbrList) {
+                    // 연락처 복호화
+                    vo.setMblTelno(Secret.decrypt(vo.getMblTelno().toString()));
+                }
             }
-        }
-        List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(params.get("deptId").toString()); // 부서에 등록된 사용자 정보 조회
-        // 사용자 정보 복호화
-        if(deptMbr.size() > 0) {
-            for(DeptMbrVO vo : deptMbr) {
-                // 연락처 복호화
-                vo.setMblTelno(Secret.decrypt(vo.getMblTelno().toString()));
+            List<DeptMbrVO> deptMbr = deptDAO.findByDeptMber(params.get("deptId").toString()); // 부서에 등록된 사용자 정보 조회
+            // 사용자 정보 복호화
+            if (deptMbr.size() > 0) {
+                for (DeptMbrVO vo : deptMbr) {
+                    // 연락처 복호화
+                    vo.setMblTelno(Secret.decrypt(vo.getMblTelno().toString()));
+                }
             }
-        }
 
-        Map<String, Object> result = new HashMap<String, Object>(); // 반환 객체 생성
-        result.put("mbrList", mbrList); // 부서에 등록되지 않는 사용자 정보
-        result.put("deptMbr", deptMbr); // 부서 사용자 목록 정보
-        return result;
+            Map<String, Object> result = new HashMap<String, Object>(); // 반환 객체 생성
+            result.put("mbrList", mbrList); // 부서에 등록되지 않는 사용자 정보
+            result.put("deptMbr", deptMbr); // 부서 사용자 목록 정보
+            return result;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException ne) {
+            throw ne;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
     /**
-     * @author 박정하
-     * @since 2024.05.10
-     * 부서 정보 수정 (hierachyVO 사용)
+     * @param params - 부서 아이디
+     * @return Map<String, Object> - 부서에 등록되지 않는 사용자 정보
+     * @throws CustomUpdateFailException - 수정 실패 예외 발생 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
+     * 부서에 등록되지 않는 사용자 조회
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int updateList(List<HierachyVO> deptList) throws Exception {
-        int result = 0;
-        String writer = jwtUtil.getWriter();
+    public int updateList(List<HierachyVO> deptList) {
+        try {
+            int result = 0;
+            String writer = jwtUtil.getWriter();
 
-        if(deptList != null && deptList.size() > 0) {
-            int sn = 1;
-            for(HierachyVO hierachyVO : deptList) {
-                // 최상위 노드 수정
-                DeptVO vo = new DeptVO();
-                vo.setDeptId(hierachyVO.getId());
-                vo.setUpDeptId(null);
-                vo.setDeptGrd(0);
-                vo.setDeptSn(sn);
-                vo.setMdfr(writer);
-                result += deptDAO.deptUpdateByHierachy(vo);
+            if (deptList != null && deptList.size() > 0) {
+                int sn = 1;
+                for (HierachyVO hierachyVO : deptList) {
+                    // 최상위 노드 수정
+                    DeptVO vo = new DeptVO();
+                    vo.setDeptId(hierachyVO.getId());
+                    vo.setUpDeptId(null);
+                    vo.setDeptGrd(0);
+                    vo.setDeptSn(sn);
+                    vo.setMdfr(writer);
+                    int updateResult = deptDAO.deptUpdateByHierachy(vo);
+                    if (updateResult == 0) {
+                        throw new CustomUpdateFailException("부서 정보 수정 실패");
+                    }
+                    result += updateResult;
 
-                // 하위 노드 수정
-                if (hierachyVO.getChildList() != null && hierachyVO.getChildList().size() > 0) {
-                    result += updateChildNode(hierachyVO.getChildList(), vo);
+                    // 하위 노드 수정
+                    if (hierachyVO.getChildList() != null && hierachyVO.getChildList().size() > 0) {
+                        int updateChild= updateChildNode(hierachyVO.getChildList(), vo);
+                    }
+                    sn++;
                 }
-                sn++;
             }
+            return result;
+        } catch(CustomUpdateFailException cufe) {
+            throw cufe;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException ne) {
+            throw ne;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        return result;
     }
     /**
-     * @author 박정하
-     * @since 2024.05.10
+     * @param childList - 부서 자식 목록 객체
+     * @param upDeptVO - 상위 부서 객체
+     * @return Map<String, Object> - 부서에 등록되지 않는 사용자 정보
+     * @throws CustomUpdateFailException - 수정 실패 예외 발생 시
+     * @throws DataAccessException - 데이터베이스 접근 예외 발생 시
+     * @throws NullPointerException - Null 값이 발생할 경우
+     * @throws Exception - 그 외 예외 발생 시
+     *
      * 하위 부서 수정
      */
     @Override
-    public int updateChildNode(List<HierachyVO> childList, DeptVO upDeptVO) throws Exception {
-        int result = 0;
-        String upDeptId = upDeptVO.getDeptId();
-        int grd = upDeptVO.getDeptGrd() + 1;
-        int sn = 1;
-        String mdfr = upDeptVO.getMdfr();
-        for(HierachyVO hierachyVO : childList) {
-            // 현재 노드 수정
-            DeptVO vo = new DeptVO();
-            vo.setDeptId(hierachyVO.getId());
-            vo.setUpDeptId(upDeptId);
-            vo.setDeptGrd(grd);
-            vo.setDeptSn(sn);
-            vo.setMdfr(mdfr);
-            result += deptDAO.deptUpdateByHierachy(vo);
+    public int updateChildNode(List<HierachyVO> childList, DeptVO upDeptVO) {
+        try {
+            int result = 0; // 부서 정보 수정 결과
+            String upDeptId = upDeptVO.getDeptId();
+            int grd = upDeptVO.getDeptGrd() + 1;
+            int sn = 1;
+            String mdfr = upDeptVO.getMdfr();
+            for (HierachyVO hierachyVO : childList) {
+                // 현재 노드 수정
+                DeptVO vo = new DeptVO();
+                vo.setDeptId(hierachyVO.getId());
+                vo.setUpDeptId(upDeptId);
+                vo.setDeptGrd(grd);
+                vo.setDeptSn(sn);
+                vo.setMdfr(mdfr);
+                int updateResult = deptDAO.deptUpdateByHierachy(vo);
+                if (updateResult == 0) {
+                    throw new CustomUpdateFailException("부서 정보 수정 실패");
+                }
+                result += updateResult;
 
-            // 하위 노드 수정
-            if (hierachyVO.getChildList() != null && hierachyVO.getChildList().size() > 0) {
-                result += updateChildNode(hierachyVO.getChildList(), vo);
+                // 하위 노드 수정
+                if (hierachyVO.getChildList() != null && hierachyVO.getChildList().size() > 0) {
+                    // 하위 노드 수정 결과
+                    int updateChild = updateChildNode(hierachyVO.getChildList(), vo);
+                }
+                sn++;
             }
-            sn++;
+            return result;
+        } catch(CustomUpdateFailException cufe) {
+            throw cufe;
+        } catch(DataAccessException dae) {
+            throw dae;
+        } catch (NullPointerException ne) {
+            throw ne;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
         }
-        return result;
     }
 }
(파일 끝에 줄바꿈 문자 없음)
src/main/java/com/takensoft/cms/dept/vo/DeptAuthrtVO.java
--- src/main/java/com/takensoft/cms/dept/vo/DeptAuthrtVO.java
+++ src/main/java/com/takensoft/cms/dept/vo/DeptAuthrtVO.java
@@ -5,6 +5,10 @@
 /**
  * @author  : takensoft
  * @since   : 2024.04.25
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.25  |  takensoft   | 최초 등록
+ *  2025.03.14  |    방선주     | 코드 리펙토링
  *
  * 부서 권한 정보 관련 VO
  */
@@ -15,20 +19,8 @@
 @AllArgsConstructor
 @NoArgsConstructor
 public class DeptAuthrtVO {
-    /**
-     * 부서 아이디
-     */
-    private String deptId;
-    /**
-     * 권한 코드
-     */
-    private String authrtCd;
-    /**
-     * 작성자
-     */
-    private String rgtr;
-    /**
-     * 작성일
-     */
-    private String regDt;
+    private String deptId;  // 부서 아이디
+    private String authrtCd;    // 권한 코드
+    private String rgtr;    // 작성자
+    private String regDt;   // 작성일
 }
src/main/java/com/takensoft/cms/dept/vo/DeptMbrVO.java
--- src/main/java/com/takensoft/cms/dept/vo/DeptMbrVO.java
+++ src/main/java/com/takensoft/cms/dept/vo/DeptMbrVO.java
@@ -8,6 +8,10 @@
 /**
  * @author  : takensoft
  * @since   : 2024.04.26
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.26  |  takensoft   | 최초 등록
+ *  2025.03.14  |    방선주     | 코드 리펙토링
  *
  * 부서 사용자 정보 관련 VO
  */
@@ -16,40 +20,13 @@
 @NoArgsConstructor
 @AllArgsConstructor
 public class DeptMbrVO {
-    /**
-     * 부서 아이디
-     */
-    private String deptId;
-    /**
-     * 회원 아이디
-     */
-    private String mbrId;
-    /**
-     * 로그인 아이디
-     */
-    private String lgnId;
-    /**
-     * 회원 이름
-     */
-    private String mbrNm;
-    /**
-     * 닉네임
-     */
-    private String ncnm;
-    /**
-     * 이메일
-     */
-    private String eml;
-    /**
-     * 연락처
-     */
-    private String mblTelno;
-    /**
-     * 등록자
-     */
-    private String rgtr;
-    /**
-     * 등록일
-     */
-    private String regDt;
+    private String deptId;   // 부서 아이디
+    private String mbrId;    // 회원 아이디
+    private String lgnId;    // 로그인 아이디
+    private String mbrNm;    // 회원 이름
+    private String ncnm;     // 닉네임
+    private String eml;      // 이메일
+    private String mblTelno; // 연락처
+    private String rgtr;     // 등록자
+    private String regDt;    // 등록일
 }
src/main/java/com/takensoft/cms/dept/vo/DeptVO.java
--- src/main/java/com/takensoft/cms/dept/vo/DeptVO.java
+++ src/main/java/com/takensoft/cms/dept/vo/DeptVO.java
@@ -12,6 +12,10 @@
 /**
  * @author  : takensoft
  * @since   : 2024.04.24
+ * @modification
+ *     since    |    author    | description
+ *  2024.04.24  |  takensoft   | 최초 등록
+ *  2025.03.14  |    방선주     | 코드 리펙토링
  *
  * 부서 정보 관련 VO
  */
@@ -20,57 +24,18 @@
 @NoArgsConstructor
 @AllArgsConstructor
 public class DeptVO {
-    /**
-     * 부서 아이디
-     */
-    private String deptId;
-    /**
-     * 상위 부서 아이디
-     */
-    private String upDeptId;
-    /**
-     * 부서명
-     */
-    private String deptNm;
-    /**
-     * 상위부서명
-     */
-    private String upDeptNm;
-    /**
-     * 부서설명
-     */
-    private String deptExpln;
-    /**
-     * 부서 깊이(레벨)
-     */
-    private int deptGrd;
-    /**
-     * 부서 순서
-     */
-    private int deptSn;
-    /**
-     * 사용여부
-     */
-    private String useYn;
-    /**
-     * 작성자
-     */
-    private String rgtr;
-    /**
-     * 작성일
-     */
-    private String regDt;
-    /**
-     * 수정자
-     */
-    private String mdfr;
-    /**
-     * 수정일
-     */
-    private String mdfcnDt;
-    /**
-     * 권한정보
-     */
-    private List<DeptAuthrtVO> authrtList = new ArrayList<DeptAuthrtVO>();
+    private String deptId;                                      // 부서 아이디
+    private String upDeptId;                                    // 상위 부서 아이디
+    private String deptNm;                                      // 부서명
+    private String upDeptNm;                                    // 상위부서명
+    private String deptExpln;                                   // 부서설명
+    private int deptGrd;                                        // 부서 깊이(레벨)
+    private int deptSn;                                         // 부서 순서
+    private String useYn;                                       // 사용여부
+    private String rgtr;                                        // 작성자
+    private String regDt;                                       // 작성일
+    private String mdfr;                                        // 수정자
+    private String mdfcnDt;                                     // 수정일
+    private List<DeptAuthrtVO> authrtList = new ArrayList<DeptAuthrtVO>(); // 권한정보
 
 }
src/main/java/com/takensoft/cms/dept/web/DeptController.java
--- src/main/java/com/takensoft/cms/dept/web/DeptController.java
+++ src/main/java/com/takensoft/cms/dept/web/DeptController.java
@@ -21,12 +21,15 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+
 /**
- * @author takensoft
- * @since 2024.04.24
+ * @author  : takensoft
+ * @since   :2024.04.24
  * @modification
  *     since    |    author    | description
  *  2024.04.24  |  takensoft   | 최초 등록
+ *  2024.05.10  |    박정하     | updateListProc 추가
+ *  2025.03.14  |    방선주     | 코드 리펙토링
  *
  * 부서 정보 관련 컨트롤러
  */
@@ -41,39 +44,26 @@
     private final AuthorService authorService;
 
     /**
-     * @author takensoft
-     * @since 2024.04.25
-     * @param deptVO
-     * @return
-     * @throws Exception
-     * 
+     * @param deptVO - 부서 정보
+     * @return ResponseEntity - 부서 등록 결과
+     *
      * 부서 등록
      */
     @PostMapping("/saveProc.json")
-    public ResponseEntity<?> saveProc(@RequestBody DeptVO deptVO) throws Exception {
+    public ResponseEntity<?> saveProc(@RequestBody DeptVO deptVO) {
         // 부서 등록
         HashMap<String, Object> result = deptService.deptSave(deptVO);
-        int insertResult = (int) result.get("insertResult");
-
-        // 응답 처리
-        if(insertResult > 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.29
-     * @param deptMbrVO
-     * @return
-     * @throws Exception
+     * @param deptMbrVO - 부서 사용자 정보
+     * @return ResponseEntity - 부서 사용자 등록 결과
      *
      * 부서 사용자 등록
      */
     @PostMapping("/deptMbrSaveProc.json")
-    public ResponseEntity<?> deptMbrSaveProc(@RequestBody DeptMbrVO deptMbrVO) throws Exception {
+    public ResponseEntity<?> deptMbrSaveProc(@RequestBody DeptMbrVO deptMbrVO) {
         // 부서 사용자 등록
         int result = deptService.deptMbrSave(deptMbrVO);
 
@@ -86,16 +76,13 @@
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.25
      * @param
-     * @return
-     * @throws Exception
+     * @return ResponseEntity - 부서 목록 조회 결과
      *
      * 부서 목록 조회
      */
     @GetMapping(value = "/findAll.json")
-    public ResponseEntity<?> findAll() throws Exception {
+    public ResponseEntity<?> findAll() {
         // Tree용
         List<HierachyVO> hierachyList = deptService.findByTopNode();
         // 권한 목록 조회
@@ -111,16 +98,13 @@
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
-     * @param
-     * @return
-     * @throws Exception
+     * @param params - 부서 정보
+     * @return ResponseEntity - 부서 정보 조회 결과
      *
-     * 부서정보 상세 조회
+     * 부서 정보 상세 조회
      */
     @PostMapping(value = "/findByDept.json")
-    public ResponseEntity<?> findByDept(@RequestBody HashMap<String, Object> params) throws Exception {
+    public ResponseEntity<?> findByDept(@RequestBody HashMap<String, Object> params) {
         // 부서정보 조회
         Map<String, Object> result = deptService.findByDept(params);
 
@@ -129,108 +113,72 @@
     }
 
     /**
-     * @author takensoft
-     * @since 2024.04.26
-     * @param deptVO
-     * @return
-     * @throws Exception
+     * @param deptVO - 부서 정보
+     * @return ResponseEntity - 부서 정보 조회 결과
      *
      * 부서 수정
      */
     @PostMapping(value = "/updateProc.json")
-    public ResponseEntity<?> updateProc(@RequestBody DeptVO deptVO) throws Exception {
+    public ResponseEntity<?> updateProc(@RequestBody DeptVO deptVO) {
         // 부서 수정
         int result = deptService.deptUpdate(deptVO);
-
-        // 응답 처리
-        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.26
-     * @param deptVO
-     * @return
-     * @throws Exception
+     * @param deptVO - 부서 정보
+     * @return ResponseEntity - 부서 삭제 결과
      *
      * 부서 삭제
      */
     @PostMapping(value = "/deleteProc.json")
-    public ResponseEntity<?> deleteProc(@RequestBody DeptVO deptVO) throws Exception {
+    public ResponseEntity<?> deleteProc(@RequestBody DeptVO deptVO) {
         // 부서 수정
         int result = deptService.deptDelete(deptVO);
-
-        // 응답 처리
-        if(result > 0) {
-            return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
-        } else {
-            return resUtil.errorRes(MessageCode.COMMON_DELETE_FAIL);
-        }
-    }
-
-    /**
-     * @author takensoft
-     * @since 2024.04.26
-     * @param
-     * @return
-     * @throws Exception
-     *
-     * 부서 사용자 삭제
-     */
-    @PostMapping(value = "/deptMbrDelProc.json")
-    public ResponseEntity<?> deptMbrDelProc(@RequestBody List<DeptMbrVO> deptMbrList) throws Exception {
-        // 부서 사용자 삭제
-        int result = deptService.deptMbrDelete(deptMbrList);
-
-        // 응답 처리
-        if(result > 0) {
-            return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
-        } else {
-            return resUtil.errorRes(MessageCode.COMMON_DELETE_FAIL);
-        }
-    }
-
-    /**
-     * @author takensoft
-     * @since 2024.04.29
-     * @param
-     * @return
-     * @throws Exception
-     *
-     * 부서에 등록되지 않는 사용자 조회
-     */
-    @PostMapping("/findByMbr.json")
-    public ResponseEntity<?> findByMbr(@RequestBody Map<String, String> params) throws Exception {
-        // 사용자 목록 조회
-        Map<String, Object> result = deptService.findByMbr(params);
-
         // 응답 처리
         return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
     }
 
     /**
-     * @author 박정하
-     * @since 2024.05.09
-     * @param deptList
-     * @return
-     * @throws Exception
+     * @param deptMbrList - 부서 사용자 정보
+     * @return ResponseEntity - 부서 사용자 삭제 결과
      *
-     * 부서 목록 수정
+     * 부서 사용자 삭제
+     */
+    @PostMapping(value = "/deptMbrDelProc.json")
+    public ResponseEntity<?> deptMbrDelProc(@RequestBody List<DeptMbrVO> deptMbrList) {
+        // 부서 사용자 삭제
+        int result = deptService.deptMbrDelete(deptMbrList);
+        // 응답처리
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
+    }
+
+    /**
+     * @param params - 부서 사용자 정보
+     * @return ResponseEntity - 부서 사용자 삭제 결과
+     *
+     * 부서에 등록되지 않는 사용자 조회
+     */
+    @PostMapping("/findByMbr.json")
+    public ResponseEntity<?> findByMbr(@RequestBody Map<String, String> params) {
+        // 사용자 목록 조회
+        Map<String, Object> result = deptService.findByMbr(params);
+        // 응답 처리
+        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
+    }
+
+    /**
+     * @param deptList -  부서 사용자 정보
+     * @return ResponseEntity - 등록되지 않는 사용자 조회 결과
+     *
+     * 부서에 등록되지 않는 사용자 조회
      */
     @PostMapping(value = "/updateListProc.json")
-    public ResponseEntity<?> updateListProc(@RequestBody List<HierachyVO> deptList) throws Exception {
+    public ResponseEntity<?> updateListProc(@RequestBody List<HierachyVO> deptList) {
         // 부서 목록 수정
         int result = deptService.updateList(deptList);
-
         // 응답 처리
-        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/menu/dao/MenuAuthorDAO.java
--- src/main/java/com/takensoft/cms/menu/dao/MenuAuthorDAO.java
+++ src/main/java/com/takensoft/cms/menu/dao/MenuAuthorDAO.java
@@ -17,7 +17,7 @@
  *  2024.05.08  |    박정하     | 메뉴 권한 조회
  *  2025.03.13  |    방선주     | 코드 리펙토링
  *
- * 메뉴 권한 정보 관련 Mapper
+ * 메뉴 권한 정보 관련 DAO
  */
 @Mapper("menuAuthorDAO")
 public interface MenuAuthorDAO {
Add a comment
List