From 6211b73ad7750a62652bacf5bcf05002c62fb907 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 06 1월 2022 15:57:16 +0900
Subject: [PATCH] - 이슈 상세페이지 연관,하위 이슈 페이징 처리 완료

---
 src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java  |   20 ++---
 src/main/java/kr/wisestone/owl/vo/IssueVo.java                     |   18 ++++
 src/main/java/kr/wisestone/owl/web/controller/GanttController.java |    4 
 src/main/java/kr/wisestone/owl/service/impl/GanttServiceImpl.java  |    4 
 src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java   |   39 ++++++++-
 src/main/java/kr/wisestone/owl/service/GanttService.java           |    2 
 src/main/webapp/scripts/app/issue/issueDetail.controller.js        |   40 ++++++---
 src/main/java/kr/wisestone/owl/vo/PageVo.java                      |    6 -
 src/main/java/kr/wisestone/owl/service/IssueService.java           |    2 
 src/main/webapp/scripts/components/utils/resource.provider.js      |    8 --
 src/main/java/kr/wisestone/owl/web/controller/IssueController.java |    4 
 src/main/webapp/views/issue/issueDetail.html                       |   28 +++---
 src/main/java/kr/wisestone/owl/util/PageUtil.java                  |   10 --
 13 files changed, 108 insertions(+), 77 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/service/GanttService.java b/src/main/java/kr/wisestone/owl/service/GanttService.java
index 8172c36..ae3e0f4 100644
--- a/src/main/java/kr/wisestone/owl/service/GanttService.java
+++ b/src/main/java/kr/wisestone/owl/service/GanttService.java
@@ -28,7 +28,7 @@
     List<IssueVo> findIssue(Map<String, Object> resJsonData,
                             ProjectCondition projectCondition, Pageable pageable);
 
-    void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable);
+    void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition);
 
     Issue modifyIssue(IssueForm issueForm, List<MultipartFile> files);
 
diff --git a/src/main/java/kr/wisestone/owl/service/IssueService.java b/src/main/java/kr/wisestone/owl/service/IssueService.java
index c47ce15..1221d84 100644
--- a/src/main/java/kr/wisestone/owl/service/IssueService.java
+++ b/src/main/java/kr/wisestone/owl/service/IssueService.java
@@ -56,7 +56,7 @@
     List<IssueVo> findChartIssue(Map<String, Object> resJsonData,
                                  ProjectCondition condition, Pageable pageable);
 
-    void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable);
+    void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition);
 
     Issue modifyIssue(IssueForm issueForm, List<MultipartFile> files);
 
diff --git a/src/main/java/kr/wisestone/owl/service/impl/GanttServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/GanttServiceImpl.java
index 602e6e9..5abe8c5 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/GanttServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/GanttServiceImpl.java
@@ -95,8 +95,8 @@
     //  �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
-    public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable) {
-        issueService.detailIssue(resJsonData, issueCondition, relPageable, downPageable);
+    public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition) {
+        issueService.detailIssue(resJsonData, issueCondition);
     }
 
     //  �씠�뒋瑜� �닔�젙�븳�떎.
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 7be00d2..1ec2a43 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -1472,17 +1472,22 @@
     //  �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎.
     @Override
     @Transactional(readOnly = true)
-    public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable) {
+    public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition) {
         IssueVo issueVo = new IssueVo();
+        Pageable relPageable = issueCondition.getRelPageable();
+        Pageable downPageable = issueCondition.getDownPageable();
 
         if (issueCondition.getId() != null) {
             Issue issue = this.getIssue(issueCondition.getId());
             issueVo = ConvertUtil.copyProperties(issue, IssueVo.class);
             User user = this.webAppUtil.getLoginUserObject();
 
-            issueVo.setRelPage(relPageable.getPageNumber() * relPageable.getPageSize());
-            issueVo.setRelPageSize(relPageable.getPageSize());
 
+            issueVo.setRelPageNumber(relPageable.getPageNumber());
+            issueVo.setRelPageSize(relPageable.getPageSize());
+            issueVo.setRelPage(relPageable.getPageNumber() * relPageable.getPageSize());
+
+            issueVo.setDownPageNumber(downPageable.getPageNumber());
             issueVo.setDownPage(downPageable.getPageNumber() * downPageable.getPageSize());
             issueVo.setDownPageSize(downPageable.getPageSize());
 
@@ -1510,19 +1515,10 @@
                     break;
             }
         }
-        Long relTotalCount = issueVo.getRelTotalCount();
-        int relTotalPage = issueVo.getRelTotalPage();
-
-        Long downTotalCount = issueVo.getDownTotalCount();
-        int downTotalPage = issueVo.getDownTotalPage();
         //  �궗�슜�옄 �떆�뒪�뀥 湲곕뒫 �궗�슜 �젙蹂� �닔吏�
         log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_DETAIL));
 
         resJsonData.put(Constants.RES_KEY_CONTENTS, issueVo);
-        resJsonData.put(Constants.REQ_KEY_RELATION_ISSUE_PAGE_VO, new ResPage(relPageable.getPageNumber(), relPageable.getPageSize(),
-                relTotalPage, relTotalCount));
-        resJsonData.put(Constants.REQ_KEY_DOWN_ISSUE_PAGE_VO, new ResPage(downPageable.getPageNumber(), downPageable.getPageSize(),
-                downTotalPage, downTotalCount));
     }
 
     // �뀒�씠釉� �꽕�젙 �뀑�똿
diff --git a/src/main/java/kr/wisestone/owl/util/PageUtil.java b/src/main/java/kr/wisestone/owl/util/PageUtil.java
index ee91b1b..bcd67b4 100644
--- a/src/main/java/kr/wisestone/owl/util/PageUtil.java
+++ b/src/main/java/kr/wisestone/owl/util/PageUtil.java
@@ -46,14 +46,6 @@
         return PageRequest.of(pageVo.getPage(), pageVo.getPageSize());
 	}
 
-    public Pageable convertRelPageable(PageVo pageVo) {
-        return PageRequest.of(pageVo.getRelPage(), pageVo.getRelPageSize());
-    }
-
-    public Pageable convertDownPageable(PageVo pageVo) {
-        return PageRequest.of(pageVo.getDownPage(), pageVo.getDownPageSize());
-    }
-
 	public Pageable getDefaultPageable() {
 		return PageRequest.of(0, 300);
 	}
@@ -63,7 +55,7 @@
 	}
 
 	public PageVo getDefaultPageVo() {
-		return new PageVo(0, 300,0, 300, 0, 300);
+		return new PageVo(0, 300);
 	}
 
 	public static Pageable applySort(Pageable page, String field, Sort.Direction direction) {
diff --git a/src/main/java/kr/wisestone/owl/vo/IssueVo.java b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
index 50a4822..1f19fc2 100644
--- a/src/main/java/kr/wisestone/owl/vo/IssueVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/IssueVo.java
@@ -72,11 +72,13 @@
     private String hostingName;
 
     private int relPage;
+    private int relPageNumber;
     private int relPageSize;
     private int relTotalPage;
     private Long relTotalCount;
 
     private int downPage;
+    private int downPageNumber;
     private int downPageSize;
     private int downTotalPage;
     private Long downTotalCount;
@@ -632,4 +634,20 @@
     public void setDownTotalCount(Long downTotalCount) {
         this.downTotalCount = downTotalCount;
     }
+
+    public int getRelPageNumber() {
+        return relPageNumber;
+    }
+
+    public void setRelPageNumber(int relPageNumber) {
+        this.relPageNumber = relPageNumber;
+    }
+
+    public int getDownPageNumber() {
+        return downPageNumber;
+    }
+
+    public void setDownPageNumber(int downPageNumber) {
+        this.downPageNumber = downPageNumber;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/vo/PageVo.java b/src/main/java/kr/wisestone/owl/vo/PageVo.java
index 8a7305a..7f7216b 100644
--- a/src/main/java/kr/wisestone/owl/vo/PageVo.java
+++ b/src/main/java/kr/wisestone/owl/vo/PageVo.java
@@ -16,13 +16,9 @@
     public PageVo() {
     }
 
-    public PageVo(int page, int pageSize, int relPage, int relPageSize, int downPage, int downPageSize) {
+    public PageVo(int page, int pageSize) {
         this.page = page;
         this.pageSize = pageSize;
-        this.relPage = relPage;
-        this.relPageSize = relPageSize;
-        this.downPage = downPage;
-        this.downPageSize = downPageSize;
     }
 
     public Integer getPage() {
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 23b0d61..74c96ee 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
@@ -1,10 +1,9 @@
 package kr.wisestone.owl.web.condition;
 
 import com.google.common.collect.Lists;
-import kr.wisestone.owl.util.CommonUtil;
-import kr.wisestone.owl.util.ConvertUtil;
-import kr.wisestone.owl.util.DateUtil;
-import kr.wisestone.owl.util.MapUtil;
+import kr.wisestone.owl.util.*;
+import kr.wisestone.owl.vo.PageVo;
+import org.springframework.data.domain.Pageable;
 import org.springframework.util.StringUtils;
 
 import java.util.Date;
@@ -56,6 +55,8 @@
     private Boolean hideDownIssue;
     private Boolean hideCompleteIssue;
     private Boolean isTree; // �듃由ш뎄議� 紐⑤뱶 �씪�븣
+    private Pageable relPageable;
+    private Pageable downPageable;
 
     public IssueCondition(){}
 
@@ -70,6 +71,20 @@
 
     public static IssueCondition make(Map<String, Object> conditions) {
         IssueCondition condition = ConvertUtil.convertMapToClass(conditions, IssueCondition.class);
+        Map<String, Object> pageContents = (Map<String, Object>) conditions.get("pageContent");
+        if (pageContents != null) {
+            PageVo downPageVo = new PageVo();
+            downPageVo.setPage(MapUtil.getInteger(pageContents, "downPage"));
+            downPageVo.setPageSize(MapUtil.getInteger(pageContents, "downPageSize"));
+
+            PageVo relPageVo = new PageVo();
+            relPageVo.setPage(MapUtil.getInteger(pageContents, "relPage"));
+            relPageVo.setPageSize(MapUtil.getInteger(pageContents, "relPageSize"));
+
+            PageUtil pageUtil = new PageUtil();
+            condition.setRelPageable(pageUtil.convertPageable(relPageVo));
+            condition.setDownPageable(pageUtil.convertPageable(downPageVo));
+        }
 
         if (!StringUtils.isEmpty(condition.getCombinationIssueNumber())) {
             if (condition.getCombinationIssueNumber().contains("-")) {
@@ -542,4 +557,20 @@
     public void setTree(Boolean tree) {
         isTree = tree;
     }
+
+    public Pageable getRelPageable() {
+        return relPageable;
+    }
+
+    public void setRelPageable(Pageable relPageable) {
+        this.relPageable = relPageable;
+    }
+
+    public Pageable getDownPageable() {
+        return downPageable;
+    }
+
+    public void setDownPageable(Pageable downPageable) {
+        this.downPageable = downPageable;
+    }
 }
diff --git a/src/main/java/kr/wisestone/owl/web/controller/GanttController.java b/src/main/java/kr/wisestone/owl/web/controller/GanttController.java
index 015882c..ccc30cd 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/GanttController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/GanttController.java
@@ -82,10 +82,8 @@
     @ResponseBody
     Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) {
         Map<String, Object> resJsonData = new HashMap<>();
-        Pageable relPageable = this.pageUtil.convertRelPageable(this.getPageVo(params));
-        Pageable downPageable = this.pageUtil.convertDownPageable(this.getPageVo(params));
 
-        this.ganttServiceService.detailIssue(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT)), relPageable, downPageable);
+        this.ganttServiceService.detailIssue(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT)));
 
         return this.setSuccessMessage(resJsonData);
     }
diff --git a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
index ff92657..7a7dfbb 100644
--- a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
+++ b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java
@@ -127,10 +127,8 @@
     @ResponseBody
     Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) {
         Map<String, Object> resJsonData = new HashMap<>();
-        Pageable relPageable = this.pageUtil.convertRelPageable(this.getPageVo(params));
-        Pageable downPageable = this.pageUtil.convertDownPageable(this.getPageVo(params));
 
-        this.issueService.detailIssue(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT)), relPageable, downPageable);
+        this.issueService.detailIssue(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT)));
 
         return this.setSuccessMessage(resJsonData);
     }
diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
index dab59ac..34c14fa 100644
--- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -55,6 +55,7 @@
                 $scope.fn.removeDownIssue = removeDownIssue;
                 $scope.fn.changeDetailPageRowCount = changeDetailPageRowCount;    //  �럹�씠吏� 蹂�寃�
                 $scope.fn.sendCommonMail = sendCommonMail;
+                $scope.fn.getSubPageContent = getSubPageContent;
 
                 //  �씠�뒋 紐⑸줉 而⑦듃濡ㅻ윭 vm, fn �긽�냽 以�
                 $scope.vm.viewer = {};      // �쁽�옱 �씠�뒋
@@ -95,9 +96,7 @@
                     data : []
                 };
 
-                $scope.vm.page = {
-                    selectedPage : 0,
-                    selectedPageRowCount : String(10),
+                $scope.vm.subPage = {
                     selectedRelPage : 0,
                     selectedRelPageRowCount : String(10),
                     selectedDownPage : 0,
@@ -167,10 +166,10 @@
 
                 angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
 
-                 // �씠�뒋 紐⑸줉 �뜲�씠�꽣 媛깆떊
-                $scope.$on("getIssueList", function () {
+                // �씠�뒋 紐⑸줉 �뜲�씠�꽣 媛깆떊
+                /*$scope.$on("getIssueList", function () {
                     $scope.fn.getIssueDetail(0,0);
-                });
+                });*/
 
                 // �븯�쐞 �씠�뒋 �궘�젣
                 function removeDownIssue() {
@@ -782,7 +781,7 @@
                 //     $scope.vm.viewer.id = args["id"];
                 //     $scope.fn.getIssueDetail();
                 // });
-                
+
                 // �씠硫붿씪 蹂대궦�썑 �긽�꽭�솕硫� 媛깆떊
                 //  $rootScope.$on("getIssueDetail", function (event, args) {
                 //      $scope.fn.getIssueDetail();
@@ -985,6 +984,14 @@
                     return result;
 
                 }
+                function getSubPageContent(relPage, relPageSize, downPage, downPageSize) {
+                    return {
+                        relPage: relPage,
+                        relPageSize: relPageSize,
+                        downPage: downPage,
+                        downPageSize: downPageSize
+                    };
+                }
 
                 //  �씠�뒋 �긽�꽭 �젙蹂� 議고쉶
                 function getIssueDetail(selectedRelPage, selectedDownPage) {
@@ -1018,18 +1025,21 @@
                     $scope.fn.initReload();
                     // $scope.fn.getRelTableConfigs();
                     // $scope.fn.getDownTableConfigs();
-                    Issue.detail($resourceProvider.getContent(
-                        {id : $scope.vm.viewer.id, deep : "02"},
-                        $resourceProvider.getSubPageContent(currentRelPage, $scope.vm.page.selectedRelPageRowCount
-                            , currentDownPage, $scope.vm.page.selectedDownPageRowCount))
-                        ).then(function (result) {
+
+                    var pageContent = $scope.fn.getSubPageContent(currentRelPage, $scope.vm.subPage.selectedRelPageRowCount
+                        , currentDownPage, $scope.vm.subPage.selectedDownPageRowCount);
+
+                    var content = $resourceProvider.getContent(
+                        {id : $scope.vm.viewer.id, deep : "02", pageContent}, null);
+
+                    Issue.detail(content).then(function (result) {
 
                         if (result.data.message.status === "success") {
                             if (angular.isDefined(result.data.data)) {
 
-                                $scope.vm.page.selectedRelPage = currentRelPage + 1;
-                                $scope.vm.page.selectedDownPage = currentDownPage + 1;
-                                $scope.vm.responseData = result.data;
+                                $scope.vm.subPage.selectedRelPage = currentRelPage + 1;
+                                $scope.vm.subPage.selectedDownPage = currentDownPage + 1;
+                                $scope.vm.responseData = result.data.data;
 
                                 $scope.vm.viewer = angular.copy(result.data.data);
                                 //  �씠�뒋 �씠誘몄� 誘몃━ 蹂닿린 留뚮뱾湲�
diff --git a/src/main/webapp/scripts/components/utils/resource.provider.js b/src/main/webapp/scripts/components/utils/resource.provider.js
index cf788aa..680301f 100644
--- a/src/main/webapp/scripts/components/utils/resource.provider.js
+++ b/src/main/webapp/scripts/components/utils/resource.provider.js
@@ -21,14 +21,6 @@
                                     page: page,
                                     pageSize: pageSize
                                 };
-                            },
-                            getSubPageContent: function (relPage, relPageSize, downPage, downPageSize) {
-                                return {
-                                    relPage: relPage,
-                                    relPageSize: relPageSize,
-                                    downPage: downPage,
-                                    downPageSize: downPageSize
-                                };
                             }
                         }
                     }
diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html
index 3d7c70e..8922ad3 100644
--- a/src/main/webapp/views/issue/issueDetail.html
+++ b/src/main/webapp/views/issue/issueDetail.html
@@ -499,12 +499,12 @@
                                         tabindex="-1"
                                         class="form-control form-control-sm"
                                         ng-change="fn.changeDetailPageRowCount()"
-                                        ng-model="vm.page.selectedRelPageRowCount">
+                                        ng-model="vm.subPage.selectedRelPageRowCount">
                                     <option value="10">10</option>
                                     <option value="50">50</option>
                                     <option value="100">100</option>
-                                </select> {{vm.page.selectedRelPage}}-{{vm.responseData.relPage.totalPage}} /
-                                {{vm.responseData.relPage.totalCount | number}}<span translate="common.few">嫄�</span>
+                                </select> {{vm.subPage.selectedRelPage}}-{{vm.responseData.relTotalPage}} /
+                                {{vm.responseData.relTotalCount | number}}<span translate="common.few">嫄�</span>
                             </label>
                         </div>
                     </div>
@@ -565,11 +565,11 @@
                     <div class="controls-below-table text-center">
                         <ul uib-pagination
                             boundary-links-numbes="true"
-                            items-per-page="vm.page.selectedRelPageRowCount"
-                            total-items="vm.responseData.relPage.totalCount"
-                            ng-model="vm.page.selectedRelPage"
+                            items-per-page="vm.subPage.selectedRelPageRowCount"
+                            total-items="vm.responseData.relTotalCount"
+                            ng-model="vm.subPage.selectedRelPage"
                             max-size="10"
-                            ng-click="fn.getIssueDetail(vm.page.selectedRelPage - 1, vm.page.selectedDownPage - 1)"
+                            ng-click="fn.getIssueDetail(vm.subPage.selectedRelPage - 1, vm.subPage.selectedDownPage - 1)"
                             class="pagination pagination-sm"
                             previous-text="&lt;"
                             next-text="&gt;"
@@ -599,12 +599,12 @@
                                         tabindex="-1"
                                         class="form-control form-control-sm"
                                         ng-change="fn.changeDetailPageRowCount()"
-                                        ng-model="vm.page.selectedDownPageRowCount">
+                                        ng-model="vm.subPage.selectedDownPageRowCount">
                                     <option value="10">10</option>
                                     <option value="50">50</option>
                                     <option value="100">100</option>
-                                </select> {{vm.page.selectedDownPage}}-{{vm.responseData.downPage.totalPage}} /
-                                {{vm.responseData.downPage.totalCount | number}}<span translate="common.few">嫄�</span>
+                                </select> {{vm.subPage.selectedDownPage}}-{{vm.responseData.downTotalPage}} /
+                                {{vm.responseData.downTotalCount | number}}<span translate="common.few">嫄�</span>
                             </label>
                         </div>
                     </div>
@@ -655,11 +655,11 @@
                     <div class="controls-below-table text-center">
                         <ul uib-pagination
                             boundary-links-numbes="true"
-                            items-per-page="vm.page.selectedDownPageRowCount"
-                            total-items="vm.responseData.downPage.totalCount"
-                            ng-model="vm.page.selectedDownPage"
+                            items-per-page="vm.subPage.selectedDownPageRowCount"
+                            total-items="vm.responseData.downTotalCount"
+                            ng-model="vm.subPage.selectedDownPage"
                             max-size="10"
-                            ng-click="fn.getIssueDetail(vm.page.selectedRelPage - 1, vm.page.selectedDownPage - 1)"
+                            ng-click="fn.getIssueDetail(vm.subPage.selectedRelPage - 1, vm.subPage.selectedDownPage - 1)"
                             class="pagination pagination-sm"
                             previous-text="&lt;"
                             next-text="&gt;"

--
Gitblit v1.8.0