Files
sdl_base/doc/공통기능/사용자관리/업무그룹관리.adoc
T
2026-05-29 17:49:25 +09:00

228 lines
7.3 KiB
Plaintext

= 업무 그룹 관리
== 개요
메일 그룹 및 맵핑 정보 관리 기능 제공.
== UI Design & Function
=== 업무 그룹 목록(WorkgroupList.vue)
업무별로 업무그룹을 만들고 해당 업무그룹에서 사용가능한 메뉴를 선택, 해당 메뉴 사용 가능한 Role 또는 User를 추가한다.
image::workgroupList.png[업무 그룹 목록]
* 기능 설명
. 업무그룹 목록 조회
. 업무그룹 상세정보 조회
. 업무그룹 등록 : 업무그룹 정보를 입력하는 Popup이 호출 되며, 정보 기입 후 저장 버튼을 클릭하여 등록한다.
. 업무그룹 수정 : 선택된(checkbox : true) 업무그룹 정보를 수정하는 Popup이 호출 되며 역할 정보 기입 후 저장 버튼을 클릭하여 수정한다.
. 업무그룹 삭제 : 선택된(checkbox : true) 역할 목록을 삭제한다.
=== 업무그룹-메뉴(WorkgroupMenuInfo.vue)
업무그룹에서 사용 가능한 메뉴를 관리 하는 화면. +
메뉴 등록 및 삭제가 가능하며 메뉴별 권한 설정이 가능하다.
image::workgroupMenuInfo.png[업무그룹-메뉴]
* 기능 설명
. 업무그룹-메뉴 목록 조회
. 업무그룹-메뉴 등록 : 메뉴를 선택하는 Popup이 호출 되며 선택 후 저장 버튼을 클릭하여 등록한다.
. 업무그룹-메뉴 수정 : 권한을 선택(checkbox : true)하여 해당 메뉴에 대한 권한을 수정한다.
. 업무그룹-메뉴 삭제 : 선택된(checkbox : true) 메뉴 목록을 삭제한다.
=== 업무그룹-역할(WorkgroupMenuInfo.vue)
선택한 업무그룹에 역할 또는 사용자를 관리하는 화면. +
역할과 사용자를 추가 또는 삭제할 수 있다.
image::workgroupRoleInfo.png[업무그룹-역할]
* 기능 설명
. 업무그룹-역할 목록 조회
. 업무그룹-역할 등록
.. 사용자 등록 : 사용자 추가 버튼 클릭 시 사용자를 선택할 수 있는 Popup이 호출 되며 선택 후 저장 버튼을 클릭하여 등록 한다.
.. 역할 등록 : 역할 추가 버튼 클릭 시 역할을 선택할 수 있는 Popup이 호출 되며 선택 후 저장 버튼을 클릭하여 등록 한다.
. 업무그룹-역할 수정 : 등록된 사용자의 업무그룹 만료일을 수정 한다.
. 업무그룹-역할 삭제 : 선택된(checkbox : true) 역할(사용자) 목록을 삭제한다.
== API & Service
=== API
* API : WorkgroupController.java
. 업무그룹 목록 조회 : GET /auth/workgroups-with-paging
. 업무그룹 상세정보 조회 : GET /auth/workgroups/{workgroupId}
. 업무그룹 등록 : POST /auth/workgroups
. 업무그룹 수정 : PUT /auth/workgroups/{workgroupId}
. 업무그룹 삭제 : DELETE /auth/workgroups
. 업무그룹-메뉴 목록 조회 : GET /auth/workgroups/{workgroupId}/menus
. 업무그룹-메뉴 등록 : POST /auth/workgroups/{workgroupId}/menus
. 업무그룹-메뉴 수정 : PUT /auth/workgroups/{workgroupId}/menus
. 업무그룹-메뉴 삭제 : DELETE /auth/workgroups/{workgroupId}/menus
. 업무그룹-역할 목록 조회 : GET /auth/workgroups/{workgroupId}/roles
. 업무그룹-역할 등록 : POST /auth/workgroups/{workgroupId}/roles
. 업무그룹-역할 수정 : PUT /auth/workgroups/{workgroupId}/roles
. 업무그룹-역할 삭제 : DELETE /auth/workgroups/{workgroupId}/roles
* Service : WorkgroupServiceImpl.java
. 업무그룹-메뉴 목록 조회. +
메뉴의 전체 경로 셋팅 및 권한별 row 데이터를 메뉴 row 데이터로 가공한다.
[source,java]
----
@Override
public List<WorkgroupMenuDto> getWorkgroupMenuList(String workgroupId) {
List<WorkgroupMenuDto> workgroupMenuDtoList = new ArrayList<>();
List<String> authorizationIdList;
String beforeMenuId = "";
-- 생략 --
----
== Entity Table & SQL
=== Entity Table
* TN_CF_WORKGROUP : 업무그룹
* TN_CF_WORK_AUTHORIZATION : 업무그룹 메뉴 권한 맵핑
* TN_CF_WORKGROUP_ROLE : 업무그룹 역할 맵핑
=== SQL
. 업무그룹 목록 조회
[source,xml]
----
<select id="selectWorkgroupPagingList" parameterType="java.util.HashMap" resultMap="workgroupResult">
SELECT *
FROM (SELECT ROW_NUMBER() OVER ( <if test="@com.samsung.SdlComparator@isNotEmptyForDynamicSql(orderBy)">ORDER BY ${orderBy}</if> ) ROWNUM,
<include refid="columnsWorkgroup" />
--생략--
----
[start=2]
. 업무그룹 상세정보 조회
[source,xml]
----
<select id="selectWorkgroup" parameterType="java.util.HashMap" resultMap="workgroupResult">
SELECT <include refid="columnsWorkgroup" />
FROM <include refid="tableWorkgroup" />
<include refid="conditionWorkgroup" />
</select>
----
[start=3]
. 업무그룹 등록
[source,xml]
----
<insert id="insertWorkgroup" parameterType="workgroup">
INSERT INTO <include refid="tableWorkgroup" />
(<include refid="columnsWorkgroup"/>)
--생략--
----
[start=4]
. 업무그룹 수정
[source,xml]
----
<update id="updateWorkgroup" parameterType="workGroup">
UPDATE <include refid="tableWorkgroup" />
SET WORKGROUP_NAME = #{workgroupName},
--생략--
----
[start=5]
. 업무그룹 삭제
[source,xml]
----
<delete id="deleteWorkgroup" parameterType="java.util.HashMap">
UPDATE <include refid="tableWorkgroup" />
SET DELETE_YN = 1,
--생략--
----
[start=6]
. 업무그룹-메뉴 목록 조회
[source,xml]
----
<select id="selectWorkgroupMenuList" parameterType="java.util.HashMap" resultMap="workgroupMenuResult">
WITH TREE_TABLE AS (SELECT SR.UPPER_SYS_RESOURCE_ID, M.MENU_ID,
CONVERT(NVARCHAR(100), M.LABEL) LABEL,
CONVERT(NVARCHAR(100), M.LABEL_JSON) LABEL_JSON,
--생략--
----
[start=7]
. 업무그룹-메뉴 등록
[source,xml]
----
<insert id="insertWorkgroupMenu" parameterType="workgroupMenu">
INSERT INTO <include refid="tableWorkAuthorization" />
(WORKGROUP_ID, SYS_RESOURCE_ID, AUTHORIZATION_ID,
--생략--
----
[start=8]
. 업무그룹-메뉴 삭제
[source,xml]
----
<delete id="deleteWorkgroupMenu" parameterType="workgroupMenu">
DELETE FROM <include refid="tableWorkAuthorization" />
WHERE SYS_RESOURCE_ID = #{sysResourceId}
--생략--
----
[start=9]
. 업무그룹-역할 목록 조회
[source,xml]
----
<select id="selectRoleWorkgroupList" parameterType="java.util.HashMap" resultMap="workgroup.workgroupResult">
SELECT W.WORKGROUP_ID, W.WORKGROUP_NAME, W.DESCRIPTION,
W.LABEL
--생략--
----
[start=10]
. 업무그룹-역할 등록
[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=11]
. 업무그룹-역할 수정
[source,xml]
----
<update id="updateWorkgroupRole" parameterType="workgroupRole">
UPDATE <include refid="tableWorkgroupRole" />
SET THRU_DATE = #{thruDate},
--생략--
----
[start=12]
. 업무그룹-역할 삭제
[source,xml]
----
<delete id="deleteWorkgroupRole" parameterType="java.util.HashMap">
DELETE FROM <include refid="tableWorkgroupRole" />
WHERE WORKGROUP_ID = #{workgroupId}
--생략--
----