From 0b9b8875ca9b3c0cf4d0edb3b49eba6c7bff3b72 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 수, 16 2월 2022 17:54:03 +0900
Subject: [PATCH] - 부서 삭제 시 워크플로우, 프로젝트, 이슈의 담당부서에 속해 있으면 삭제 못하도록 수정

---
 src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java          |    2 +
 src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java            |   26 +++++++++++-
 src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java    |   15 +++++++
 src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java                |    2 +
 src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java |   15 +++++++
 src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java             |    2 +
 src/main/java/kr/wisestone/owl/repository/WorkflowDepartmentRepository.java       |    2 +
 src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java       |   15 +++++++
 src/main/java/kr/wisestone/owl/constant/MsgConstants.java                         |    3 +
 src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties                            |    3 +
 src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java    |    2 +
 11 files changed, 84 insertions(+), 3 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
index 66ac6a0..1960930 100644
--- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
+++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -253,6 +253,9 @@
 
     public static final String DEPARTMENT_NOT_EXIST = "DEPARTMENT_NOT_EXIST";   // 遺��꽌媛� 議댁옱�븯吏� �븡�뒿�땲�떎.
     public static final String DEPARTMENT_ALREADY_IN_USE = "DEPARTMENT_ALREADY_IN_USE";   // �꽑�깮�븳 遺��꽌�뒗 �씠誘� �궗�슜�븯怨� �엳�뒿�땲�떎.
+    public static final String DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW = "DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW";   // �꽑�깮�븳 遺��꽌�뒗 �씠誘� �썙�겕�뵆濡쒖슦�쓽 �떞�떦遺��꽌�뿉 �냽�빐 �엳�뒿�땲�떎.
+    public static final String DEPARTMENT_ALREADY_IN_USE_IN_PROJECT = "DEPARTMENT_ALREADY_IN_USE_IN_PROJECT";   // �꽑�깮�븳 遺��꽌�뒗 �봽濡쒖젥�듃�쓽 �떞�떦遺��꽌�뿉 �냽�빐 �엳�뒿�땲�떎.
+    public static final String DEPARTMENT_ALREADY_IN_USE_IN_ISSUE = "DEPARTMENT_ALREADY_IN_USE_IN_ISSUE";   // �꽑�깮�븳 遺��꽌�뒗 �씠�뒋�쓽 �떞�떦遺��꽌�뿉 �냽�빐 �엳�뒿�땲�떎.
     public static final String DEPARTMENT_REMOVE_NOT_SELECT = "DEPARTMENT_REMOVE_NOT_SELECT";   // �궘�젣�븷 遺��꽌媛� �꽑�깮�릺吏� �븡�븯�뒿�땲�떎.
     public static final String USER_DEPARTMENT_CHANGE = "USER_DEPARTMENT_CHANGE";   // �궗�슜�옄�쓽 遺��꽌媛� 蹂�寃� �릺�뿀�뒿�땲�떎. �떎�떆 濡쒓렇�씤 �빐二쇱꽭�슂.
 
diff --git a/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java b/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java
index 5e38f1e..3c11a08 100644
--- a/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java
+++ b/src/main/java/kr/wisestone/owl/repository/ProjectRoleDepartmentRepository.java
@@ -11,4 +11,6 @@
     List<ProjectRoleDepartment> findByProjectRoleId(@Param("projectRoleId") Long projectRoleId);
 
     ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(@Param("projectRoleId") Long projectRoleId, @Param("departmentId") Long departmentId);
+
+    List<ProjectRoleDepartment> findByDepartmentId(@Param("departmentId") Long departmentId);
 }
diff --git a/src/main/java/kr/wisestone/owl/repository/WorkflowDepartmentRepository.java b/src/main/java/kr/wisestone/owl/repository/WorkflowDepartmentRepository.java
index 55f89cb..8c125c1 100644
--- a/src/main/java/kr/wisestone/owl/repository/WorkflowDepartmentRepository.java
+++ b/src/main/java/kr/wisestone/owl/repository/WorkflowDepartmentRepository.java
@@ -9,4 +9,6 @@
 public interface WorkflowDepartmentRepository extends JpaRepository<WorkflowDepartment, Long> {
     List<WorkflowDepartment> findByWorkflowIdAndIssueStatusId(@Param("workflowId") Long workflowId, @Param("issueStatusId") Long issueStatusId);
     List<WorkflowDepartment> findByWorkflowId(@Param("workflowId") Long workflowId);
+
+    List<WorkflowDepartment> findByDepartmentId(@Param("departmentId") Long departmentId);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java b/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java
index 2425fe2..6fd4f5f 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueDepartmentService.java
@@ -24,4 +24,6 @@
     List<IssueDepartment> find(Issue issue);
 
     List<IssueDepartment> findByDepartmentId(Long departmentId);
+
+    boolean usingDepartment(Long departmentId);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java b/src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java
index 0d6e0c0..0c92606 100644
--- a/src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java
+++ b/src/main/java/kr/wisestone/owl/service/ProjectRoleDepartmentService.java
@@ -12,4 +12,6 @@
     ProjectRoleDepartment findByProjectRoleIdAndDepartmentId(Long projectRoleId, Long departmentId); //�떞�떦遺��꽌
 
     List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap);
+
+    boolean usingDepartment(Long departmentId);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java b/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java
index c6a30c6..775c75d 100644
--- a/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java
+++ b/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java
@@ -19,4 +19,6 @@
     List<Long> findFirstDepartmentIds(Workflow workflow);
     void modify(Workflow workflow, List<IssueStatusVo> issueStatusVos);
     void remove(Long workflowId);
+
+    boolean usingDepartment(Long id);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
index c7e7000..67d7586 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
@@ -56,6 +56,9 @@
     private ProjectRoleDepartmentService projectRoleDepartmentService;
 
     @Autowired
+    private IssueDepartmentService issueDepartmentService;
+
+    @Autowired
     private ProjectRoleService projectRoleService;
 
     @Autowired
@@ -125,11 +128,28 @@
         }
 
         for (Long id : departmentForm.getRemoveIds()) {
-            if (!this.departmentService.countInDepartment(id)) {
-                this.departmentRepository.deleteById(id);
-            } else {
+            if (this.departmentService.countInDepartment(id)) {
+                //  �궗�슜�옄媛� 遺��꽌�뿉 �냽�빐 �엳�뒗吏� 泥댄겕
                 throw new OwlRuntimeException(
                         this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE));
+
+            } else if (this.workflowDepartmentService.usingDepartment(id)) {
+                //  �썙�겕�뵆濡쒖슦�뿉�꽌 �빐�떦 遺��꽌瑜� �궗�슜�븯怨� �엳�뒗吏� 泥댄겕
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW));
+
+            } else if (this.projectRoleDepartmentService.usingDepartment(id)) {
+                //  �봽濡쒖젥�듃�쓽 �떞�떦遺��꽌�씤吏� 泥댄겕
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE_IN_PROJECT));
+
+            } else if (this.issueDepartmentService.usingDepartment(id)) {
+                //  �씠�뒋�쓽 �떞�떦遺��꽌濡� �릺�뼱�엳�뒗吏� 泥댄겕
+                throw new OwlRuntimeException(
+                        this.messageAccessor.getMessage(MsgConstants.DEPARTMENT_ALREADY_IN_USE_IN_ISSUE));
+
+            } else {
+                this.departmentRepository.deleteById(id);
             }
         }
         this.departmentRepository.flush();
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java
index 34d1557..d70d66b 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueDepartmentServiceImpl.java
@@ -99,6 +99,21 @@
         return this.issueDepartmentRepository.findByDepartmentId(departmentId);
     }
 
+    /**
+     * �씠�뒋�쓽 �떞�떦遺��꽌�뿉 �냽�빐�엳�뒗吏� 議고쉶
+     * @param departmentId Long
+     * @return useYn
+     */
+    @Override
+    public boolean usingDepartment(Long departmentId) {
+        boolean useYn = false;
+        List<IssueDepartment> issueDepartments = this.issueDepartmentRepository.findByDepartmentId(departmentId);
+        if (issueDepartments != null && issueDepartments.size() > 0) {
+            useYn = true;
+        }
+        return useYn;
+    }
+
     @Override
     @Transactional
     public void insertIssueDepartment(List<Map<String, Long>> issueAssigneeMaps) {
diff --git a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java
index f98bae8..8b7a3d1 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/ProjectRoleDepartmentServiceImpl.java
@@ -63,4 +63,19 @@
     public List<Map<String, Object>> findProjectRoleDepartment(Map<String, Object> projectRoleDepartmentMap) {
         return this.projectRoleDepartmentMapper.findProjectRoleDepartment(projectRoleDepartmentMap);
     }
+
+    /**
+     * �봽濡쒖젥�듃�쓽 �떞�떦遺��꽌�뿉 �냽�빐�엳�뒗吏� 議고쉶
+     * @param departmentId Long
+     * @return useYn
+     */
+    @Override
+    public boolean usingDepartment(Long departmentId) {
+        boolean useYn = false;
+        List<ProjectRoleDepartment> projectRoleDepartments = this.projectRoleDepartmentRepository.findByDepartmentId(departmentId);
+        if (projectRoleDepartments != null && projectRoleDepartments.size() > 0) {
+            useYn = true;
+        }
+        return useYn;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java
index 756b7c9..a85c2dd 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java
@@ -193,4 +193,19 @@
 
         this.workflowDepartmentMapper.deleteAll(condition);
     }
+
+    /**
+     * �듅�젙 遺��꽌瑜� �썙�겕�뵆濡쒖슦�뿉�꽌 �궗�슜以묒씤吏� 泥댄겕
+     * @param id Long
+     * @return useYn
+     */
+    @Override
+    public boolean usingDepartment(Long id) {
+        boolean useYn = false;
+        List<WorkflowDepartment> workflowDepartments = this.workflowDepartmentRepository.findByDepartmentId(id);
+        if (workflowDepartments != null && workflowDepartments.size() > 0) {
+            useYn = true;
+        }
+        return useYn;
+    }
 }
diff --git a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
index 2f2e8d1..6d547d5 100644
--- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
+++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -235,6 +235,9 @@
 
 DEPARTMENT_NOT_EXIST = \uBD80\uC11C\uAC00 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
 DEPARTMENT_ALREADY_IN_USE = \uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uBBF8 \uC0AC\uC6A9\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.
+DEPARTMENT_ALREADY_IN_USE_IN_WORKFLOW=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uBBF8 \uC6CC\uD06C\uD50C\uB85C\uC6B0\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4.
+DEPARTMENT_ALREADY_IN_USE_IN_PROJECT=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uD504\uB85C\uC81D\uD2B8\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4.
+DEPARTMENT_ALREADY_IN_USE_IN_ISSUE=\uC120\uD0DD\uD55C \uBD80\uC11C\uB294 \uC774\uC288\uC758 \uB2F4\uB2F9\uBD80\uC11C\uC5D0 \uC18D\uD574 \uC788\uC2B5\uB2C8\uB2E4.
 DEPARTMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uBD80\uC11C\uAC00 \uC120\uD0DD\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
 USER_DEPARTMENT_CHANGE = \uC0AC\uC6A9\uC790\uC758 \uB4F1\uAE09\uC774 \uBCC0\uACBD \uB418\uC5C8\uC2B5\uB2C8\uB2E4. \uB2E4\uC2DC \uB85C\uADF8\uC778 \uD574\uC8FC\uC138\uC694.
 

--
Gitblit v1.8.0