OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-05 6f466b7a9a83d4547966ef0ac44bc1c5e6dbcfcf
이슈상세페이지 - 하위이슈 리스트 안나오는 문제 해결
1개 파일 추가됨
3개 파일 변경됨
139 ■■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 26 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IssueDownVo.java 93 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/vo/IssueVo.java 17 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueDetail.controller.js 3 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -1021,9 +1021,25 @@
    // 하위 이슈 정보를 셋팅한다
    private void setDownIssues(Issue issue, IssueVo issueVo) {
        List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId());
        /*if(issueVo != null && downIssues.size()>0){
            for(Issue downIssue : downIssues){
                IssueVo downIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class);
                IssueDownVo issueDownVo = ConvertUtil.copyProperties(downIssueVo, IssueDownVo.class);
                issueDownVo.setIssueDown(downIssueVo);
                issueDownVo.setTitle(downIssue.getTitle());
                issueDownVo.setIssueTypeVo(ConvertUtil.copyProperties(downIssue.getIssueType(), IssueTypeVo.class));
                issueDownVo.setPriorityVo(ConvertUtil.copyProperties(downIssue.getPriority(), PriorityVo.class));
                issueDownVo.setSeverityVo(ConvertUtil.copyProperties(downIssue.getSeverity(), SeverityVo.class));
                this.setRegister(downIssue, downIssueVo); // 등록자
                this.setIssueDepartment(downIssue, downIssueVo);  //  담당부서 정보 셋팅
                this.setIssueCustomFields(downIssue, downIssueVo);   // 사용자정의필드 정보 세팅
                issueVo.addIssueDownVo(issueDownVo);
            }
        }*/
        List<IssueVo> downIssueVos = ConvertUtil.convertObjectsToClasses(downIssues, IssueVo.class);
        List<IssueVo> resultList = new ArrayList<>();
        if(downIssues != null && downIssueVos.size()>0){
        if(downIssueVos != null && downIssueVos.size()>0){
            for(IssueVo downIssueVo : downIssueVos){
                for(Issue downIssue : downIssues){
                    downIssueVo.setIssueTypeVo(ConvertUtil.copyProperties(downIssue.getIssueType(), IssueTypeVo.class));
@@ -1035,9 +1051,7 @@
                }
                resultList.add(downIssueVo);
            }
            issueVo.setIssueDownVos(resultList); //프론트에서 List형태로 받아줘서 리스트 형식으로 보내줌
        }else{
            issueVo.setIssueDownVos(null);
            issueVo.setIssueDownVos(resultList);
        }
    }
@@ -2942,7 +2956,7 @@
        StringBuilder sb = new StringBuilder();
        Issue parentIssue = issue.getParentIssue(); //변경 전 하위이슈의 상위이슈
        if(parentIssue != null){ //변경 전 하위이슈의 상위이슈가 존재 할 경우
        if(parentIssue != null && parentIssue.getId().equals(newParentIssueId)){ //변경 전 하위이슈의 상위이슈가 존재 할 경우
            this.issueHistoryService.detectDownIssues(IssueHistoryType.DELETE, issue, sb);
            this.issueHistoryService.addIssueHistory(parentIssue, IssueHistoryType.MODIFY, sb.toString());
        }
@@ -2951,7 +2965,7 @@
            parentIssue = this.getIssue(newParentIssueId); //상위이슈(myIssue)
            issue.setParentIssue(parentIssue); //myIssue를 하위이슈의 상위이슈로 set
            this.issueHistoryService.detectDownIssues(IssueHistoryType.ADD, issue, sb); //issue = 하위이슈
        } else  {
        } else{
            // 삭제 할 경우
            this.issueHistoryService.detectDownIssues(IssueHistoryType.DELETE, issue, sb);
            issue.setParentIssue(null);
src/main/java/kr/wisestone/owl/vo/IssueDownVo.java
New file
@@ -0,0 +1,93 @@
package kr.wisestone.owl.vo;
import com.google.common.collect.Lists;
import java.util.List;
public class IssueDownVo extends BaseVo {
    private Long id;
    private IssueVo issue;
    private IssueVo issueDown;
    private String title;
    private IssueTypeVo issueTypeVo;    //  이슈 상세에서 사용
    private PriorityVo priorityVo;  //  이슈 상세에서 사용
    private SeverityVo severityVo;  //  이슈 상세에서 사용
    private UserVo registerVo;  //  이슈 상세에서 사용
    private List<DepartmentVo> departmentVos = Lists.newArrayList(); //담당부서
    private Boolean modifyPermissionCheck = Boolean.FALSE;
    public IssueDownVo() {}
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public IssueVo getIssue() { return issue; }
    public void setIssue(IssueVo issue) { this.issue = issue; }
    public IssueVo getIssueDown() {
        return issueDown;
    }
    public void setIssueDown(IssueVo issueDown) {
        this.issueDown = issueDown;
    }
    public String getTitle() { return  this.title; }
    public void setTitle(String title) { this.title = title; }
    public IssueTypeVo getIssueTypeVo() {
        return issueTypeVo;
    }
    public void setIssueTypeVo(IssueTypeVo issueTypeVo) {
        this.issueTypeVo = issueTypeVo;
    }
    public PriorityVo getPriorityVo() {
        return priorityVo;
    }
    public void setPriorityVo(PriorityVo priorityVo) {
        this.priorityVo = priorityVo;
    }
    public SeverityVo getSeverityVo() {
        return severityVo;
    }
    public void setSeverityVo(SeverityVo severityVo) {
        this.severityVo = severityVo;
    }
    public UserVo getRegisterVo() {
        return registerVo;
    }
    public void setRegisterVo(UserVo registerVo) {
        this.registerVo = registerVo;
    }
    public List<DepartmentVo> getDepartmentVos() {
        return departmentVos;
    }
    public void setDepartmentVos(List<DepartmentVo> departmentVos) {
        this.departmentVos = departmentVos;
    }
    public Boolean getModifyPermissionCheck() {
        return modifyPermissionCheck;
    }
    public void setModifyPermissionCheck(Boolean modifyPermissionCheck) {
        this.modifyPermissionCheck = modifyPermissionCheck;
    }
}
src/main/java/kr/wisestone/owl/vo/IssueVo.java
@@ -45,6 +45,7 @@
    private List<IssueTypeCustomFieldVo> issueTypeCustomFieldVos = Lists.newArrayList();
    private List<IssueCustomFieldValueVo> issueCustomFieldValueVos = Lists.newArrayList();
    private List<IssueRelationVo> issueRelations = Lists.newArrayList();
    //private List<IssueDownVo> issueDownVos = Lists.newArrayList();
    private List<IssueVo> issueDownVos = Lists.newArrayList();
    private List<IssueVo> issueRelationVos = Lists.newArrayList();
    private Long attachedFileCount;
@@ -402,6 +403,14 @@
        this.issueRelations.add(issueRelationVo);
    }
    /*public void addIssueDownVo(IssueDownVo issueDownVo) {
        if (this.issueDownVos == null){
            this.issueDownVos = new ArrayList<>();
        }
        this.issueDownVos.add(issueDownVo);
    }*/
    public  List<IssueVo> getIssueRelationIssueVos() { return  this.issueRelationVos; }
    public void setIssueRelationIssueVos(List<IssueVo> issueRelationVos) { this.issueRelationVos = issueRelationVos; }
@@ -414,6 +423,14 @@
        this.departmentVos = departmentVos;
    }
    /*public List<IssueDownVo> getIssueDownVos() {
        return issueDownVos;
    }
    public void setIssueDownVos(List<IssueDownVo> issueDownVos) {
        this.issueDownVos = issueDownVos;
    }*/
    public List<IssueVo> getIssueDownVos() {
        return issueDownVos;
    }
src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -870,7 +870,8 @@
                                // 하위 이슈 반목문
                                if (result.data.data.issueDownVos !== null){
                                    angular.forEach(result.data.data.issueDownVos, function (issueDownVo){
                                        $scope.vm.form.issuesDown.push(issueDownVo.issue);
                                        //$scope.vm.form.issuesDown.push(issueDownVo.issueDown);
                                        $scope.vm.form.issuesDown.push(issueDownVo);
                                    });
                                }
                                $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos;