From 05aedda926d041e6966c9d5bb31ac936ff40a24c Mon Sep 17 00:00:00 2001 From: jjh Date: Thu, 4 Jan 2024 16:15:36 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=84=EA=B3=A0=EC=9E=A5=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=ED=98=84=ED=99=A9=20=EC=88=98=EC=A0=95.=20?= =?UTF-8?q?=EC=82=AC=EC=A0=84=ED=86=B5=EC=A7=80=20=EB=B0=9C=EC=86=A1=20?= =?UTF-8?q?=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 --- .../fims/sndb/service/SndngDtlService.java | 6 + .../xit/fims/sndb/service/SndngService.java | 6 - .../service/bean/SndngDtlServiceBean.java | 5 + .../sndb/service/bean/SndngServiceBean.java | 5 - .../xit/fims/sndb/web/Sndb01Controller.java | 136 +++++++++++++---- .../cokr/xit/fims/task/web/DpvController.java | 8 +- .../sql/mapper/fims/sndb/sndngDtl-mapper.xml | 44 +++--- .../WEB-INF/jsp/fims/sndb/sndb01020-info.jsp | 5 +- .../WEB-INF/jsp/fims/sndb/sndb01030-main.jsp | 10 +- .../WEB-INF/jsp/fims/sndb/sndb01040-info.jsp | 143 +++++++++++++----- .../WEB-INF/jsp/fims/sndb/sndb01060-info.jsp | 3 +- .../WEB-INF/jsp/fims/sndb/sndb01070-main.jsp | 5 +- .../WEB-INF/jsp/fims/sndb/sndb01080-info.jsp | 85 ++++++----- 13 files changed, 311 insertions(+), 150 deletions(-) diff --git a/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java b/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java index 126abaf4..34b8228c 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java @@ -31,6 +31,12 @@ public interface SndngDtlService { */ List getSndngDtls(SndbQuery req); + /**지정한 조건에 따라 계도장 발송 상세 객체들을 반환한다. + * @param req 발송 상세 조회 조건 + * @return 발송 상세 객체 목록 + */ + List getWrngSndngDtlList(SndbQuery req); + /**지정한 조건에 따라 사전통지 발송 상세 목록을 조회하여 반환한다. * @param req 발송 상세 조회 조건 * @return 발송 상세 객체 목록 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 14273b93..390274b7 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -47,12 +47,6 @@ public interface SndngService { */ List getWrngSndngList(SndbQuery req); - /**지정한 조건에 따라 계도장 발송 상세 객체들을 반환한다. - * @param req 발송 상세 조회 조건 - * @return 발송 상세 객체 목록 - */ - List getWrngSndngDtls(SndbQuery req); - /**지정한 조건에 따라 사전통지 발송 대상 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 * @return 발송 대장 목록 diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java index 6539bb13..cd1a1931 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java @@ -40,6 +40,11 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl return sndngDtlBean.getSndngDtls(req); } + @Override + public List getWrngSndngDtlList(SndbQuery req) { + return sndngDtlBean.getSndngDtlList(req); + } + @Override public List getAdvntceSndngDtlList(SndbQuery req) { return sndngDtlBean.getSndngDtlList(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 bc19381d..31cacef1 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 @@ -55,11 +55,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic return sndngBean.getSndngList(req); } - @Override - public List getWrngSndngDtls(SndbQuery req) { - return sndngDtlBean.getSndngDtls(req); - } - @Override public List getAdvntceTrgtList(SndbQuery req) { return sndngBean.getAdvntceTrgtList(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 f2fe0f64..9c4412a3 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -51,15 +51,16 @@ public class Sndb01Controller extends ApplicationController { , createWarningSendingList = "/020/createList.do" // 계고장 발송 등록 , warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면 , getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회 - , getWarningSendingInfo = "/040/info.do" // 계고장 발송 상세 대장 조회 + , getWarningSendingInfo = "/040/info.do" // 계고장 발송 상세 화면 + , getWarningSendingDetailsList = "/040/list.do" // 계고장 발송 현황 상세 목록 조회 , advanceNoticeTargetMain = "/050/main.do" // 사전통지 발송 대상 메인 화면 , getAdvanceNoticeTargetList = "/050/list.do" // 사전통지 발송 대상 목록 조회 , getAdvanceNoticeTargetInfo = "/060/info.do" // 사전통지 발송 대상 조회 , createAdvanceNoticeSendingList = "/060/createList.do" // 사전통지 발송 등록 , advanceNoticeSendingMain = "/070/main.do" // 사전통지 발송 현황 메인 화면 , getAdvanceNoticeSendingList = "/070/list.do" // 사전통지 발송 대상 목록 조회 - , getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 상세 대장 조회 - , getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지 발송 상세 대장 조회 + , getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 상세 화면 + , getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지 발송 현황 상세 목록 조회 @@ -132,7 +133,7 @@ public class Sndb01Controller extends ApplicationController { ; } - /**계고장 발송 대상 목록을 조회하여 반환한다.
+ /**계고장 발송 대상 목록을 조회하여 반환한다. * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView @@ -278,7 +279,7 @@ public class Sndb01Controller extends ApplicationController { ; } - /**계도장 발송 현황 목록을 조회하여 반환한다.
+ /**계도장 발송 현황 목록을 조회하여 반환한다. * {@link SndngService#getWarningSendingList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView @@ -342,7 +343,7 @@ public class Sndb01Controller extends ApplicationController { } } - /**계도장 발송 현황 - 세부내용 정보 화면(sndb/sndb01/040-info)을 연다. + /**계도장 발송 현황 - 발송상세 화면(sndb/sndb01/040-info)을 연다. * @param sndngId 발송 ID * @return fims/sndb/sndb01040-info 또는 jsonView *
{
@@ -350,19 +351,91 @@ public class Sndb01Controller extends ApplicationController {
 	 * }
*/ public ModelAndView getWarningSendingInfo(SndbQuery req) { - List sndngDtls = sndngService.getWrngSndngDtls(req); - - boolean json = jsonResponse(); + // + ModelAndView mav = getWarningSendingDetailsList(req); - ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01040-info"); + mav.setViewName("fims/sndb/sndb01040-info"); - return mav.addObject("pageName", "sndb01040") - .addObject("sggCd", req.getSggCd()) - .addObject("taskSeCd", req.getTaskSeCd()) - .addObject("wrngSndngDtl", json ? sndngDtls : toJson(sndngDtls)) // 계도장 발송 현황 세부내용 + return mav + .addObject("pageName", "sndb01040") + .addObject("query", toJson(req)) + .addObject("wrngSndngDtlList", toJson(mav.getModel().get("wrngSndngDtlList"))) ; } + /**계도장 발송 현황 - 발송상세 목록을 조회하여 반환한다. + * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngDtlList": [발송상세 목록]
+	 *     "sndngDtlStart": 발송상세 목록 시작 인덱스
+	 *     "sndngDtlFetch": 한 번에 가져오는 발송상세 목록 수
+	 *     "sndngDtlTotal": 조회 결과 찾은 전체 발송상세 수
+	 * }
+ */ + public ModelAndView getWarningSendingDetailsList(SndbQuery req) { + if (!"xls".equals(req.getDownload())) { + List result = sndngDtlService.getWrngSndngDtlList(setFetchSize(req)); + return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngDtl"); + } 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 = sndngDtlService.getWrngSndngDtlList(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_MASK", center)) + , Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center)) + , Map.entry("주소", "RTPYR_ADDR") + , Map.entry("상세주소", "RTPYR_DTL_ADDR") + , Map.entry("배달일자", xlsx.style("DLVR_YMD", center)) + , Map.entry("배달시각", xlsx.style("DLVR_TM", center)) + , Map.entry("미배달사유", "UNDLVR_RSN_NM") + , Map.entry("수령인", "RCPN_NM") + , Map.entry("수령인관계", "RCPN_REL_NM") + , 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); + } + } + /**사전통지 발송 대상 자료 메인화면(sndb/sndb01/050-main)을 연다. * @return /sndb/sndb01/050-main */ @@ -390,7 +463,7 @@ public class Sndb01Controller extends ApplicationController { ; } - /**사전통지 발송 대상 목록을 조회하여 반환한다.
+ /**사전통지 발송 대상 목록을 조회하여 반환한다. * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView @@ -531,14 +604,15 @@ public class Sndb01Controller extends ApplicationController { // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM054"); - return mav.addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + return mav + .addObject("pageName", "sndb01070") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "advntceSndng") // prefix .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) ; } - /**사전통지 발송 현황 목록을 조회하여 반환한다.
+ /**사전통지 발송 현황 목록을 조회하여 반환한다. * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView @@ -602,7 +676,7 @@ public class Sndb01Controller extends ApplicationController { } } - /**사전통지 발송 현황 - 세부내용 정보 화면(sndb/sndb01/080-info)을 연다. + /**사전통지 발송 현황 - 발송상세 화면(sndb/sndb01/080-info)을 연다. * @param sndngId 발송 ID * @return fims/sndb/sndb01080-info 또는 jsonView *
{
@@ -622,15 +696,15 @@ public class Sndb01Controller extends ApplicationController {
 		;
 	}
 
-	/**사전통지 발송 현황 목록을 조회하여 반환한다.
+ /**사전통지 발송 현황 - 발송상세 목록을 조회하여 반환한다. * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView *
 {
-	 *     "sndngList": [사전통지 발송 현황 목록]
-	 *     "sndngStart": 사전통지 발송 현황 목록 시작 인덱스
-	 *     "sndngFetch": 한 번에 가져오는 사전통지 발송 현황 목록 수
-	 *     "sndngTotal": 조회 결과 찾은 전체 사전통지 발송 현황 수
+	 *     "sndngDtlList": [발송상세 목록]
+	 *     "sndngDtlStart": 발송상세 목록 시작 인덱스
+	 *     "sndngDtlFetch": 한 번에 가져오는 발송상세 목록 수
+	 *     "sndngDtlTotal": 조회 결과 찾은 전체 발송상세 수
 	 * }
*/ public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) { @@ -662,10 +736,15 @@ public class Sndb01Controller extends ApplicationController { , 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_BRDT_MASK", center)) , Map.entry("우편번호", xlsx.style("RTPYR_ZIP", center)) , Map.entry("주소", "RTPYR_ADDR") , Map.entry("상세주소", "RTPYR_DTL_ADDR") + , Map.entry("배달일자", xlsx.style("DLVR_YMD", center)) + , Map.entry("배달시각", xlsx.style("DLVR_TM", center)) + , Map.entry("미배달사유", "UNDLVR_RSN_NM") + , Map.entry("수령인", "RCPN_NM") + , Map.entry("수령인관계", "RCPN_REL_NM") , Map.entry("단속일시", xlsx.style("CRDN_DT", center)) , Map.entry("차량번호", "VHRNO") , Map.entry("단속장소", "CRDN_PLC") @@ -696,9 +775,6 @@ public class Sndb01Controller extends ApplicationController { - - - /**고지서 발송 현황 메인화면(sndb/sndb01/090-main)을 연다. * * @return /sndb/sndb01/090-main @@ -719,7 +795,7 @@ public class Sndb01Controller extends ApplicationController { ; } - /**고지서 발송 현황 목록을 조회하여 반환한다.
+ /**고지서 발송 현황 목록을 조회하여 반환한다. * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView @@ -961,7 +1037,7 @@ public class Sndb01Controller extends ApplicationController { ; } - /**반송 현황 목록을 조회하여 반환한다.
+ /**반송 현황 목록을 조회하여 반환한다. * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView @@ -999,7 +1075,7 @@ public class Sndb01Controller extends ApplicationController { ; } - /**공시송달 현황 목록을 조회하여 반환한다.
+ /**공시송달 현황 목록을 조회하여 반환한다. * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView 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 1e1c7c28..3c18aa73 100644 --- a/src/main/java/cokr/xit/fims/task/web/DpvController.java +++ b/src/main/java/cokr/xit/fims/task/web/DpvController.java @@ -554,11 +554,17 @@ public class DpvController { } @Override - @RequestMapping(name="계고장 발송 현황 상세 조회", value=METHOD_URL.getWarningSendingInfo) + @RequestMapping(name="계고장 발송 현황 상세 화면", value=METHOD_URL.getWarningSendingInfo) public ModelAndView getWarningSendingInfo(SndbQuery req) { return super.getWarningSendingInfo(req); } + @Override + @RequestMapping(name="계고장 발송 현황 상세 목록 조회", value=METHOD_URL.getWarningSendingDetailsList) + public ModelAndView getWarningSendingDetailsList(SndbQuery req) { + return super.getWarningSendingDetailsList(req); + } + @Override @RequestMapping(name="사전통지 발송 대상 목록 조회", value=METHOD_URL.getAdvanceNoticeTargetList) public ModelAndView getAdvanceNoticeTargetList(SndbQuery 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 e040cfd0..3136777b 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -155,16 +155,20 @@ , SD.DEL_DT /* 삭제 일시 */ , SD.DLTR /* 삭제자 */ , SD.DEL_RSN /* 삭제 사유 */ - , GET_MASK_DATE(SD.DUDT_YMD, 'K') AS DUDT_YMD_MASK_KOR /* 납기 일자(한글표기) */ - , GET_MASK_DATE(SD.DUDT_YMD, '.') AS DUDT_YMD_MASK /* 납기 일자 */ - , GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.') AS DUDT_AFTR_YMD_MASK /* 납기 후 일자 */ - , GET_MASK_EPAYNO(SD.EPAYNO) AS EPAYNO_MASK /* 전자납부번호 */ - , (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM /* 발송 상세 상태 명 */ - , (SELECT GET_CODE_NM('FIM050', SD.BFR_SNDNG_DTL_STTS_CD) FROM DUAL) AS BFR_SNDNG_DTL_STTS_NM /* 전 발송 상세 상태 명 */ - , (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM /* 발송 수납 명 */ - , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM /* 등록자 명 */ - , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.MDFR) AS MDFR_NM /* 수정자 명 */ - , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.DLTR) AS DLTR_NM /* 삭제자 명 */ + , (SELECT GET_MASK_DATE(SD.SNDNG_YMD, '-') FROM DUAL) AS SNDNG_YMD_MASK /* 부과 일자 */ + , (SELECT GET_MASK_DATE(SD.SNDNG_END_YMD, '-') FROM DUAL) AS SNDNG_END_YMD_MASK /* 부과 일자 */ + , (SELECT GET_BRDT_FORMAT(SD.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_MASK /* 납부자 생년월일 마스크 */ + , (SELECT GET_MASK_DATE(SD.LEVY_YMD, '.') FROM DUAL) AS LEVY_YMD_MASK /* 부과 일자 */ + , (SELECT GET_MASK_DATE(SD.DUDT_YMD, 'K') FROM DUAL) AS DUDT_YMD_MASK_KOR /* 납기 일자(한글표기) */ + , (SELECT GET_MASK_DATE(SD.DUDT_YMD, '.') FROM DUAL) AS DUDT_YMD_MASK /* 납기 일자 */ + , (SELECT GET_MASK_DATE(SD.DUDT_AFTR_YMD, '.') FROM DUAL) AS DUDT_AFTR_YMD_MASK /* 납기 후 일자 */ + , (SELECT GET_MASK_EPAYNO(SD.EPAYNO) FROM DUAL) AS EPAYNO_MASK /* 전자납부번호 */ + , (SELECT GET_CODE_NM('FIM050', SD.SNDNG_DTL_STTS_CD) FROM DUAL) AS SNDNG_DTL_STTS_NM /* 발송 상세 상태 명 */ + , (SELECT GET_CODE_NM('FIM050', SD.BFR_SNDNG_DTL_STTS_CD) FROM DUAL) AS BFR_SNDNG_DTL_STTS_NM /* 전 발송 상세 상태 명 */ + , (SELECT GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD) FROM DUAL) AS SNDNG_RCVMT_NM /* 발송 수납 명 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM /* 등록자 명 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.MDFR) AS MDFR_NM /* 수정자 명 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.DLTR) AS DLTR_NM /* 삭제자 명 */ , S.SNDNG_ID /* 발송 ID */ , S.SGG_CD /* 시군구 코드 */ , S.DEPT_CD /* 부서 코드 */ @@ -182,8 +186,8 @@ , S.SNDNG_STTS_CD /* 발송 상태 코드 */ , S.RESND_YN /* 재발송 여부 */ , (SELECT GET_CODE_NM('FIM047', S.SNDNG_SE_CD) FROM DUAL) AS SNDNG_SE_NM /* 발송 구분 명 */ - FROM TB_SNDNG_DTL SD - LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID) + FROM TB_SNDNG_DTL SD + LEFT OUTER JOIN TB_SNDNG S ON (SD.SNDNG_ID = S.SNDNG_ID) 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 ec6a57a4..119c5958 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 @@ -347,18 +347,17 @@ setFormData${pageName} = () => { $("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS")); // 총건수 $("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액 + $("#ttlNm--${pageName}").val("계고장 발송"); // 제목 + // 발송 종료 일자 $("#sndngEndYmd--${pageName}").val(""); $("#sndngEndYmd--${pageName}").prop("disabled", true); $("#divSndngEndYmd--${pageName}").hide(); - // 제목 - $("#docNo--${pageName}").val("계고장 발송"); } // 업무구분에 따른 url 설정 setURL${pageName} = (taskSeCd) => { ${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/createList.do"); // 등록 -// ${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/updateList.do"); // 수정 } /************************************************************************** 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 9baf3f7a..b190ae5b 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 @@ -271,12 +271,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.pageNum = 1; // 페이지 번호 + params.sndngId = sndngId; // 발송 ID ajax.get({ url : ${pageName}Control.urls.getInfo 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 ba4175da..a535314a 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 @@ -17,8 +17,17 @@
+ +
+ +
    +
+
+ @@ -43,7 +52,6 @@ 우편번호 주소 상세주소 - 등기번호 배달일자 배달시각 미배달사유 @@ -70,11 +78,10 @@ {SNDNG_YMD} {DUDT_YMD} {RTPYR_NM} - {RTPYR_BRDT} + {RTPYR_BRDT_MASK} {RTPYR_ZIP} {RTPYR_ADDR} {RTPYR_DTL_ADDR} - {RG_NO} {DLVR_YMD} {DLVR_TM} {UNDLVR_RSN_NM} @@ -94,7 +101,7 @@ @@ -118,6 +125,8 @@ var ${pageName}CallPurpose = "${callPurpose}"; // FormFields var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}"); + // main 의 검색 조건을 그대로 유지 + var ${pageName}Query = ${query}; /************************************************************************** * DatasetControl @@ -128,7 +137,8 @@ , keymapper : info => info ? info.SNDNG_DTL_ID : "" , dataGetter : obj => obj.wrngSndngDtlList , appendData : true - , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 + , untilPageNum : 0 // 현재 페이지 번호 + , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , formats : { SNDNG_YMD : dateFormat , DUDT_YMD : dateFormat @@ -143,7 +153,16 @@ **************************************************************************/ // Dataset 변경 이벤트 ${pageName}Control.onDatasetChange = obj => { - renderList${pageName}(); + renderList${pageName}(obj.${infoPrefix}Total); + + $("#paging--${pageName}").setPagingInfo({ + list : ${pageName}Control.dataset + , prefix : "paging--${pageName}" + , start : obj.${infoPrefix}Start + , totalSize : obj.${infoPrefix}Total + , fetchSize : obj.${infoPrefix}Fetch + , func : "${pageName}Control.load({index})" + }); ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 }; @@ -157,23 +176,11 @@ $("#tbody--${pageName}").setCurrentRow(key); }; - // 선택(체크) 변경 이벤트 - ${pageName}Control.onSelectionChange = selected => { - let ${infoPrefix}List = ${pageName}Control.dataset; - let keys = selected.map(e => ${infoPrefix}List.getKey(e)); - - $("#tbody--${pageName} input[type='checkbox']").each(function() { - let checkbox = $(this); - - checkbox.prop("checked", keys.includes(checkbox.val())); - }); - }; - /************************************************************************** * DataTables 이벤트 **************************************************************************/ // DataTables에 click, dbclick 이벤트 - renderList${pageName} = () => { + renderList${pageName} = (totalSize) => { let ${infoPrefix}List = ${pageName}Control.dataset; let empty = ${infoPrefix}List.empty; @@ -186,13 +193,29 @@ .replace(/{ondblclick}/gi, "getTotalInfo${pageName}('" + dataItem.getValue("CRDN_ID") + "');") ); - $("#tbody--${pageName}").html(trs.join()); - $("th input[type='checkbox']").prop("checked", false); + + 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; + } //보안모드 fn_securityModeToggle($("#securityMode--top").is(":checked")); } + // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 + scrollDataList${pageName} = () => { + ${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false + + ${pageName}Control.load(${pageName}Control.query.pageNum + 1); + } + /************************************************************************** * 사용자 함수(function) **************************************************************************/ @@ -225,20 +248,39 @@ // 출력 printWrng${pageName} = (params) => { if (!params) return; + } - params.delYN = "N"; // 삭제 여부 + // 검색 자료 재조회 + refreshList${pageName} = () => { + ${pageName}Control.untilPageNum = ${pageName}Control.query.pageNum; + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize * ${pageName}Control.query.pageNum; -// ajax.post({ -// url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create -// , data : params -// , success : resp => ${pageName}Control.onSave(resp) -// }); + ${pageName}Control.load(1); } /************************************************************************** * 버튼 clickEvent **************************************************************************/ - // 계고장 출력 + // 엑셀 버튼 이벤트 + fnExcel${pageName} = () => { + if (${pageName}Control.dataset.empty) { + dialog.alert({ + content : "검색된 자료가 없습니다." + , onOK : () => { } + }); + + return; + } + + // DataTables(그리드) + let cellDefs = getCellDefs($("#theadTr--${pageName} th").not(".dummy-th") + , $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td")); + ${pageName}Control.query.cellDefs = cellDefs; + + ${pageName}Control.download(); + } + + // 계고장출력 버튼 이벤트 fnPrint${pageName} = () => { // validate 확인 if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; @@ -271,6 +313,25 @@ // DataTables width 변경 조정 $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); + + // DataTables 스크롤 이벤트 생성 + fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName}); + +/* 출처: https://nowonbun.tistory.com/538 [명월 일지:티스토리] + show.bs.modal : 모달이 열릴 때 바로 실행되는 이벤트입니다. + shown.bs.modal : 모달의 열림이 끝나고 실행되는 이벤트입니다. + hide.bs.modal : 모달이 닫힐 때 바로 실행되는 이벤트입니다. + hidden.bs.modal : 모달의 닫힘이 끝나고 실행되는 이벤트입니다. +*/ + // DataTables 스크롤을 위해서 다이얼로그 화면이 생성된 후 Dataset을 설정한다. + $("#${infoPrefix}Dialog").on("shown.bs.modal", function (e) { + ${pageName}Control.setData({ + ${infoPrefix}List : ${wrngSndngDtlList} + , ${infoPrefix}Start : ${wrngSndngDtlStart} + , ${infoPrefix}Fetch : ${wrngSndngDtlFetch} + , ${infoPrefix}Total : ${wrngSndngDtlTotal} + }); + }); } // 화면 초기 설정 @@ -278,19 +339,29 @@ // 화면 초기화 $("#frmEdit--${pageName}")[0].reset(); - // 달력 초기화 - initDatepicker("frmEdit--${pageName}"); + // dataset 초기화 + ${pageName}Control.dataset.clear(); } // 기본 데이터 설정 setFormData${pageName} = () => { - $("#sggCd--${pageName}").val(${sggCd}); // 시군구 코드 - $("#taskSeCd--${pageName}").val(${taskSeCd}); // 업무 구분 코드 + let sggCd = ${pageName}Query.sggCd; + let taskSeCd = ${pageName}Query.taskSeCd; + + $("#sggCd--${pageName}").val(sggCd); // 시군구 코드 + $("#taskSeCd--${pageName}").val(taskSeCd); // 업무 구분 코드 + + // 검색 조건 설정 + ${pageName}Control.defaultFetchSize = ${pageName}Query.fetchSize; + ${pageName}Control.query = ${pageName}Query; + + // URL 설정 + setURL${pageName}(taskSeCd); } // 업무구분에 따른 url 설정 setURL${pageName} = (taskSeCd) => { - // + ${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/040/list.do"); // 조회 } /************************************************************************** @@ -303,15 +374,9 @@ // 화면 초기화 initForm${pageName}(); - // Dataset 설정 - ${pageName}Control.addData(${wrngSndngDtl}); - // 기본 데이터 설정 setFormData${pageName}(); - // URL 설정 - setURL${pageName}(${taskSeCd}); - // 보안모드 fn_securityModeToggle($("#securityMode--top").is(":checked")); }); 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 183504d5..acf5b7d4 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 @@ -350,13 +350,12 @@ $("#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("사전통지 발송"); // 제목 + $("#ttlNm--${pageName}").val("사전통지 발송"); // 제목 } // 업무구분에 따른 url 설정 setURL${pageName} = (taskSeCd) => { ${pageName}Control.urls.create = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/060/createList.do"); // 등록 -// ${pageName}Control.urls.update = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/060/updateList.do"); // 수정 } /************************************************************************** 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 2c99ff14..feb1ea54 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 @@ -273,8 +273,9 @@ if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return; let params = ${pageName}Control.query; - params.callPurpose = "view"; - params.sndngId = sndngId; + params.callPurpose = "view"; // 호출 용도 + params.pageNum = 1; // 페이지 번호 + params.sndngId = sndngId; // 발송 ID ajax.get({ url : ${pageName}Control.urls.getInfo 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 30d47af2..06c2a642 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 @@ -25,11 +25,8 @@
- -