From 865e48b3de08f6d51b3e2fe3170585d535512961 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 월, 10 1월 2022 14:10:04 +0900
Subject: [PATCH] 사용자 정의 필드(날짜) 기간 검색으로 변경

---
 src/main/resources/mybatis/query-template/issueCustomFieldValue-template.xml      |    8 ++++
 src/main/webapp/views/issue/issueListNormal.html                                  |    2 
 src/main/java/kr/wisestone/owl/mapper/IssueCustomFieldValueMapper.java            |    2 +
 src/main/webapp/scripts/components/utils/dateRangePicker.directive.js             |   27 +++++++++++++
 src/main/webapp/views/issue/issueModify.html                                      |    9 +++-
 src/main/java/kr/wisestone/owl/service/impl/IssueCustomFieldValueServiceImpl.java |    4 +
 src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java  |   33 ++++++++++++++++
 src/main/webapp/scripts/app/issue/issueAdd.controller.js                          |    2 -
 8 files changed, 78 insertions(+), 9 deletions(-)

diff --git a/src/main/java/kr/wisestone/owl/mapper/IssueCustomFieldValueMapper.java b/src/main/java/kr/wisestone/owl/mapper/IssueCustomFieldValueMapper.java
index 3511c1d..ee02db6 100644
--- a/src/main/java/kr/wisestone/owl/mapper/IssueCustomFieldValueMapper.java
+++ b/src/main/java/kr/wisestone/owl/mapper/IssueCustomFieldValueMapper.java
@@ -14,6 +14,8 @@
 public interface IssueCustomFieldValueMapper {
     Map<String, Object> findLikeUseValue(IssueCustomFieldValueCondition issueCustomFieldValueCondition);
 
+    Map<String, Object> findDateTypeUseValue(IssueCustomFieldValueCondition issueCustomFieldValueCondition);
+
     Map<String, Object> findByUseValue(IssueCustomFieldValueCondition issueCustomFieldValueCondition);
 
     void deleteIssueCustomFieldValue(Long issueTypeCustomFieldId);
diff --git a/src/main/java/kr/wisestone/owl/service/impl/IssueCustomFieldValueServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/IssueCustomFieldValueServiceImpl.java
index 76e4b96..d40b7b2 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/IssueCustomFieldValueServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/IssueCustomFieldValueServiceImpl.java
@@ -306,13 +306,15 @@
                 switch (CustomFieldType.valueOf(issueCustomFieldValueCondition.getCustomFieldType())) {
                     case INPUT:
                     case NUMBER:
-                    case DATETIME:
                     case IP_ADDRESS:
                     case EMAIL:
                     case SITE:
                     case TEL:
                         result = this.issueCustomFieldValueMapper.findLikeUseValue(issueCustomFieldValueCondition);
                         break;
+                    case DATETIME:
+                        result = this.issueCustomFieldValueMapper.findDateTypeUseValue(issueCustomFieldValueCondition);
+                        break;
                     case MULTI_SELECT:
                     case SINGLE_SELECT:
                         result = this.issueCustomFieldValueMapper.findByUseValue(issueCustomFieldValueCondition);
diff --git a/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java b/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java
index 5475ac0..15d419f 100644
--- a/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java
+++ b/src/main/java/kr/wisestone/owl/web/condition/IssueCustomFieldValueCondition.java
@@ -6,6 +6,7 @@
 import kr.wisestone.owl.util.MapUtil;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -26,6 +27,9 @@
      * �뀓�뒪�듃 �븘�뱶�씪 �븣 寃��깋 媛�
      */
     private String useValue;
+    private String useStartDateValue;
+    private String useEndDateValue;
+
     private boolean useParentIssueId = true;
     /**
      * �씠�뒋 �긽�깭 �쑀�삎(READY / OPEN / CLOSE)
@@ -42,7 +46,6 @@
         switch(customFieldType) {
             case INPUT:
             case NUMBER:
-            case DATETIME:
             case IP_ADDRESS:
             case EMAIL:
             case SITE:
@@ -53,6 +56,18 @@
                         //  �뀓�뒪�듃 �븘�뱶�뒗 1媛쒕컰�뿉 �븞�뱾�뼱�삩�떎.
                         if (!StringUtils.isEmpty(useValue)) {
                             condition.setUseValue(useValue);
+                        }
+                    }
+                }
+                break;
+            case DATETIME:
+                if (MapUtil.getStrings(conditions, "useValues") != null) {
+                    for (String useValue : MapUtil.getStrings(conditions, "useValues")) {
+                        if (!StringUtils.isEmpty(useValue)) {
+                            condition.setUseValue(useValue);
+                            List<String> customDateRange = Arrays.asList(useValue.split("~"));
+                            condition.setUseStartDateValue(customDateRange.get(0));
+                            condition.setUseEndDateValue(customDateRange.get(1));
                         }
                     }
                 }
@@ -125,6 +140,22 @@
         this.useValue = useValue;
     }
 
+    public String getUseStartDateValue() {
+        return useStartDateValue;
+    }
+
+    public void setUseStartDateValue(String useStartDateValue) {
+        this.useStartDateValue = useStartDateValue;
+    }
+
+    public String getUseEndDateValue() {
+        return useEndDateValue;
+    }
+
+    public void setUseEndDateValue(String useEndDateValue) {
+        this.useEndDateValue = useEndDateValue;
+    }
+
     public String getCustomFieldType() {
         return customFieldType;
     }
diff --git a/src/main/resources/mybatis/query-template/issueCustomFieldValue-template.xml b/src/main/resources/mybatis/query-template/issueCustomFieldValue-template.xml
index 1003c6d..a7e4b16 100644
--- a/src/main/resources/mybatis/query-template/issueCustomFieldValue-template.xml
+++ b/src/main/resources/mybatis/query-template/issueCustomFieldValue-template.xml
@@ -11,6 +11,14 @@
         AND issue_custom_field_value.use_value LIKE CONCAT('%',#{useValue},'%')
     </select>
 
+    <select id="findDateTypeUseValue" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition">
+        SELECT
+            GROUP_CONCAT(issue_custom_field_value.issue_id SEPARATOR ',') as issueIds
+        FROM issue_custom_field_value issue_custom_field_value
+        WHERE issue_custom_field_value.custom_field_id = #{customFieldId}
+          AND issue_custom_field_value.use_value BETWEEN #{useStartDateValue} AND #{useEndDateValue}
+    </select>
+
     <select id="findByUseValue" resultType="java.util.HashMap" parameterType="kr.wisestone.owl.web.condition.IssueCustomFieldValueCondition">
         SELECT
         GROUP_CONCAT(issue_custom_field_value.issue_id SEPARATOR ',') as issueIds
diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
index 6d498ec..8efab6a 100644
--- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js
+++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -578,7 +578,6 @@
                             if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0
                                 && $scope.vm.form.issueCompanyFields[0].ispFieldVo != null
                                 || $scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0 ){
-                                var ispField = $scope.vm.form.issueIspFields[0];
                                 issueIspFields.push({
                                     ispId : $scope.vm.ispId,
                                     name : $scope.vm.ispName,
@@ -605,7 +604,6 @@
                             if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0
                                 && $scope.vm.form.issueCompanyFields[0].hostingFieldVo != null
                                 || $scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0 ){
-                                var hostingField = $scope.vm.form.issueHostingFields[0];
                                 issueHostingFields[0] = {
                                     hostingId : $scope.vm.hostingId,
                                     name : $scope.vm.hostingName,
diff --git a/src/main/webapp/scripts/components/utils/dateRangePicker.directive.js b/src/main/webapp/scripts/components/utils/dateRangePicker.directive.js
index d39030e..7e6e62a 100644
--- a/src/main/webapp/scripts/components/utils/dateRangePicker.directive.js
+++ b/src/main/webapp/scripts/components/utils/dateRangePicker.directive.js
@@ -86,7 +86,32 @@
 
                                         //parentEl : $scope.parentEl !== undefined ? $scope.parentEl : "",
                                         locale: {
-                                            format: 'YYYY-MM-DD/hh:mm:ss A',
+                                            format: 'YYYY-MM-DD hh:mm:ss',
+                                            separator: "~",
+                                            applyLabel: options.applyLabel,
+                                            cancelLabel: options.cancelLabel,
+                                            daysOfWeek: options.daysOfWeek,
+                                            monthNames: options.monthNames
+                                        },
+                                        opens : "center"
+                                    });
+                                    // singleDate 痍⑥냼 踰꾪듉 (媛� 珥덇린�솕)
+                                    $($element).on('cancel.daterangepicker', function(ev, picker) {
+                                        $scope.ngModel = "";
+                                    });
+                                } else if ($attrs["rangeType"] === "multiDate") {
+                                    $($element).daterangepicker({
+                                        timePicker: true,
+                                        timePickerSeconds : true,
+                                        autoUpdateInput: true,
+                                        autoApply : true,
+                                        singleDatePicker : false,
+                                        isSingle : false,
+
+                                        //parentEl : $scope.parentEl !== undefined ? $scope.parentEl : "",
+                                        locale: {
+                                            format: 'YYYY-MM-DD hh:mm:ss',
+                                            separator: "~",
                                             applyLabel: options.applyLabel,
                                             cancelLabel: options.cancelLabel,
                                             daysOfWeek: options.daysOfWeek,
diff --git a/src/main/webapp/views/issue/issueListNormal.html b/src/main/webapp/views/issue/issueListNormal.html
index c8594be..13a629d 100644
--- a/src/main/webapp/views/issue/issueListNormal.html
+++ b/src/main/webapp/views/issue/issueListNormal.html
@@ -296,7 +296,7 @@
                                                                    ng-model="customField.useValues"
                                                                    placeholder="{{'issue.clickToSelectDate' | translate}}"
                                                                    modal-form-auto-scroll
-                                                                   range-type="singleDate"
+                                                                   range-type="multiDate"
                                                                    date-range-picker
                                                                    autocomplete="off">
                                                             <div class="row">
diff --git a/src/main/webapp/views/issue/issueModify.html b/src/main/webapp/views/issue/issueModify.html
index b8703a2..202d795 100644
--- a/src/main/webapp/views/issue/issueModify.html
+++ b/src/main/webapp/views/issue/issueModify.html
@@ -270,12 +270,15 @@
                                 </div>
 
                                 <div ng-switch-when="DATETIME">
-                                    <input type="text" class="form-control input-sm"
+                                    <input class="form-control input-sm input-readonly"
                                            name="item_{{$index}}"
                                            ng-model="issueCustomField.useValues"
-                                           maxlength="100"
-                                           autocomplete="off"
+                                           placeholder="{{'issue.clickToSelectDate' | translate}}"
+                                           modal-form-auto-scroll
+                                           range-type="singleDate"
+                                           date-range-picker
                                            kr-input
+                                           autocomplete="off"
                                            ng-required="issueCustomField.fieldOption == '01' || issueCustomField.customFieldVo.requiredData == 'Y'">
 <!--                                    <small class="help-block form-text text-danger"-->
 <!--                                           ng-show="issueCustomField.customFieldVo.requiredData == 'Y'"-->

--
Gitblit v1.8.0