Initial commit

This commit is contained in:
2026-05-29 17:49:25 +09:00
commit 330105cb27
1081 changed files with 148694 additions and 0 deletions
@@ -0,0 +1,207 @@
= 역할 관리
== 개요
역할을 등록하고, 해당 역할에 사용자 및 업무그룹을 Mapping 한다.
== UI Design & Function
=== 역할 목록(RoleList.vue)
역할 등록, 수정 및 조회. +
조회된 목록의 사용자/업무그룹 컬럼을 클릭하여 역할-사용자, 역할-업무그룹 상세 화면으로 이동한다.
image::roleList.png[역할 관리]
* 기능 설명
. 역할 목록 조회
. 역할 등록 : 역할 정보를 입력하는 Popup이 호출 되며 정보 기입 후 저장 버튼을 클릭하여 등록한다.
. 역할 수정 : 선택된(checkbox : true) 역할 정보를 수정하는 Popup이 호출 되며, 정보 기입 후 저장 버튼을 클릭하여 수정한다.
. 역할 삭제 : 선택된(checkbox : true) 역할 목록을 삭제한다.
. 엑셀 다운로드 : 조회 조건과 동일한 역할 목록을 엑셀 파일로 다운로드 한다.
=== 역할-사용자 관리(RoleUserInfo.vue)
선택한 역할에 대한 사용자 추가. +
역할에 대한 사용자가 많을 경우를 대비하여 상단에 페이징 처리 되는 Grid를, 하단에는 사용자를 추가하는 Grid로 나누어 화면을 구성된다.
image::roleUserInfo.png[역할-사용자 관리]
* 기능 설명
. 역할-사용자 목록 조회
. 역할-사용자 등록 : 추가 버튼 클릭시 사용자 조회 Popup이 호출 되며 사용자 선택 후 추가된 하단의 사용자 목록에서 저장한다.
. 역할-사용자 수정 : 기등록된 상단 사용자 목록에서 역할 적용 기간을 수정한다.
. 역할-사용자 삭제 : 기등록된 상단 사용자 목록에서 선택된(checkbox : true) 사용자 목록을 삭제한다.
=== 역할-업무그룹 관리(RoleWorkgroupInfo.vue)
선택한 역할에 대한 업무그룹 추가.
image::roleWorkgroupInfo.png[역할-업무그룹 관리]
* 기능 설명
. 역할-업무그룹 목록 조회
. 역할-업무그룹 등록 : 추가 버튼 클릭시 업무그룹 조회 Popup이 호출 되며 업무그룹을 선택 하여 등록 할 수 있다.
. 역할-업무그룹 삭제 : 기등록된 상단 업무그룹 목록에서 선택된(checkbox : true) 업무그룹 목록을 삭제한다.
== API & Service
=== API
* API : RoleController.java
. 역할 목록 조회 : GET /roles-with-paging
. 역할 상세정보 조회 : GET /roles/{roleId}
. 역할 등록 : POST /roles
. 역할 수정 : PUT /roles
. 역할 삭제 : DELETE /roles
. 역할-사용자 목록 조회 : GET /roles/{roleId}/users-with-paging
. 역할-사용자 등록 : POST /roles/{roleId}/users
. 역할-사용자 수정 : PUT /roles/{roleId}/users
. 역할-사용자 삭제 : DELETE /roles/{roleId}/users
. 역할-업무그룹 목록 조회 : GET /roles/{roleId}/workgroups
. 역할-업무그룹 등록 : POST /roles/{roleId}/workgroups
. 역할-업무그룹 삭제 : DELETE /roles/{roleId}/workgroups
== Entity Table & SQL
=== Entity Table
* TN_CF_ROLE : 역할
* TN_CF_USER_ROLE : 역할-사용자 맵핑
* TN_CF_WORKGROUP_ROLE : 역할-업무그룹 맵핑
=== SQL
. 역할 목록 조회
[source,xml]
----
<select id="selectRolePagingList" parameterType="java.util.HashMap" resultMap="roleResult">
SELECT *
FROM (SELECT
ROW_NUMBER() OVER ( <if test="@com.samsung.SdlComparator@isNotEmptyForDynamicSql(orderBy)">ORDER BY ${orderBy}</if> ) ROWNUM,
--생략--
----
[start=2]
. 역할 상세정보 조회
[source,xml]
----
<select id="selectRole" parameterType="java.util.HashMap" resultMap="roleResult">
SELECT <include refid="columnsRole" />
FROM <include refid="tableRole" />
--생략--
----
[start=3]
. 역할 등록
[source,xml]
----
<insert id="insertRole" parameterType="role">
INSERT INTO <include refid="tableRole" />
(<include refid="columnsRole" />)
--생략--
----
[start=4]
. 역할 수정
[source,xml]
----
<update id="updateRole" parameterType="role" flushCache="true" >
UPDATE <include refid="tableRole" />
SET ROLE_NAME = #{roleName},
--생략--
----
[start=5]
. 역할 삭제
[source,xml]
----
<update id="deleteRole" parameterType="role" flushCache="true" >
UPDATE <include refid="tableRole" />
SET DELETE_YN = 1,
--생략--
----
[start=6]
. 역할-사용자 목록 조회
[source,xml]
----
<select id="selectRoleUserPagingList" parameterType="java.util.HashMap" resultMap="roleUserResult">
SELECT *
FROM (SELECT
ROW_NUMBER() OVER ( <if test="@com.samsung.SdlComparator@isNotEmptyForDynamicSql(orderBy)">ORDER BY ${orderBy}</if> ) ROWNUM,
--생략--
----
[start=7]
. 역할-사용자 등록
[source,xml]
----
<insert id="insertUserRole" parameterType="userRole">
INSERT INTO <include refid="tableUserRole" />
(ROLE_ID, USER_ID, FROM_DATE, THRU_DATE,
--생략--
----
[start=8]
. 역할-사용자 수정
[source,xml]
----
<update id="updateUserRole" parameterType="userRole">
UPDATE <include refid="tableUserRole" />
SET THRU_DATE = #{thruDate},
--생략--
----
[start=9]
. 역할-사용자 삭제
[source,xml]
----
<delete id="deleteUserRole" parameterType="java.util.HashMap">
DELETE FROM <include refid="tableUserRole" />
WHERE USER_ID = #{userId}
--생략--
----
[start=10]
. 역할-업무그룹 목록 조회
[source,xml]
----
<select id="selectRoleWorkgroupList" parameterType="java.util.HashMap" resultMap="workgroup.workgroupResult">
SELECT W.WORKGROUP_ID, W.WORKGROUP_NAME, W.DESCRIPTION,
W.LABEL
--생략--
----
[start=11]
. 역할-업무그룹 등록
[source,xml]
----
<insert id="insertWorkgroupRole" parameterType="workgroupRole">
INSERT INTO <include refid="tableWorkgroupRole" />
(WORKGROUP_ID, USER_ROLE_ID, FROM_DATE, THRU_DATE, ROLE_ID, USER_ID,
--생략--
----
[start=12]
. 역할-업무그룹 삭제
[source,xml]
----
<delete id="deleteWorkgroupRole" parameterType="java.util.HashMap">
DELETE FROM <include refid="tableWorkgroupRole" />
WHERE WORKGROUP_ID = #{workgroupId}
--생략--
----