From 0fe6dd1bf6dfdcd89badddacb1dcb52c2d5c6c57 Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 목, 25 11월 2021 15:06:43 +0900
Subject: [PATCH] - 이슈 상세 화면에서 이슈 상태 변경시 워크플로우에 지정된 담당부서를 불러오도록 수정 - 이슈 상태 변경 저장시 담당부서도 변경되도록 수정

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java              |    8 ++++
 src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java        |   10 ++++
 src/main/webapp/views/issue/issueModifyStatus.html                             |   18 +++++++++
 src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java |    9 ++++
 src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js              |   58 ++++++++++++++++++++++++++---
 src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java          |    1 
 src/main/webapp/i18n/ko/global.json                                            |    1 
 src/main/webapp/scripts/app/issue/issueDetail.controller.js                    |    3 +
 src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java           |    9 +---
 9 files changed, 102 insertions(+), 15 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java b/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java
index 8e6474f..30b0fcd 100644
--- a/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java
+++ b/src/main/java/kr/wisestone/owl/service/WorkflowDepartmentService.java
@@ -21,6 +21,7 @@
 
     WorkflowDepartment getWorkflowDepartment(Long id);
     List<WorkflowDepartmentVo> find(WorkflowDepartmentCondition condition);
+    List<WorkflowDepartmentVo> find(Long workflowId, Long issueStatusId);
     void modify(Workflow workflow, List<IssueStatusVo> issueStatusVos);
     void remove(Long workflowId);
 }
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
index 5d2b1f4..c87e482 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -1783,6 +1783,14 @@
             //  �씠�뒋 �긽�깭 蹂�寃�
             this.modifyIssueStatus(issueForm);
         }
+
+        // �떞�떦 遺��꽌 �닔�젙
+        if (issueForm.getDepartmentIds().size() > 0) {
+            Issue issue = this.getIssue(issueForm.getId());
+            Project project = this.projectService.getProject(issueForm.getProjectId());
+
+            this.issueDepartmentService.modifyIssueDepartment(issue, project.getWorkspace(), issueForm.getDepartmentIds());
+        }
     }
 
     //  �씠�뒋 Import �슜 �뿊�� �뀥�뵆由� �떎�슫濡쒕뱶
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java
index 0b36fc8..789b9d4 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueStatusServiceImpl.java
@@ -45,6 +45,9 @@
     private WorkflowTransitionService workflowTransitionService;
 
     @Autowired
+    private WorkflowDepartmentService workflowDepartmentService;
+
+    @Autowired
     private IssueTypeService issueTypeService;
 
     @Autowired
@@ -545,12 +548,18 @@
                 if (count < 1) {
                     IssueStatusVo issueStatusVo = new IssueStatusVo(workflowTransitionVo.getTargetStatusId(), workflowTransitionVo.getTargetStatusName());
                     issueStatusVos.add(issueStatusVo);
+
+                    List<WorkflowDepartmentVo> workflowDepartments = this.workflowDepartmentService.find(workflow.getId(), issueStatusVo.getId());
+                    issueStatusVo.setWorkflowDepartmentVos(workflowDepartments);
                 }
                 else {
                     //  �몢踰덉㎏ �씠�뒋遺��꽣 泥ル쾲吏� �씠�뒋�뿉�꽌 �씠�룞 媛��뒫�뻽�뜕 �긽�깭 以� �뾾�뒗 ���긽�쓣 李얜뒗�떎.
                     for (IssueStatusVo issueStatusVo : issueStatusVos) {
                         if (issueStatusVo.getId().equals(workflowTransitionVo.getTargetStatusId())) {
                             tempIssueStatusVos.add(issueStatusVo);
+
+                            List<WorkflowDepartmentVo> workflowDepartments = this.workflowDepartmentService.find(workflow.getId(), issueStatusVo.getId());
+                            issueStatusVo.setWorkflowDepartmentVos(workflowDepartments);
                         }
                     }
                 }
@@ -566,5 +575,4 @@
 
         resJsonData.put(Constants.RES_KEY_CONTENTS, issueStatusVos);
     }
-
 }
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 517cd31..064df76 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowDepartmentServiceImpl.java
@@ -66,6 +66,15 @@
     }
 
     // �떞�떦 遺��꽌�젙蹂대�� 議고쉶�븳�떎.
+    public List<WorkflowDepartmentVo> find(Long workflowId, Long issueStatusId) {
+        WorkflowDepartmentCondition condition = new WorkflowDepartmentCondition();
+        condition.setWorkflowId(workflowId);
+        condition.setIssueStatusId(issueStatusId);
+
+        return find(condition);
+    }
+
+    // �떞�떦 遺��꽌�젙蹂대�� 議고쉶�븳�떎.
     @Transactional(readOnly = true)
     @Override
     public List<WorkflowDepartmentVo> find(WorkflowDepartmentCondition condition) {
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 be7a902..c69f4f1 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/WorkflowServiceImpl.java
@@ -200,9 +200,7 @@
         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);
+            List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(workflow.getId(), null);
             if (workflowDepartmentVos != null && workflowDepartmentVos.size() > 0) {
                 IssueStatusVo issueStatusVo = new IssueStatusVo();
                 issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos);
@@ -225,10 +223,7 @@
                 case "01" : //  �뿰愿��맂 �씠�뒋 �긽�깭�� �쟾�씠�꽑 �젙蹂대�� 媛��졇�삩�떎.
                     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);
+                        List<WorkflowDepartmentVo> workflowDepartmentVos = this.workflowDepartmentService.find(workflowVo.getId(), issueStatusVo.getId());
                         issueStatusVo.setWorkflowDepartmentVos(workflowDepartmentVos);
                     }
                     workflowVo.setIssueStatusVos(issueStatusVos);
diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index 3039281..aa6e320 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -251,6 +251,7 @@
         "applyTemplate": "�뀥�뵆由� �쟻�슜�븯湲�",
         "issueContentIsWrittenApplyTheTemplate": "�씠�뒋 �궡�슜�씠 �옉�꽦�릺�뼱 �엳�뒿�땲�떎. �뀥�뵆由우쓣 �쟻�슜�븯寃좎뒿�땲源�? �뀥�뵆由우씠 �쟻�슜�릺硫� �씠誘� �옉�꽦�맂 �궡�슜�씠 �궗�씪吏묐땲�떎.",
         "failedIssueStatusCheck": "�씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 議고쉶 �떎�뙣",
+        "failedIssueStatusWorkflowDepartmentCheck": "�씠�뒋 �긽�깭 �떞�떦 遺��꽌 議고쉶 �떎�뙣",
         "failedToChangeMultipleIssueStatus": "�떎以� �씠�뒋 �긽�깭 蹂�寃� �떎�뙣",
         "completedSavingIssueTable": "�씠�뒋 �뀒�씠釉� �꽕�젙 ���옣 �셿猷�",
         "saveIssueTableSettingsInformation": "�씠�뒋 �뀒�씠釉� �꽕�젙 �젙蹂닿� ���옣�릺�뿀�뒿�땲�떎.",
diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index 0e69b70..3e01d52 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -668,7 +668,8 @@
                         resolve : {
                             parameter : function () {
                                 return {
-                                    issueIds : [$scope.vm.viewer.id]
+                                    issueIds : [$scope.vm.viewer.id],
+                                    projectId : $scope.vm.viewer.projectVo.id
                                 };
                             }
                         }
diff --git a/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js b/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js
index 2d705ae..8fa2199 100644
--- a/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js
@@ -8,25 +8,60 @@
     ],
     function (app) {
         app.controller('issueModifyStatusController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance', 'SweetAlert', '$timeout', '$stateParams', 'parameter',
-            'Issue', 'IssueStatus', '$filter',
-            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, $stateParams, parameter, Issue, IssueStatus, $filter) {
+            'Issue', 'IssueStatus', '$filter', '$injector', '$controller',
+            function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, SweetAlert, $timeout, $stateParams, parameter, Issue, IssueStatus, $filter, $injector, $controller) {
 
                 //  �븿�닔 紐⑥쓬
                 $scope.fn = {
                     cancel: cancel,    //  �뙘�뾽 李� �떕湲�
                     formSubmit: formSubmit,    //  �뤌 �쟾�넚
                     formCheck: formCheck,  //  �뤌 泥댄겕
-                    findNextMultiIssueStatus: findNextMultiIssueStatus  //  �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭瑜� 李얜뒗�떎.
+                    findNextMultiIssueStatus: findNextMultiIssueStatus,  //  �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭瑜� 李얜뒗�떎.
+                    removeDepartment : removeDepartment,     // �떞�떦遺��꽌 �궘�젣
                 };
 
                 //  蹂��닔 紐⑥쓬
                 $scope.vm = {
                     issueStatusList: [],   //  蹂�寃� 媛��뒫�븳 �긽�깭 紐⑸줉
                     form: {
-                        issueStatusId: "",
+                        departments: [],    // �떞�떦 遺��꽌 �꽑�깮 紐⑸줉
+                        issueStatusId: undefined,
                         comment: ""
-                    }
+                    },
+                    departmentName : ""
                 };
+
+                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
+
+                // �떞�떦遺��꽌 �궘�젣
+                function removeDepartment(index) {
+                    $scope.vm.form.departments.splice(index, 1);
+                }
+
+                $scope.$watch("vm.form.issueStatusId", function (newValue) {
+                    // �씠�뒋 �긽�깭蹂� �떞�떦遺��꽌 �몴�떆
+                    let selectIssueStatusId = $scope.vm.form.issueStatusId;
+                    let issueStatusList = $scope.vm.issueStatusList;
+                    $scope.vm.form.departments = [];
+
+                    if (issueStatusList != null && $scope.vm.issueStatusList.length > 0 && selectIssueStatusId !== "") {
+                        for (let i = 0; i < issueStatusList.length; i++) {
+                            if (issueStatusList[i].id.toString() === selectIssueStatusId) {
+                                let workflowDepartments = issueStatusList[i].workflowDepartmentVos;
+
+                                workflowDepartments.forEach(function (workflowDepartment) {
+                                    $scope.vm.form.departments.push(workflowDepartment.departmentVo);
+                                });
+                                break;
+                            }
+                        }
+                        $scope.vm.issueStatusList.forEach(function (issueStatus) {
+                            if (issueStatus.id === $scope.vm.form.issueStatusId) {
+
+                            }
+                        });
+                    }
+                });
 
                 //  �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭瑜� 李얜뒗�떎.
                 function findNextMultiIssueStatus() {
@@ -38,6 +73,7 @@
 
                         if (result.data.message.status === "success") {
                             $scope.vm.issueStatusList = result.data.data;
+
                         } else {
                             SweetAlert.swal($filter("translate")("issue.failedIssueStatusCheck"), result.data.message.message, "error"); // �씠�룞 媛��뒫�븳 �씠�뒋 �긽�깭 議고쉶 �떎�뙣
                         }
@@ -62,7 +98,17 @@
                     var content = {
                         ids: parameter.issueIds,
                         issueStatusId: $scope.vm.form.issueStatusId,
-                        comment: $scope.vm.form.comment
+                        comment: $scope.vm.form.comment,
+                        projectId : parameter.projectId,
+                        departmentIds : (function () {
+                            var departmentIds = [];
+
+                            angular.forEach($scope.vm.form.departments, function (department) {
+                                departmentIds.push(department.id);
+                            });
+
+                            return departmentIds;
+                        })(),
                     };
 
                     Issue.modifyMultiIssueStatus($resourceProvider.getContent(content,
diff --git a/src/main/webapp/views/issue/issueModifyStatus.html b/src/main/webapp/views/issue/issueModifyStatus.html
index 01c760e..1e97429 100644
--- a/src/main/webapp/views/issue/issueModifyStatus.html
+++ b/src/main/webapp/views/issue/issueModifyStatus.html
@@ -30,6 +30,24 @@
                 </div>
             </div>
 
+            <div class="form-group mgb5" ng-if="vm.form.issueStatusId !== undefined">
+                <label class="issue-label"> <span translate="common.assigneeTeam">�떞�떦遺��꽌</span> </label>
+                <js-autocomplete-multi data-input-name="departments"
+                                       selected-model="vm.form.departments"
+                                       search="vm.departmentName"
+                                       source="fn.getUserDepartmentList(vm.departmentName, vm.form.departments)"
+                                       input-disabled="false"
+                                       translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }"
+                                       extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, maxlength : 100, autoResize : true }"></js-autocomplete-multi>
+
+                <div class="select3-selection__choicediv mt-10">
+                            <span class="select3-selection__choice" ng-repeat="department in vm.form.departments">
+                                <span>{{department.byName}}</span> <!--�궗�슜�옄媛� �냽�빐 �엳�뒗 遺��꽌 �씠由� 異쒕젰-->
+                                <span class="select3-selection__choice__remove" ng-click="fn.removeDepartment($index)">횞</span>
+                            </span>
+                </div>
+            </div>
+
             <div class="form-group">
                 <label for="issueMultiStatusModifyForm2"><span translate="common.changeReason">蹂�寃� �궗�쑀</span> </label>
                 <input class="form-control input-sm"

--
Gitblit v1.8.0