shjung 2 år sedan
förälder
incheckning
8dff92cc21

+ 1 - 1
src/main/java/com/its/op/security/interceptor/ApiInterceptor.java

@@ -22,7 +22,7 @@ public class ApiInterceptor implements HandlerInterceptor {
         HttpSession session = request.getSession(false);
         if (session == null) {
             if (!StringUtils.equalsIgnoreCase("GET", request.getMethod())) {
-                log.error("로그인 하지 않은 사용자가 API(POST/PUT/DELETE)에 접근함.");
+                log.error("로그인 하지 않은 사용자가 API(POST/PUT/DELETE)에 접근함. {}, {}", request.getRequestURI(), request.getRemoteAddr());
                 // GET Method 를 제외한 Request 제한할 경우.... ==> Web Security 에서 처리함.
                 //return false;
             }

+ 218 - 203
src/main/resources/static/application/op/02.history/06.incident-hs/incident-hs.js

@@ -1,4 +1,4 @@
-"use-strict"
+"use-strict";
 let strtDt;
 let strtTm;
 let endDt;
@@ -9,177 +9,176 @@ let fcltType;
 let closeBtn;
 let _listTable;
 let searchBtn;
-let _pageName = '돌발상황 이력';
-const _apiUri = '/api/manage/incident';
-
-$(()=>{
+let _pageName = "돌발상황 이력";
+const _apiUri = "/api/manage/incident/history";
 
+$(() => {
     //우측 상단 닫기 버튼
-    closeBtn   = new dxBtn($('.close-btn'), '닫기', 'close', 'outlined', null, null, false, true);
-    searchBtn  = new dxBtn($('.search-btn'), '조회', 'refresh', 'outlined', null, null, false, true);
-    closeBtn.onClick(()=>window.close());
+    closeBtn = new dxBtn($(".close-btn"), "닫기", "close", "outlined", null, null, false, true);
+    searchBtn = new dxBtn($(".search-btn"), "조회", "refresh", "outlined", null, null, false, true);
+    closeBtn.onClick(() => window.close());
     searchBtn.onClick(searchBtnClick);
 
-    strtDt = new dxDate($('.strt-dt'), 'yyyy-MM-dd', '검색 조건 시작일', 160, 30, 'date', null, null, null);
-    strtTm = new dxDate($('.strt-tm'), 'HH시', '검색 조건 시작 시각', 80, 30, 'time', 60, null, null);
+    strtDt = new dxDate($(".strt-dt"), "yyyy-MM-dd", "검색 조건 시작일", 160, 30, "date", null, null, null);
+    strtTm = new dxDate($(".strt-tm"), "HH시", "검색 조건 시작 시각", 80, 30, "time", 60, null, null);
     strtDt.setValue(getBefAftDay(-7));
     strtTm.setValue(firstSettingTime);
-    endDt = new dxDate($('.end-dt'), 'yyyy-MM-dd', '검색 조건 종료일', 160, 30, 'date', null, null, null);
-    endTm = new dxDate($('.end-tm'), 'HH시', '검색 조건 종료 시각', 80, 30, 'time', 60, null, null);
+    endDt = new dxDate($(".end-dt"), "yyyy-MM-dd", "검색 조건 종료일", 160, 30, "date", null, null, null);
+    endTm = new dxDate($(".end-tm"), "HH시", "검색 조건 종료 시각", 80, 30, "time", 60, null, null);
     endDt.setValue(getBefAftDay(0));
     endTm.setValue(endSettingTime);
 
     //돌발 상황 이력 테이블
     let columns = [
         {
-            dataField : "incd_ocrr_id",
-            caption   : "ID",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "incd_ocrr_id",
+            caption: "ID",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "rgst_dt",
-            caption   : "등록 일시",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            dataType  : 'datetime',
-            format    : 'yyyy-MM-dd HH:mm:ss'
+            dataField: "rgst_dt",
+            caption: "등록 일시",
+            alignment: "center",
+            cssClass: "padding-5",
+            dataType: "datetime",
+            format: "yyyy-MM-dd HH:mm:ss",
         },
         {
-            dataField : "incd_orgn_desc",
-            caption   : "돌발상황 구분",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            cellTemplate(c,e){
-               return alignTemplate(c, e, 'left');
-            }
+            dataField: "incd_cnfm_dt",
+            caption: "돌발상황 확인일시",
+            alignment: "center",
+            cssClass: "padding-5",
+            dataType: "datetime",
+            format: "yyyy-MM-dd HH:mm:ss",
         },
         {
-            dataField : "incd_titl",
-            caption   : "돌발상황 제목",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            cellTemplate(c,e){
-               return alignTemplate(c, e, 'left');
-            }
+            dataField: "incd_strt_dt",
+            caption: "시작 일시",
+            alignment: "center",
+            cssClass: "padding-5",
+            dataType: "datetime",
+            format: "yyyy-MM-dd HH:mm:ss",
         },
         {
-            dataField : "incd_type_clsf_desc",
-            caption   : "돌발유형",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            cellTemplate(c,e){
-               return alignTemplate(c, e, 'left');
-            }
+            dataField: "incd_end_prar_dt",
+            caption: "종료 예정 일시",
+            alignment: "center",
+            cssClass: "padding-5",
+            dataType: "datetime",
+            format: "yyyy-MM-dd HH:mm:ss",
         },
         {
-            dataField : "incd_type_desc",
-            caption   : "돌발세부유형",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            cellTemplate(c,e){
-               return alignTemplate(c, e, 'left');
-            }
+            dataField: "incd_orgn_desc",
+            caption: "돌발상황 구분",
+            alignment: "center",
+            cssClass: "padding-5",
+            cellTemplate(c, e) {
+                return alignTemplate(c, e, "left");
+            },
         },
         {
-            dataField : "ocrr_lctn_nm",
-            caption   : "발생 위치 설명",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            cellTemplate(c,e){
-               return alignTemplate(c, e, 'left');
-            }
+            dataField: "incd_titl",
+            caption: "돌발상황 제목",
+            alignment: "center",
+            cssClass: "padding-5",
+            cellTemplate(c, e) {
+                return alignTemplate(c, e, "left");
+            },
         },
         {
-            dataField : "incd_expl",
-            caption   : "돌발상황 상황 설명",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            cellTemplate(c,e){
-               return alignTemplate(c, e, 'left');
-            }
+            dataField: "incd_type_clsf_desc",
+            caption: "돌발유형",
+            alignment: "center",
+            cssClass: "padding-5",
+            cellTemplate(c, e) {
+                return alignTemplate(c, e, "left");
+            },
         },
         {
-            dataField : "cmtr_grad_cd",
-            caption   : "소통 등급",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            lookup    : {
-                dataSource  : [],
-                displayExpr : 'desc',
-                valueExpr   : 'code',
-            }
+            dataField: "incd_type_desc",
+            caption: "돌발세부유형",
+            alignment: "center",
+            cssClass: "padding-5",
+            cellTemplate(c, e) {
+                return alignTemplate(c, e, "left");
+            },
         },
         {
-            dataField : "ifmr_nm",
-            caption   : "제보자",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "ocrr_lctn_nm",
+            caption: "발생 위치 설명",
+            alignment: "center",
+            cssClass: "padding-5",
+            cellTemplate(c, e) {
+                return alignTemplate(c, e, "left");
+            },
         },
         {
-            dataField : "incd_cnfm_mthd_cd",
-            caption   : "돌발상황 확인 방법",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            lookup    : {
-                dataSource  : [],
-                displayExpr : 'desc',
-                valueExpr   : 'code',
-            }
+            dataField: "incd_expl",
+            caption: "돌발상황 상황 설명",
+            alignment: "center",
+            cssClass: "padding-5",
+            cellTemplate(c, e) {
+                return alignTemplate(c, e, "left");
+            },
         },
         {
-            dataField : "incd_sern_cd",
-            caption   : "심각도",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            lookup    : {
-                dataSource  : [],
-                displayExpr : 'desc',
-                valueExpr   : 'code',
-            }
+            dataField: "cmtr_grad_cd",
+            caption: "소통 등급",
+            alignment: "center",
+            cssClass: "padding-5",
+            lookup: {
+                dataSource: [],
+                displayExpr: "desc",
+                valueExpr: "code",
+            },
         },
         {
-            dataField : "incd_cnfm_dt",
-            caption   : "돌발상황 확인일시",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            dataType  : 'datetime',
-            format    : 'yyyy-MM-dd HH:mm:ss'
+            dataField: "ifmr_nm",
+            caption: "제보자",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "incd_strt_dt",
-            caption   : "시작 일시",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            dataType  : 'datetime',
-            format    : 'yyyy-MM-dd HH:mm:ss'
+            dataField: "incd_cnfm_mthd_cd",
+            caption: "돌발상황 확인 방법",
+            alignment: "center",
+            cssClass: "padding-5",
+            lookup: {
+                dataSource: [],
+                displayExpr: "desc",
+                valueExpr: "code",
+            },
         },
         {
-            dataField : "incd_end_prar_dt",
-            caption   : "종료 예정 일시",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            dataType  : 'datetime',
-            format    : 'yyyy-MM-dd HH:mm:ss'
+            dataField: "incd_sern_cd",
+            caption: "심각도",
+            alignment: "center",
+            cssClass: "padding-5",
+            lookup: {
+                dataSource: [],
+                displayExpr: "desc",
+                valueExpr: "code",
+            },
         },
         {
-            dataField : "incd_end_cnfm_mthd_cd",
-            caption   : "돌발상황 종료 확인방법",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            lookup    : {
-                dataSource  : [],
-                displayExpr : 'desc',
-                valueExpr   : 'code',
-            }
+            dataField: "incd_end_cnfm_mthd_cd",
+            caption: "돌발상황 종료 확인방법",
+            alignment: "center",
+            cssClass: "padding-5",
+            lookup: {
+                dataSource: [],
+                displayExpr: "desc",
+                valueExpr: "code",
+            },
         },
         {
-            dataField : "incd_end_dt",
-            caption   : "돌발상황 종료일시",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            dataType  : 'datetime',
-            format    : 'yyyy-MM-dd HH:mm:ss'
+            dataField: "incd_end_dt",
+            caption: "돌발상황 종료일시",
+            alignment: "center",
+            cssClass: "padding-5",
+            dataType: "datetime",
+            format: "yyyy-MM-dd HH:mm:ss",
         },
         // {
         //     dataField : "mblz_eqpm_cont",
@@ -214,46 +213,46 @@ $(()=>{
         //     cssClass  : 'padding-5',
         // },
         {
-            dataField : "link_id",
-            caption   : "구간 ID",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "link_id",
+            caption: "구간 ID",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "x_crdn",
-            caption   : "X 좌표",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "x_crdn",
+            caption: "X 좌표",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "y_crdn",
-            caption   : "Y 좌표",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "y_crdn",
+            caption: "Y 좌표",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "incd_ocrr_lane",
-            caption   : "발생 차로",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "incd_ocrr_lane",
+            caption: "발생 차로",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "incd_clsr_lane",
-            caption   : "차단 차로",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "incd_clsr_lane",
+            caption: "차단 차로",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "dely_lngt",
-            caption   : "지체 길이",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "dely_lngt",
+            caption: "지체 길이",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         {
-            dataField : "incd_lngt",
-            caption   : "돌발상황 길이",
-            alignment : "center",
-            cssClass  : 'padding-5',
+            dataField: "incd_lngt",
+            caption: "돌발상황 길이",
+            alignment: "center",
+            cssClass: "padding-5",
         },
         // {
         //     dataField : "smlt_vhcl_unum",
@@ -280,26 +279,26 @@ $(()=>{
         //     cssClass  : 'padding-5',
         // },
         {
-            dataField : "wthr_cd",
-            caption   : "기상 상태",
-            alignment : "center",
-            cssClass  : 'padding-5',
-            lookup    : {
-                dataSource  : [],
-                displayExpr : 'desc',
-                valueExpr   : 'code',
-            }
+            dataField: "wthr_cd",
+            caption: "기상 상태",
+            alignment: "center",
+            cssClass: "padding-5",
+            lookup: {
+                dataSource: [],
+                displayExpr: "desc",
+                valueExpr: "code",
+            },
         },
         {
-            dataField : "resp_lvl_cd",
-            caption   : "대응수준",
-            cssClass  : 'padding-5',
-            alignment : "center",
-            lookup    : {
-                dataSource  : [],
-                displayExpr : 'desc',
-                valueExpr   : 'code',
-            }
+            dataField: "resp_lvl_cd",
+            caption: "대응수준",
+            cssClass: "padding-5",
+            alignment: "center",
+            lookup: {
+                dataSource: [],
+                displayExpr: "desc",
+                valueExpr: "code",
+            },
         },
         // {
         //     dataField : "utis_cnct_yn",
@@ -333,35 +332,52 @@ $(()=>{
         // },
     ];
 
-    _listTable = initializedGrid($(".grid"), '100%', '100%', columns,
-        [], 'single', 'standard', ['incd_ocrr_id', 'rgst_dt'], false, true,
-        false, 1000, false, false, true, _pageName, true, '', null)
-        .dxDataGrid("instance");
+    _listTable = initializedGrid(
+        $(".grid"),
+        "100%",
+        "100%",
+        columns,
+        [],
+        "single",
+        "standard",
+        ["incd_ocrr_id", "rgst_dt"],
+        false,
+        true,
+        false,
+        1000,
+        false,
+        false,
+        true,
+        _pageName,
+        true,
+        "",
+        null
+    ).dxDataGrid("instance");
 
     fetchBaseData();
-})
+});
 
 /**
  * 초기 수신 데이터(시설물 유형);
  */
-function fetchBaseData(){
-    const codeUrl = '/api/manage/incident/code';
-    getDataAsync( codeUrl + '/ltcu', recvCdData, [8]);
-    getDataAsync( codeUrl + '/icm' , recvCdData,[10, 15]);
-    getDataAsync( codeUrl + '/srlu', recvCdData, [11]);
-    getDataAsync( codeUrl + '/rsl' , recvCdData, [25]);
-    getDataAsync( codeUrl + '/wetu' , recvCdData, [24]);
+function fetchBaseData() {
+    const codeUrl = "/api/manage/incident/code";
+    getDataAsync(codeUrl + "/ltcu", recvCdData, [8]);
+    getDataAsync(codeUrl + "/icm", recvCdData, [10, 15]);
+    getDataAsync(codeUrl + "/srlu", recvCdData, [11]);
+    getDataAsync(codeUrl + "/rsl", recvCdData, [25]);
+    getDataAsync(codeUrl + "/wetu", recvCdData, [24]);
 }
 
 function recvCdData(jsonData, args) {
     for (let idx in args) {
         const index = args[idx];
-        _listTable.option('columns['+index+'].lookup.dataSource', jsonData);
+        _listTable.option("columns[" + index + "].lookup.dataSource", jsonData);
     }
 }
 
 function fetchListData(from, to) {
-    getDataAsync(_apiUri, recvListData, null, {FROM_DT : from, TO_DT : to});
+    getDataAsync(_apiUri, recvListData, null, { FROM_DT: from, TO_DT: to });
 }
 
 /**
@@ -369,36 +385,35 @@ function fetchListData(from, to) {
  * @param {*} jsonData
  * @param {*} isFirst
  */
-function recvListData(jsonData){
-    const dateColums = ['rgst_dt','incd_end_prar_dt', 'incd_cnfm_dt', 'incd_strt_dt', 'incd_end_dt', 'detc_dt'];
+function recvListData(jsonData) {
+    const dateColums = ["rgst_dt", "incd_end_prar_dt", "incd_cnfm_dt", "incd_strt_dt", "incd_end_dt", "detc_dt"];
     if (jsonData && jsonData.length > 0) {
-        jsonData.map((item)=>{
+        jsonData.map((item) => {
             for (let column of dateColums) {
                 if (item[column]) item[column] = new Date(getParseDateTime(item[column]));
             }
-        })
+        });
     }
-    _listTable.option('dataSource', jsonData);
+    _listTable.option("dataSource", jsonData);
     selResultMsg(jsonData);
 }
 
-function searchBtnClick(){
+function searchBtnClick() {
     const dateArr = [strtDt, endDt, strtTm, endTm];
     for (let date of dateArr) {
-        const label = '['+date.label+']';
+        const label = "[" + date.label + "]";
         if (date.isValidation()) {
-            return alertWarning('형식에 맞게 입력해주세요. ' + label, null, date);
-        }
-        else if (date.isNull()){
-            return alertWarning('검색 기간을 입력해주세요. ' + label, null, date);
+            return alertWarning("형식에 맞게 입력해주세요. " + label, null, date);
+        } else if (date.isNull()) {
+            return alertWarning("검색 기간을 입력해주세요. " + label, null, date);
         }
     }
 
-    const fromDt = strtDt.getSendDateValue().substring(0,8) + strtTm.getSendTimeValue().substring(0,2);
-    const toDt   = endDt.getSendDateValue().substring(0,8) + endTm.getSendTimeValue().substring(0,2);
+    const fromDt = strtDt.getSendDateValue().substring(0, 8) + strtTm.getSendTimeValue().substring(0, 2);
+    const toDt = endDt.getSendDateValue().substring(0, 8) + endTm.getSendTimeValue().substring(0, 2);
     if (fromDt > toDt) {
-        return alertWarning( strtDt.label +'이 ' + endDt.label +' 보다 큽니다.', null, endDt);
+        return alertWarning(strtDt.label + "이 " + endDt.label + " 보다 큽니다.", null, endDt);
     }
 
     fetchListData(fromDt, toDt);
-}
+}

+ 4 - 6
src/main/resources/static/application/op/99.common/common.js

@@ -2411,7 +2411,9 @@ function gridCsvExporting(gridInfo, pageName, e) {
     if (!data || data.length <= 0) {
         return alertWarning("조회된 데이터가 없습니다.");
     }
+    console.log(data);
     let columns = gridInfo.option("columns");
+    console.log(columns);
     let array = findGroupIndex(gridInfo, columns, [], "");
     const workbook = new ExcelJS.Workbook();
     const worksheet = workbook.addWorksheet(pageName);
@@ -2424,12 +2426,9 @@ function gridCsvExporting(gridInfo, pageName, e) {
                 encodeExecutableContent: true,
             })
             .then(() => {
-                // var options = {
-                //     dateUTC: true,
-                // };
                 const options = {
-                    dateFormats: ["YYYY-MM-DD HH:mm:ss"],
-                    dateUTC: false,
+                    dateFormat: "YYYY-MM-DD HH:mm:ss",
+                    // dateUTC: true,
                 };
                 workbook.csv.writeBuffer(options).then((buffer) => {
                     saveAs(new Blob(["\ufeff", buffer], { type: "application/octet-stream; charset=utf-8" }), pageName + "_" + excellTime() + ".csv");
@@ -2437,7 +2436,6 @@ function gridCsvExporting(gridInfo, pageName, e) {
                         array.map((item) => {
                             gridInfo.option(item.option, item.index);
                         });
-                        console.log("csv down end: ", nowTime());
                     }
                 });
             });

+ 1 - 1
src/main/resources/static/js/constant/constant.js

@@ -1,6 +1,6 @@
 // common.js restApi.js, websocket.js
 
-const _apiUrl = "http://115.91.94.42:8999";
+const _apiUrl = "http://localhost:8998";
 //const _apiUrl = "";
 
 // map-config.js