From e50b78db2f5e74f88b7e5c736f1fca4ca3cbe29b Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 목, 25 11월 2021 10:57:04 +0900
Subject: [PATCH] - 워크플로우 담당부서 설정 기능 추가

---
 src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java |   49 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java
index 5f72e5d..be7a902 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java
@@ -13,6 +13,7 @@
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.vo.*;
 import kr.wisestone.owl.web.condition.WorkflowCondition;
+import kr.wisestone.owl.web.condition.WorkflowDepartmentCondition;
 import kr.wisestone.owl.web.form.WorkflowForm;
 import kr.wisestone.owl.web.view.ExcelView;
 import org.apache.commons.lang3.StringUtils;
@@ -26,9 +27,7 @@
 import org.springframework.ui.Model;
 import org.springframework.web.servlet.ModelAndView;
 import javax.servlet.http.HttpServletRequest;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class WorkflowServiceImpl extends AbstractServiceImpl<Workflow, Long, JpaRepository<Workflow, Long>>
@@ -44,6 +43,9 @@
 
     @Autowired
     private WorkflowTransitionService workflowTransitionService;
+
+    @Autowired
+    private WorkflowDepartmentService workflowDepartmentService;
 
     @Autowired
     private WorkspaceService workspaceService;
@@ -123,9 +125,9 @@
         Workspace workspace = this.workspaceService.getWorkspace(this.userService.getUser(this.webAppUtil.getLoginId()).getLastWorkspaceId());
         workflow.setWorkspace(workspace);
 
-        this.workflowRepository.saveAndFlush(workflow);
-
+        workflow = this.workflowRepository.saveAndFlush(workflow);
         this.workflowTransitionService.modify(workflow, workflowForm.getIssueStatusVos());
+        this.workflowDepartmentService.modify(workflow, workflowForm.getIssueStatusVos());
 
         return workflow;
     }
@@ -173,6 +175,8 @@
         List<WorkflowVo> workflowVos = ConvertUtil.convertListToListClass(results, WorkflowVo.class); //workflow 由ъ뒪�듃
         //  �썙�겕�뵆濡쒖슦瑜� �궗�슜�븯�뒗 �씠�뒋 �쑀�삎 �젙蹂대�� 異붽��븳�떎.
         this.setIssueTypeVos(workflowVos);
+        //  �썙�겕�뵆濡쒖슦 �떞�떦遺��꽌 �젙蹂대�� 異붽��븳�떎.
+        this.setDepartmentVos(workflowVos);
 
         resJsonData.put(Constants.REQ_KEY_PAGE_VO, new ResPage(pageable.getPageNumber(), pageable.getPageSize(),
                 totalPage, totalCount));
@@ -191,6 +195,22 @@
         }
     }
 
+    //  �썙�겕�뵆濡쒖슦瑜� �궗�슜�븯�뒗 遺��꽌 �젙蹂대�� 異붽��븳�떎.
+    private void setDepartmentVos(List<WorkflowVo> workflowVos) {
+        for (WorkflowVo workflowVo : workflowVos) {
+            Workflow workflow = this.getWorkflow(workflowVo.getId());
+
+            WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition();
+            condition.setWorkflowId(workflow.getId());
+            List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(condition);
+            if (workflowDepartmentVos != null && workflowDepartmentVos.size() > 0) {
+                IssueStatusVo issueStatusVo = new IssueStatusVo();
+                issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos);
+                workflowVo.addIssueStatusVos(issueStatusVo);
+            }
+        }
+    }
+
     //  �썙�겕�뵆濡쒖슦 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
@@ -203,7 +223,15 @@
 
             switch (workflowCondition.getDeep()) {
                 case "01" : //  �뿰愿��맂 �씠�뒋 �긽�깭�� �쟾�씠�꽑 �젙蹂대�� 媛��졇�삩�떎.
-                    workflowVo.setIssueStatusVos(this.issueStatusService.findByWorkflowId(workflowCondition.getId()));
+                    List<IssueStatusVo> issueStatusVos = this.issueStatusService.findByWorkflowId(workflowCondition.getId());
+                    for (IssueStatusVo issueStatusVo : issueStatusVos) {
+                        WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition();
+                        condition.setWorkflowId(workflowVo.getId());
+                        condition.setIssueStatusId(issueStatusVo.getId());
+                        List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(condition);
+                        issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos);
+                    }
+                    workflowVo.setIssueStatusVos(issueStatusVos);
                     break;
             }
         }
@@ -223,6 +251,8 @@
         this.verifyName(workflowForm.getName(), workflowForm.getId());
         workflow.setName(workflowForm.getName());
 
+        // �떞�떦 遺��꽌 �젙蹂� 蹂�寃�
+        this.workflowDepartmentService.modify(workflow, workflowForm.getIssueStatusVos());
         this.workflowTransitionService.modify(workflow, workflowForm.getIssueStatusVos());
         //  �썙�겕�뵆濡쒖슦媛� 蹂�寃쎈릺�뿀�뒗吏� �솗�씤�븯怨� 蹂�寃쎈릺�뿀�쓣 寃쎌슦 �씠�뒋 �긽�깭媛� �뾾�뒗 �씠�뒋�뒗 '�깮�꽦' �씤 �씠�뒋 �긽�깭濡� �씠�룞�븳�떎.
         this.checkWorkflowChange(workflow);
@@ -267,15 +297,16 @@
                     this.messageAccessor.getMessage(MsgConstants.WORKFLOW_REMOVE_NOT_SELECT));
         }
 
-        for (Long projectId : workflowForm.getRemoveIds()) {
-            this.removeWorkflow(projectId);
+        for (Long workflowId : workflowForm.getRemoveIds()) {
+            this.removeWorkflow(workflowId);
         }
-
         this.workflowRepository.flush();
     }
 
     private void removeWorkflow(Long workflowId) {
         Workflow workflow = this.getWorkflow(workflowId);
+        // �썙�겕�뵆濡쒖슦 �떞�떦遺��꽌 �궘�젣
+        this.workflowDepartmentService.remove(workflowId);
         //  �썙�겕�뵆濡쒖슦瑜� �씠�뒋 ���엯�뿉�꽌 �궗�슜�븯怨� �엳�뒗吏� �솗�씤
         this.checkIssueTypeWorkflow(workflow);
         this.workflowRepository.delete(workflow);

--
Gitblit v1.8.0