From 432b99025f650e9cf4e9ce393ec20f8ca351b69c Mon Sep 17 00:00:00 2001 From: jjh Date: Wed, 3 Jan 2024 18:46:30 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=A0=84=ED=86=B5=EC=A7=80=20?= =?UTF-8?q?=EB=B0=9C=EC=86=A1=20=ED=98=84=ED=99=A9=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xit/fims/sndb/service/SndngService.java | 3 +- .../sndb/service/bean/SndngServiceBean.java | 5 +- .../xit/fims/sndb/web/Sndb01Controller.java | 136 +++++++- .../cokr/xit/fims/task/web/DpvController.java | 7 + .../sql/mapper/fims/sndb/sndngDtl-mapper.xml | 19 +- .../WEB-INF/jsp/fims/excl/excl01010-main.jsp | 8 +- .../WEB-INF/jsp/fims/sndb/sndb01010-main.jsp | 9 + .../WEB-INF/jsp/fims/sndb/sndb01020-info.jsp | 10 +- .../WEB-INF/jsp/fims/sndb/sndb01030-main.jsp | 10 +- .../WEB-INF/jsp/fims/sndb/sndb01040-info.jsp | 8 +- .../WEB-INF/jsp/fims/sndb/sndb01050-main.jsp | 11 +- .../WEB-INF/jsp/fims/sndb/sndb01060-info.jsp | 7 +- .../WEB-INF/jsp/fims/sndb/sndb01070-main.jsp | 324 ++++++++++++------ .../WEB-INF/jsp/fims/sndb/sndb01080-info.jsp | 289 +++++++++++----- 14 files changed, 604 insertions(+), 242 deletions(-) diff --git a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java index a8408061..79352264 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -84,8 +84,7 @@ public interface SndngService { * @param req 발송 상세 조회 조건 * @return 발송 상세 객체 목록 */ - List getAdvntceSndngDtls(SndbQuery req); - + List getAdvntceSndngDtlList(SndbQuery req); diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java index f738205f..3d595ddf 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java @@ -81,15 +81,14 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic } @Override - public List getAdvntceSndngDtls(SndbQuery req) { - return sndngDtlBean.getSndngDtls(req); + public List getAdvntceSndngDtlList(SndbQuery req) { + return sndngDtlBean.getSndngDtlList(req); } - @Override public List getSndbkList(SndbQuery req) { return sndngBean.getSndbkList(req); diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java index 85e22617..205fcf51 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -59,7 +59,7 @@ public class Sndb01Controller extends ApplicationController { , advanceNoticeSendingMain = "/070/main.do" // 사전통지 발송 현황 메인 화면 , getAdvanceNoticeSendingList = "/070/list.do" // 사전통지 발송 대상 목록 조회 , getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 상세 대장 조회 - + , getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지 발송 상세 대장 조회 @@ -320,8 +320,8 @@ public class Sndb01Controller extends ApplicationController { , Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD)) , Map.entry("총건수", xlsx.style("TNOCS", numeric)) , Map.entry("총금액", xlsx.style("GRAMT", numeric)) - , Map.entry("제목", "TTL_NM") , Map.entry("문서번호", "DOC_NO") + , Map.entry("제목", "TTL_NM") , Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT)) , Map.entry("등록사용자", xlsx.style("RGTR_NM", center)) , Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT)) @@ -550,9 +550,56 @@ public class Sndb01Controller extends ApplicationController { * } */ public ModelAndView getAdvanceNoticeSendingList(SndbQuery req) { - List result = sndngService.getAdvntceSndngList(setFetchSize(req)); + if (!"xls".equals(req.getDownload())) { + List result = sndngService.getAdvntceSndngList(setFetchSize(req)); + return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndng"); + } else { + // 현재 날짜 구하기 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String dateTime = dateFormat.format(System.currentTimeMillis()); + + ArrayList cellDefs = fromJson(req.getCellDefs(), new TypeReference>() {}); - return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndng"); + XLSWriter xlsx = new XLSWriter() + .setFilename("사전통지발송현황" + "_목록_" + dateTime + ".xlsx") + .worksheet(0); + + // CellStyle 지정은 여기에서.. + CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬 + CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,) + CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일 + CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간 + + List list = sndngService.getAdvntceSndngList(req.setFetchSize(0)); + + CellDef.setValues(cellDefs, Map.ofEntries( + Map.entry("업무구분", xlsx.style("TASK_SE_NM", center)) + , Map.entry("등록구분", xlsx.style("SNDNG_REG_SE_NM", center)) + , Map.entry("위반항목", "VLTN_ARTCL") + , Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD)) + , Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD)) + , Map.entry("총건수", xlsx.style("TNOCS", numeric)) + , Map.entry("총금액", xlsx.style("GRAMT", numeric)) + , Map.entry("문서번호", "DOC_NO") + , Map.entry("제목", "TTL_NM") + , Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT)) + , Map.entry("등록사용자", xlsx.style("RGTR_NM", center)) + , Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT)) + , Map.entry("수정사용자", xlsx.style("MDFR_NM", center)) + ) + ); + + xlsx.cell(0, 0) + .value("사전통지 발송 현황", center) + .merge(0, cellDefs.size() - 1) + .cell(3, 0) + .rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx))) + .cell(4, 0) + .values(list, CellDef.values(cellDefs)); + + return new ModelAndView("xlsView") + .addObject("xls", xlsx); + } } /**사전통지 발송 현황 - 세부내용 정보 화면(sndb/sndb01/080-info)을 연다. @@ -563,20 +610,85 @@ public class Sndb01Controller extends ApplicationController { * } */ public ModelAndView getAdvanceNoticeSendingInfo(SndbQuery req) { - List sndngDtls = sndngService.getAdvntceSndngDtls(req); + // + ModelAndView mav = getAdvanceNoticeSendingDetailsList(req); - boolean json = jsonResponse(); - - ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01080-info"); + mav.setViewName("fims/sndb/sndb01080-info"); - return mav.addObject("pageName", "sndb01080") - .addObject("sggCd", req.getSggCd()) - .addObject("taskSeCd", req.getTaskSeCd()) - .addObject("advntceSndngDtl", json ? sndngDtls : toJson(sndngDtls)) // 사전통지 발송 현황 세부내용 + return mav + .addObject("pageName", "sndb01080") + .addObject("query", toJson(req)) + .addObject("advntceSndngDtlList", toJson(mav.getModel().get("advntceSndngDtlList"))) ; } + /**사전통지 발송 현황 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [사전통지 발송 현황 목록]
+	 *     "sndngStart": 사전통지 발송 현황 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 사전통지 발송 현황 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 사전통지 발송 현황 수
+	 * }
+ */ + public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) { + if (!"xls".equals(req.getDownload())) { + List result = sndngService.getAdvntceSndngDtlList(setFetchSize(req)); + return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndngDtl"); + } else { + // 현재 날짜 구하기 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String dateTime = dateFormat.format(System.currentTimeMillis()); + + ArrayList cellDefs = fromJson(req.getCellDefs(), new TypeReference>() {}); + + XLSWriter xlsx = new XLSWriter() + .setFilename("사전통지발송상세" + "_목록_" + dateTime + ".xlsx") + .worksheet(0); + + // CellStyle 지정은 여기에서.. + CellStyle center = xlsx.cellStyle(Styler.CENTER); // 가운데 정렬 + CellStyle numeric = xlsx.n_nn0(); // 숫자 3자리 콤마(,) + CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일 + CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간 + List list = sndngService.getAdvntceSndngDtlList(req.setFetchSize(0)); + + CellDef.setValues(cellDefs, Map.ofEntries( + Map.entry("발송상태", xlsx.style("SNDNG_DTL_STTS_NM", center)) + , Map.entry("등기번호", xlsx.style("RG_NO", center)) + , Map.entry("발송일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_YMD"))).style(dateYMD)) + , Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("SNDNG_END_YMD"))).style(dateYMD)) + , Map.entry("납부자명", "RTPYR_NM") + , Map.entry("납부자번호", xlsx.style("RTPYR_BRDT", center)) + , Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center)) + , Map.entry("주소", "RTPYR_ADDR") + , Map.entry("상세주소", "RTPYR_DTL_ADDR") + , Map.entry("단속일시", xlsx.style("CRDN_DT", center)) + , Map.entry("차량번호", "VHRNO") + , Map.entry("단속장소", "CRDN_PLC") + , Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric)) + , Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT)) + , Map.entry("등록사용자", xlsx.style("RGTR_NM", center)) + , Map.entry("수정일시", xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT)) + , Map.entry("수정사용자", xlsx.style("MDFR_NM", center)) + ) + ); + + xlsx.cell(0, 0) + .value("사전통지 발송 상세", center) + .merge(0, cellDefs.size() - 1) + .cell(3, 0) + .rowValues(CellDef.header(cellDefs, () -> CmmnUtil.headerStyle(xlsx))) + .cell(4, 0) + .values(list, CellDef.values(cellDefs)); + + return new ModelAndView("xlsView") + .addObject("xls", xlsx); + } + } diff --git a/src/main/java/cokr/xit/fims/task/web/DpvController.java b/src/main/java/cokr/xit/fims/task/web/DpvController.java index 2f40870f..1e1c7c28 100644 --- a/src/main/java/cokr/xit/fims/task/web/DpvController.java +++ b/src/main/java/cokr/xit/fims/task/web/DpvController.java @@ -589,6 +589,13 @@ public class DpvController { return super.getAdvanceNoticeSendingInfo(req); } + @Override + @RequestMapping(name="사전통지 발송 현황 상세 조회", value=METHOD_URL.getAdvanceNoticeSendingDetailsList) + public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) { + return super.getAdvanceNoticeSendingDetailsList(req); + } + + diff --git a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml index a2b44f81..2891ace4 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -85,7 +85,6 @@ SELECT SD.SNDNG_DTL_ID /* 발송 상세 ID */ - , SD.SVBTC_ID /* 공시송달 ID */ , SD.CRDN_ID /* 단속 ID */ , SD.SVBTC_ID /* 공시송달 ID */ , SD.MTCHG_ID /* 매칭 ID */ @@ -171,7 +170,6 @@ , S.DEPT_CD /* 부서 코드 */ , S.TASK_SE_CD /* 업무 구분 코드 */ , S.SNDNG_REG_SE_CD /* 발송 등록 구분 코드 */ - , S.SNDNG_SE_CD /* 발송 구분 코드 */ , S.LEVY_BGNG_YMD /* 부과 시작 일자 */ , S.LEVY_END_YMD /* 부과 종료 일자 */ , S.TTL_NM /* 제목 명 */ @@ -191,7 +189,22 @@ diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp index 03a3f14c..decc7d58 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp @@ -109,7 +109,7 @@
- +
@@ -543,9 +543,6 @@ // 기본 데이터 설정 setFormData${pageName}(taskSeCd); - - // URL 설정 - setURL${pageName}(taskSeCd); } // 검색 버튼 이벤트 @@ -694,6 +691,9 @@ // 화면 데이터 설정 $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 + + // URL 설정 + setURL${pageName}(taskSeCd); } // URL 설정 diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp index a3b192f9..0b3bcb3c 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp @@ -572,6 +572,15 @@ // 계고장 발송 대상 등록 버튼 이벤트 fnWrngTrgtInfo${pageName} = () => { + if (${pageName}Control.dataset.empty) { + dialog.alert({ + content : "검색된 자료가 없습니다." + , onOK : () => { } + }); + + return; + } + let params = ${pageName}Control.query; params.callPurpose = "create"; diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp index a54768b1..ec6a57a4 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp @@ -20,7 +20,7 @@
- +
@@ -39,12 +39,12 @@
- +
- +
@@ -345,14 +345,14 @@ // 기본 데이터 설정 setFormData${pageName} = () => { - // $("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS")); // 총건수 $("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액 - // 발송 종료 일자 $("#sndngEndYmd--${pageName}").val(""); $("#sndngEndYmd--${pageName}").prop("disabled", true); $("#divSndngEndYmd--${pageName}").hide(); + // 제목 + $("#docNo--${pageName}").val("계고장 발송"); } // 업무구분에 따른 url 설정 diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01030-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01030-main.jsp index 7ec12a1d..9baf3f7a 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01030-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01030-main.jsp @@ -13,7 +13,7 @@
- @@ -146,8 +146,8 @@ 납기일자 총건수 총금액 - 제목 문서번호 + 제목 등록일시 등록사용자 수정일시 @@ -167,8 +167,8 @@ {SNDNG_END_YMD} {TNOCS} {GRAMT} - {TTL_NM} {DOC_NO} + {TTL_NM} {REG_DT} {RGTR_NM} {MDFCN_DT} @@ -228,7 +228,7 @@ , keymapper : info => info ? info.SNDNG_ID : "" , dataGetter : obj => obj.wrngSndngList , appendData : true - , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 + , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , formats : { SNDNG_YMD : dateFormat , SNDNG_END_YMD : dateFormat @@ -255,7 +255,7 @@ , func : "${pageName}Control.load({index})" }); - ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 + ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 }; // 현재 선택 자료 변경 이벤트 diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01040-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01040-info.jsp index 7f65f72c..ba4175da 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01040-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01040-info.jsp @@ -223,10 +223,10 @@ } // 출력 - printWrng${pageName} = (info) => { - if (!info) return; + printWrng${pageName} = (params) => { + if (!params) return; - info.delYN = "N"; // 삭제 여부 + params.delYN = "N"; // 삭제 여부 // ajax.post({ // url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create @@ -280,12 +280,10 @@ // 달력 초기화 initDatepicker("frmEdit--${pageName}"); - } // 기본 데이터 설정 setFormData${pageName} = () => { - // $("#sggCd--${pageName}").val(${sggCd}); // 시군구 코드 $("#taskSeCd--${pageName}").val(${taskSeCd}); // 업무 구분 코드 } diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01050-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01050-main.jsp index a2f8a15f..afd18514 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01050-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01050-main.jsp @@ -536,6 +536,15 @@ // 사전통지 발송 대상 등록 버튼 이벤트 fnAdvntceTrgtInfo${pageName} = () => { + if (${pageName}Control.dataset.empty) { + dialog.alert({ + content : "검색된 자료가 없습니다." + , onOK : () => { } + }); + + return; + } + let params = ${pageName}Control.query; params.callPurpose = "create"; @@ -635,7 +644,7 @@ // 달력 초기화 initDatepicker("frmSearch--${pageName}"); - $("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date); + $("#schCrdnYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date); $("#schCrdnYmdTo--${pageName}").datepicker("setDate", new Date()); // 업무별 조회조건 diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp index ad521230..183504d5 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp @@ -20,7 +20,7 @@
- +
@@ -39,12 +39,12 @@
- +
- +
@@ -350,6 +350,7 @@ $("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액 $("#sndngYmd--${pageName}").val(${pageName}AdvntceYmdInfo.LEVY_YMD_MASK); // 발송일자 $("#sndngEndYmd--${pageName}").val(${pageName}AdvntceYmdInfo.DUDT_YMD_MASK); // 납기일자 + $("#docNo--${pageName}").val("사전통지 발송"); // 제목 } // 업무구분에 따른 url 설정 diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01070-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01070-main.jsp index a682fdb4..1137fd51 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01070-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01070-main.jsp @@ -13,7 +13,7 @@
- @@ -111,8 +111,7 @@
-
- +
@@ -148,8 +147,8 @@ 납기일자 총건수 총금액 - 제목 문서번호 + 제목 등록일시 등록사용자 수정일시 @@ -169,8 +168,8 @@ {SNDNG_END_YMD} {TNOCS} {GRAMT} - {TTL_NM} {DOC_NO} + {TTL_NM} {REG_DT} {RGTR_NM} {MDFCN_DT} @@ -179,7 +178,19 @@ @@ -218,7 +229,7 @@ , keymapper : info => info ? info.SNDNG_ID : "" , dataGetter : obj => obj.advntceSndngList , appendData : true - , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 + , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , formats : { SNDNG_YMD : dateFormat , SNDNG_END_YMD : dateFormat @@ -234,7 +245,7 @@ **************************************************************************/ // Dataset 변경 이벤트 ${pageName}Control.onDatasetChange = obj => { - renderList${pageName}(); + renderList${pageName}(obj.${infoPrefix}Total); $("#paging--${pageName}").setPagingInfo({ list : ${pageName}Control.dataset @@ -245,7 +256,7 @@ , func : "${pageName}Control.load({index})" }); - ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 + ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 }; // 현재 선택 자료 변경 이벤트 @@ -261,12 +272,10 @@ ${pageName}Control.getInfo = (sndngId) => { if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return; - let params = { - callPurpose : "view" - , sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드 - , taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 - , sndngId : sndngId // 발송 ID - }; + let params = ${pageName}Control.query; + + params.callPurpose = "view"; + params.sndngId = sndngId; ajax.get({ url : ${pageName}Control.urls.getInfo @@ -283,43 +292,193 @@ } /************************************************************************** - * + * DataTables 이벤트 **************************************************************************/ // DataTables에 click, dbclick 이벤트 - renderList${pageName} = () => { + renderList${pageName} = (totalSize) => { let ${infoPrefix}List = ${pageName}Control.dataset; let empty = ${infoPrefix}List.empty; + let clsForTask = $("#frmSearch--${pageName} input[name='taskSeCd']:checked").val(); + + if (typeof clsForTask == "undefined" || clsForTask == null || clsForTask == "") { + clsForTask = $("#layout-navbar input[name='taskSeCd']:checked").val().toLowerCase(); + } else { + clsForTask = clsForTask.toLowerCase(); + } - let trs = empty ? - [document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%> - ${infoPrefix}List.inStrings( - document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%> - (str, dataItem) => str - .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("SNDNG_ID") + "');") - .replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("SNDNG_ID") + "');") + // 업무별 그리드 td + let foundContent = document.getElementById("${infoPrefix}Row--${pageName}").content; + let foundTr = $(foundContent).find("tr")[0].cloneNode(false); + let foundTds = $(foundContent).find("." + clsForTask + ",.cmn"); + + foundTds.each(function() { + foundTr.appendChild(this.cloneNode(true)); + }); + + let trs = empty ? + [document.getElementById("${infoPrefix}NotFound--${pageName}").content.querySelector("." + clsForTask + ",.cmn").outerHTML] : + ${infoPrefix}List.inStrings( + foundTr.outerHTML, + (str, dataItem) => str + .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("SNDNG_ID") + "');") + .replace(/{ondblclick}/gi, "${pageName}Control.getInfo('" + dataItem.getValue("SNDNG_ID") + "');") ); - $("#tbody--${pageName}").html(trs.join()); + let noMore = (totalSize == ${infoPrefix}List.length); + let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0); + + $("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore); + + if (${pageName}Control.untilPageNum != 0) { + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; + ${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum; + ${pageName}Control.untilPageNum = 0; + } + + // checkbox 체크 해제 $("th input[type='checkbox']").prop("checked", false); //보안모드 fn_securityModeToggle($("#securityMode--top").is(":checked")); } + // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 + scrollDataList${pageName} = () => { + ${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false + + ${pageName}Control.load(${pageName}Control.query.pageNum + 1); + } + /************************************************************************** - * 초기 셋팅 + * 사용자 함수(function) **************************************************************************/ - // 초기화 - initForm${pageName} = () => { - // 화면 초기화 - $("#frmSearch--${pageName}")[0].reset(); + // callback 사용자 검색 + callbackFindUser${pageName} = (userId, userNm) => { + $("#schRgtrCd--${pageName}").val(userId); // 사용자 ID + $("#schRgtrNm--${pageName}").val(userNm); // 사용자 명 + } - // dataset 초기화 - ${pageName}Control.dataset.clear(); + // 사용자 검색 + getFindUser${pageName} = () => { + let params = { + callbackFuncName : "callbackFindUser${pageName}" + } + + ajax.get({ + url : wctx.url("/user/user02/010/main.do") + , data : params || {} + , success : resp => { + dialog.open({ + id : "userDialog" + , title : "사용자 검색" + , content : resp + , size : "lg" + }); + } + }); + } + + // 개별총정보 dialog + getTotalInfo${pageName} = (crdnId) => { + if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; + + let params = { + callControlName : "${pageName}Control" + , sggCd : $("#sggCd--${pageName}").val() + , taskSeCd : $("input[name=taskSeCd]:checked").val() + , crdnId : crdnId + } + + ajax.get({ + url : wctx.url(params.taskSeCd + "/sprt/sprt02/010/main.do") + , data : params + , success : resp => { + dialog.open({ + id : "totalInfoMainDialog" + , title : "개별총정보" + , content : resp + , size : "xxl" + }); + } + }); + } + + // 검색 자료 재조회 + refreshList${pageName} = () => { + ${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum; + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum; + + ${pageName}Control.load(1); + } + + /************************************************************************** + * 버튼 clickEvent + **************************************************************************/ + // 업무 구분 변경 + fnResetAndChangeBiz${pageName} = (taskSeCd) => { + // 업무 구분 코드 + if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") { + taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val(); + } + + // 초기 기본 설정 + initForm${pageName}(); + + // 기본 데이터 설정 + setFormData${pageName}(taskSeCd); + + // URL 설정 + setURL${pageName}(taskSeCd); + } + + // 검색 버튼 이벤트 + fnSearchList${pageName} = () => { + // 검색조건 + ${pageName}Control.query = ${pageName}Fields.get(); + + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수 + ${pageName}Control.query.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지 + ${pageName}Control.query.delYN = "N"; // 삭제 여부 + + ${pageName}Control.load(1); } + // 엑셀 버튼 이벤트 + fnExcel${pageName} = () => { + if (${pageName}Control.dataset.empty) { + dialog.alert({ + content : "검색된 자료가 없습니다." + , onOK : () => { } + }); + + return; + } + + // DataTables(그리드) + let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)") + , $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)")); + ${pageName}Control.query.cellDefs = cellDefs; + + ${pageName}Control.download(); + } + + // 사용자 조회 버튼 이벤트 + fnFindUser${pageName} = () => { + getFindUser${pageName}(); + } + + /************************************************************************** + * 초기 셋팅 + **************************************************************************/ // 이벤트 setEvent${pageName} = () => { + // 동적검색에서 엔터(Enter) 키를 누르면 검색한다. + $("#term--${pageName}").keypress(function(e) { + if (e.keyCode == 13) { + fnSearchList${pageName}();    + }     + }); + // form-date 항목에서 키보드로 입력시 날짜 포맷팅 적용 $("#frmSearch--${pageName}").find(".form-date").each(function() { $(this).on("input", function() { @@ -336,36 +495,14 @@ // DataTables width 변경 조정 $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); - // DataTables 스크롤 이벤트 - $("#table-responsive--${pageName}").scroll(function() { - let el = $(this); - - if (el.scrollTop() == 0) { - return; - } - if (!${pageName}Control.tableRenderComplete) { - return; - } - - let itemsCnt = ${pageName}Control.dataset._items.length; - let totCnt = ${pageName}Control.dataset.getValue("TOT_CNT"); // let totCnt = ${pageName}Control.dataset.getCurrent("item").data.TOT_CNT; - - if (itemsCnt >= totCnt) { - return; - } - - if ((el[0].scrollHeight - el.scrollTop() + VERTICAL_SCROLL_HEIGHT) <= el.outerHeight()) { - ${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 완료 - - ${pageName}Control.load(${pageName}Control.query.pageNum + 1); - } - }); + // DataTables 스크롤 이벤트 생성 + fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName}); } - // 화면 초기값 셋팅 - setForm${pageName} = (taskSeCd) => { - // 업무 구분 코드 - $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); + // 화면 초기 설정 + initForm${pageName} = () => { + // 화면 초기화 + $("#frmSearch--${pageName}")[0].reset(); // 최고 관리자 경우 업무구분을 선택할 수 있도록 하자. $("#frmSearch--${pageName} input[name='taskSeCd']").each(function(i) { @@ -375,77 +512,44 @@ // 달력 초기화 initDatepicker("frmSearch--${pageName}"); - $("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-365).date); + $("#schSndngYmdFrom--${pageName}").datepicker("setDate", DateUtil.getDateDay(-7).date); $("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date()); - } - // URL 설정 - setURL${pageName} = (taskSeCd) => { - ${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/070/list.do"); // 조회 - ${pageName}Control.urls.getInfo = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/080/info.do"); // 사전통지 세부내용 - } + // 사용자 이름 + $("#schRgtrNm--${pageName}").prop("readonly", true); - /************************************************************************** - * 버튼 clickEvent - **************************************************************************/ - // 업무 구분 변경 - fnResetAndChangeBiz${pageName} = (taskSeCd) => { - // 초기화 - initForm${pageName}(); - - // 업무 구분 코드 - if (typeof taskSeCd == "undefined" || taskSeCd == null || taskSeCd == "") { - taskSeCd = $("#layout-navbar input[name='taskSeCd']:checked").val(); - } - - // 화면 초기값 설정 - setForm${pageName}(taskSeCd); - - // URL 설정 - setURL${pageName}(taskSeCd); + // dataset 초기화 + ${pageName}Control.dataset.clear(); } - // 초기화 버튼 이벤트 - fnReset${pageName} = () => { - fnResetAndChangeBiz${pageName}(); - } + // 기본 데이터 설정 + setFormData${pageName} = (taskSeCd) => { + // ${pageName}Control 설정 + ${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 - // 검색 버튼 이벤트 - fnSearchList${pageName} = () => { - // 검색조건 - ${pageName}Control.query = ${pageName}Fields.get(); - - ${pageName}Control.query.fetchSize = FETCH_XS; // 한번에 조회되는 자료 건수 FETCH_XS = 30 - ${pageName}Control.query.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지 - ${pageName}Control.query.delYn = "N"; // 삭제 여부 - - ${pageName}Control.load(); + // 화면 데이터 설정 + $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 + $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + taskSeCd + "']").prop("checked", true); // 업무 구분 } - // 엑셀 버튼 이벤트 - fnExcel${pageName} = () => { - + // URL 설정 + setURL${pageName} = (taskSeCd) => { + ${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/070/list.do"); // 조회 + ${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/080/info.do"); // 사전통지 세부내용 } /************************************************************************** * script 진입 **************************************************************************/ $(document).ready(function() { - // 기본 데이터 설정 - $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 - // 이벤트 설정 setEvent${pageName}(); // 보안모드 fn_securityModeToggle($("#securityMode--top").is(":checked")); - // 업무 구분 설정 - let defaultBizValue = $("#layout-navbar input[name='taskSeCd']:checked").val(); - $("#frmSearch--${pageName} input[name='taskSeCd'][value='" + defaultBizValue + "']").prop("checked", true); - // 화면 초기 설정 및 업무 구분 변경 - fnResetAndChangeBiz${pageName}(defaultBizValue); + fnResetAndChangeBiz${pageName}($("#layout-navbar input[name='taskSeCd']:checked").val()); }); diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp index f27bc0a2..d73db524 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp @@ -17,8 +17,17 @@
+ +
+ +
    +
+
+ @@ -48,14 +57,11 @@