From e0e5ecc842ce5af1a7c0229a923c0edd4aaac2f1 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 화, 08 2월 2022 16:45:30 +0900
Subject: [PATCH] 이슈 상세 검색 시 기간검색 가능

---
 src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java |   31 +++++++++++++++
 src/main/webapp/views/issue/issueListNormal.html                 |   19 +++++++++
 src/main/resources/mybatis/query-template/issue-template.xml     |    8 ++++
 src/main/webapp/scripts/app/issue/issueList.controller.js        |    6 +++
 src/main/webapp/i18n/ko/global.json                              |    1 
 5 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
index ae863c5..a0b9fac 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueCondition.java
@@ -6,6 +6,7 @@
 import org.springframework.data.domain.Pageable;
 import org.springframework.util.StringUtils;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -27,6 +28,8 @@
     private String endStartDate;
     private String beginCompleteDate;
     private String endCompleteDate;
+    private String beginDateRange;
+    private String endDateRange;
     private Integer page;
     private Integer pageSize;
     private Long loginUserId;
@@ -158,6 +161,18 @@
         if (StringUtils.hasText(MapUtil.getString(conditions, "endCompleteDate"))) {
             Date endCompleteDate = DateUtil.convertStrToDate(MapUtil.getString(conditions, "endCompleteDate"), "yy-MM-dd");
             condition.setEndCompleteDate(DateUtil.convertDateToStr(endCompleteDate, "yyyy-MM-dd"));
+        }
+
+        if (StringUtils.hasText(MapUtil.getString(conditions, "dateRange"))) {
+            String dateRange = MapUtil.getString(conditions, "dateRange");
+            if (!StringUtils.isEmpty(dateRange)) {
+                List<String> date = Arrays.asList(dateRange.split("~"));
+
+                Date beginDateRange = DateUtil.convertStrToDate(date.get(0).trim(), "yy-MM-dd");
+                condition.setBeginDateRange(DateUtil.convertDateToStr(beginDateRange, "yyyy-MM-dd"));
+                Date endDateRange = DateUtil.convertStrToDate(date.get(1).trim(), "yy-MM-dd");
+                condition.setEndDateRange(DateUtil.convertDateToStr(endDateRange, "yyyy-MM-dd"));
+            }
         }
 
         if (MapUtil.getLongs(conditions, "projectIds") != null) {
@@ -317,6 +332,22 @@
         this.endCompleteDate = endCompleteDate;
     }
 
+    public String getBeginDateRange() {
+        return beginDateRange;
+    }
+
+    public void setBeginDateRange(String beginDateRange) {
+        this.beginDateRange = beginDateRange;
+    }
+
+    public String getEndDateRange() {
+        return endDateRange;
+    }
+
+    public void setEndDateRange(String endDateRange) {
+        this.endDateRange = endDateRange;
+    }
+
     public Integer getPage() {
         return page;
     }
diff --git a/src/main/resources/mybatis/query-template/issue-template.xml b/src/main/resources/mybatis/query-template/issue-template.xml
index d220849..56c91b8 100644
--- a/src/main/resources/mybatis/query-template/issue-template.xml
+++ b/src/main/resources/mybatis/query-template/issue-template.xml
@@ -132,6 +132,10 @@
             ANd issue.complete_date <![CDATA[ <= ]]> #{endCompleteDate}
         </if>
 
+        <if test="beginDateRange != null and !beginDateRange.equals('') and endDateRange != null and !endDateRange.equals('')">
+            AND (issue.start_date BETWEEN #{beginDateRange} AND #{endDateRange} OR issue.complete_date BETWEEN #{beginDateRange} AND #{endDateRange})
+        </if>
+
         <if test="combinationIssueNumber == null or combinationIssueNumber.equals('')">
             <if test="hideDownIssue != null and hideDownIssue == true">
                 AND issue.parent_issue_id IS NULL
@@ -349,6 +353,10 @@
             ANd issue.complete_date <![CDATA[ <= ]]> #{endCompleteDate}
         </if>
 
+        <if test="beginDateRange != null and !beginDateRange.equals('') and endDateRange != null and !endDateRange.equals('')">
+            AND (issue.start_date BETWEEN #{beginDateRange} AND #{endDateRange} OR issue.complete_date BETWEEN #{beginDateRange} AND #{endDateRange})
+        </if>
+
         <if test="combinationIssueNumber == null or combinationIssueNumber.equals('')">
             <if test="hideDownIssue != null and hideDownIssue == true">
                 AND issue.parent_issue_id IS NULL
diff --git a/src/main/webapp/i18n/ko/global.json b/src/main/webapp/i18n/ko/global.json
index 7319699..01db0f7 100644
--- a/src/main/webapp/i18n/ko/global.json
+++ b/src/main/webapp/i18n/ko/global.json
@@ -740,6 +740,7 @@
         "register": "�벑濡앹옄",
         "startDate": "�떆�옉�씪",
         "endDate": "醫낅즺�씪",
+        "dateRange": "湲곌컙",
         "company": "�뾽泥�",
         "isp": "ISP",
         "hosting": "�샇�뒪�똿",
diff --git a/src/main/webapp/scripts/app/issue/issueList.controller.js b/src/main/webapp/scripts/app/issue/issueList.controller.js
index 4fe4e8b..53ddc18 100644
--- a/src/main/webapp/scripts/app/issue/issueList.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueList.controller.js
@@ -61,6 +61,7 @@
                         registerDateRange : "", //  �벑濡앹씪 湲곌컙 寃��깋
                         startDateRange : "",    //  �떆�옉�씪 湲곌컙 寃��깋
                         completeDateRange : "", //  �셿猷뚯씪 湲곌컙 寃��깋
+                        dateRange : "", //  湲곌컙 寃��깋
                         severityIds : [],   //  以묒슂�룄 寃��깋
                         priorityIds : [],   //  �슦�꽑�닚�쐞 寃��깋
                         issueStatusIds : [],    //  �씠�뒋 �긽�깭 寃��깋
@@ -495,6 +496,7 @@
                         endStartDate : "",
                         beginCompleteDate : "",
                         endCompleteDate : "",
+                        dateRange: "",
                         hideCompleteIssue: $scope.vm.hideCompleteIssue,
                         hideDownIssue : $scope.vm.hideDownIssue,
                         isTree : $scope.vm.listMode === 1,
@@ -618,6 +620,10 @@
                         conditions.beginCompleteDate = completeDateRange[0].trim();
                         conditions.endCompleteDate = completeDateRange[1].trim();
                     }
+                    //  湲곌컙
+                    if ($rootScope.isDefined($scope.vm.search.dateRange)) {
+                        conditions.dateRange = $scope.vm.search.dateRange.trim();
+                    }
 
                     return conditions;
 
diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html
index 8e645ab..0d13530 100644
--- a/src/main/webapp/views/issue/issueListNormal.html
+++ b/src/main/webapp/views/issue/issueListNormal.html
@@ -87,6 +87,12 @@
                                                     <span ng-click="vm.search.completeDateRange = ''">횞</span>
                                                 </p>
 
+                                                <!-- 湲곌컙 -->
+                                                <p ng-if="$root.isDefined(vm.search.dateRange)">
+                                                    {{vm.search.dateRange}}
+                                                    <span ng-click="vm.search.dateRange = ''">횞</span>
+                                                </p>
+
                                                 <!--    �벑濡앹씪   -->
                                                 <p ng-if="$root.isDefined(vm.search.registerDateRange)">
                                                     {{vm.search.registerDateRange}}
@@ -264,6 +270,19 @@
                                                     </div>
                                                 </div>
 
+                                                <div class="col-lg-3">
+                                                    <div class="form-group">
+                                                        <label> <span translate="common.dateRange">湲곌컙</span></label>
+                                                        <input type="text"
+                                                               readonly
+                                                               class="form-control input-sm input-readonly"
+                                                               ng-model="vm.search.dateRange"
+                                                               modal-form-auto-scroll
+                                                               date-format="YY-MM-DD"
+                                                               parent-el="'#createdWidget'"
+                                                               date-range-picker>
+                                                    </div>
+                                                </div>
 
 
                                                 <div class="col-lg-3" ng-repeat="customField in vm.customFields">

--
Gitblit v1.8.0