OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2022-01-06 6211b73ad7750a62652bacf5bcf05002c62fb907
- 이슈 상세페이지 연관,하위 이슈 페이징 처리 완료
13개 파일 변경됨
185 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/GanttService.java 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/IssueService.java 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/GanttServiceImpl.java 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 20 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/util/PageUtil.java 10 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IssueVo.java 18 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/PageVo.java 6 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java 39 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/GanttController.java 4 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/controller/IssueController.java 4 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueDetail.controller.js 40 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/utils/resource.provider.js 8 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueDetail.html 28 ●●●● 패치 | 보기 | raw | blame | 히스토리
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);
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);
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);
    }
    //  이슈를 수정한다.
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));
    }
    // 테이블 설정 셋팅
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) {
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;
    }
}
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() {
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;
    }
}
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);
    }
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);
    }
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);
                                //  이슈 이미지 미리 보기 만들기
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
                                };
                            }
                        }
                    }
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;"