OWL ITS + 탐지시스템(인터넷 진흥원)
- 이슈 트리 목록에서는 하위이슈 숨기기 버튼 숨기기
- 하위이슈의 상태가 종료가 아닐 경우에 상위이슈의 상태를 종료로 변경을 못하도록 막는 기능
8개 파일 변경됨
51 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/constant/MsgConstants.java 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 13 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java 6 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/web/form/IssueForm.java 14 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/WEB-INF/i18n/messages_ko_KR.properties 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueDetail.controller.js 8 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueModifyStatus.controller.js 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueListNormal.html 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
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"; //  댓글이 존재하지 않습니다.
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);
        //  변경 이력 정보 추출
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) {
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;
    }
}
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.
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 {
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 () {
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>