From b6b1913970a18f0a1f09e795ceec02a4a3605295 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 16 12월 2021 14:03:40 +0900
Subject: [PATCH] - 이슈 트리 목록에서는 하위이슈 숨기기 버튼 숨기기 - 하위이슈의 상태가 종료가 아닐 경우에 상위이슈의 상태를 종료로 변경을 못하도록 막는 기능

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java |   13 +++++++++++++
 src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java  |    6 +++++-
 src/main/webapp/views/issue/issueListNormal.html                  |    4 ++--
 src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js |    4 ++--
 src/main/java/kr/wisestone/owl/web/form/IssueForm.java            |   14 ++++++++++++++
 src/main/java/kr/wisestone/owl/constant/MsgConstants.java         |    1 +
 src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties            |    1 +
 src/main/webapp/scripts/app/issue/issueDetail.controller.js       |    8 ++++++--
 8 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
index a92312f..3366440 100644
--- a/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
+++ b/src/main/java/kr/wisestone/owl/constant/MsgConstants.java
@@ -116,6 +116,7 @@
     public static final String ISSUE_NO_TITLE = "ISSUE_NO_TITLE";   //  �씠�뒋 �젣紐⑹씠 �엯�젰�릺吏� �븡�븯�뒿�땲�떎.
     public static final String ISSUE_NOT_SEND_USER = "ISSUE_NOT_SEND_USER";   //  �씠�뒋 諛쒖넚 ���긽�옄瑜� �꽑�깮�븯吏� �븡�븯�뒿�땲�떎.
     public static final String ISSUE_NOT_SELECT_TEMPLATE = "ISSUE_NOT_SELECT_TEMPLATE";   //  �씠�뒋 諛쒖넚 �뀥�뵆由우쓣 �꽑�깮�븯吏� �븡�븯�뒿�땲�떎.
+    public static final String ISSUE_NOT_MODIFY_STATUS = "ISSUE_NOT_MODIFY_STATUS"; // �븯�쐞�씠�뒋�쓽 �긽�깭瑜� 醫낅즺濡� 蹂�寃쏀빐�빞 �빀�땲�떎.
 
     public static final String ISSUE_COMMENT_REMOVE_NOT_SELECT = "ISSUE_COMMENT_REMOVE_NOT_SELECT"; //  �궘�젣�븷 �뙎湲��쓣 �꽑�깮�븯吏� �븡�븯�뒿�땲�떎.
     public static final String ISSUE_COMMENT_NOT_EXIST = "ISSUE_COMMENT_NOT_EXIST"; //  �뙎湲��씠 議댁옱�븯吏� �븡�뒿�땲�떎.
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 10d95d0..1ea58cc 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -2241,6 +2241,19 @@
         this.verifyIssueModifyPermission(issue, user);
 
         IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueForm.getIssueStatusId());
+
+        if (issueStatus.getIssueStatusType().toString().equals("CLOSE")) {
+            List<String> downIssuesStatus = issueForm.getDownIssuesStatus();
+            if (downIssuesStatus != null && downIssuesStatus.size() > 0) {
+                for (String downIssueStatus : downIssuesStatus) {
+                    if (!downIssueStatus.equals("CLOSE")) {
+                        throw new OwlRuntimeException(
+                                this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_MODIFY_STATUS));
+                    }
+                }
+            }
+        }
+
         //  �씠�뒋 �긽�깭瑜� 蹂�寃쏀븷 �븣 �꽑�깮�븳 �씠�뒋 �긽�깭濡� 蹂�寃쏀븷 �닔 �엳�뒗吏� �솗�씤�븳�떎.
         this.issueStatusService.checkNextIssueStatus(issue, issueStatus);
         //  蹂�寃� �씠�젰 �젙蹂� 異붿텧
diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
index 0113fcd..23b0d61 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
@@ -183,7 +183,11 @@
         }
 
         if (MapUtil.getBoolean(conditions, "hideDownIssue") != null) {
-            condition.setHideDownIssue(MapUtil.getBoolean(conditions, "hideDownIssue"));
+            if(MapUtil.getBoolean(conditions, "isTree") != null && !MapUtil.getBoolean(conditions, "isTree")){
+                condition.setHideDownIssue(MapUtil.getBoolean(conditions, "hideDownIssue"));
+            }else if(MapUtil.getBoolean(conditions, "isTree")) {
+                condition.setHideDownIssue(false);
+            }
         }
 
         if (MapUtil.getBoolean(conditions, "hideCompleteIssue") != null) {
diff --git a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
index 0d795cd..30b89de 100644
--- a/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
+++ b/src/main/java/kr/wisestone/owl/web/form/IssueForm.java
@@ -43,6 +43,7 @@
     private List<Map<String, Object>> files = Lists.newArrayList(); // api�슜 泥⑤��뙆�씪
     private Long parentIssueId; // �긽�쐞 �씠�뒋
     private String isApi;
+    private List<String> downIssuesStatus = Lists.newArrayList(); //�븯�쐞�씠�뒋 �긽�깭
 
     public IssueForm() {
     }
@@ -127,6 +128,11 @@
         //  api 泥⑤��뙆�씪
         if (MapUtil.getObject(params, "files") != null){
             form.setFiles((List)MapUtil.getObject(params, "files"));
+        }
+
+        //  �븯�쐞�씠�뒋 �긽�깭
+        if (MapUtil.getObject(params, "downIssuesStatus") != null){
+            form.setDownIssuesStatus((List)MapUtil.getObject(params, "downIssuesStatus"));
         }
         return form;
     }
@@ -396,4 +402,12 @@
     public void setTemplate(String template) {
         this.template = template;
     }
+
+    public List<String> getDownIssuesStatus() {
+        return downIssuesStatus;
+    }
+
+    public void setDownIssuesStatus(List<String> downIssuesStatus) {
+        this.downIssuesStatus = downIssuesStatus;
+    }
 }
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 99ae537..51e977e 100644
--- a/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
+++ b/src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties
@@ -118,6 +118,7 @@
 ISSUE_NO_TITLE = \uC774\uC288 \uC81C\uBAA9\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
 ISSUE_NOT_SEND_USER = \uC774\uC288 \uBC1C\uC1A1 \uB300\uC0C1\uC790\uB97C \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
 ISSUE_NOT_SELECT_TEMPLATE = \uC774\uC288 \uBC1C\uC1A1 \uD15C\uD50C\uB9BF\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
+ISSUE_NOT_MODIFY_STATUS = \uD558\uC704\uC774\uC288\uC758 \uC0C1\uD0DC\uB97C \uC885\uB8CC\uB85C \uBCC0\uACBD\uD574\uC57C \uD569\uB2C8\uB2E4.
 
 ISSUE_COMMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uB313\uAE00\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.
 ISSUE_COMMENT_NOT_EXIST = \uB313\uAE00\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.
diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index 15203d4..ad81f3a 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -81,6 +81,7 @@
                 $scope.vm.form = {
                     issues : [], //�뿰愿� �씪媛�
                     issuesDown : [],  // �븯�쐞 �씪媛�
+                    issuesDownStatus : [], //�븯�쐞 �씠�뒋 �긽�깭
                     issueCompanyVos : [],
                     issueIspVos : [],
                     issueHostingVos : []
@@ -700,7 +701,8 @@
                             parameter : function () {
                                 return {
                                     issueIds : [$scope.vm.viewer.id],
-                                    projectId : $scope.vm.viewer.projectVo.id
+                                    projectId : $scope.vm.viewer.projectVo.id,
+                                    downIssuesStatus : $scope.vm.form.issuesDownStatus
                                 };
                             }
                         }
@@ -881,6 +883,7 @@
                                 $scope.vm.form.issues = [];
                                 $scope.vm.form.issues.push(result.data.data);
                                 $scope.vm.form.issuesDown = [];
+                                $scope.vm.form.issuesDownStatus = [];// �븯�쐞�씠�뒋 �긽�깭
                                 $scope.vm.form.issuesDown.push(result.data.data);
 
                                 var issueTableConfigVos = result.data.data.issueTableConfigVos;
@@ -900,7 +903,7 @@
                                     angular.forEach(result.data.data.issueDownVos, function (issueDownVo){
                                         //$scope.vm.form.issuesDown.push(issueDownVo.issueDown);
                                         $scope.vm.form.issuesDown.push(issueDownVo);
-
+                                        $scope.vm.form.issuesDownStatus.push(issueDownVo.issueStatusVo.issueStatusType);
                                     });
                                 }
                                 $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos;
@@ -909,6 +912,7 @@
                                 if ($rootScope.workProject.id > -1 && result.data.data.projectVo !== null) {
                                     $rootScope.changeLastProject(result.data.data.projectVo.id);
                                 }
+
                             }
                         }
                         else {
diff --git a/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js b/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js
index 8fa2199..a7b1622 100644
--- a/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js
@@ -28,7 +28,7 @@
                         issueStatusId: undefined,
                         comment: ""
                     },
-                    departmentName : ""
+                    departmentName : "",
                 };
 
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
@@ -87,7 +87,6 @@
                     if (formInvalid) {
                         return true;
                     }
-
                     return false;
                 }
 
@@ -98,6 +97,7 @@
                     var content = {
                         ids: parameter.issueIds,
                         issueStatusId: $scope.vm.form.issueStatusId,
+                        downIssuesStatus : parameter.downIssuesStatus,
                         comment: $scope.vm.form.comment,
                         projectId : parameter.projectId,
                         departmentIds : (function () {
diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html
index 5c2e06a..fd0fa64 100644
--- a/src/main/webapp/views/issue/issueListNormal.html
+++ b/src/main/webapp/views/issue/issueListNormal.html
@@ -420,8 +420,8 @@
 
                             <!--    �슦痢�  -->
                             <div class="col-5" >
-                                <span class="issue-detail-label" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �븯�쐞 �씠�뒋 �닲湲곌린</span>
-                                <label class='switch' style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'>
+                                <span class="issue-detail-label" ng-if="vm.listMode === 0" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �븯�쐞 �씠�뒋 �닲湲곌린</span>
+                                <label class='switch' ng-if="vm.listMode === 0" style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'>
                                     <span class='slider round'></span>
                                 </label>
                                 <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 5px"><span style="color: #0a7cf8">�뾾</span> �셿猷� �씠�뒋 �닲湲곌린</span>

--
Gitblit v1.8.0