From 12e19e0b8bc5e728169dad54c132e7ccd41973a4 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 월, 14 3월 2022 12:55:35 +0900 Subject: [PATCH] Merge branch 'master' of http://192.168.0.28:9001/r/owl-kisa --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 22 ++++++++-- src/main/java/kr/wisestone/owl/service/IssueService.java | 2 + src/main/java/kr/wisestone/owl/repository/IssueRepository.java | 6 +++ src/main/webapp/views/issue/issueDetail.html | 60 +++++++++++++++++------------ src/main/webapp/scripts/app/issue/issueDetail.controller.js | 7 ++- 5 files changed, 65 insertions(+), 32 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/repository/IssueRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueRepository.java index eaeb137..accd3a1 100644 --- a/src/main/java/kr/wisestone/owl/repository/IssueRepository.java +++ b/src/main/java/kr/wisestone/owl/repository/IssueRepository.java @@ -1,10 +1,13 @@ package kr.wisestone.owl.repository; import kr.wisestone.owl.domain.Issue; +import kr.wisestone.owl.domain.enumType.IssueStatusType; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; @@ -13,4 +16,7 @@ List<Issue> findByParentIssueId(@Param("parentIssueId") Long parentIssueId); Page<Issue> findByParentIssueId(@Param("parentIssueId") Long parentIssueId, Pageable pageable); + + @Query(value = "select i from Issue i where i.parentIssue.id = :parentIssueId and i.issueStatus.issueStatusType <> :issueStatusType") + Page<Issue> findByParentIssueId(@Param("parentIssueId") Long parentIssueId,@Param("issueStatusType") IssueStatusType issueStatusType, Pageable pageable); } diff --git a/src/main/java/kr/wisestone/owl/service/IssueService.java b/src/main/java/kr/wisestone/owl/service/IssueService.java index f0eccc6..83cd8b2 100644 --- a/src/main/java/kr/wisestone/owl/service/IssueService.java +++ b/src/main/java/kr/wisestone/owl/service/IssueService.java @@ -94,6 +94,8 @@ void setIssueDetail(IssueVo issueVo, Issue issue, User user); + void setIssueDetail(IssueVo issueVo, Issue issue, User user, boolean hideCompleteIssue); + void sendIssueEmail(IssueForm issueForm); void sendIssueEmailPartners(EmailTemplateForm emailTemplateForm, List<MultipartFile> files); 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 545ec04..6d8152f 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -1696,11 +1696,11 @@ this.setAttachedFiles(issue, issueVo); // 泥⑤� �뙆�씪 �젙蹂� �뀑�똿 this.setIssueCustomFields(issue, issueVo); // �궗�슜�옄 �젙�쓽 �븘�뱶 媛� �젙蹂� �뀑�똿 this.setRelationIssue(issue, issueVo); //�뿰愿� �씪媛� �뀑�똿 - this.setDownIssues(issue, issueVo); //�븯�쐞 �씠�뒋 �꽭�똿 + this.setDownIssues(issue, issueVo, issueCondition.getHideCompleteIssue()); //�븯�쐞 �씠�뒋 �꽭�똿 break; case "02": // �봽濡쒖젥�듃, �씠�뒋 �쑀�삎, �씠�뒋 �긽�깭, �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦�옄, 泥⑤��뙆�씪, �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂�, �뙎湲�, 湲곕줉�쓣 �뀑�똿�븳�떎. - this.setIssueDetail(issueVo, issue, user); // �씠�뒋 �긽�꽭 �젙蹂대�� �뀑�똿�븳�떎. + this.setIssueDetail(issueVo, issue, user, issueCondition.getHideCompleteIssue()); // �씠�뒋 �긽�꽭 �젙蹂대�� �뀑�똿�븳�떎. this.setIssueTableConfigs(issue, issueVo, issueCondition); issueVo.setProjectVo(ConvertUtil.copyProperties(issue.getProject(), ProjectVo.class)); break; @@ -1734,7 +1734,7 @@ // �븯�쐞 �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎 - private void setDownIssues(Issue issue, IssueVo issueVo) { + private void setDownIssues(Issue issue, IssueVo issueVo, boolean hideCompleteIssue) { Page<Issue> downIssues = null; List<Issue> downIssueList = this.issueRepository.findByParentIssueId(issue.getId()); @@ -1744,7 +1744,13 @@ startPage = (int) Math.floor(issueVo.getDownPage()/issueVo.getDownPageSize()); } Pageable pageable = PageRequest.of(startPage, issueVo.getDownPageSize()); - downIssues = this.issueRepository.findByParentIssueId(issue.getId(), pageable); + + if(hideCompleteIssue){ + downIssues = this.issueRepository.findByParentIssueId(issue.getId(), IssueStatusType.CLOSE, pageable); + }else { + downIssues = this.issueRepository.findByParentIssueId(issue.getId(), pageable); + } + } if(downIssues != null){ issueVo.setDownTotalPage(downIssues.getTotalPages()); @@ -1782,6 +1788,12 @@ @Override @Transactional(readOnly = true) public void setIssueDetail(IssueVo issueVo, Issue issue, User user) { + setIssueDetail(issueVo, issue, user, false); + } + + @Override + @Transactional(readOnly = true) + public void setIssueDetail(IssueVo issueVo, Issue issue, User user, boolean hideCompleteIssue) { // �씠�뒋 �닔�젙 沅뚰븳�쓣 媛뽮퀬 �엳�뒗吏� �솗�씤 if (this.checkHasPermission(issueVo, issueVo.getUserVos(), user, issueVo.getDepartmentVos())) { issueVo.setModifyPermissionCheck(Boolean.TRUE); @@ -1800,7 +1812,7 @@ this.setAttachedFiles(issue, issueVo); // 泥⑤� �뙆�씪 �젙蹂� �뀑�똿 this.setIssueCustomFields(issue, issueVo); // �궗�슜�옄 �젙�쓽 �븘�뱶 媛� �젙蹂� �뀑�똿 this.setRelationIssue(issue, issueVo); //�뿰愿� �씪媛� �뀑�똿 - this.setDownIssues(issue, issueVo); //�븯�쐞 �씪媛� �꽭�똿 + this.setDownIssues(issue, issueVo, hideCompleteIssue); //�븯�쐞 �씪媛� �꽭�똿 this.setIssueComments(issue, issueVo); // �뙎湲� �젙蹂� �뀑�똿 this.setIssueHistory(issue, issueVo); // �씠�뒋 湲곕줉 �젙蹂� �뀑�똿 diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js index 6cbd9ca..962075f 100644 --- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js +++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js @@ -58,6 +58,8 @@ $scope.fn.sendCommonMail = sendCommonMail; $scope.fn.getSubPageContent = getSubPageContent; + $scope.vm.hideCompleteIssue = true; + // �씠�뒋 紐⑸줉 而⑦듃濡ㅻ윭 vm, fn �긽�냽 以� $scope.vm.viewer = {}; // �쁽�옱 �씠�뒋 $scope.vm.images = []; // 泥⑤��맂 �뙆�씪 以� �씠誘몄� �뙆�씪 @@ -889,7 +891,7 @@ } }, true); - // 珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. + // 珥덇린�솕 �빐�빞�븷 �빆紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. function initReload() { $scope.vm.editor.issueStatus = false; $scope.vm.issueForm.issueStatusList = []; @@ -1109,7 +1111,7 @@ currentDownPage = selectedDownPage; } - // 珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. + // 珥덇린�솕 �빐�빞�븷 �빆紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. $scope.fn.initReload(); // $scope.fn.getRelTableConfigs(); // $scope.fn.getDownTableConfigs(); @@ -1130,6 +1132,7 @@ return id; })() , deep : "02", pageContent + , hideCompleteIssue : $scope.vm.hideCompleteIssue }, null); Issue.detail(content).then(function (result) { diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html index 3a9aad2..2da0768 100644 --- a/src/main/webapp/views/issue/issueDetail.html +++ b/src/main/webapp/views/issue/issueDetail.html @@ -568,7 +568,7 @@ </div> </div> - <div class="row mt-30"> + <div class="row mt-30 align-items-end" style="justify-content: space-between;"> <div class="col-md-10"> <span class="info_detail_font h3" translate="issue.relationIssue">�뿰愿� �씠�뒋</span> </div> @@ -591,17 +591,19 @@ </label> </div> </div> - <div class="btn-group" style="left: 975px; padding: 5px"> - <button aria-expanded="false" aria-haspopup="true" - tabindex="-1" - class="btn btn-secondary dropdown-toggle" - data-toggle="dropdown" type="button"><span translate="common.addFunction">異붽�湲곕뒫</span> - </button> - <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu" - x-placement="bottom-start" > - <!--<a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a>--> - <a class="dropdown-item cursor" ng-click="fn.addRelationIssueTableConfig()"> <span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></a> - <a class="dropdown-item cursor" ng-click="fn.removeRelationIssue()"> <span translate="common.selectDelete">�궘�젣</span></a> + <div class="col-5" style="display: flex; justify-content: flex-end; align-items: center"> + <div class="btn-group" style="padding: 5px"> + <button aria-expanded="false" aria-haspopup="true" + tabindex="-1" + class="btn btn-secondary dropdown-toggle" + data-toggle="dropdown" type="button"><span translate="common.addFunction">異붽�湲곕뒫</span> + </button> + <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu" + x-placement="bottom-start" > + <!--<a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a>--> + <a class="dropdown-item cursor" ng-click="fn.addRelationIssueTableConfig()"> <span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></a> + <a class="dropdown-item cursor" ng-click="fn.removeRelationIssue()"> <span translate="common.selectDelete">�궘�젣</span></a> + </div> </div> </div> </div> @@ -662,7 +664,7 @@ </div> </div> - <div class="row mt-30"> + <div class="row mt-30 align-items-end" style="justify-content: space-between;"> <div class="col-md-8"> <span class="info_detail_font h3" translate="issue.downIssue">�븯�쐞 �씠�뒋</span> </div> @@ -691,18 +693,26 @@ </label> </div> </div> - <div class="btn-group" style="left: 730px; padding: 5px"> - <button aria-expanded="false" aria-haspopup="true" - tabindex="-1" - class="btn btn-secondary dropdown-toggle" - data-toggle="dropdown" type="button"><span translate="common.addFunction">異붽�湲곕뒫</span> - </button> - <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu" - x-placement="bottom-start" > - <!--<a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a>--> - <a class="dropdown-item cursor" ng-if="vm.viewer.modifyPermissionCheck" ng-click="fn.modifyDownIssueStatus()"> <span translate="common.updateDownIssueStatus">�븯�쐞�씠�뒋 �긽�깭 蹂�寃�</span></a> - <a class="dropdown-item cursor" ng-click="fn.addDownIssueTableConfig()"> <span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></a> - <a class="dropdown-item cursor" ng-click="fn.removeDownIssue()"> <span translate="common.selectDelete">�궘�젣</span></a> + <div class="col-5" style="display: flex; justify-content: flex-end; align-items: center"> + <div style="display: flex; align-items: center; margin-right: 10px;"> + <span class="issue-detail-label" style="margin-right: 4px;padding-top: 6px;"><span style="color: #0a7cf8">�뾾</span> �셿猷� �씠�뒋 �닲湲곌린</span> + <label class='switch'><input type='checkbox' ng-model='vm.hideCompleteIssue' ng-click="fn.getIssueDetail(0,0)"> + <span class='slider round'></span> + </label> + </div> + <div class="btn-group" style="padding: 5px"> + <button aria-expanded="false" aria-haspopup="true" + tabindex="-1" + class="btn btn-secondary dropdown-toggle" + data-toggle="dropdown" type="button"><span translate="common.addFunction">異붽�湲곕뒫</span> + </button> + <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu" + x-placement="bottom-start" > + <!--<a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a>--> + <a class="dropdown-item cursor" ng-if="vm.viewer.modifyPermissionCheck" ng-click="fn.modifyDownIssueStatus()"> <span translate="common.updateDownIssueStatus">�븯�쐞�씠�뒋 �긽�깭 蹂�寃�</span></a> + <a class="dropdown-item cursor" ng-click="fn.addDownIssueTableConfig()"> <span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></a> + <a class="dropdown-item cursor" ng-click="fn.removeDownIssue()"> <span translate="common.selectDelete">�궘�젣</span></a> + </div> </div> </div> </div> -- Gitblit v1.8.0