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