OWL ITS + 탐지시스템(인터넷 진흥원)
이민희
2021-12-14 6587fd584cb672bbb8a4539cdc1c5714efb8b48f
Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa
8개 파일 변경됨
205 ■■■■ 파일 변경됨
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java 16 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/util/CommonUtil.java 15 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/api/apiMonitor.controller.js 27 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/project/projectList.controller.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/config.js 6 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/api/apiMonitor.html 45 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueListNormal.html 92 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/java/kr/wisestone/owl/service/impl/IssueServiceImpl.java
@@ -915,15 +915,19 @@
    public void findApiIssue(ApiMonitorCondition apiMonitorCondition, Map<String, Object> resJsonData) {
        IssueTypeCondition issueTypeCondition = new IssueTypeCondition();
        issueTypeCondition.setIsApi(Issue.IS_API_YES);
        List<IssueTypeVo> issueTypes = this.issueTypeService.findIssueType(issueTypeCondition);
        // 값이 없을 경우 초기값 입력
        if (StringUtils.isEmpty(apiMonitorCondition.getSearchPeriod())) {
            apiMonitorCondition.setSearchPeriod(DateUtil.LAST_SEVEN_DAYS);
        }
        //  검색 일자를 구한다.
        List<Date> searchDates = CommonUtil.findSearchPeriod(apiMonitorCondition.getSearchPeriod());
        List<Date> searchDates = Lists.newArrayList();
        if (apiMonitorCondition.getSearchPeriod().equals(DateUtil.CUSTOM_INPUT)) {
            Date startDate = DateUtil.convertStrToDate(apiMonitorCondition.getSearchStartDate(), "yyyy-MM-dd");
            Date endDate = DateUtil.addDays(DateUtil.convertStrToDate(apiMonitorCondition.getSearchEndDate(), "yyyy-MM-dd"), 1);
            searchDates = CommonUtil.findSearchPeriod(startDate, endDate);
        } else {
            searchDates = CommonUtil.findSearchPeriod(apiMonitorCondition.getSearchPeriod());
        }
        //  날짜가 검색되지 않았으면 오류
        if (searchDates.size() < 1) {
src/main/java/kr/wisestone/owl/util/CommonUtil.java
@@ -40,6 +40,7 @@
import java.security.MessageDigest;
import java.security.spec.KeySpec;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
public class CommonUtil {
@@ -761,6 +762,20 @@
        return stringBuilder.toString();
    }
    public static List<Date> findSearchPeriod(Date startDate, Date endDate) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(endDate);
        List<Date> days = Lists.newArrayList();
        //  이번달 날짜 리스트 가져오기
        while (cal.getTime().after(startDate)){
            days.add(cal.getTime());
            cal.add(Calendar.DATE, -1);
        }
        return days;
    }
    //  검색 일자를 구한다.
    public static List<Date> findSearchPeriod(String searchPeriod) {
        List<Date> searchDates = Lists.newArrayList();
src/main/webapp/scripts/app/api/apiMonitor.controller.js
@@ -17,7 +17,8 @@
                $scope.vm = {
                    search : {
                        searchPeriod : "LAST_SEVEN_DAYS"
                        searchPeriod : "LAST_SEVEN_DAYS",
                        startEndDateRange : "" //  이슈 기록 조회 날짜
                    },
                    apiMonitorVos : [],
                    issueTypeVos : [],
@@ -35,8 +36,24 @@
                    }
                };
                //  직접 입력에서 날짜 선택시 이슈 기록 정보 조회
                $scope.$watch("vm.search.startEndDateRange", function (newValue) {
                    if ($rootScope.isDefined(newValue)) {
                        $scope.fn.drawChart();
                    }
                });
                //  사용자 수
                function changeSearchPeriod() {
                    drawChart();
                    switch ($scope.vm.search.searchPeriod) {
                        case "CUSTOM_INPUT" :
                            $scope.vm.search.startEndDateRange = "";
                            break;
                        default :
                            $scope.vm.search.startEndDateRange = "";
                            $scope.fn.drawChart();
                    }
                }
                $scope.fn.drawChart();
@@ -49,6 +66,12 @@
                        searchEndDate : ""
                    };
                    if ($rootScope.isDefined($scope.vm.search.startEndDateRange)) {
                        var startEndDateRange = $scope.vm.search.startEndDateRange.split("~");
                        content.searchStartDate = startEndDateRange[0].trim();
                        content.searchEndDate = startEndDateRange[1].trim();
                    }
                    Api.findHistory($resourceProvider.getContent(content,
                        $resourceProvider.getPageContent(0, 0))).then(function (result) {
src/main/webapp/scripts/app/project/projectList.controller.js
@@ -362,7 +362,7 @@
                function changeLastProject(projectId) {
                    $rootScope.changeLastProject(projectId)
                    $state.go("issues.list")
                    $state.go("dashboards.dashboard")
                }
                $scope.fn.makeTableConfigs();
src/main/webapp/scripts/components/utils/issueSearchFieldKeyViewElement.directive.js
@@ -52,7 +52,7 @@
                                    }
                                }
                                makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>×</span>";
                                // makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>×</span>";
                                makeTag += "</p>";
                            });
src/main/webapp/scripts/config.js
@@ -351,12 +351,12 @@
                                                $rootScope.$broadcast("changedLastProject", {id: el.id});
                                                $state.go("issues.list");
                                            }
                                            /*if (reload) {
                                            if (reload) {
                                                $state.go('dashboards.dashboard');
                                            }*/
                                            }
                                        }
                                    });
                                   //$state.go($state.current, {}, {reload: reload});
                                   // $state.go($state.current, {}, {reload: reload});
                                }
                            });
                        }
src/main/webapp/views/api/apiMonitor.html
@@ -12,23 +12,40 @@
            </h6>
            <div class="element-box">
                <select class="form-control form-control-sm rounded width-30 d-inline-block mb-10" ng-model="vm.search.searchPeriod" ng-change="fn.changeSearchPeriod()">
                    <option value="LAST_SEVEN_DAYS" translate="common.last7Days">최근 7일</option>
                    <option value="THIS_WEEK" translate="common.thisWeek">이번 주</option>
                    <option value="LAST_WEEK" translate="common.lastWeek">지난 주</option>
                    <option value="THIS_MONTH" translate="common.thisMonth">이번 달</option>
                    <option value="LAST_MONTH" translate="common.lastMonth">지난 달(1일~말일)</option>
                    <option value="LAST_THIRTY_DAYS" translate="common.last30Days">최근 30일</option>
                    <option value="CUSTOM_INPUT" translate="common.directInput">직접입력</option>
                </select>
                <div>
                    <select class="form-control form-control-sm rounded width-30 d-inline-block mb-10" ng-model="vm.search.searchPeriod" ng-change="fn.changeSearchPeriod()">
                        <option value="LAST_SEVEN_DAYS" translate="common.last7Days">최근 7일</option>
                        <option value="THIS_WEEK" translate="common.thisWeek">이번 주</option>
                        <option value="LAST_WEEK" translate="common.lastWeek">지난 주</option>
                        <option value="THIS_MONTH" translate="common.thisMonth">이번 달</option>
                        <option value="LAST_MONTH" translate="common.lastMonth">지난 달(1일~말일)</option>
                        <option value="LAST_THIRTY_DAYS" translate="common.last30Days">최근 30일</option>
                        <option value="CUSTOM_INPUT" translate="common.directInput">직접입력</option>
                    </select>
                    <input type="text"
                           ng-show="vm.search.searchPeriod == 'CUSTOM_INPUT'"
                           class="form-control form-control-sm rounded col-md-4 d-inline-block input-readonly"
                           ng-model="vm.search.startEndDateRange"
                           modal-form-auto-scroll
                           parent-el="'#createdWidget'"
                           range-type="date"
                           onfocus="this.blur()"
                           style="height: 32px !important; padding: 0.25rem 0.5rem; font-size: 0.8rem; line-height: 1.5;"
                           date-range-picker>
                    <div class="row">
                        <div class="col-xs-12">
                            <div id="createdWidget" class="bootstrap-datepicker"></div>
                        </div>
                    </div>
                <div class="no-cont1"
                     ng-if="vm.chartData.columns.length < 1"
                     translate="common.noRecord">
                    기록이 없습니다.
                    <div class="no-cont1"
                         ng-if="vm.chartData.columns.length < 1"
                         translate="common.noRecord">
                        기록이 없습니다.
                    </div>
                </div>
                <div  ng-if="vm.chartData.columns.length > 0">
                    <google-chart
                                  columns="vm.chartData.columns"
src/main/webapp/views/issue/issueListNormal.html
@@ -5,7 +5,7 @@
                <div class="element-box">
                    <div class="row" >
                        <div class="col-sm-12">
                            <div class="searchdiv">
                            <div class="searchdiv" ng-if="!$root.isMainSearch">
                                <form name="issueSearchForm" role="form" ng-enter="fn.getPageList(0)">
                                    <div class="row">
                                        <div class="col-sm-6">
@@ -272,9 +272,93 @@
                                                    <div ng-switch on="customField.customFieldType">
                                                        <div ng-switch-when="INPUT">
                                                            <input type="text" class="form-control input-sm"
                                                            <input type="text"
                                                                   class="form-control input-sm"
                                                                   ng-model="customField.useValues"
                                                                   maxlength="100">
                                                        </div>
                                                        <div ng-switch-when="NUMBER">
                                                            <input type="text"
                                                                   class="form-control input-sm"
                                                                   name="numberType"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   placeholder="숫자만 입력 가능합니다."
                                                                   ng-pattern="/^[0-9]*$/"
                                                                   autocomplete="off">
                                                            <div ng-show="issueSearchForm.numberType.$error.pattern" class="help-block form-text text-danger"
                                                                 translate="common.invalidNumberFormat">숫자만 입력 가능합니다.
                                                            </div>
                                                        </div>
                                                        <!-- todo : 날짜 검색 문제 -->
                                                        <div ng-switch-when="DATETIME">
                                                            <input type="text" class="form-control input-sm"
                                                                   name="dateTime"
                                                                   ng-model="customField.useValues"
                                                                   maxlength="100"
                                                                   range-type="singleDate"
                                                                   date-range-picker>
                                                            <div class="row">
                                                                <div class="col-xs-12">
                                                                    <div id="createdWidget" class="bootstrap-datepicker "></div>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <div ng-switch-when="IP_ADDRESS">
                                                            <input type="text"
                                                                   class="form-control input-sm"
                                                                   name="ipAdress"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"
                                                                   placeholder="IP 주소 형식만 입력 가능합니다."
                                                                   autocomplete="off">
                                                            <div ng-show="issueSearchForm.ipAdress.$error.pattern" class="help-block form-text text-danger"
                                                                 translate="common.invalidipAdressFormat">IP주소 형식이 맞지 않습니다.
                                                            </div>
                                                        </div>
                                                        <div ng-switch-when="EMAIL">
                                                            <input type="email"
                                                                   class="form-control input-sm"
                                                                   name="email"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/"
                                                                   placeholder="이메일 형식만 입력 가능합니다."
                                                                   autocomplete="off">
                                                            <div ng-show="issueSearchForm.email.$error.pattern" class="help-block form-text text-danger"
                                                                 translate="common.invalidEmailFormat">이메일 형식이 맞지 않습니다.
                                                            </div>
                                                        </div>
                                                        <div ng-switch-when="SITE">
                                                            <input type="text"
                                                                   class="form-control input-sm"
                                                                   name="site"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   ng-pattern="/((http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/"
                                                                   placeholder="홈페이지 주소 형식만 입력 가능합니다."
                                                                   autocomplete="off">
                                                            <div ng-show="issueSearchForm.site.$error.pattern" class="help-block form-text text-danger"
                                                                 translate="common.invalidSiteFormat">홈페이지 주소 형식이 맞지 않습니다.(http://로 시작하셔야합니다)
                                                            </div>
                                                        </div>
                                                        <div ng-switch-when="TEL">
                                                            <input type="text"
                                                                   class="form-control input-sm"
                                                                   name="tel"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/"
                                                                   placeholder="연락처 형식만 입력 가능합니다."
                                                                   autocomplete="off">
                                                            <div ng-show="issueSearchForm.tel.$error.pattern" class="help-block form-text text-danger"
                                                                 translate="common.invalidTelFormat">전화번호 형식이 맞지 않습니다.
                                                            </div>
                                                        </div>
                                                        <div ng-switch-default>
@@ -336,8 +420,8 @@
                            <!--    우측  -->
                            <div class="col-5" >
                                <span class="issue-detail-label" ng-if="vm.listMode === 0" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 하위 이슈 숨기기</span>
                                <label class='switch' ng-if="vm.listMode === 0" style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'>
                                <span class="issue-detail-label" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 하위 이슈 숨기기</span>
                                <label class='switch' style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'>
                                    <span class='slider round'></span>
                                </label>
                                <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 완료 이슈 숨기기</span>