From 0dca48e62f053d2fa725649ee2842412a9b4f476 Mon Sep 17 00:00:00 2001 From: wyu <kknd09321@nate.com> Date: 목, 06 1월 2022 11:42:18 +0900 Subject: [PATCH] Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa --- src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java | 47 ++++- src/main/java/kr/wisestone/owl/vo/IssueVo.java | 74 +++++++++ src/main/java/kr/wisestone/owl/web/controller/GanttController.java | 5 src/main/resources/mybatis/query-template/issueRelation-template.xml | 50 ++++++ src/main/java/kr/wisestone/owl/service/impl/GanttServiceImpl.java | 4 src/main/java/kr/wisestone/owl/repository/IssueRepository.java | 5 src/main/java/kr/wisestone/owl/service/GanttService.java | 2 src/main/webapp/scripts/app/issue/issueDetail.controller.js | 67 +++++++- src/main/java/kr/wisestone/owl/vo/PageVo.java | 62 +++++++ src/main/java/kr/wisestone/owl/constant/Constants.java | 2 src/main/java/kr/wisestone/owl/mapper/IssueRelationMapper.java | 25 +++ 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 | 5 src/main/webapp/views/issue/issueDetail.html | 66 ++++++++ src/main/java/kr/wisestone/owl/util/PageUtil.java | 20 ++ 16 files changed, 414 insertions(+), 30 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/constant/Constants.java b/src/main/java/kr/wisestone/owl/constant/Constants.java index da9550e..3266bde 100644 --- a/src/main/java/kr/wisestone/owl/constant/Constants.java +++ b/src/main/java/kr/wisestone/owl/constant/Constants.java @@ -5,6 +5,8 @@ */ public class Constants { public static final String REQ_KEY_PAGE_VO = "page"; + public static final String REQ_KEY_RELATION_ISSUE_PAGE_VO = "relPage"; + public static final String REQ_KEY_DOWN_ISSUE_PAGE_VO = "downPage"; public static final String REQ_KEY_CONTENT = "content"; public static final String RES_KEY_MESSAGE = "message"; public static final String RES_KEY_MSG_FAIL = "fail"; diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueRelationMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueRelationMapper.java new file mode 100644 index 0000000..ee1dfb0 --- /dev/null +++ b/src/main/java/kr/wisestone/owl/mapper/IssueRelationMapper.java @@ -0,0 +1,25 @@ +package kr.wisestone.owl.mapper; + +import kr.wisestone.owl.domain.IssueRelation; +import kr.wisestone.owl.vo.IssueVo; +import kr.wisestone.owl.web.condition.IssueCondition; +import kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition; +import kr.wisestone.owl.web.condition.IssueTypeCondition; +import kr.wisestone.owl.web.form.IssueForm; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * Created by wisestone on 2018-01-17. + */ +@Repository +public interface IssueRelationMapper { + List<Map<String, Object>> findByIssueId(IssueVo issueVo); + + Long count(IssueVo issueVo); +} + diff --git a/src/main/java/kr/wisestone/owl/repository/IssueRepository.java b/src/main/java/kr/wisestone/owl/repository/IssueRepository.java index c5ce0e5..eaeb137 100644 --- a/src/main/java/kr/wisestone/owl/repository/IssueRepository.java +++ b/src/main/java/kr/wisestone/owl/repository/IssueRepository.java @@ -1,6 +1,9 @@ package kr.wisestone.owl.repository; import kr.wisestone.owl.domain.Issue; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; @@ -8,4 +11,6 @@ public interface IssueRepository extends JpaRepository<Issue, Long> { List<Issue> findByParentIssueId(@Param("parentIssueId") Long parentIssueId); + + Page<Issue> findByParentIssueId(@Param("parentIssueId") Long parentIssueId, Pageable pageable); } diff --git a/src/main/java/kr/wisestone/owl/service/GanttService.java b/src/main/java/kr/wisestone/owl/service/GanttService.java index ae3e0f4..8172c36 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); + void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable); 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 1221d84..c47ce15 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); + void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable); 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 5abe8c5..602e6e9 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) { - issueService.detailIssue(resJsonData, issueCondition); + public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable) { + issueService.detailIssue(resJsonData, issueCondition, relPageable, downPageable); } // �씠�뒋瑜� �닔�젙�븳�떎. 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 05f35c1..7be00d2 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java @@ -14,6 +14,7 @@ import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.mapper.DepartmentMapper; import kr.wisestone.owl.mapper.IssueMapper; +import kr.wisestone.owl.mapper.IssueRelationMapper; import kr.wisestone.owl.mapper.ProjectMapper; import kr.wisestone.owl.repository.IssueRelationRepository; import kr.wisestone.owl.repository.IssueRepository; @@ -33,6 +34,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.messaging.simp.SimpMessagingTemplate; @@ -194,6 +197,9 @@ @Autowired private WorkflowDepartmentRepository workflowDepartmentRepository; + + @Autowired + private IssueRelationMapper issueRelationMapper; @Override protected JpaRepository<Issue, Long> getRepository() { @@ -1466,13 +1472,19 @@ // �씠�뒋 �긽�꽭 �젙蹂대�� 議고쉶�븳�떎. @Override @Transactional(readOnly = true) - public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition) { + public void detailIssue(Map<String, Object> resJsonData, IssueCondition issueCondition, Pageable relPageable, Pageable downPageable) { IssueVo issueVo = new IssueVo(); 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.setDownPage(downPageable.getPageNumber() * downPageable.getPageSize()); + issueVo.setDownPageSize(downPageable.getPageSize()); switch (issueCondition.getDeep()) { case "01": // �봽濡쒖젥�듃, �씠�뒋 �쑀�삎, �씠�뒋 �긽�깭, �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦遺��꽌, 泥⑤��뙆�씪, �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂대�� �뀑�똿�븳�떎. @@ -1489,7 +1501,6 @@ this.setIssueCustomFields(issue, issueVo); // �궗�슜�옄 �젙�쓽 �븘�뱶 媛� �젙蹂� �뀑�똿 this.setRelationIssue(issue, issueVo); //�뿰愿� �씪媛� �뀑�똿 this.setDownIssues(issue, issueVo); //�븯�쐞 �씠�뒋 �꽭�똿 - break; case "02": // �봽濡쒖젥�듃, �씠�뒋 �쑀�삎, �씠�뒋 �긽�깭, �슦�꽑�닚�쐞, 以묒슂�룄, �떞�떦�옄, 泥⑤��뙆�씪, �궗�슜�옄 �젙�쓽 �븘�뱶 �젙蹂�, �뙎湲�, 湲곕줉�쓣 �뀑�똿�븳�떎. @@ -1499,11 +1510,19 @@ 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)); } // �뀒�씠釉� �꽕�젙 �뀑�똿 @@ -1528,8 +1547,13 @@ // �븯�쐞 �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎 private void setDownIssues(Issue issue, IssueVo issueVo) { - List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId()); - if(downIssues != null && downIssues.size()>0){ + //List<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId()); + int startPage = (int) Math.floor(issueVo.getDownPage()/issueVo.getDownPageSize()); + Pageable pageable = PageRequest.of(startPage, issueVo.getDownPageSize()); + Page<Issue> downIssues = this.issueRepository.findByParentIssueId(issue.getId(), pageable); + issueVo.setDownTotalPage(downIssues.getTotalPages()); + issueVo.setDownTotalCount(downIssues.getTotalElements()); + if(downIssues != null){ List<IssueVo> resultList = new ArrayList<>(); for(Issue downIssue : downIssues){ IssueVo downIssueVo = ConvertUtil.copyProperties(downIssue, IssueVo.class); @@ -1629,13 +1653,18 @@ // �뿰愿� �씠�뒋 �젙蹂대�� �뀑�똿�븳�떎 private void setRelationIssue(Issue issue, IssueVo issueVo) { - Set<IssueRelation> issueRelations = issue.getIssueRelations(); - if (issue != null && issueVo != null && issueRelations.size() > 0) { - for (IssueRelation issueRelation : issueRelations) { - IssueRelationVo issueRelationVo = ConvertUtil.copyProperties(issueRelation, IssueRelationVo.class); + //Set<IssueRelation> issueRelations = issue.getIssueRelations(); + List<Map<String, Object>> results = this.issueRelationMapper.findByIssueId(issueVo); + Long totalCount = this.issueRelationMapper.count(issueVo); - Issue relationIssue = issueRelation.getRelationIssue(); + int totalPage = (int) Math.ceil((totalCount - 1) / issueVo.getRelPageSize()) + 1; + issueVo.setRelTotalPage(totalPage); + issueVo.setRelTotalCount(totalCount); + if (issue != null && issueVo != null && results.size() > 0) { + for (Map<String, Object> result : results) { + IssueRelationVo issueRelationVo = ConvertUtil.convertMapToClass(result, IssueRelationVo.class); + Issue relationIssue = this.findOne(issueRelationVo.getId()); IssueVo relIssueVo = ConvertUtil.copyProperties(relationIssue, IssueVo.class); Project project = this.projectService.getProject(relationIssue.getProject().getId()); relIssueVo.setProjectId(project.getId()); diff --git a/src/main/java/kr/wisestone/owl/util/PageUtil.java b/src/main/java/kr/wisestone/owl/util/PageUtil.java index 6d78294..ee91b1b 100644 --- a/src/main/java/kr/wisestone/owl/util/PageUtil.java +++ b/src/main/java/kr/wisestone/owl/util/PageUtil.java @@ -28,17 +28,31 @@ } if (pageVo.getPage() == null || pageVo.getPage() < 0) { - throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.PAGE_NEGATIVE_OR_NULL)); + if (pageVo.getRelPage() == null || pageVo.getRelPage() < 0 + || pageVo.getDownPage() == null || pageVo.getDownPage() < 0) { + throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.PAGE_NEGATIVE_OR_NULL)); + } } if (pageVo.getPageSize() == null || pageVo.getPageSize() < 0) { - throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.PAGE_SIZE_NEGATIVE_OR_NULL)); + if (pageVo.getRelPageSize() == null || pageVo.getRelPageSize() < 0 + || pageVo.getDownPageSize() == null || pageVo.getDownPageSize() < 0) { + throw new OwlRuntimeException(this.messageAccessor.getMessage(MsgConstants.PAGE_SIZE_NEGATIVE_OR_NULL)); + } } } public Pageable convertPageable(PageVo pageVo) { 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); @@ -49,7 +63,7 @@ } public PageVo getDefaultPageVo() { - return new PageVo(0, 300); + return new PageVo(0, 300,0, 300, 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 e7b1957..50a4822 100644 --- a/src/main/java/kr/wisestone/owl/vo/IssueVo.java +++ b/src/main/java/kr/wisestone/owl/vo/IssueVo.java @@ -71,6 +71,16 @@ private String ispName; private String hostingName; + private int relPage; + private int relPageSize; + private int relTotalPage; + private Long relTotalCount; + + private int downPage; + private int downPageSize; + private int downTotalPage; + private Long downTotalCount; + public IssueVo(){} public Long getId() { @@ -558,4 +568,68 @@ public void setHostingName(String hostingName) { this.hostingName = hostingName; } + + public int getRelPageSize() { + return relPageSize; + } + + public void setRelPageSize(int relPageSize) { + this.relPageSize = relPageSize; + } + + public int getDownPageSize() { + return downPageSize; + } + + public void setDownPageSize(int downPageSize) { + this.downPageSize = downPageSize; + } + + public int getRelPage() { + return relPage; + } + + public void setRelPage(int relPage) { + this.relPage = relPage; + } + + public int getDownPage() { + return downPage; + } + + public void setDownPage(int downPage) { + this.downPage = downPage; + } + + public int getRelTotalPage() { + return relTotalPage; + } + + public void setRelTotalPage(int relTotalPage) { + this.relTotalPage = relTotalPage; + } + + public int getDownTotalPage() { + return downTotalPage; + } + + public void setDownTotalPage(int downTotalPage) { + this.downTotalPage = downTotalPage; + } + + public Long getRelTotalCount() { + return relTotalCount; + } + + public void setRelTotalCount(Long relTotalCount) { + this.relTotalCount = relTotalCount; + } + + public Long getDownTotalCount() { + return downTotalCount; + } + + public void setDownTotalCount(Long downTotalCount) { + this.downTotalCount = downTotalCount; + } } diff --git a/src/main/java/kr/wisestone/owl/vo/PageVo.java b/src/main/java/kr/wisestone/owl/vo/PageVo.java index f699747..8a7305a 100644 --- a/src/main/java/kr/wisestone/owl/vo/PageVo.java +++ b/src/main/java/kr/wisestone/owl/vo/PageVo.java @@ -5,12 +5,24 @@ private Integer pageSize; private Integer totalCount; + private Integer relPage; + private Integer relPageSize; + private Integer relTotalCount; + + private Integer downPage; + private Integer downPageSize; + private Integer downTotalCount; + public PageVo() { } - public PageVo(int page, int pageSize) { + public PageVo(int page, int pageSize, int relPage, int relPageSize, int downPage, int downPageSize) { this.page = page; this.pageSize = pageSize; + this.relPage = relPage; + this.relPageSize = relPageSize; + this.downPage = downPage; + this.downPageSize = downPageSize; } public Integer getPage() { @@ -36,4 +48,52 @@ public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } + + public Integer getRelPage() { + return relPage; + } + + public void setRelPage(Integer relPage) { + this.relPage = relPage; + } + + public Integer getRelPageSize() { + return relPageSize; + } + + public void setRelPageSize(Integer relPageSize) { + this.relPageSize = relPageSize; + } + + public Integer getRelTotalCount() { + return relTotalCount; + } + + public void setRelTotalCount(Integer relTotalCount) { + this.relTotalCount = relTotalCount; + } + + public Integer getDownPage() { + return downPage; + } + + public void setDownPage(Integer downPage) { + this.downPage = downPage; + } + + public Integer getDownPageSize() { + return downPageSize; + } + + public void setDownPageSize(Integer downPageSize) { + this.downPageSize = downPageSize; + } + + public Integer getDownTotalCount() { + return downTotalCount; + } + + public void setDownTotalCount(Integer downTotalCount) { + this.downTotalCount = downTotalCount; + } } 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 f3eaaa1..015882c 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/GanttController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/GanttController.java @@ -82,7 +82,10 @@ @ResponseBody Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); - this.ganttServiceService.detailIssue(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT))); + 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); 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 22fa9f6..ff92657 100644 --- a/src/main/java/kr/wisestone/owl/web/controller/IssueController.java +++ b/src/main/java/kr/wisestone/owl/web/controller/IssueController.java @@ -127,7 +127,10 @@ @ResponseBody Map<String, Object> detail(@RequestBody Map<String, Map<String, Object>> params) { Map<String, Object> resJsonData = new HashMap<>(); - this.issueService.detailIssue(resJsonData, IssueCondition.make(params.get(Constants.REQ_KEY_CONTENT))); + 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); return this.setSuccessMessage(resJsonData); } diff --git a/src/main/resources/mybatis/query-template/issueRelation-template.xml b/src/main/resources/mybatis/query-template/issueRelation-template.xml new file mode 100644 index 0000000..ced98ed --- /dev/null +++ b/src/main/resources/mybatis/query-template/issueRelation-template.xml @@ -0,0 +1,50 @@ +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + +<mapper namespace="kr.wisestone.owl.mapper.IssueRelationMapper"> + + <resultMap id="issueResultMap" type="kr.wisestone.owl.domain.IssueRelation"> + <result property="id" column="id" /> + <result property="relationIssueType" column="relationIssueType" /> + <result property="registerId" column="registerId" /> + <result property="registerDate" column="registerDate" /> + <result property="modifyId" column="modifyId" /> + <result property="modifyDate" column="modifyDate" /> + <association property="issue" javaType="kr.wisestone.owl.domain.Issue"> + <id property="id" column="issueId" /> + </association> + <association property="relationIssue" javaType="kr.wisestone.owl.domain.Issue"> + <result property="id" column="relationIssueId" /> + </association> + </resultMap> + + <select id="findByIssueId" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.vo.IssueVo"> + SELECT + id AS id, + issue_id AS issueId, + relation_issue_id AS relationIssueId, + relation_issue_type AS relationIssueType, + register_id AS registerId, + register_date AS registerDate, + modify_id AS modifyId, + modify_date AS modifyDate + FROM issue_relation + WHERE 1=1 + <if test="id != null and !id.equals('')"> + AND issue_id = #{id} + </if> + <if test="relPage != null and !relPage.equals('') and relPageSize != null and !relPageSize.equals('')"> + limit #{relPageSize} offset #{relPage}; + </if> + </select> + + <select id="count" resultType="java.lang.Long" parameterType="kr.wisestone.owl.vo.IssueVo"> + SELECT + COUNT(DISTINCT id) + FROM issue_relation + WHERE 1=1 + <if test="id != null and !id.equals('')"> + AND issue_id = #{id} + </if> + </select> +</mapper> diff --git a/src/main/webapp/scripts/app/issue/issueDetail.controller.js b/src/main/webapp/scripts/app/issue/issueDetail.controller.js index 865d992..dab59ac 100644 --- a/src/main/webapp/scripts/app/issue/issueDetail.controller.js +++ b/src/main/webapp/scripts/app/issue/issueDetail.controller.js @@ -53,6 +53,7 @@ $scope.fn.issueBack = issueBack; $scope.fn.removeRelationIssue = removeRelationIssue; $scope.fn.removeDownIssue = removeDownIssue; + $scope.fn.changeDetailPageRowCount = changeDetailPageRowCount; // �럹�씠吏� 蹂�寃� $scope.fn.sendCommonMail = sendCommonMail; // �씠�뒋 紐⑸줉 而⑦듃濡ㅻ윭 vm, fn �긽�냽 以� @@ -90,6 +91,18 @@ issueHostingVos : [] }; + $scope.vm.responseData = { + data : [] + }; + + $scope.vm.page = { + selectedPage : 0, + selectedPageRowCount : String(10), + selectedRelPage : 0, + selectedRelPageRowCount : String(10), + selectedDownPage : 0, + selectedDownPageRowCount : String(10) + }; $scope.vm.issueNameDown = ""; // �꽑�깮�맂 �븯�쐞 �씪媛� �씠由� $scope.vm.autoCompletePageDown = { @@ -143,6 +156,11 @@ } } + // �럹�씠吏� 蹂�寃� + function changeDetailPageRowCount() { + $scope.fn.getIssueDetail(0,0); + } + function onActivate() { window.scroll(0,240); } @@ -151,7 +169,7 @@ // �씠�뒋 紐⑸줉 �뜲�씠�꽣 媛깆떊 $scope.$on("getIssueList", function () { - $scope.fn.getIssueDetail(); + $scope.fn.getIssueDetail(0,0); }); // �븯�쐞 �씠�뒋 �궘�젣 @@ -214,7 +232,7 @@ $resourceProvider.getPageContent(0, 10))).then(function (result) { if (result.data.message.status === "success") { - $scope.fn.getIssueDetail(); + $scope.fn.getIssueDetail(0,0); } else { SweetAlert.error($filter("translate")("issue.failedToIssueDeleteIssueDown"), result.data.message.message); // "�뿰愿��씪媛� �궘�젣 �떎�뙣" @@ -287,7 +305,7 @@ $resourceProvider.getPageContent(0, 10))).then(function (result) { if (result.data.message.status === "success") { - $scope.fn.getIssueDetail(); + $scope.fn.getIssueDetail(0,0); } else { SweetAlert.error($filter("translate")("issue.failedToIssueDeleteIssueRelation"), result.data.message.message); // "�뿰愿��씪媛� �궘�젣 �떎�뙣" @@ -713,7 +731,7 @@ $resourceProvider.getPageContent(0, 10))).then(function (result) { if (result.data.message.status === "success") { - $scope.fn.getIssueDetail(); + $scope.fn.getIssueDetail(0,0); } else { SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueRelation"), result.data.message.message); // "�뿰愿��씪媛� �깮�꽦 �떎�뙣" @@ -745,7 +763,7 @@ $resourceProvider.getPageContent(0, 10))).then(function (result) { if (result.data.message.status === "success") { - $scope.fn.getIssueDetail(); + $scope.fn.getIssueDetail(0,0); } else { SweetAlert.error($filter("translate")("issue.failedToIssueAddIssueDown"), result.data.message.message); // "�뿰愿��씪媛� �깮�꽦 �떎�뙣" @@ -771,7 +789,7 @@ // }); $scope.$on("getIssueDetail", function (event, args) { - $scope.fn.getIssueDetail(); + $scope.fn.getIssueDetail(0,0); }); $scope.$watch(function() { @@ -779,7 +797,7 @@ }, function() { if ($rootScope.currentDetailIssueId != null) { $scope.vm.viewer.id = $rootScope.currentDetailIssueId; - $scope.fn.getIssueDetail(); + $scope.fn.getIssueDetail(0,0); } }, true); @@ -969,19 +987,50 @@ } // �씠�뒋 �긽�꽭 �젙蹂� 議고쉶 - function getIssueDetail() { + function getIssueDetail(selectedRelPage, selectedDownPage) { $rootScope.spinner = true; + if (selectedRelPage < 0) { + selectedRelPage = 0; + } + if (selectedDownPage < 0) { + selectedDownPage = 0; + } + // �쁽�옱 �럹�씠吏� �젙蹂� + var currentRelPage = 0; + var currentDownPage = 0; + + // 荑좏궎�뿉 �꽑�깮�븳 �럹�씠吏� �젙蹂닿� �뾾�쑝硫� 湲곕낯 �럹�씠吏� �젙蹂� 0 �쓣 ���옣 + if (angular.isUndefined(selectedRelPage) || selectedRelPage === "") { + currentRelPage = $scope.vm.page.selectedRelPage; + } + else { + currentRelPage = selectedRelPage; + } + + if (angular.isUndefined(selectedDownPage) || selectedDownPage === "") { + currentDownPage = $scope.vm.page.selectedDownPage; + } + else { + currentDownPage = selectedDownPage; + } + // 珥덇린�솕 �빐�빞�븷 �븷紐⑹쓣 吏��젙�븯�뿬 �떎瑜� �씠�뒋瑜� �겢由��븷 �븣 珥덇린�솕�빐以��떎. $scope.fn.initReload(); // $scope.fn.getRelTableConfigs(); // $scope.fn.getDownTableConfigs(); Issue.detail($resourceProvider.getContent( {id : $scope.vm.viewer.id, deep : "02"}, - $resourceProvider.getPageContent(0, 1))).then(function (result) { + $resourceProvider.getSubPageContent(currentRelPage, $scope.vm.page.selectedRelPageRowCount + , currentDownPage, $scope.vm.page.selectedDownPageRowCount)) + ).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.viewer = angular.copy(result.data.data); // �씠�뒋 �씠誘몄� 誘몃━ 蹂닿린 留뚮뱾湲� $scope.fn.makePreviewImages(result.data.data.attachedFileVos); diff --git a/src/main/webapp/scripts/components/utils/resource.provider.js b/src/main/webapp/scripts/components/utils/resource.provider.js index 680301f..cf788aa 100644 --- a/src/main/webapp/scripts/components/utils/resource.provider.js +++ b/src/main/webapp/scripts/components/utils/resource.provider.js @@ -21,6 +21,14 @@ 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 e050dd6..a8621af 100644 --- a/src/main/webapp/views/issue/issueDetail.html +++ b/src/main/webapp/views/issue/issueDetail.html @@ -492,7 +492,23 @@ <!--<div class="col-md-1"> <button class="btn btn-darkgrey offset-10" ng-click="fn.addRelationIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button> </div>--> - <div class="btn-group offset-11"> + <div class="col-md-3 mt-2"> + <div class="dataTables_length"> + <label> + <select name="relPageRow" + tabindex="-1" + class="form-control form-control-sm" + ng-change="fn.changeDetailPageRowCount()" + ng-model="vm.page.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> + </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" @@ -546,6 +562,21 @@ </button> </div> </div> + <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" + max-size="10" + ng-click="fn.getIssueDetail(vm.page.selectedRelPage - 1, vm.page.selectedDownPage - 1)" + class="pagination pagination-sm" + previous-text="<" + next-text=">" + first-text="" + last-text=""> + </ul> + </div> </div> <div class="row mt-30"> @@ -561,7 +592,23 @@ <div class="col-sm-1"> <button class="btn btn-darkgrey offset-10" ng-click="fn.addDownIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button> </div>--> - <div class="btn-group offset-11"> + <div class="col-md-5 mt-2"> + <div class="dataTables_length"> + <label> + <select name="downPageRow" + tabindex="-1" + class="form-control form-control-sm" + ng-change="fn.changeDetailPageRowCount()" + ng-model="vm.page.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> + </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" @@ -605,6 +652,21 @@ </button> </div> </div> + <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" + max-size="10" + ng-click="fn.getIssueDetail(vm.page.selectedRelPage - 1, vm.page.selectedDownPage - 1)" + class="pagination pagination-sm" + previous-text="<" + next-text=">" + first-text="" + last-text=""> + </ul> + </div> </div> <h6 class="todo-content-subheader mt-30" translate="common.content">�궡�슜</h6> -- Gitblit v1.8.0