From d30e683cf603442d8dc9253f2cdd36342189c35d Mon Sep 17 00:00:00 2001 From: jjh Date: Mon, 13 May 2024 16:15:37 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=A0=EC=A7=80=EC=84=9C=20=EB=B0=9C?= =?UTF-8?q?=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 --- .../cokr/xit/fims/sndb/dao/SndngMapper.java | 29 +- .../xit/fims/sndb/service/SndngService.java | 51 +- .../xit/fims/sndb/service/bean/SndngBean.java | 165 ++-- .../sndb/service/bean/SndngServiceBean.java | 40 +- .../xit/fims/sndb/web/Sndb01Controller.java | 387 +++++++--- .../sql/mapper/fims/sndb/sndng-mapper.xml | 219 ++++++ .../WEB-INF/jsp/fims/sndb/sndb01050-main.jsp | 12 +- .../WEB-INF/jsp/fims/sndb/sndb01060-info.jsp | 4 +- .../WEB-INF/jsp/fims/sndb/sndb01070-main.jsp | 41 +- .../WEB-INF/jsp/fims/sndb/sndb01080-info.jsp | 8 +- .../WEB-INF/jsp/fims/sndb/sndb01090-main.jsp | 221 +++--- .../WEB-INF/jsp/fims/sndb/sndb01100-info.jsp | 621 +++++++-------- .../WEB-INF/jsp/fims/sndb/sndb01110-info.jsp | 323 -------- .../WEB-INF/jsp/fims/sndb/sndb01110-main.jsp | 710 ++++++++++++++++++ .../WEB-INF/jsp/fims/sndb/sndb01120-info.jsp | 481 ++++++++++++ 15 files changed, 2296 insertions(+), 1016 deletions(-) delete mode 100644 src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-info.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-main.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp diff --git a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java index 69b294fd..149baaa8 100644 --- a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java +++ b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java @@ -88,10 +88,10 @@ public interface SndngMapper extends AbstractMapper { List selectAdvntceTrgts(SndbQuery req); default DataObject selectAdvntceTrgtInfo(String crdnId) { - List InfoSndngTrgt = selectAdvntceTrgts(new SndbQuery().setCrdnId(crdnId) + List advntceTrgtInfo = selectAdvntceTrgts(new SndbQuery().setCrdnId(crdnId) .setDelYn("N")); - return !InfoSndngTrgt.isEmpty() ? InfoSndngTrgt.get(0) : null; + return !advntceTrgtInfo.isEmpty() ? advntceTrgtInfo.get(0) : null; } /**지정한 조건에 따라 사전통지 발송 대상의 단속ID 들을 반환한다. @@ -112,6 +112,31 @@ public interface SndngMapper extends AbstractMapper { return !crdnPayerInfo.isEmpty() ? crdnPayerInfo.get(0) : null; } + /**지정한 조건에 따라 고지서 발송 대상 목록을 조회하여 반환한다.
+ * @param req 발송 대장 조회 조건 + * @return 발송 대장 목록 + */ + List selectNhtTrgtList(SndbQuery req); + + /**지정한 조건에 따라 사전통지 발송 대상 객체들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 객체 목록 + */ + List selectNhtTrgts(SndbQuery req); + + default DataObject selectNhtTrgtInfo(String crdnId) { + List nhtTrgtInfo = selectNhtTrgts(new SndbQuery().setCrdnId(crdnId) + .setDelYn("N")); + + return !nhtTrgtInfo.isEmpty() ? nhtTrgtInfo.get(0) : null; + } + + /**지정한 조건에 따라 고지서 발송 대상의 단속ID 들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 사전통지 발송 대상 단속ID 목록 + */ + List selectNhtTrgtCrdnIDs(SndbQuery req); + /**발송 대장 정보를 등록한다. * @param params 파라미터 *
  • "sndng" - 발송 대장
  • 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 980c962c..8a0f9ee7 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -18,18 +18,6 @@ import cokr.xit.foundation.data.DataObject; */ public interface SndngService { - /**지정한 조건에 따라 발송 대장 목록을 조회하여 반환한다. - * @param req 발송 대장 조회 조건 - * @return 발송 대장 목록 - */ - List getSndngList(SndbQuery req); - - /**지정한 조건에 따라 발송 대장 객체들을 반환한다. - * @param req 발송 대장 조회 조건 - * @return 발송 대장 객체 목록 - */ - List getSndngs(SndbQuery req); - /**지정한 조건에 따라 계도장 발송 대상 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 * @return 발송 대장 목록 @@ -84,6 +72,45 @@ public interface SndngService { */ List getAdvntceSndngList(SndbQuery req); + /**지정한 조건에 따라 고지서 발송 대상 목록을 조회하여 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 목록 + */ + List getNhtTrgtList(SndbQuery req); + + /**지정한 조건에 따라 고지서 발송 대상 객체들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 객체 목록 + */ + List getNhtTrgts(SndbQuery req); + + /**고지서 발송 대상을 조회하여 발송 대장에 등록한다. + * @param req 계도장 발송 대상 조회, sndng 발송 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + String createNhtSndngList(SndbQuery req, Sndng sndng); + + /**지정한 조건에 따라 고지서 발송 대장 목록을 조회하여 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 목록 + */ + List getNhtSndngList(SndbQuery req); + + /**지정한 조건에 따라 발송 대장 목록을 조회하여 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 목록 + */ + List getSndngList(SndbQuery req); + + /**지정한 조건에 따라 발송 대장 객체들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 객체 목록 + */ + List getSndngs(SndbQuery req); + /**전자우편(EPost) 대장 정보를 등록한다. * @param sndng 발송 대장 * @return 저장 여부 diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index 63719613..f2c69ff1 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -87,48 +87,6 @@ public class SndngBean extends AbstractComponent { @Resource(name="fileBean") private FileBean fileBean; - /**지정한 조건에 따라 발송 대장 목록을 조회하여 반환한다. - * @param req 발송 대장 조회 조건 - * @return 발송 대장 목록 - */ - public List getSndngList(SndbQuery req) { - // 삭제 여부 확인 - if (req.getDelYn() == null) { - req.setDelYn("N"); - } - // 정렬 확인 - if (req.getOrderBy() == null) { - if (req.getBy() == null) { - req.setOrderBy("REG_DT"); - } else { - req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); - } - } - - return sndngMapper.selectSndngList(req); - } - - /**지정한 조건에 따라 발송 대장 객체들을 반환한다. - * @param req 발송 대장 조회 조건 - * @return 발송 대장 객체 목록 - */ - public List getSndngs(SndbQuery req) { - // 삭제 여부 확인 - if (req.getDelYn() == null) { - req.setDelYn("N"); - } - // 정렬 확인 - if (req.getOrderBy() == null) { - if (req.getBy() == null) { - req.setOrderBy("REG_DT"); - } else { - req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); - } - } - - return sndngMapper.selectSndngs(req); - } - /**지정한 조건에 따라 계도장 발송 대상 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 * @return 계도장 발송 대상 목록 @@ -319,7 +277,7 @@ public class SndngBean extends AbstractComponent { return rtnMsg; } - /**지정한 조건에 따라 사전 통보 발송 대상 목록을 조회하여 반환한다. + /**지정한 조건에 따라 사전통지 발송 대상 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 * @return 계도장 발송 대상 목록 */ @@ -340,7 +298,7 @@ public class SndngBean extends AbstractComponent { return sndngMapper.selectAdvntceTrgtList(req); } - /**지정한 조건에 따라 사전 통보 발송 대상 객체들을 반환한다. + /**지정한 조건에 따라 사전통지 발송 대상 객체들을 반환한다. * @param req 발송 대장 조회 조건 * @return 계도장 발송 대상 객체 목록 */ @@ -604,6 +562,119 @@ public class SndngBean extends AbstractComponent { return rtnMsg; } + /**지정한 조건에 따라 고지서 발송 대상 목록을 조회하여 반환한다. + * @param req 발송 대장 조회 조건 + * @return 계도장 발송 대상 목록 + */ + public List getNhtTrgtList(SndbQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + if (req.getBy() == null) { + req.setOrderBy("REG_DT"); + } else { + req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); + } + } + + return sndngMapper.selectNhtTrgtList(req); + } + + /**지정한 조건에 따라 사전 통보 발송 대상 객체들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 계도장 발송 대상 객체 목록 + */ + public List getNhtTrgts(SndbQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + if (req.getOrderBy() == null) { + req.setOrderBy("CRDN_YMD_TM"); + } + + return sndngMapper.selectNhtTrgts(req); + } + + /**고지서 발송 대상을 조회하여 발송 대장에 등록한다. + * @param req 사전통지 발송 대상 조회, sndng 발송 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String createNhtSndngList(SndbQuery req, Sndng sndng) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + rtnMsg = "[S] 작업이 정상 처리 되었습니다."; + + return rtnMsg; + } + + /**고지서 발송 상세 정보를 등록한다. + * @param sndngDtl 발송 상세 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String createNhtSndngDtl(Sndng sndng, String crdnId) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + rtnMsg = "[S] 작업이 정상 처리 되었습니다."; + + return rtnMsg; + } + + /**지정한 조건에 따라 발송 대장 목록을 조회하여 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 목록 + */ + public List getSndngList(SndbQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + if (req.getBy() == null) { + req.setOrderBy("REG_DT"); + } else { + req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); + } + } + + return sndngMapper.selectSndngList(req); + } + + /**지정한 조건에 따라 발송 대장 객체들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 발송 대장 객체 목록 + */ + public List getSndngs(SndbQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + if (req.getBy() == null) { + req.setOrderBy("REG_DT"); + } else { + req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); + } + } + + return sndngMapper.selectSndngs(req); + } + /**발송 대장 정보를 수정한다. * @param sndng 발송 대장 * @return 저장 여부 @@ -637,12 +708,6 @@ public class SndngBean extends AbstractComponent { return sndngMapper.updateSndngSttsCd(sndng); } - - - - - - /**전자우편 발송 대장 정보를 등록한다. * @param sndng 발송 대장 * @return 저장 여부 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 ead7aa40..363aed7c 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 @@ -33,16 +33,6 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic @Resource(name = "sndngDtlBean") private SndngDtlBean sndngDtlBean; - @Override - public List getSndngList(SndbQuery req) { - return sndngBean.getSndngList(req); - } - - @Override - public List getSndngs(SndbQuery req) { - return sndngBean.getSndngs(req); - } - @Override public List getWrngTrgtList(SndbQuery req) { return sndngBean.getWrngTrgtList(req); @@ -83,6 +73,36 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic return sndngBean.getSndngList(req); } + @Override + public List getNhtTrgtList(SndbQuery req) { + return sndngBean.getNhtTrgtList(req); + } + + @Override + public List getNhtTrgts(SndbQuery req) { + return sndngBean.getNhtTrgts(req); + } + + @Override + public String createNhtSndngList(SndbQuery req, Sndng sndng) { + return sndngBean.createNhtSndngList(req, sndng); + } + + @Override + public List getNhtSndngList(SndbQuery req) { + return sndngBean.getSndngList(req); + } + + @Override + public List getSndngList(SndbQuery req) { + return sndngBean.getSndngList(req); + } + + @Override + public List getSndngs(SndbQuery req) { + return sndngBean.getSndngs(req); + } + @Override public String createSndngLink(Sndng sndng) { return sndngBean.createEPost(sndng); 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 84003bea..34c8e62d 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -72,33 +72,34 @@ public class Sndb01Controller extends ApplicationController { public class METHOD_URL { public static final String - warningTargetMain = "/010/main.do" // 계고장발송 대상 메인 화면 - , getWarningTargetList = "/010/list.do" // 계고장발송 대상 목록 조회 - , getWarningTargetInfo = "/020/info.do" // 계고장발송 대상 조회 - , createWarningSendingList = "/020/createList.do" // 계고장발송 대상 목록의 발송 등록 - , warningSendingMain = "/030/main.do" // 계고장발송 현황 메인 화면 - , getWarningSendingList = "/030/list.do" // 계고장발송 현황 목록 조회 - , getWarningSendingDetailInfo = "/040/info.do" // 계고장발송 현황 상세 화면 - , getWarningSendingDetailList = "/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" // 사전통지발송 대상 목록 조회 - , getAdvanceNoticeSendingDetailInfo = "/080/info.do" // 사전통지발송 현황 상세 화면 - , getAdvanceNoticeSendingDetailList = "/080/list.do" // 사전통지발송 현황 상세 목록 조회 - , setNonTaxReceiptIndividualA01List = "/080/nxrpA01List.do" // 과태료 대장 단속 정보 등록(실시간) A01 - , getNonTaxReceiptIndividualA03List = "/080/nxrpA03List.do" // 과태료 대장 등록 자료 상세 조회(실시간) A03 - , createSendingLink = "/080/createSndngLink.do" // 사전통지발송 현황 상세 목록의 우편통합 발송 연계 등록 - , makeAdvntcePdf = "/080/makeAdvntcePdf.do" // 사전통지발송 현황 사전통지서 출력(PDF) - , makeAdvntceOutsourcing = "/080/makeAdvntceOutsourcing.do" // 사전통지발송 현황 사전통지서 출력(외주파일) - , createSendBackList = "/080/createSndbkList.do" // 발송상세 목록의 반송 확인(등록) - , noticeSheetSendingMain = "/090/main.do" // 고지서발송 현황 메인 화면 - , getNoticeSheetSendingList = "/090/list.do" // 고지서발송 대상 목록 조회 - , getNoticeSheetSendingDetailInfo = "/100/info.do" // 고지서발송 현황 상세 화면 - , getNoticeSheetSendingDetailList = "/100/list.do" // 고지서발송 현황 상세 목록 조회 - , noticeSheetSendingTargetInfo = "/110/info.do" // 고지서발송 대상 화면 + warningTargetMain = "/010/main.do" // 계고장 발송 대상 메인 화면 + , getWarningTargetList = "/010/list.do" // 계고장 발송 대상 목록 조회 + , getWarningTargetInfo = "/020/info.do" // 계고장 발송 대상 조회 + , createWarningSendingList = "/020/createList.do" // 계고장 발송 대상 목록의 발송 등록 + , warningSendingMain = "/030/main.do" // 계고장 발송 현황 메인 화면 + , getWarningSendingList = "/030/list.do" // 계고장 발송 현황 목록 조회 + , getWarningSendingDetailInfo = "/040/info.do" // 계고장 발송 현황 상세 화면 + , getWarningSendingDetailList = "/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" // 사전통지 발송 현황 목록 조회 + , getAdvanceNoticeSendingDetailInfo = "/080/info.do" // 사전통지 발송 현황 상세 화면 + , getAdvanceNoticeSendingDetailList = "/080/list.do" // 사전통지 발송 현황 상세 목록 조회 + , createSendingLink = "/080/createSndngLink.do" // 사전통지 발송 현황 상세 목록의 우편통합 발송 연계 등록 + , makeAdvntcePdf = "/080/makeAdvntcePdf.do" // 사전통지 발송 현황 사전통지서 출력(PDF) + , makeAdvntceOutsourcing = "/080/makeAdvntceOutsourcing.do" // 사전통지 발송 현황 사전통지서 출력(외주파일) + , createSendBackList = "/080/createSndbkList.do" // 발송 상세 목록의 반송 확인(등록) + , noticeSheetTargetMain = "/090/main.do" // 고지서 발송 대상 메인 화면 + , getNoticeSheetTargetList = "/090/list.do" // 고지서 발송 대상 목록 조회 + , getNoticeSheetTargetInfo = "/100/info.do" // 고지서 발송 대상 조회 + , createNoticeSheetSendingList = "/100/createList.do" // 고지서 발송 대상 목록의 발송 등록 + , noticeSheetSendingMain = "/110/main.do" // 고지서 발송 현황 메인 화면 + , getNoticeSheetSendingList = "/110/list.do" // 고지서 발송 현황 상세 목록 조회 + , getNoticeSheetSendingDetailInfo = "/120/info.do" // 고지서 발송 현황 화면 + , getNoticeSheetSendingDetailList = "/120/list.do" // 고지서 발송 현황 상세 목록 조회 , unitySendBackTargetMain = "/210/main.do" // 통합 반송 등록 메인 , sendBackMain = "/220/main.do" // 반송 현황 메인 화면 @@ -107,7 +108,6 @@ public class Sndb01Controller extends ApplicationController { , getSendBackInfo = "/230/info.do" // 반송 정보 조회 , createSendBack = "/230/create.do" // 반송 등록 , updateSendBack = "/230/update.do" // 반송 수정 - , serviceByPublicNoticeMain = "/240/main.do" // 공시송달 현황 메인 화면 , getServiceByPublicNoticeList = "/240/list.do" // 공시송달 현황 목록 조회 , removeServiceByPublicNotice = "/240/remove.do" // 공시송달 삭제 @@ -119,6 +119,10 @@ public class Sndb01Controller extends ApplicationController { , getServiceByPublicNoticeInfo = "/260/info.do" // 공시송달 정보 , createServiceByPublicNotice = "/260/create.do" // 공시송달 등록 , updateServiceByPublicNotice = "/260/update.do" // 공시송달 수정 + + , setNonTaxReceiptIndividualA01List = "/991/nxrpA01List.do" // 과태료 대장 단속 정보 등록(실시간) A01 + , getNonTaxReceiptIndividualA03List = "/991/nxrpA03List.do" // 과태료 대장 등록 자료 상세 조회(실시간) A03 + , getNonTaxReceiptSpecialB01List = "/991/nxrpB01List.do" // 체납상세세목정보(실시간) B01 ; } @@ -836,99 +840,148 @@ public class Sndb01Controller extends ApplicationController { } } - /**과태료 대장 단속 정보 등록를 등록한다. - * @param req 발송 대장 조회 조건 - * @return jsonView - *
     {
    -	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    -	 * }
    + /**고지서 발송 대상 자료 메인화면(sndb/sndb01/090-main)을 연다. + * @return /sndb/sndb01/090-main */ - @Task({"ECA","DPV","PES","DVS"}) - @RequestMapping(name="세외수입 과태료 대장 단속 정보 등록", value=METHOD_URL.setNonTaxReceiptIndividualA01List) - public ModelAndView setNonTaxReceiptIndividualA01List(SndbQuery req) { - boolean saved = false; - String rtnMsg = "[F]"; - - List dtlList = sndngDtlService.getSndngTrgtDtlIds(req); + @RequestMapping(name = "사전통지 발송 대상 메인", value = METHOD_URL.noticeSheetTargetMain) + public ModelAndView noticeSheetTargetMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01090-main"); - // 발송상세 Ids 만큼 반복.. - for (int iLoop = 0; iLoop < dtlList.size(); iLoop++) { - SndngDtl sndngDtl = new SndngDtl(); + // 사용자 정보 + ManagedUser managedUser = (ManagedUser)currentUser().getUser(); - sndngDtl.setSndngDtlId(dtlList.get(iLoop).string("SNDNG_DTL_ID")); - sndngDtl.setCrdnId(dtlList.get(iLoop).string("CRDN_ID")); - sndngDtl.setLinkTrgtCd(dtlList.get(iLoop).string("LINK_TRGT_CD")); - sndngDtl.setLinkMngKey(dtlList.get(iLoop).string("LINK_MNG_KEY")); - sndngDtl.setSndngDtlSttsCd(dtlList.get(iLoop).string("SNDNG_DTL_STTS_CD")); - sndngDtl.setDelYn("N"); + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064"); - rtnMsg = sndngDtlService.setNxrpIndivA01List(sndngDtl); - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - } + addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064"); - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); + return mav + .addObject("pageName", "sndb01090") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "nhtTrgt") // prefix + .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) + .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록 + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + .addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_CD) + .addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_CD) + .addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_CD) + .addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_CD) + .addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_CD) + ; } - /**과태료 대장 등록 자료 상세 조회(실시간)한다. + /**고지서 발송 대상 목록을 조회하여 반환한다. + * {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView *
     {
    -	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +	 *     "sndngList": [사전통지 발송 대상 목록]
    +	 *     "sndngStart": 사전통지 발송 대상 목록 시작 인덱스
    +	 *     "sndngFetch": 한 번에 가져오는 사전통지 발송 대상 목록 수
    +	 *     "sndngTotal": 조회 결과 찾은 전체 사전통지 발송 대상 수
     	 * }
    */ - @Task({"ECA","DPV","PES","DVS"}) - @RequestMapping(name="세외수입 과태료 대장 등록 자료 상세 조회", value=METHOD_URL.getNonTaxReceiptIndividualA03List) - public ModelAndView getNonTaxReceiptIndividualA03List(SndbQuery req) { - boolean saved = false; - String rtnMsg = "[F]"; + @Task + @RequestMapping(name="고지서 발송 대상 목록 조회", value=METHOD_URL.getNoticeSheetTargetList) + public ModelAndView getNoticeSheetTargetList(SndbQuery req) { + if (!"xls".equals(req.getDownload())) { + List result = sndngService.getNhtTrgtList(setFetchSize(req)); + return setCollectionInfo(new ModelAndView("jsonView"), result, "nhtTrgt"); + } else { + // 현재 날짜 구하기 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String dateTime = dateFormat.format(System.currentTimeMillis()); - List dtlList = sndngDtlService.getSndngTrgtDtlIds(req); + List cellDefs = fromJson(req.getCellDefs(), CellDef.listType()); - // 발송상세 Ids 만큼 반복.. - for (int iLoop = 0; iLoop < dtlList.size(); iLoop++) { - SndngDtl sndngDtl = new SndngDtl(); + XLSWriter xlsx = new XLSWriter().worksheet(0); + Format format = new Format(xlsx); + CellStyle center = format.cellStyle(Style.CENTER); + CellStyle numeric = format.n_nn0(); + CellStyle dateYMD = format.yyyy_mm_dd(); + CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss(); - sndngDtl.setSndngDtlId(dtlList.get(iLoop).string("SNDNG_DTL_ID")); - sndngDtl.setCrdnId(dtlList.get(iLoop).string("CRDN_ID")); - sndngDtl.setLinkTrgtCd(dtlList.get(iLoop).string("LINK_TRGT_CD")); - sndngDtl.setLinkMngKey(dtlList.get(iLoop).string("LINK_MNG_KEY")); - sndngDtl.setSndngDtlSttsCd(dtlList.get(iLoop).string("SNDNG_DTL_STTS_CD")); - sndngDtl.setDelYn("N"); + List list = sndngService.getNhtTrgtList(req.setFetchSize(0)); - rtnMsg = sndngDtlService.getNxrpIndivA03List(sndngDtl); - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } + Map valueMap = new HashMap(); + valueMap.put("업무구분", format.of("TASK_SE_NM").style(center)); + valueMap.put("민원신청번호", format.of("CVLCPT_APLY_NO").style(center)); + valueMap.put("민원접수번호", format.of("CVLCPT_RCPT_NO").style(center)); + valueMap.put("민원접수일자", FormatMaker.yyyy_mm_dd(format, "CVLCPT_RCPT_YMD").style(dateYMD)); + valueMap.put("민원처리담당자", format.of("CVLCPT_PRCS_PIC_NM").style(center)); + valueMap.put("민원처리결과", format.of("CVLCPT_PRCS_NM").style(center)); + valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT)); + valueMap.put("차량번호", format.of("VHRNO")); + valueMap.put("위반항목", format.of("VLTN_ARTCL")); + valueMap.put("단속법정동", format.of("CRDN_STDG_NM")); + valueMap.put("단속장소", format.of("CRDN_PLC")); + valueMap.put("상세단속장소", format.of("DTL_CRDN_PLC")); + valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric)); + valueMap.put("사전통지금액", format.of("ADVNTCE_AMT").style(numeric)); + valueMap.put("처리상태", format.of("CRDN_STTS_NM")); + valueMap.put("납부자명", format.of("RTPYR_NM")); + valueMap.put("납부자생일", format.of("RTPYR_BRDT_MASK").style(center)); + valueMap.put("우편번호", format.of("ZIP").style(center)); + valueMap.put("주소", format.of("ADDR")); + valueMap.put("상세주소", format.of("DTL_ADDR")); + valueMap.put("단속특별구역", format.of("CRDN_SPAREA_NM").style(center)); + valueMap.put("사용연료", format.of("USE_FUEL_NM").style(center)); + valueMap.put("주차가능여부", format.of("PARKNG_PSBLTY_RSLT_NM").style(center)); + valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT)); + valueMap.put("등록사용자", format.of("RGTR_NM").style(center)); + valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT)); + valueMap.put("수정사용자", format.of("MDFR_NM").style(center)); + + CellDef.setValues(cellDefs, valueMap); + + xlsx.cell(0, 0).value("사전통지 발송 대상").value(center).merge(0, cellDefs.size() - 1) + .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx))) + .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList())); + + return new ModelAndView("downloadView") + .addObject("download", xlsx.getDownloadable().setFilename("사전통지발송대상" + "_목록_" + dateTime + ".xlsx")); } + } - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); + /**고지서 발송 대상 현황 - 발송 대상 상세 화면(sndb/sndb01/100-info)을 연다. + * @param sndngId 발송 ID + * @return fims/sndb/sndb01120-info 또는 jsonView + *
    {
    +	 *     "sndngDtls": [고지서 발송 대상 상세 목록]
    +	 * }
    + */ + @Task + @RequestMapping(name="고지서 발송 대상 상세 화면", value=METHOD_URL.getNoticeSheetTargetInfo) + public ModelAndView getNoticeSheetTargetInfo(SndbQuery req) { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01100-info"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064"); + + addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064"); + + return mav + .addObject("pageName", "sndb01100") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "nhtTrgt") // prefix + .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) + .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) + ; } - /**고지서 발송 현황 메인화면(sndb/sndb01/090-main)을 연다. + /**고지서 발송 현황 메인화면(sndb/sndb01/110-main)을 연다. * - * @return /sndb/sndb01/090-main + * @return /sndb/sndb01/110-main */ @RequestMapping(name = "고지서 발송 현황 메인", value = METHOD_URL.noticeSheetSendingMain) public ModelAndView noticeSheetSendingMain() { - ModelAndView mav = new ModelAndView("fims/sndb/sndb01090-main"); + ModelAndView mav = new ModelAndView("fims/sndb/sndb01110-main"); // 사용자 정보 ManagedUser managedUser = (ManagedUser)currentUser().getUser(); // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM054"); + Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM047", "FIM054", "FIM061", "FIM064"); - return mav.addObject("pageName", "sndb01090") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + return mav.addObject("pageName", "sndb01110") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "nhtSndng") // prefix .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) // 시군구에서 사용하는 업무 목록 @@ -995,9 +1048,9 @@ public class Sndb01Controller extends ApplicationController { } } - /**고지서 발송 현황 - 발송상세 화면(sndb/sndb01/100-info)을 연다. + /**고지서 발송 현황 - 발송상세 화면(sndb/sndb01/120-info)을 연다. * @param sndngId 발송 ID - * @return fims/sndb/sndb01100-info 또는 jsonView + * @return fims/sndb/sndb01120-info 또는 jsonView *
    {
     	 *     "sndngDtls": [고지서 발송 상세 목록]
     	 * }
    @@ -1008,10 +1061,10 @@ public class Sndb01Controller extends ApplicationController { // ModelAndView mav = getNoticeSheetSendingDetailList(req); - mav.setViewName("fims/sndb/sndb01100-info"); + mav.setViewName("fims/sndb/sndb01120-info"); return mav - .addObject("pageName", "sndb01100") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("pageName", "sndb01120") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "nhtSndngDtl") // prefix .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 .addObject("mainQuery", toJson(req)) // 검색 조건 @@ -1094,34 +1147,6 @@ public class Sndb01Controller extends ApplicationController { } } - /**고지서 대상 자료 정보 화면(sndb/sndb01/110-info)을 연다. - * - * @return /sndb/sndb01/110-info - */ - @Task - @RequestMapping(name="고지서 발송 대상", value=METHOD_URL.noticeSheetSendingTargetInfo) - public ModelAndView noticeSheetSendingTargetInfo(SndbQuery req) { - ModelAndView mav = new ModelAndView("fims/sndb/sndb01110-info"); - - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM047", "FIM054", "FIM061", "FIM064"); - - addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064"); - - return mav.addObject("pageName", "sndb01110") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "levyTrgt") // prefix - .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) - .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) - .addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD) - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) - .addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_ID) - .addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_ID) - .addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_ID) - .addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_ID) - .addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_ID) - ; - } - /**우편통합 발송 대상을 등록한다. * @param sndng 발송 정보 * @return jsonView @@ -1905,5 +1930,121 @@ public class Sndb01Controller extends ApplicationController { return mav; } + /**과태료 대장 단속 정보 등록를 등록한다. + * @param req 발송 대장 조회 조건 + * @return jsonView + *
     {
    +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ + @Task({"ECA","DPV","PES","DVS"}) + @RequestMapping(name="세외수입 과태료 대장 단속 정보 등록", value=METHOD_URL.setNonTaxReceiptIndividualA01List) + public ModelAndView setNonTaxReceiptIndividualA01List(SndbQuery req) { + boolean saved = false; + String rtnMsg = "[F]"; + + List dtlList = sndngDtlService.getSndngTrgtDtlIds(req); + + // 발송상세 Ids 만큼 반복.. + for (int iLoop = 0; iLoop < dtlList.size(); iLoop++) { + SndngDtl sndngDtl = new SndngDtl(); + + sndngDtl.setSndngDtlId(dtlList.get(iLoop).string("SNDNG_DTL_ID")); + sndngDtl.setCrdnId(dtlList.get(iLoop).string("CRDN_ID")); + sndngDtl.setLinkTrgtCd(dtlList.get(iLoop).string("LINK_TRGT_CD")); + sndngDtl.setLinkMngKey(dtlList.get(iLoop).string("LINK_MNG_KEY")); + sndngDtl.setSndngDtlSttsCd(dtlList.get(iLoop).string("SNDNG_DTL_STTS_CD")); + sndngDtl.setDelYn("N"); + + rtnMsg = sndngDtlService.setNxrpIndivA01List(sndngDtl); + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + + /**과태료 대장 등록 자료 상세 조회(실시간)한다. + * @param req 발송 대장 조회 조건 + * @return jsonView + *
     {
    +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ + @Task({"ECA","DPV","PES","DVS"}) + @RequestMapping(name="세외수입 과태료 대장 등록 자료 상세 조회", value=METHOD_URL.getNonTaxReceiptIndividualA03List) + public ModelAndView getNonTaxReceiptIndividualA03List(SndbQuery req) { + boolean saved = false; + String rtnMsg = "[F]"; + + List dtlList = sndngDtlService.getSndngTrgtDtlIds(req); + + // 발송상세 Ids 만큼 반복.. + for (int iLoop = 0; iLoop < dtlList.size(); iLoop++) { + SndngDtl sndngDtl = new SndngDtl(); + + sndngDtl.setSndngDtlId(dtlList.get(iLoop).string("SNDNG_DTL_ID")); + sndngDtl.setCrdnId(dtlList.get(iLoop).string("CRDN_ID")); + sndngDtl.setLinkTrgtCd(dtlList.get(iLoop).string("LINK_TRGT_CD")); + sndngDtl.setLinkMngKey(dtlList.get(iLoop).string("LINK_MNG_KEY")); + sndngDtl.setSndngDtlSttsCd(dtlList.get(iLoop).string("SNDNG_DTL_STTS_CD")); + sndngDtl.setDelYn("N"); + + rtnMsg = sndngDtlService.getNxrpIndivA03List(sndngDtl); + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + + /**과태료 대장 등록 자료 상세 조회(실시간)한다. + * @param req 발송 대장 조회 조건 + * @return jsonView + *
     {
    +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ + @Task + @RequestMapping(name="세외수입 체납상세 세목정보 조회", value=METHOD_URL.getNonTaxReceiptSpecialB01List) + public ModelAndView getNonTaxReceiptSpecialB01List(SndbQuery req) { + boolean saved = false; + String rtnMsg = "[F]"; +/* + List dtlList = sndngDtlService.getSndngTrgtDtlIds(req); + + // 발송상세 Ids 만큼 반복.. + for (int iLoop = 0; iLoop < dtlList.size(); iLoop++) { + SndngDtl sndngDtl = new SndngDtl(); + + sndngDtl.setSndngDtlId(dtlList.get(iLoop).string("SNDNG_DTL_ID")); + sndngDtl.setCrdnId(dtlList.get(iLoop).string("CRDN_ID")); + sndngDtl.setLinkTrgtCd(dtlList.get(iLoop).string("LINK_TRGT_CD")); + sndngDtl.setLinkMngKey(dtlList.get(iLoop).string("LINK_MNG_KEY")); + sndngDtl.setSndngDtlSttsCd(dtlList.get(iLoop).string("SNDNG_DTL_STTS_CD")); + sndngDtl.setDelYn("N"); + + rtnMsg = sndngDtlService.getNxrpIndivA03List(sndngDtl); + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + } +*/ + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } } diff --git a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml index 5c1ac8dc..7a4515ac 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml @@ -625,6 +625,225 @@ + + + , C.SGG_CD + , C.TASK_SE_CD + , C.CRDN_INPT_SE_CD + , C.CRDN_YMD + , C.CRDN_TM + , C.VHRNO + , C.CRDN_STDG_NM + , C.CRDN_ROAD_NM + , C.CRDN_PLC + , C.FFNLG_CRDN_AMT + , C.FFNLG_AMT + , C.ADVNTCE_AMT + , C.CRDN_STTS_CD + , C.REG_DT + , C.RGTR + , C.MDFCN_DT + , C.MDFR + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM + , (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM + , CA.CRDN_SE_CD + , CA.DTL_CRDN_PLC + , CA.CRDN_SPAREA_CD + , CA.CRDN_BGNG_TM + , CA.CRDN_END_TM + , CA.CRDN_SN + , CA.USE_FUEL_CD + , CA.FFNLG_CARMDL_CD + , CA.PARKNG_PSBLTY_RSLT_CD + , CA.VLTN_NMTM + , CA.OVTIME_YN + , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM + , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM + , (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM + , (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM + , (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM + , L.LEVY_ID + , P.RTPYR_ID + , P.RTPYR_SE_CD + , P.RTPYR_NO + , P.RTPYR_NM + , P.RTPYR_BRDT + , P.ZIP + , P.ADDR + , P.DTL_ADDR + , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , (GET_BRDT_FORMAT(P.RTPYR_BRDT, '.')) AS RTPYR_BRDT_MASK + + + + FROM TB_CRDN C + INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) + LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID) + LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) + WHERE C.SGG_CD = #{sggCd} + AND C.TASK_SE_CD = #{taskSeCd} + AND (CC.CVLCPT_PRCS_CD IS NULL OR CC.CVLCPT_PRCS_CD ]]> '00') + + AND C.CRDN_ID IN ( + #{crdnId} + ) + + + AND C.CRDN_ID = #{crdnId} + + + AND C.CRDN_STTS_CD =]]> #{crdnSttsCdFrom} + + + AND C.CRDN_STTS_CD #{crdnSttsCdTo} + + + AND C.CRDN_YMD =]]> #{schCrdnYmdFrom} + + + AND C.CRDN_YMD #{schCrdnYmdTo} + + + AND V.VLTN_CD = #{schVltnCd} + + + AND C.VHRNO = #{schVhrno} + + + AND P.RTPYR_NM = #{schRtpyrNm} + + AND C.DEL_YN = 'N' + + + + AND C.REG_DT =]]> CONCAT(#{schRegDateFrom},'000000') + + + AND C.REG_DT CONCAT(#{schRegDateTo},'235959') + + + + + AND C.MDFCN_DT =]]> CONCAT(#{schRegDateFrom},'000000') + + + AND C.MDFCN_DT CONCAT(#{schRegDateTo},'235959') + + + + + + + + + AND C.RGTR = #{schRgtrCd} + + + + + AND C.MDFR = #{schRgtrCd} + + + + + + + + + + + C.CRDN_REG_SE_CD + C.CRDN_INPT_SE_CD + C.CRDN_YMD + C.VHRNO + C.CRDN_STDG_NM + C.CRDN_ROAD_NM + C.CRDN_PLC + C.FFNLG_CRDN_AMT + C.FFNLG_AMT + C.ADVNTCE_AMT + C.OPNN_SBMSN_YN + C.CRDN_STTS_CD + CA.CRDN_SE_CD + CA.DTL_CRDN_PLC + CA.CRDN_SPAREA_CD + CA.CRDN_BGNG_TM + CA.CRDN_END_TM + CA.CRDN_SN + CA.USE_FUEL_CD + CA.FFNLG_CARMDL_CD + CA.PARKNG_PSBLTY_RSLT_CD + CA.VLTN_NMTM + CA.OVTIME_YN + V.VLTN_ARTCL + P.RTPYR_NM + P.RTPYR_NO + P.RTPYR_BRDT + P.ZIP + P.ADDR + P.DTL_ADDR + CC.CVLCPT_APLY_NO + CC.CVLCPT_RCPT_NO + CC.CVLCPT_RCPT_YMD + CC.CVLCPT_PRCS_PIC_NM + CC.CVLCPT_PRCS_CD + CC.CVLCPT_TRSM_CD + + #{term} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT C.CRDN_ID 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 be431d73..c796d42a 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 @@ -1,12 +1,12 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> +사전통지 발송 대상 +
    - 사전통지 발송 대상 -
    @@ -300,7 +300,7 @@ $P.control = new DatasetControl({ prefix : "advntceTrgt" , prefixName : "사전통지 발송 대상" - , infoSize : "xxl" + , infoSize : "xl" , keymapper : info => info ? info.CRDN_ID : "" , dataGetter : obj => obj.${infoPrefix}List , appendData : true @@ -393,7 +393,7 @@ id : $P.control.prefixed("Dialog") , title : dialogTitle , content : resp - , size : "xl" + , size : $P.control.infoSize , onClose : () => { $P.refreshList(); } }); } @@ -566,7 +566,6 @@ content : "검색된 자료가 없습니다." , onOK : () => { } }); - return; } @@ -595,7 +594,7 @@ params.callPurpose = "create"; // 호출 용도 (등록) params.title = title; // 타이틀 params.crdnIDs = selected.join(","); // Ids - params.sndngSeCd = "02"; // 발송 구분 코드 - 02 사전통지서 + params.sndngSeCd = "02"; // 발송 구분 코드(FIM047) - 02 사전통지서 params.resndYn = "N"; // 재발송 여부 params.delYn = "N"; // 삭제 여부 @@ -696,7 +695,6 @@ // 동적 검색 $("#byOutput--${pageName}").val("동적 검색"); - // 사용자 이름 $("#schRgtrNm--${pageName}").prop("readonly", true); } 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 6771c957..fee88b30 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 @@ -1,12 +1,12 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> +사전통지 발송 대상 상세 정보 +
    - 사전통지 발송 대상 상세 정보 -
    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 2983ce6a..3c36a8a4 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 @@ -1,12 +1,12 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> +사전통지 발송 현황 +
    - 사전통지 발송 현황 -
    @@ -125,7 +125,7 @@
    - @@ -278,7 +278,7 @@ }; // 현재 선택 자료 변경 이벤트 - $P.control.onCurrentChange = item => { + $P.control.onCurrentChange = (item) => { if (!item) return; let key = item.data.SNDNG_ID; @@ -298,7 +298,7 @@ }); // 삭제 버튼 - $("#btnRemoveSndng--${pageName}").prop("disabled", keys.length < 1); + $("#btnRemoveAdvntceSndng--${pageName}").prop("disabled", keys.length < 1); // DataTables(그리드) 전체 선택(checkbox) if (keys.length < 1) { @@ -335,7 +335,7 @@ // 삭제 callback $P.control.onRemove = (resp) => { - let btnTitle = $("#btnRemoveSndng--${pageName}").attr("title"); + let btnTitle = $("#btnRemoveAdvntceSndng--${pageName}").attr("title"); let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle); // 메시지 출력 @@ -495,10 +495,9 @@ $P.fnExcel = () => { if ($P.control.dataset.empty) { dialog.alert({ - content : "검색된 자료가 없습니다." - , onOK : () => { } + content: "검색된 자료가 없습니다." + , onOK: () => { } }); - return; } @@ -516,7 +515,7 @@ } // 삭제 버튼 이벤트 - $P.fnRemoveSndng = () => { + $P.fnRemove = (title) => { // 선택 자료 let selected = $P.control.dataset.getKeys("selected"); @@ -527,18 +526,16 @@ content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?" , onOK : async() => { // 삭제 사유 입력 - var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html")); - var template = await resp.text(); + let resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html")); + let template = await resp.text(); dialog.open({ - id : "inputDelRsnDialog", - title: "삭제", - size : "lg", - content: template, - init : () => { - setDialogZindex(); - }, - onOK : () => { + id: "inputDelRsnDialog" + , title: "삭제" + , size: "lg" + , content: template + , init: () => { setDialogZindex(); } + , onOK: () => { $P.callbackRsn({ reason : $("#reason").val() }); } }); @@ -578,8 +575,8 @@ }); // 사전통지 발송 삭제 버튼 이벤트 - $("#btnRemoveSndng--${pageName}").on("click", function() { - $P.fnRemoveSndng($(this).attr("title")); + $("#btnRemoveAdvntceSndng--${pageName}").on("click", function() { + $P.fnRemove($(this).attr("title")); }); // DataTables width 변경 조정 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 69c1676e..845e71fb 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 @@ -1,12 +1,12 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> +사전통지 발송 현황 상세 정보 +
    - 사전통지 발송 현황 상세 정보 -
    @@ -303,7 +303,7 @@ if (!params) return; ajax.post({ - url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/nxrpA01List.do") + url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpA01List.do") , data : params || {} , success : resp => { // S 또는 F 를 버튼 title 로 변경하여 메시지 출력 @@ -322,7 +322,7 @@ if (!params) return; ajax.post({ - url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/080/nxrpA03List.do") + url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/991/nxrpA03List.do") , data : params || {} , success : resp => { // S 또는 F 를 버튼 title 로 변경하여 메시지 출력 diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01090-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01090-main.jsp index 13bc3039..46ab388f 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01090-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01090-main.jsp @@ -1,12 +1,12 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> +고지서 발송 대상 +
    - 고지서 발송 현황 -
    @@ -125,11 +125,11 @@
    - - @@ -224,6 +224,13 @@ **************************************************************************/ pageObject["${pageName}"] = {}; + // 공통 코드 + var FIM004 = new CommonCodes(${FIM004}, true); // 주정차위반 내역 코드 + var FIM005 = new CommonCodes(${FIM005}, true); // 전용차로위반 내역 코드 + var FIM006 = new CommonCodes(${FIM006}, true); // 장애인주차위반 내역 코드 + var FIM061 = new CommonCodes(${FIM061}, true); // 전기차 충전구역 및 충전방해 위반 코드 + var FIM064 = new CommonCodes(${FIM064}, true); // 화물자동차 밤샘주차 위반 코드 + /************************************************************************** * script 진입 **************************************************************************/ @@ -240,17 +247,17 @@ * DatasetControl **************************************************************************/ $P.control = new DatasetControl({ - prefix : "nhtSndng" - , prefixName : "고지서 발송 현황" - , infoSize : "xxl" - , keymapper : info => info ? info.SNDNG_ID : "" + prefix : "nhtTrgt" + , prefixName : "고지서 발송 대상" + , infoSize : "xl" + , keymapper : info => info ? info.CRDN_ID : "" , dataGetter : obj => obj.${infoPrefix}List , appendData : true , formats : { - SNDNG_YMD : dateFormat - , SNDNG_END_YMD : dateFormat - , TNOCS : numberFormat - , GRAMT : numberFormat + CVLCPT_RCPT_YMD : dateFormat + , CRDN_YMD_TM : datetimeFormat + , FFNLG_AMT : numberFormat + , ADVNTCE_AMT : numberFormat , REG_DT : datetimeFormat , MDFCN_DT : datetimeFormat } @@ -300,8 +307,8 @@ checkbox.prop("checked", keys.includes(checkbox.val())); }); - // 삭제 버튼 - $("#btnRemove--${pageName}").prop("disabled", keys.length < 1); + // 선택 대상 등록 버튼 + $("#btnCreateSlctnTrgt--${pageName}").prop("disabled", keys.length < 1); // DataTables(그리드) 전체 선택(checkbox) if (keys.length < 1) { @@ -313,56 +320,36 @@ } }; - // 발송 상세 - $P.control.getInfo = (sndngId) => { - if (typeof sndngId == "undefined" || sndngId == null || sndngId == "") return; + // 고지서 발송 등록 dialog + $P.control.getInfo = (params) => { + if (!params) return; + + let dialogTitle = ""; + + if (params.callPurpose == "create") { + dialogTitle = $P.control.prefixName + " 등록"; + } else if (params.callPurpose == "update") { + dialogTitle = $P.control.prefixName + " 수정"; + } else { + dialogTitle = $P.control.prefixName + " 정보"; + } - let params = $P.control.query; - params.callPurpose = "view"; // 호출 용도 - params.pageNum = 1; // 페이지 번호 - params.sndngId = sndngId; // 발송 ID ajax.get({ url : $P.control.urls.getInfo - , data : params + , data : params || {} , success : resp => { dialog.open({ - id : $P.control.prefixed("DtlDialog") - , title : "고지서 발송 상세 내용" + id : $P.control.prefixed("Dialog") + , title : dialogTitle , content : resp , size : $P.control.infoSize + , onClose : () => { $P.refreshList(); } }); } }); } - // 삭제 callback - $P.control.onRemove = (resp) => { - let btnTitle = $("#btnRemove--${pageName}").attr("title"); - let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, btnTitle); - - // 메시지 출력 - dialog.alert({ - content : showMessage - , onOK : () => { } - }); - - if (resp.saved) { - $P.refreshList(); - } - } - - // 삭제 - $P.control.remove = (params) => { - if (!params) return; - - ajax.post({ - url : $P.control.urls.remove - , data : params - , success : resp => $P.control.onRemove(resp) - }); - } - /************************************************************************** * DataTables 이벤트 **************************************************************************/ @@ -444,41 +431,40 @@ }); } - // 검색 자료 재조회 - $P.refreshList = () => { - $P.control.untilPageNum = $P.control.query.pageNum; - $P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum; + // 개별총정보 dialog + $P.getTotalInfo = (crdnId) => { + if (typeof crdnId == "undefined" || crdnId == null || crdnId == "") return; - $P.control.load(1); - } - - // 신규 등록 dialog -> callback 추가 - $P.getNhtSndngInfo = (params) => { - if (!params) return; + let params = { + callControlName : "pageObject['${pageName}'].control" + , sggCd : $("#sggCd--${pageName}").val() + , taskSeCd : $("input[name=taskSeCd]:checked").val() + , crdnId : crdnId + } ajax.get({ - url : wctx.url("/" + params.taskSeCd + $P.PrefixUrl + "/110/info.do") - , data : params || {} + url : wctx.url("/" + params.taskSeCd + "/sprt/sprt02/010/main.do") + , data : params , success : resp => { dialog.open({ - id : $P.control.prefixed("Dialog") - , title :"고지서 발송 대상" + id : "totalInfoMainDialog" + , title : "개별총정보" , content : resp - , size : "lg" - , onClose : () => { $P.refreshList(); } + , size : "xxl" + , init : () => { } + , onClose : () => { } }); } }); } - // 사유 callback - $P.callbackRsn = (obj) => { - // 서버에 전송할 data(파라미터) 생성 - let params = {}; - params.sndngIds = selected.join(","); // Ids - params.delRsn = obj.reason; // 삭제 사유 + // 검색 자료 재조회 + $P.refreshList = () => { + $P.control.untilPageNum = $P.control.query.pageNum; + $P.control.query.fetchSize = $P.control.defaultFetchSize * $P.control.query.pageNum; + $P.control.query.crdnIDs = null; - $P.control.remove(params); + $P.control.load(1); } /************************************************************************** @@ -504,9 +490,11 @@ // 검색 버튼 이벤트 $P.fnSearchList = () => { + // 검색조건 // 검색조건 $P.control.query = $P.formFields.get(); $P.control.query.fetchSize = $P.control.defaultFetchSize; // 한번에 조회되는 자료 건수 + $P.control.query.sndngSeCdFrom = "03"; // 발송 구분 코드 - 03 부과고지서 $P.control.query.sndngSeCdTo = "08"; // 발송 구분 코드 - 08 체납고지서 $P.control.query.delYn = "N"; // 삭제 여부 @@ -521,7 +509,6 @@ content : "검색된 자료가 없습니다." , onOK : () => { } }); - return; } @@ -538,46 +525,45 @@ $P.getFindUser(); } - // 등록 버튼 이벤트 - $P.fnCreate = () => { - let params = { - callPurpose : "create" - , sggCd : $P.control.dataset.getValue("SGG_CD") // 시군구 코드 - , taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 - }; - - $P.getNhtSndngInfo(params); - } - - // 삭제 버튼 이벤트 - $P.fnRemove = () => { + // 선택 발송대상 등록 버튼 이벤트 + $P.fnCreateSlctnTrgt = (title) => { // 선택 자료 let selected = $P.control.dataset.getKeys("selected"); if (selected.length < 1) return; - // 삭제 메세지 확인 - dialog.alert({ - content : "선택하신 " + selected.length + "건의 " + $P.control.prefixName + " 정보를 삭제하시겠습니까?" - , onOK : async() => { - // 삭제 사유 입력 - var resp = await fetch(wctx.url("/resources/html/inputRsnDialog.html")); - var template = await resp.text(); + // 파라미터 설정 + let params = $P.control.query; // 검색 조건 + params.callPurpose = "create"; // 호출 용도 (등록) + params.title = title; // 타이틀 + params.crdnIDs = selected.join(","); // Ids + params.sndngSeCd = "03"; // 발송 구분 코드(FIM047) - 03 부과고지서 + params.resndYn = "N"; // 재발송 여부 + params.delYn = "N"; // 삭제 여부 - dialog.open({ - id : "inputDelRsnDialog", - title: "삭제", - size : "lg", - content: template, - init : () => { - setDialogZindex(); - }, - onOK : () => { - $P.callbackRsn({ reason : $("#reason").val() }); - } - }); - } - }); + $P.control.getInfo(params); + } + + // 전체 발송대상 등록 버튼 이벤트 + $P.fnCreateWholTrgt = (title) => { + if ($P.control.dataset.empty) { + dialog.alert({ + content : "검색된 자료가 없습니다." + , onOK : () => { } + }); + + return; + } + + // 파라미터 설정 + let params = $P.control.query; // 검색 조건 + params.callPurpose = "create"; // 호출 용도 (등록) + params.title = title; // 타이틀 + params.sndngSeCd = "03"; // 발송 구분 코드 - 03 부과고지서 + params.resndYn = "N"; // 재발송 여부 + params.delYn = "N"; // 삭제 여부 + + $P.control.getInfo(params); } /************************************************************************** @@ -611,9 +597,14 @@ }); }); - // 업무 버튼 이벤트 - $("#btnCreate--${pageName}").on("click", () => $P.fnCreate()); // 고지서 발송 등록 - $("#btnRemove--${pageName}").on("click", () => $P.fnRemove()); // 고지서 발송 삭제 + // 선택 대상 등록 버튼 이벤트 + $("#btnCreateSlctnTrgt--${pageName}").on("click", function() { + $P.fnCreateSlctnTrgt($(this).attr("title")); + }); + // 전체 대상 등록 버튼 이벤트 + $("#btnCreateWholTrgt--${pageName}").on("click", function() { + $P.fnCreateWholTrgt($(this).attr("title")); + }); // DataTables width 변경 조정 fnMakeResizableTable($("#table-responsive--${pageName}")[0]); @@ -647,7 +638,6 @@ // 동적 검색 $("#byOutput--${pageName}").val("동적 검색"); - // 사용자 이름 $("#schRgtrNm--${pageName}").prop("readonly", true); } @@ -664,7 +654,6 @@ $("#schSndngYmdTo--${pageName}").datepicker("setDate", new Date()); } - // 업무 구분별 설정 $P.setTask = (taskSeCd) => { let clsForTask = taskSeCd.toLowerCase(); 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 af5a2672..8f05a75f 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 @@ -1,144 +1,151 @@ <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> <%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> +고지서 발송 대상 상세 정보 +
    -
    - -
    - -
    - - -
    - - -
    - -
      -
    -
    - - - - - - - - - + +
    + + + -
    - - -
    - + + +
    + + + + +
    + +
    + + + + +
    + +
    + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + +
    + +
    + + +
    +
    + +
    - -
    + + +
    + + + + + + +
    + +

    + +
    + +
    +
    + +
    + + +
    + +
    + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + +
    + +
    + + +
    +
    +
    + +
    + + + + + + +
    +
    +
    -
    - +
    diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-info.jsp deleted file mode 100644 index c93dd9cf..00000000 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-info.jsp +++ /dev/null @@ -1,323 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> -<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> - - -
    - -
    - 고지서 발송 대상 - - -
    - -
    - - - - - - - -
    - - -
    - - - - -
    - -
    - - -
    - -
    - - -
    - -
    - - - -
    - -
    - - -
    - -
    - - - -
    - -
    - - -
    - -
    - - ~ - -
    -
    -
    -
    - -

    - -
    - -
    -
    - -
    - - -
    - -
    - - -
    - -
    - - - -
    - -
    - - - -
    - -
    - - -
    - -
    - - -
    -
    -
    - -
    - - - - - - -
    -
    - -
    -
    - - diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-main.jsp new file mode 100644 index 00000000..918a1704 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01110-main.jsp @@ -0,0 +1,710 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> +<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> + +고지서 발송 현황 + + +
    + +
    + +
    +
    + +
    + + + + + +
    + + + +
    + + + + + + + + +
    + + + +
    + + +
    + +
      +
    +
    + + + + + +
    +
    + + + +
    + +
    + +
    +
    +
    + + +
    +
    + + + diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp new file mode 100644 index 00000000..cf453c5c --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01120-info.jsp @@ -0,0 +1,481 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> +<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> + +고지서 발송 현황 상세 정보 + + +
    + +
    + +
    +
    + +
    + +
    + + +
    + + +
    + +
      +
    +
    + + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    + + +