= 부서관리(사용자정의)

== Table
* 부서(사용자정의) : TN_CF_DEPT_SELF
* 부서매핑 : TN_CF_DEPT_MAPPING

== API
.CustomDepartmentController.java

. 부서관리(사용자 정의) 목록 조회 +
GET /admin/department/custom +
Query ID : selectCustomDepartmentList

. 부서 하위 레벨 조회 +
GET /admin/department/custom/dept-level-sub +
Query ID : selectCustomDepartmentSubList
* 부서의 데이터가 많으므로 목록에 1레벨만 불러오고 1레벨의 부서를 클릭시 "부서 하위 레벨 조회" API를 실행하여 하위 부서를 조회한다.

. 부서 상세정보 조회 +
GET /admin/department/custom/dept-infos +
Query ID : selectCustomDepartmentList, selectDeptMapping
* 부서 정보와 부서 매핑을 함께 불러온다.

. 부서 저장 +
POST /admin/department/custom +
Query ID : insertCustomDepartment
* 등록된 부서가 있는지 중복체크하고 없으면 저장한다.

. 부서 수정 +
PUT /admin/department/custom/{selfDeptCode} +
Query ID : updateCustomDepartment
* 부서명, 정렬순서, 설명만 수정 가능하다.

. 부서 이동 +
PUT /admin/department/custom +
Query ID : updateDeptUpperDeptCode, updateDeptSequence
* 부서는 Drag & Drop 으로 원하는 곳에 이동하여 저장할 수 있다.

. 부서 매핑 조회 +
GET /admin/department/custom/mappings/{selfDeptCode} +
Query ID : selectDeptMapping

. 부서 매핑 저장 +
POST /admin/department/custom/mappings/{selfDeptCode} +
Query ID : insertDeptMapping
* DB에 저장된 mapping과 화면에서 추가한 mapping을 비교하여 DB에 없는 mapping만 insert 한다.

. 부서 매핑 삭제 +
DELETE /admin/department/custom/mappings/{selfDeptCode}/{deptCode} +
Query ID : deleteDeptMapping

== 부서관리(사용자정의) 기본 정보
사용자의 임의로 부서를 등록 및 해당되는 부서의 Knox 부서 매핑.

image::deptList.png[]

=== 기본정보 필드 설명
- 부서코드 : 부서에 부여되는 코드(Unique)
- 부서명 : 부서명칭
- 부서레벨 : 부서에 부여되는 Level이며 최상위 Department 부서는 0 level이다.
- 정렬순서 : 같은 레벨 상 나오는 부서의 순서
- 설명 : 부서에 대한 설명

=== 기본정보 기능별 설명
- 삭제 : 부서목록의 부서를 선택 후 삭제 버튼 클릭시 선택된 부서 삭제(하위 부서 포함)
- 추가 : 추가하고자 하는 상위 부서를 선택 후 추가 버튼을 클릭시 Tree 구조에 New Document 생성
- 저장 : 추가로 생성된 또는 선택된 부서 정보를 저장

== 부서 매핑
해당 부서에 대한 Knox 부서 매핑 정보.

=== 부서 매핑 정보 필드 설명
- 부서코드 : Knox 부서에 부여되는 코드(Unique)
- 부서명 : Knox 부서명칭
- 삭제 : 삭제 실행 버튼

=== 기능별 설명
- 추가 : Knox 부서 Popup 호출
- 저장 : 호출된 Knox 부서 Popup 화면에서 추가하고자 하는 부서 매핑 정보에 저장.