From 14010407d06f983aeada835ad0e9099b3b75030e Mon Sep 17 00:00:00 2001 From: jjh Date: Thu, 4 Jan 2024 18:47:52 +0900 Subject: [PATCH] =?UTF-8?q?=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 | 18 --- .../service/bean/SndngDtlServiceBean.java | 15 --- .../xit/fims/sndb/web/Sndb01Controller.java | 125 +++++++++++++++--- .../cokr/xit/fims/task/web/DpvController.java | 17 +-- .../WEB-INF/jsp/fims/sndb/sndb01080-info.jsp | 32 ++++- .../WEB-INF/jsp/fims/sndb/sndb01100-info.jsp | 28 ++-- 6 files changed, 160 insertions(+), 75 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 34b8228c..67c9ead5 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java @@ -31,24 +31,6 @@ public interface SndngDtlService { */ List getSndngDtls(SndbQuery req); - /**지정한 조건에 따라 계도장 발송 상세 객체들을 반환한다. - * @param req 발송 상세 조회 조건 - * @return 발송 상세 객체 목록 - */ - List getWrngSndngDtlList(SndbQuery req); - - /**지정한 조건에 따라 사전통지 발송 상세 목록을 조회하여 반환한다. - * @param req 발송 상세 조회 조건 - * @return 발송 상세 객체 목록 - */ - List getAdvntceSndngDtlList(SndbQuery req); - - /**지정한 조건에 따라 사전통지 발송 상세 객체들을 반환한다. - * @param req 발송 상세 조회 조건 - * @return 발송 상세 객체 목록 - */ - List getAdvntceSndngDtls(SndbQuery req); - /**발송 상세 정보를 등록한다. * @param sndngDtl 발송 상세 * @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 cd1a1931..38a2ecd8 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,21 +40,6 @@ 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); - } - - @Override - public List getAdvntceSndngDtls(SndbQuery req) { - return sndngDtlBean.getSndngDtls(req); - } - @Override public boolean create(SndngDtl sndngDtl) { return sndngDtlBean.create(sndngDtl); 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 58473a2e..fa6be29d 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -51,7 +51,7 @@ 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" // 사전통지 발송 대상 목록 조회 @@ -59,11 +59,13 @@ public class Sndb01Controller extends ApplicationController { , createAdvanceNoticeSendingList = "/060/createList.do" // 사전통지 발송 등록 , advanceNoticeSendingMain = "/070/main.do" // 사전통지 발송 현황 메인 화면 , getAdvanceNoticeSendingList = "/070/list.do" // 사전통지 발송 대상 목록 조회 - , getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 상세 화면 + , getAdvanceNoticeSendingInfo = "/080/info.do" // 사전통지 발송 현황 상세 화면 , getAdvanceNoticeSendingDetailsList= "/080/list.do" // 사전통지 발송 현황 상세 목록 조회 , noticeSheetSendingMain = "/090/main.do" // 고지서 발송 현황 메인 화면 , getNoticeSheetSendingList = "/090/list.do" // 고지서 발송 대상 목록 조회 - , getNoticeSheetSendingInfo = "/100/info.do" // 고지서 발송 상세 대장 조회 + , getNoticeSheetSendingInfo = "/100/info.do" // 고지서 발송 현황 상세 화면 + , getNoticeSheetSendingDetailsList = "/100/list.do" // 고지서 발송 현황 상세 목록 조회 + , noticeSheetSendingTargetInfo = "/110/info.do" // 고지서 발송 대상 화면 @@ -373,7 +375,7 @@ public class Sndb01Controller extends ApplicationController { */ public ModelAndView getWarningSendingDetailsList(SndbQuery req) { if (!"xls".equals(req.getDownload())) { - List result = sndngDtlService.getWrngSndngDtlList(setFetchSize(req)); + List result = sndngDtlService.getSndngDtlList(setFetchSize(req)); return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngDtl"); } else { // 현재 날짜 구하기 @@ -392,7 +394,7 @@ public class Sndb01Controller extends ApplicationController { CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일 CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간 - List list = sndngDtlService.getWrngSndngDtlList(req.setFetchSize(0)); + List list = sndngDtlService.getSndngDtlList(req.setFetchSize(0)); CellDef.setValues(cellDefs, Map.ofEntries( Map.entry("발송상태", xlsx.style("SNDNG_DTL_STTS_NM", center)) @@ -411,6 +413,7 @@ public class Sndb01Controller extends ApplicationController { , Map.entry("수령인관계", "RCPN_REL_NM") , Map.entry("단속일시", xlsx.style("CRDN_DT", center)) , Map.entry("차량번호", "VHRNO") + , Map.entry("단속법정동", "CRDN_STDG_NM") , Map.entry("단속장소", "CRDN_PLC") , Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric)) , Map.entry("등록일시", xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT)) @@ -706,7 +709,7 @@ public class Sndb01Controller extends ApplicationController { */ public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) { if (!"xls".equals(req.getDownload())) { - List result = sndngDtlService.getAdvntceSndngDtlList(setFetchSize(req)); + List result = sndngDtlService.getSndngDtlList(setFetchSize(req)); return setCollectionInfo(new ModelAndView("jsonView"), result, "advntceSndngDtl"); } else { // 현재 날짜 구하기 @@ -725,13 +728,13 @@ public class Sndb01Controller extends ApplicationController { CellStyle dateYMD = xlsx.yyyy_mm_dd(); // 연월일 CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간 - List list = sndngDtlService.getAdvntceSndngDtlList(req.setFetchSize(0)); + List list = sndngDtlService.getSndngDtlList(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("발송종료일자", 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)) @@ -744,8 +747,16 @@ public class Sndb01Controller extends ApplicationController { , Map.entry("수령인관계", "RCPN_REL_NM") , Map.entry("단속일시", xlsx.style("CRDN_DT", center)) , Map.entry("차량번호", "VHRNO") + , Map.entry("단속법정동", "CRDN_STDG_NM") , Map.entry("단속장소", "CRDN_PLC") + , Map.entry("회계연도", xlsx.style("FYR", center)) + , Map.entry("부과번호", xlsx.style("LEVY_NO", center)) + , Map.entry("부과일자", xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD)) + , Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD)) , Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric)) + , Map.entry("본세", xlsx.style("PCPTAX", numeric)) + , Map.entry("가산금", xlsx.style("ADAMT", numeric)) + , Map.entry("합계금액", xlsx.style("SUM_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)) @@ -850,7 +861,7 @@ public class Sndb01Controller extends ApplicationController { } } - /**고지서 발송 현황 - 세부내용 정보 화면(sndb/sndb01/100-info)을 연다. + /**고지서 발송 현황 - 발송상세 화면(sndb/sndb01/100-info)을 연다. * @param sndngId 발송 ID * @return fims/sndb/sndb01100-info 또는 jsonView *
{
@@ -858,19 +869,99 @@ public class Sndb01Controller extends ApplicationController {
 	 * }
*/ public ModelAndView getNoticeSheetSendingInfo(SndbQuery req) { - List sndngDtls = sndngDtlService.getSndngDtls(req); - - boolean json = jsonResponse(); + // + ModelAndView mav = getNoticeSheetSendingDetailsList(req); - ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01100-info"); + mav.setViewName("fims/sndb/sndb01100-info"); - return mav.addObject("pageName", "sndb01100") - .addObject("sggCd", req.getSggCd()) - .addObject("taskSeCd", req.getTaskSeCd()) - .addObject("nhtSndngDtl", json ? sndngDtls : toJson(sndngDtls)) // 고지서 발송 현황 세부내용 + return mav + .addObject("pageName", "sndb01100") + .addObject("query", toJson(req)) + .addObject("nhtSndngDtlList", toJson(mav.getModel().get("nhtSndngDtlList"))) ; } + /**고지서 발송 현황 - 발송상세 목록을 조회하여 반환한다. + * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngDtlList": [발송상세 목록]
+	 *     "sndngDtlStart": 발송상세 목록 시작 인덱스
+	 *     "sndngDtlFetch": 한 번에 가져오는 발송상세 목록 수
+	 *     "sndngDtlTotal": 조회 결과 찾은 전체 발송상세 수
+	 * }
+ */ + public ModelAndView getNoticeSheetSendingDetailsList(SndbQuery req) { + if (!"xls".equals(req.getDownload())) { + List result = sndngDtlService.getSndngDtlList(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 = sndngDtlService.getSndngDtlList(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_STDG_NM") + , Map.entry("단속장소", "CRDN_PLC") + , Map.entry("회계연도", xlsx.style("FYR", center)) + , Map.entry("부과번호", xlsx.style("LEVY_NO", center)) + , Map.entry("부과일자", xlsx.format(o -> xlsx.str2date(o.get("LEVY_YMD"))).style(dateYMD)) + , Map.entry("납기일자", xlsx.format(o -> xlsx.str2date(o.get("DUDT_YMD"))).style(dateYMD)) + , Map.entry("과태료금액", xlsx.style("FFNLG_AMT", numeric)) + , Map.entry("본세", xlsx.style("PCPTAX", numeric)) + , Map.entry("가산금", xlsx.style("ADAMT", numeric)) + , Map.entry("합계금액", xlsx.style("SUM_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/110-info)을 연다. * * @return /sndb/sndb01/110-info 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 3c18aa73..4d1a8e12 100644 --- a/src/main/java/cokr/xit/fims/task/web/DpvController.java +++ b/src/main/java/cokr/xit/fims/task/web/DpvController.java @@ -590,22 +590,17 @@ public class DpvController { } @Override - @RequestMapping(name="사전통지 발송 현황 상세 조회", value=METHOD_URL.getAdvanceNoticeSendingInfo) + @RequestMapping(name="사전통지 발송 현황 상세 화면", value=METHOD_URL.getAdvanceNoticeSendingInfo) public ModelAndView getAdvanceNoticeSendingInfo(SndbQuery req) { return super.getAdvanceNoticeSendingInfo(req); } @Override - @RequestMapping(name="사전통지 발송 현황 상세 조회", value=METHOD_URL.getAdvanceNoticeSendingDetailsList) + @RequestMapping(name="사전통지 발송 현황 상세 목록 조회", value=METHOD_URL.getAdvanceNoticeSendingDetailsList) public ModelAndView getAdvanceNoticeSendingDetailsList(SndbQuery req) { return super.getAdvanceNoticeSendingDetailsList(req); } - - - - - @Override @RequestMapping(name="고지서 발송 현황 목록 조회", value=METHOD_URL.getNoticeSheetSendingList) public ModelAndView getNoticeSheetSendingList(SndbQuery req) { @@ -613,11 +608,17 @@ public class DpvController { } @Override - @RequestMapping(name="고지서 발송 현황 상세 조회", value=METHOD_URL.getNoticeSheetSendingInfo) + @RequestMapping(name="고지서 발송 현황 상세 화면", value=METHOD_URL.getNoticeSheetSendingInfo) public ModelAndView getNoticeSheetSendingInfo(SndbQuery req) { return super.getNoticeSheetSendingInfo(req); } + @Override + @RequestMapping(name="고지서 발송 현황 상세 목록 조회", value=METHOD_URL.getNoticeSheetSendingDetailsList) + public ModelAndView getNoticeSheetSendingDetailsList(SndbQuery req) { + return super.getNoticeSheetSendingDetailsList(req); + } + @Override @RequestMapping(name="반송 목록 조회", value=METHOD_URL.getSendBackList) public ModelAndView getSendBackList(SndbQuery req) { 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 06c2a642..7a020a6a 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 @@ -62,7 +62,7 @@ 발송상태 등기번호 발송일자 - 납기일자 + 발송종료일자 납부자명 납부자생일 우편번호 @@ -77,7 +77,14 @@ 차량번호 단속법정동 단속장소 + 회계연도 + 부과번호 + 부과일자 + 납기일자 과태료금액 + 본세 + 가산금 + 합계금액 등록일시 등록사용자 수정일시 @@ -92,7 +99,7 @@ {SNDNG_DTL_STTS_NM} {RG_NO} {SNDNG_YMD} - {DUDT_YMD} + {SNDNG_END_YMD} {RTPYR_NM} {RTPYR_BRDT_MASK} {RTPYR_ZIP} @@ -107,7 +114,14 @@ {VHRNO} {CRDN_STDG_NM} {CRDN_PLC} + {FYR} + {LEVY_NO} + {LEVY_YMD} + {DUDT_YMD} {FFNLG_AMT} + {PCPTAX} + {ADAMT} + {SUM_AMT} {REG_DT} {RGTR_NM} {MDFCN_DT} @@ -117,7 +131,7 @@ @@ -157,10 +171,14 @@ , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , formats : { SNDNG_YMD : dateFormat - , SNDNG_END_YMD : dateFormat - , FFNLG_AMT : numberFormat - , REG_DT : datetimeFormat - , MDFCN_DT : datetimeFormat + , SNDNG_END_YMD : dateFormat + , LEVY_YMD : dateFormat + , DUDT_YMD : dateFormat + , FFNLG_AMT : numberFormat + , PCPTAX : numberFormat + , ADAMT : numberFormat + , REG_DT : datetimeFormat + , MDFCN_DT : datetimeFormat } }); diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01100-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01100-info.jsp index 27b224fd..3f471ec8 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01100-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01100-info.jsp @@ -47,27 +47,31 @@ - - - 발송상태 등기번호 발송일자 발송종료일자 납부자명 - 납부자번호 + 납부자생일 우편번호 주소 상세주소 + 배달일자 + 배달시각 + 미배달사유 + 수령인 + 수령인관계 단속일시 차량번호 - 법정동 + 단속법정동 단속장소 회계연도 부과번호 부과일자 납기일자 과태료금액 + 본세 + 가산금 합계금액 등록일시 등록사용자 @@ -80,18 +84,20 @@