From 916a3cbabe4e50062fce61ff6f2f5d46c05dfbd1 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 17 3월 2022 17:47:45 +0900
Subject: [PATCH] - api로 이슈 추가 시 url/ip로 업체 찾는 코드 수정

---
 src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java |   68 ++++++++++++++++++++++++++--------
 1 files changed, 52 insertions(+), 16 deletions(-)

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 344147e..67d7586 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/DepartmentServiceImpl.java
@@ -2,13 +2,11 @@
 
 import kr.wisestone.owl.domain.*;
 import kr.wisestone.owl.mapper.DepartmentMapper;
-import kr.wisestone.owl.repository.WorkflowDepartmentRepository;
+import kr.wisestone.owl.repository.UserDepartmentRepository;
 import kr.wisestone.owl.service.*;
-import kr.wisestone.owl.util.CommonUtil;
 import kr.wisestone.owl.web.condition.DepartmentCondition;
 import kr.wisestone.owl.web.condition.UserCondition;
 import kr.wisestone.owl.web.form.DepartmentForm;
-import kr.wisestone.owl.web.form.UserDepartmentForm;
 import org.jsoup.Jsoup;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,22 +41,25 @@
     private DepartmentRepository departmentRepository;
 
     @Autowired
+    private UserDepartmentService userDepartmentService;
+
+    @Autowired
     private DepartmentMapper departmentMapper;
 
     @Autowired
     private DepartmentService departmentService;
 
     @Autowired
-    private UserDepartmentService userDepartmentService;
+    private WorkflowDepartmentService workflowDepartmentService;
 
     @Autowired
     private ProjectRoleDepartmentService projectRoleDepartmentService;
 
     @Autowired
-    private ProjectRoleService projectRoleService;
+    private IssueDepartmentService issueDepartmentService;
 
     @Autowired
-    private WorkflowDepartmentRepository workflowDepartmentRepository;
+    private ProjectRoleService projectRoleService;
 
     @Autowired
     private IssueTypeService issueTypeService;
@@ -127,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();
@@ -167,24 +185,37 @@
     @Override
     @Transactional(readOnly = true)
     public void findWorkflowDepartment(Map<String, Object> resJsonData, DepartmentCondition departmentCondition) {
+        List<DepartmentVo> departmentVos = findWorkflowDepartment(departmentCondition.getIssueTypeId());
+        resJsonData.put(Constants.RES_KEY_CONTENTS, departmentVos);
+    }
 
-        IssueType issueType = this.issueTypeService.getIssueType(departmentCondition.getIssueTypeId());
-        Long workflowId = issueType.getWorkflow().getId();
-        List<WorkflowDepartment> workflowDepartmentList = this.workflowDepartmentRepository.findByWorkflowId(workflowId);
+    //  �썙�겕�뵆濡쒖슦�뿉 �냽�빐�엳�뒗 遺��꽌 紐⑸줉 議고쉶
+    @Override
+    @Transactional(readOnly = true)
+    public List<DepartmentVo> findWorkflowDepartment(Long issueTypeId) {
+        List<WorkflowDepartment> workflowDepartmentList = this.findWorkflowDepartmentByIssueTypeId(issueTypeId);
         List<DepartmentVo> departmentVos = Lists.newArrayList();
 
-        //List<Long> workflowDepartmentIds = Lists.newArrayList();
         if(workflowDepartmentList != null && workflowDepartmentList.size()>0){
             for(WorkflowDepartment workflowDepartment : workflowDepartmentList){
                 DepartmentVo departmentVo = ConvertUtil.copyProperties(workflowDepartment.getDepartment(), DepartmentVo.class);
                 departmentVo.setByName(departmentVo.getDepartmentName());
-                //workflowDepartmentIds.add(workflowDepartment.getDepartment().getId());
                 departmentVos.add(departmentVo);
             }
-            resJsonData.put(Constants.RES_KEY_CONTENTS, departmentVos);
         }
+        return departmentVos;
     }
 
+    // �씠�뒋 �쑀�삎(�썙�겕�뵆濡쒖슦)�뿉 �엳�뒗 �떞�떦遺��꽌 議고쉶
+    private List<WorkflowDepartment> findWorkflowDepartmentByIssueTypeId(Long issueTypeId) {
+        Long workflowId = this.getWorkflowId(issueTypeId);
+        return this.workflowDepartmentService.find(workflowId);
+    }
+
+    private Long getWorkflowId(Long issueTypeId) {
+        IssueType issueType = this.issueTypeService.getIssueType(issueTypeId);
+        return issueType.getWorkflow().getId();
+    }
 
     // 遺��꽌 紐⑸줉�쓣 �뿊��濡� �떎�슫濡쒕뱶 �븳�떎.
     @Override
@@ -226,7 +257,12 @@
 
     @Override
     public boolean countInDepartment(Long id) {
-        return this.departmentMapper.countInDepartment(id) > 0;
+        boolean result = false;
+        List<UserDepartment> usingDepartments = this.userDepartmentService.findByDepartmentId(id);
+        if(usingDepartments != null && usingDepartments.size() > 0){
+            result = true;
+        }
+        return result;
     }
 
     //  DepartmentVos �뜲�씠�꽣瑜� �뿊���뿉�꽌 �몴�떆�븷 �닔 �엳�뒗 �뜲�씠�꽣濡� 蹂�寃쏀븳�떎.

--
Gitblit v1.8.0