From f7c9378afdd0724e0dca9226877d5ac3a28b848b Mon Sep 17 00:00:00 2001 From: jjh Date: Tue, 26 Sep 2023 18:49:29 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B0=9C=EC=86=A1,=EB=B0=98=EC=86=A1=20?= =?UTF-8?q?=EB=A9=94=EB=89=B4=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cokr/xit/fims/sndb/SndbQuery.java | 11 + .../{Sndb01Service.java => SndngService.java} | 2 +- .../bean/{Sndb01Bean.java => SndngBean.java} | 4 +- ...ServiceBean.java => SndngServiceBean.java} | 60 +-- .../xit/fims/sndb/web/Sndb01Controller.java | 374 ++------------ .../xit/fims/sndb/web/Sndb02Controller.java | 109 ++++ .../xit/fims/sndb/web/Sndb03Controller.java | 73 +++ .../xit/fims/sndb/web/Sndb04Controller.java | 468 ++++++++++++++++++ .../xit/fims/sprt/web/Sprt02Controller.java | 10 +- .../cokr/xit/fims/task/web/CmnController.java | 22 +- .../cokr/xit/fims/task/web/DpvController.java | 26 +- .../sql/mapper/fims/sndb/sndng-mapper.xml | 2 + .../WEB-INF/jsp/fims/sndb/sndb01010-main.jsp | 53 +- .../WEB-INF/jsp/fims/sndb/sndb01020-info.jsp | 227 +++++++++ 14 files changed, 1050 insertions(+), 391 deletions(-) rename src/main/java/cokr/xit/fims/sndb/service/{Sndb01Service.java => SndngService.java} (99%) rename src/main/java/cokr/xit/fims/sndb/service/bean/{Sndb01Bean.java => SndngBean.java} (99%) rename src/main/java/cokr/xit/fims/sndb/service/bean/{Sndb01ServiceBean.java => SndngServiceBean.java} (64%) create mode 100644 src/main/java/cokr/xit/fims/sndb/web/Sndb02Controller.java create mode 100644 src/main/java/cokr/xit/fims/sndb/web/Sndb03Controller.java create mode 100644 src/main/java/cokr/xit/fims/sndb/web/Sndb04Controller.java create mode 100644 src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp diff --git a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java index 345349fb..25fb0b17 100644 --- a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java +++ b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java @@ -38,6 +38,7 @@ public class SndbQuery extends CmmnQuery { private String levyExclSeNm; // 부과제외_부과 제외 구분 명 private String vhrno; // 단속(TB_CRDN)_차량번호 private String rtpyrNm; // 납부자(TB_PAYER)_납부자 명 + private String crdnSttsCd; // 단속(TB_CRDN)_단속 상태 코드 // ETC private String callPurpose; // 자료 조회시 호출용도. (view 조회, create 등록, update 수정, refresh 재조회) private String delYn; // 삭제 여부 @@ -234,6 +235,16 @@ public class SndbQuery extends CmmnQuery { return self(); } + + public String getCrdnSttsCd() { + return ifEmpty(crdnSttsCd, () -> null); + } + + public T setCrdnSttsCd(String crdnSttsCd) { + this.crdnSttsCd = crdnSttsCd; + + return self(); + } // 동적 검색 조건 /////////////////////////////////////////////////////////////// // ETC ///////////////////////////////////////////////////////////////////// diff --git a/src/main/java/cokr/xit/fims/sndb/service/Sndb01Service.java b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java similarity index 99% rename from src/main/java/cokr/xit/fims/sndb/service/Sndb01Service.java rename to src/main/java/cokr/xit/fims/sndb/service/SndngService.java index 17a7c239..3efa07f0 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/Sndb01Service.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -18,7 +18,7 @@ import cokr.xit.foundation.data.DataObject; * ================================ * */ -public interface Sndb01Service { +public interface SndngService { /**지정한 조건에 따라 계도장 발송 대상 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/Sndb01Bean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java similarity index 99% rename from src/main/java/cokr/xit/fims/sndb/service/bean/Sndb01Bean.java rename to src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index 316acfb9..0c1962da 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/Sndb01Bean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -26,8 +26,8 @@ import cokr.xit.fims.sndb.dao.SvbtcMapper; * ================================ * */ -@Component("sndb01Bean") -public class Sndb01Bean extends AbstractComponent { +@Component("sndngBean") +public class SndngBean extends AbstractComponent { /** 발송 대장 정보 DAO */ @Resource(name = "sndngMapper") diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/Sndb01ServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java similarity index 64% rename from src/main/java/cokr/xit/fims/sndb/service/bean/Sndb01ServiceBean.java rename to src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java index 40481ecb..24587ac1 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/Sndb01ServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngServiceBean.java @@ -10,7 +10,7 @@ import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.Sndng; import cokr.xit.fims.sndb.SndngDtl; import cokr.xit.fims.sndb.Svbtc; -import cokr.xit.fims.sndb.service.Sndb01Service; +import cokr.xit.fims.sndb.service.SndngService; import cokr.xit.foundation.component.AbstractServiceBean; import cokr.xit.foundation.data.DataObject; @@ -24,61 +24,61 @@ import cokr.xit.foundation.data.DataObject; * ================================ * */ -@Service("sndb01Service") -public class Sndb01ServiceBean extends AbstractServiceBean implements Sndb01Service { +@Service("sndngService") +public class SndngServiceBean extends AbstractServiceBean implements SndngService { /** 발송 대장 정보 Bean */ - @Resource(name = "sndb01Bean") - private Sndb01Bean sndb01Bean; + @Resource(name = "sndngBean") + private SndngBean sndngBean; @Override public List getWrngSndngTrgtList(SndbQuery req) { - return sndb01Bean.getWrngSndngTrgtList(req); + return sndngBean.getWrngSndngTrgtList(req); } @Override public List getWrngSndngTrgts(SndbQuery req) { - return sndb01Bean.getWrngSndngTrgts(req); + return sndngBean.getWrngSndngTrgts(req); } @Override public List getWrngSndngList(SndbQuery req) { - return sndb01Bean.getWrngSndngList(req); + return sndngBean.getWrngSndngList(req); } @Override public List getWrngSndngs(SndbQuery req) { - return sndb01Bean.getWrngSndngs(req); + return sndngBean.getWrngSndngs(req); } @Override public List getAdvntceSndngTrgtList(SndbQuery req) { - return sndb01Bean.getAdvntceSndngTrgtList(req); + return sndngBean.getAdvntceSndngTrgtList(req); } @Override public List getAdvntceSndngTrgts(SndbQuery req) { - return sndb01Bean.getAdvntceSndngTrgts(req); + return sndngBean.getAdvntceSndngTrgts(req); } @Override public List getAdvntceSndngList(SndbQuery req) { - return sndb01Bean.getAdvntceSndngList(req); + return sndngBean.getAdvntceSndngList(req); } @Override public List getAdvntceSndngs(SndbQuery req) { - return sndb01Bean.getAdvntceSndngs(req); + return sndngBean.getAdvntceSndngs(req); } @Override public List getNhtSndngList(SndbQuery req) { - return sndb01Bean.getNhtSndngList(req); + return sndngBean.getNhtSndngList(req); } @Override public List getNhtSndngs(SndbQuery req) { - return sndb01Bean.getNhtSndngs(req); + return sndngBean.getNhtSndngs(req); } @@ -91,77 +91,77 @@ public class Sndb01ServiceBean extends AbstractServiceBean implements Sndb01Serv @Override public List getSndngList(SndbQuery req) { - return sndb01Bean.getSndngList(req); + return sndngBean.getSndngList(req); } @Override public List getSndngs(SndbQuery req) { - return sndb01Bean.getSndngs(req); + return sndngBean.getSndngs(req); } @Override public boolean createSndng(Sndng sndng) { - return sndb01Bean.createSndng(sndng); + return sndngBean.createSndng(sndng); } @Override public boolean updateSndng(Sndng sndng) { - return sndb01Bean.updateSndng(sndng); + return sndngBean.updateSndng(sndng); } @Override public boolean removeSndng(Sndng sndng) { - return sndb01Bean.removeSndng(sndng); + return sndngBean.removeSndng(sndng); } @Override public List getSndngDtlList(SndbQuery req) { - return sndb01Bean.getSndngDtlList(req); + return sndngBean.getSndngDtlList(req); } @Override public List getSndngDtls(SndbQuery req) { - return sndb01Bean.getSndngDtls(req); + return sndngBean.getSndngDtls(req); } @Override public boolean createSndngDtl(SndngDtl sndngDtl) { - return sndb01Bean.createSndngDtl(sndngDtl); + return sndngBean.createSndngDtl(sndngDtl); } @Override public boolean updateSndngDtl(SndngDtl sndngDtl) { - return sndb01Bean.updateSndngDtl(sndngDtl); + return sndngBean.updateSndngDtl(sndngDtl); } @Override public boolean removeSndngDtl(SndngDtl sndngDtl) { - return sndb01Bean.removeSndngDtl(sndngDtl); + return sndngBean.removeSndngDtl(sndngDtl); } @Override public List getSvbtcList(SndbQuery req) { - return sndb01Bean.getSvbtcList(req); + return sndngBean.getSvbtcList(req); } @Override public List getSvbtcs(SndbQuery req) { - return sndb01Bean.getSvbtcs(req); + return sndngBean.getSvbtcs(req); } @Override public boolean createSvbtc(Svbtc svbtc) { - return sndb01Bean.createSvbtc(svbtc); + return sndngBean.createSvbtc(svbtc); } @Override public boolean updateSvbtc(Svbtc svbtc) { - return sndb01Bean.updateSvbtc(svbtc); + return sndngBean.updateSvbtc(svbtc); } @Override public boolean removeSvbtc(Svbtc svbtc) { - return sndb01Bean.removeSvbtc(svbtc); + return sndngBean.removeSvbtc(svbtc); } } 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 63649b28..f10f5285 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -5,17 +5,12 @@ import java.util.Map; import javax.annotation.Resource; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import cokr.xit.base.code.CommonCode; import cokr.xit.base.web.ApplicationController; import cokr.xit.fims.sndb.SndbQuery; -import cokr.xit.fims.sndb.Sndng; -import cokr.xit.fims.sndb.SndngDtl; -import cokr.xit.fims.sndb.Svbtc; -import cokr.xit.fims.sndb.service.Sndb01Service; +import cokr.xit.fims.sndb.service.SndngService; /**발송 대장 서비스의 웹 컨트롤러 * @@ -35,20 +30,15 @@ public class Sndb01Controller extends ApplicationController { public static final String warningSendingTargetMain = "/010/main.do" // 계도장 발송 대상 메인 화면 , getWrngSndngTrgtList = "/010/list.do" // 계도장 발송 대상 목록 조회 - , warningSendingMain = "/020/main.do" // 계도장 발송 현황 메인 화면 - , getWrngSndngList = "/020/list.do" // 계도장 발송 현황 목록 조회 - , advanceNoticeSendingTargetMain = "/030/main.do" // 사전통보 발송 대상 메인 화면 - , getAdvntceSndngTrgtList = "/030/list.do" // 사전통보 발송 대상 목록 조회 - , advanceNoticeSendingMain = "/040/main.do" // 사전통보 발송 현황 메인 화면 - , getAdvntceSndngList = "/040/list.do" // 사전통보 발송 현황 목록 조회 - , noticeSheetSendingMain = "/060/main.do" // 고지서 발송 현황 메인 화면 - , getNhtSndngList = "/060/list.do" // 고지서 발송 현황 목록 조회 + , getWrngSndngTrgtInfo = "/020/info.do" // 계도장 발송 대상 등록 + , warningSendingMain = "/030/main.do" // 계도장 발송 현황 메인 화면 + , getWrngSndngList = "/030/list.do" // 계도장 발송 현황 목록 조 ; } /**발송 대장 서비스*/ - @Resource(name = "sndb01Service") - private Sndb01Service sndb01Service; + @Resource(name = "sndngService") + private SndngService sndngService; /**계도장 발송 대상 자료 메인화면(sndb/sndb01/010-main)을 연다. * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. @@ -78,364 +68,74 @@ public class Sndb01Controller extends ApplicationController { * @param req 발송 대장 조회 조건 * @return jsonView *
 {
-	 *     "sndngList": [계도장 발송 대상 목록]
-	 *     "sndngStart": 계도장 발송 대상 목록 시작 인덱스
-	 *     "sndngFetch": 한 번에 가져오는 계도장 발송 대상 목록 수
-	 *     "sndngTotal": 조회 결과 찾은 전체 계도장 발송 대상 수
+	 *     "wrngSndngTrgtList": [계도장 발송 대상 목록]
+	 *     "wrngSndngTrgtStart": 계도장 발송 대상 목록 시작 인덱스
+	 *     "wrngSndngTrgtFetch": 한 번에 가져오는 계도장 발송 대상 목록 수
+	 *     "wrngSndngTrgtTotal": 조회 결과 찾은 전체 계도장 발송 대상 수
 	 * }
*/ public ModelAndView getWrngSndngTrgtList(SndbQuery req) { - List result = sndb01Service.getWrngSndngTrgtList(setFetchSize(req)); + List result = sndngService.getWrngSndngTrgtList(setFetchSize(req)); return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngTrgt"); } - /**계도장 발송 현황 메인화면(sndb/sndb01/020-main)을 연다. - * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. - * @return /sndb/sndb01/020-main - */ - public ModelAndView warningSendingMain() { - ModelAndView mav = new ModelAndView("fims/sndb/sndb01020-main"); - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM054"); - - return mav.addObject("pageName", "sndb01020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "sndng") // prefix - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) - ; - } - - /**계도장 발송 현황 목록을 조회하여 반환한다.
- * {@link SndngService#getSndngList(SndngQuery)} 참고 - * @param req 발송 대장 조회 조건 - * @return jsonView - *
 {
-	 *     "sndngList": [계도장 발송 현황 목록]
-	 *     "sndngStart": 계도장 발송 현황 목록 시작 인덱스
-	 *     "sndngFetch": 한 번에 가져오는 계도장 발송 현황 목록 수
-	 *     "sndngTotal": 조회 결과 찾은 전체 계도장 발송 현황 수
-	 * }
- */ - public ModelAndView getWrngSndngList(SndbQuery req) { - List result = sndb01Service.getWrngSndngList(setFetchSize(req)); - - return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); - } - - /**사전 통보 발송 대상 자료 메인화면(sndb/sndb01/030-main)을 연다. - * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. - * @return /sndb/sndb01/030-main - */ - public ModelAndView advanceNoticeSendingTargetMain() { - ModelAndView mav = new ModelAndView("fims/sndb/sndb01030-main"); - - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM054"); - - return mav.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "sndng") // prefix - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) - ; - } - - /**사전 통보 발송 대상 목록을 조회하여 반환한다.
- * {@link SndngService#getSndngList(SndngQuery)} 참고 - * @param req 발송 대장 조회 조건 - * @return jsonView - *
 {
-	 *     "sndngList": [사전 통보 발송 대상 목록]
-	 *     "sndngStart": 사전 통보 발송 대상 목록 시작 인덱스
-	 *     "sndngFetch": 한 번에 가져오는 사전 통보 발송 대상 목록 수
-	 *     "sndngTotal": 조회 결과 찾은 전체 사전 통보 발송 대상 수
-	 * }
+ /**계도장 발송 대상 정보 화면(sndb/sndb01/020-info)을 연다. + * @param crdnIDs 단속 IDs + * @return fims/sndb/sndb01020-info 또는 jsonView + *
{
+	 *     "wrngSndngTrgts": [계도장 발송 대상 목록]
+	 * }
*/ - public ModelAndView getAdvntceSndngTrgtList(SndbQuery req) { - List result = sndb01Service.getAdvntceSndngTrgtList(setFetchSize(req)); + public ModelAndView getWrngSndngTrgtInfo(SndbQuery req) { + List wrngSndngTrgts = sndngService.getWrngSndngTrgts(req); - return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); - } + boolean json = jsonResponse(); - /**사전 통보 발송 현황 메인화면(sndb/sndb01/040-main)을 연다. - * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. - * @return /sndb/sndb01/040-main - */ - public ModelAndView advanceNoticeSendingMain() { - ModelAndView mav = new ModelAndView("fims/sndb/sndb01040-main"); + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01020-info"); // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM054"); - return mav.addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "sndng") // prefix - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + return mav + .addObject("pageName", "sndb01020") + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + .addObject("wrngSndngTrgts", json ? wrngSndngTrgts : toJson(wrngSndngTrgts)) // 계도장 발송 대상 정보 ; } - /**사전 통보 발송 현황 목록을 조회하여 반환한다.
- * {@link SndngService#getSndngList(SndngQuery)} 참고 - * @param req 발송 대장 조회 조건 - * @return jsonView - *
 {
-	 *     "sndngList": [사전 통보 발송 현황 목록]
-	 *     "sndngStart": 사전 통보 발송 현황 목록 시작 인덱스
-	 *     "sndngFetch": 한 번에 가져오는 사전 통보 발송 현황 목록 수
-	 *     "sndngTotal": 조회 결과 찾은 전체 사전 통보 발송 현황 수
-	 * }
- */ - public ModelAndView getAdvntceSndngList(SndbQuery req) { - List result = sndb01Service.getAdvntceSndngList(setFetchSize(req)); - - return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); - } - - /**고지서 발송 현황 메인화면(sndb/sndb01/060-main)을 연다. + /**계도장 발송 현황 메인화면(sndb/sndb01/020-main)을 연다. * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. - * @return /sndb/sndb01/060-main + * @return /sndb/sndb01/020-main */ - public ModelAndView noticeSheetSendingMain() { - ModelAndView mav = new ModelAndView("fims/sndb/sndb01060-main"); + public ModelAndView warningSendingMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01020-main"); // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM054"); - return mav.addObject("pageName", "sndb01060") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + return mav.addObject("pageName", "sndb01020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "sndng") // prefix .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) ; } - /**고지서 발송 현황 목록을 조회하여 반환한다.
- * {@link SndngService#getSndngList(SndngQuery)} 참고 - * @param req 발송 대장 조회 조건 - * @return jsonView - *
 {
-	 *     "sndngList": [고지서 발송 현황 목록]
-	 *     "sndngStart": 고지서 발송 현황 목록 시작 인덱스
-	 *     "sndngFetch": 한 번에 가져오는 고지서 발송 현황 목록 수
-	 *     "sndngTotal": 조회 결과 찾은 전체 고지서 발송 현황 수
-	 * }
- */ - public ModelAndView getNhtSndngList(SndbQuery req) { - List result = sndb01Service.getNhtSndngList(setFetchSize(req)); - - return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); - } - - - - - - /**발송 대장 목록을 조회하여 반환한다.
+ /**계도장 발송 현황 목록을 조회하여 반환한다.
* {@link SndngService#getSndngList(SndngQuery)} 참고 * @param req 발송 대장 조회 조건 * @return jsonView *
 {
-	 *     "sndngList": [발송 대장 목록]
-	 *     "sndngStart": 발송 대장 목록 시작 인덱스
-	 *     "sndngFetch": 한 번에 가져오는 발송 대장 목록 수
-	 *     "sndngTotal": 조회 결과 찾은 전체 발송 대장 수
+	 *     "sndngList": [계도장 발송 현황 목록]
+	 *     "sndngStart": 계도장 발송 현황 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 계도장 발송 현황 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 계도장 발송 현황 수
 	 * }
*/ - @RequestMapping(name = "발송 대장 조회", value = "/010/sndngList.do") - public ModelAndView getSndngList(SndbQuery req) { - List result = sndb01Service.getSndngList(setFetchSize(req)); + public ModelAndView getWrngSndngList(SndbQuery req) { + List result = sndngService.getWrngSndngList(setFetchSize(req)); return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); } - /**발송 대장를 등록한다. - * @param sndng 발송 대장 정보 - * @return jsonView - *
 {
-	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "발송 대장 등록", value = "/010/createSndng.do") - public ModelAndView createSndng(Sndng sndng) { - boolean saved = sndb01Service.createSndng(sndng); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - /**발송 대장 정보를 수정한다. - * @param sndng 발송 대장 정보 - * @return jsonView - *
 {
-	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "발송 대장 수정", value = "/010/updateSndng.do") - public ModelAndView updateSndng(Sndng sndng) { - boolean saved = sndb01Service.updateSndng(sndng); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - /**지정한 발송 대장를 제거한다. - * @param sndngIDs 발송 대장 아이디 - * @return jsonView - *
 {
-	 *     "affected": 저장된 정보수
-	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "발송 대장 제거", value = "/010/removeSndng.do") - public ModelAndView removeSndng(Sndng sndng) { - boolean saved = sndb01Service.removeSndng(sndng); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - /**발송 상세 목록을 조회하여 반환한다.
- * {@link SndngDtlService#getSndngDtlList(SndbQuery)} 참고 - * @param req 발송 상세 조회 조건 - * @return jsonView - *
 {
-	 *     "sndngDtlList": [발송 상세 목록]
-	 *     "sndngDtlStart": 발송 상세 목록 시작 인덱스
-	 *     "sndngDtlFetch": 한 번에 가져오는 발송 상세 목록 수
-	 *     "sndngDtlTotal": 조회 결과 찾은 전체 발송 상세 수
-	 * }
- */ - @RequestMapping(name = "발송 상세 조회", value = "/010/sndngDtlList.do") - public ModelAndView getSndngDtlList(SndbQuery req) { - List result = sndb01Service.getSndngDtlList(setFetchSize(req)); - - return setCollectionInfo(new ModelAndView("jsonView"), result, "sndngDtl"); - } - - /**발송 상세를 등록한다. - * @param sndngDtl 발송 상세 정보 - * @return jsonView - *
 {
-	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "발송 상세 등록", value = "/010/createSndngDtl.do") - public ModelAndView createSndngDtl(SndngDtl sndngDtl) { - boolean saved = sndb01Service.createSndngDtl(sndngDtl); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - /**발송 상세 정보를 수정한다. - * @param sndngDtl 발송 상세 정보 - * @return jsonView - *
 {
-	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "발송 상세 수정", value = "/010/updateSndngDtl.do") - public ModelAndView updateSndngDtl(SndngDtl sndngDtl) { - boolean saved = sndb01Service.updateSndngDtl(sndngDtl); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - /**지정한 발송 상세를 제거한다. - * @param sndngDtlIDs 발송 상세 아이디 - * @return jsonView - *
 {
-	 *     "affected": 저장된 정보수
-	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "발송 상세 제거", value = "/010/removeSndngDtl.do") - public ModelAndView removeSndngDtl(SndngDtl sndngDtl) { - boolean saved = sndb01Service.removeSndngDtl(sndngDtl); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - - - - /**공시송달 대장 관리 메인화면(fims/sndb/sndb01120-main)을 연다. - * 조건없는 {@link #getSvbtcList(SndbQuery) 공시송달 대장 조회 결과}를 포함시킨다. - * @return /svbtc/svbtc-main - */ - @RequestMapping(name = "공시송달 대장 메인", value = "/120/main.do") - public ModelAndView ServiceByPublicNoticeMain() { - ModelAndView mav = new ModelAndView("fims/sndb/sndb01120-main"); - - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM054"); - - return mav.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "sndng") // prefix - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) - ; - } - - /**공시송달 대장 목록을 조회하여 반환한다.
- * {@link SvbtcService#getSvbtcList(SndbQuery)} 참고 - * @param req 공시송달 대장 조회 조건 - * @return jsonView - *
 {
-	 *     "svbtcList": [공시송달 대장 목록]
-	 *     "svbtcStart": 공시송달 대장 목록 시작 인덱스
-	 *     "svbtcFetch": 한 번에 가져오는 공시송달 대장 목록 수
-	 *     "svbtcTotal": 조회 결과 찾은 전체 공시송달 대장 수
-	 * }
- */ - @RequestMapping(name = "공시송달 대장 조회", value = "/120/list.do") - public ModelAndView getSvbtcList(SndbQuery req) { - List result = sndb01Service.getSvbtcList(setFetchSize(req)); - - return setCollectionInfo(new ModelAndView("jsonView"), result, "svbtc"); - } - - /**공시송달 대장를 등록한다. - * @param svbtc 공시송달 대장 정보 - * @return jsonView - *
 {
-	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "공시송달 대장 등록", value = "/120/create.do") - public ModelAndView createSvbtc(Svbtc svbtc) { - boolean saved = sndb01Service.createSvbtc(svbtc); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - /**공시송달 대장 정보를 수정한다. - * @param svbtc 공시송달 대장 정보 - * @return jsonView - *
 {
-	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "공시송달 대장 수정", value = "/120/update.do") - public ModelAndView updateSvbtc(Svbtc svbtc) { - boolean saved = sndb01Service.updateSvbtc(svbtc); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - - /**지정한 공시송달 대장를 제거한다. - * @param svbtcIDs 공시송달 대장 아이디 - * @return jsonView - *
 {
-	 *     "affected": 저장된 정보수
-	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
-	 * }
- */ - @PostMapping(name = "공시송달 대장 제거", value = "/120/remove.do") - public ModelAndView removeSvbtc(Svbtc svbtc) { - boolean saved = sndb01Service.removeSvbtc(svbtc); - - return new ModelAndView("jsonView") - .addObject("saved", saved); - } - } diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb02Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb02Controller.java new file mode 100644 index 00000000..8791c953 --- /dev/null +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb02Controller.java @@ -0,0 +1,109 @@ +package cokr.xit.fims.sndb.web; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.web.servlet.ModelAndView; + +import cokr.xit.base.code.CommonCode; +import cokr.xit.base.web.ApplicationController; +import cokr.xit.fims.sndb.SndbQuery; +import cokr.xit.fims.sndb.service.SndngService; + +/**발송 대장 서비스의 웹 컨트롤러 +* +*

상세 설명: +* +*

+* ============ 변경 이력 ============
+* 2023-08-24	JoJH 최초 작성
+* ================================
+* 
+*/ +public class Sndb02Controller extends ApplicationController { + + public static final String CLASS_URL = "/sndb/sndb02"; + + public class METHOD_URL { + public static final String + advanceNoticeSendingTargetMain = "/010/main.do" // 사전통보 발송 대상 메인 화면 + , getAdvntceSndngTrgtList = "/010/list.do" // 사전통보 발송 대상 목록 조회 + , getAdvntceSndngTrgtInfo = "/020/info.do" // 사전통보 발송 대상 등록 + , advanceNoticeSendingMain = "/030/main.do" // 사전통보 발송 현황 메인 화면 + , getAdvntceSndngList = "/030/list.do" // 사전통보 발송 현황 목록 조회 + ; + } + + /**발송 대장 서비스*/ + @Resource(name = "sndngService") + private SndngService sndngService; + + /**사전 통보 발송 대상 자료 메인화면(sndb/sndb02/010-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb02/010-main + */ + public ModelAndView advanceNoticeSendingTargetMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb02010-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**사전 통보 발송 대상 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [사전 통보 발송 대상 목록]
+	 *     "sndngStart": 사전 통보 발송 대상 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 사전 통보 발송 대상 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 사전 통보 발송 대상 수
+	 * }
+ */ + public ModelAndView getAdvntceSndngTrgtList(SndbQuery req) { + List result = sndngService.getAdvntceSndngTrgtList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + + /**사전 통보 발송 현황 메인화면(sndb/sndb02/030-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb02/030-main + */ + public ModelAndView advanceNoticeSendingMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb02030-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb02030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**사전 통보 발송 현황 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [사전 통보 발송 현황 목록]
+	 *     "sndngStart": 사전 통보 발송 현황 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 사전 통보 발송 현황 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 사전 통보 발송 현황 수
+	 * }
+ */ + public ModelAndView getAdvntceSndngList(SndbQuery req) { + List result = sndngService.getAdvntceSndngList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + +} diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb03Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb03Controller.java new file mode 100644 index 00000000..9b5f91e2 --- /dev/null +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb03Controller.java @@ -0,0 +1,73 @@ +package cokr.xit.fims.sndb.web; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.web.servlet.ModelAndView; + +import cokr.xit.base.code.CommonCode; +import cokr.xit.base.web.ApplicationController; +import cokr.xit.fims.sndb.SndbQuery; +import cokr.xit.fims.sndb.service.SndngService; + +/**발송 대장 서비스의 웹 컨트롤러 +* +*

상세 설명: +* +*

+* ============ 변경 이력 ============
+* 2023-08-24	JoJH 최초 작성
+* ================================
+* 
+*/ +public class Sndb03Controller extends ApplicationController { + + public static final String CLASS_URL = "/sndb/sndb03"; + + public class METHOD_URL { + public static final String + noticeSheetSendingMain = "/030/main.do" // 고지서 발송 현황 메인 화면 + , getNhtSndngList = "/030/list.do" // 고지서 발송 현황 목록 조회 + ; + } + + /**발송 대장 서비스*/ + @Resource(name = "sndngService") + private SndngService sndngService; + + /**고지서 발송 현황 메인화면(sndb/sndb03/030-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb03/030-main + */ + public ModelAndView noticeSheetSendingMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb03030-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb03030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**고지서 발송 현황 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [고지서 발송 현황 목록]
+	 *     "sndngStart": 고지서 발송 현황 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 고지서 발송 현황 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 고지서 발송 현황 수
+	 * }
+ */ + public ModelAndView getNhtSndngList(SndbQuery req) { + List result = sndngService.getNhtSndngList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + +} diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb04Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb04Controller.java new file mode 100644 index 00000000..027a688f --- /dev/null +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb04Controller.java @@ -0,0 +1,468 @@ +package cokr.xit.fims.sndb.web; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import cokr.xit.base.code.CommonCode; +import cokr.xit.base.web.ApplicationController; +import cokr.xit.fims.sndb.SndbQuery; +import cokr.xit.fims.sndb.Sndng; +import cokr.xit.fims.sndb.SndngDtl; +import cokr.xit.fims.sndb.Svbtc; +import cokr.xit.fims.sndb.service.SndngService; + +/**발송 대장 서비스의 웹 컨트롤러 +* +*

상세 설명: +* +*

+* ============ 변경 이력 ============
+* 2023-08-24	JoJH 최초 작성
+* ================================
+* 
+*/ +public class Sndb04Controller extends ApplicationController { + + public static final String CLASS_URL = "/sndb/sndb01"; + + public class METHOD_URL { + public static final String + warningSendingTargetMain = "/010/main.do" // 계도장 발송 대상 메인 화면 + , getWrngSndngTrgtList = "/010/list.do" // 계도장 발송 대상 목록 조회 + , getWrngSndngTrgtInfo = "/020/info.do" // 계도장 발송 대상 등록 + , warningSendingMain = "/030/main.do" // 계도장 발송 현황 메인 화면 + , getWrngSndngList = "/030/list.do" // 계도장 발송 현황 목록 조회 + + , advanceNoticeSendingTargetMain = "/030/main.do" // 사전통보 발송 대상 메인 화면 + , getAdvntceSndngTrgtList = "/030/list.do" // 사전통보 발송 대상 목록 조회 + , advanceNoticeSendingMain = "/040/main.do" // 사전통보 발송 현황 메인 화면 + , getAdvntceSndngList = "/040/list.do" // 사전통보 발송 현황 목록 조회 + , noticeSheetSendingMain = "/060/main.do" // 고지서 발송 현황 메인 화면 + , getNhtSndngList = "/060/list.do" // 고지서 발송 현황 목록 조회 + ; + } + + /**발송 대장 서비스*/ + @Resource(name = "sndngService") + private SndngService sndngService; + + /**계도장 발송 대상 자료 메인화면(sndb/sndb01/010-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb01/010-main + */ + public ModelAndView warningSendingTargetMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01010-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM054", "FIM061", "FIM064"); + + addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064"); + + return mav.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM004List", commonCodes.get("FIM004")) // 주정차위반 내역 코드(VLTN_ID) + .addObject("FIM005List", commonCodes.get("FIM005")) // 전용차로위반 내역 코드(VLTN_ID) + .addObject("FIM006List", commonCodes.get("FIM006")) // 장애인주차위반 내역 코드(VLTN_ID) + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + .addObject("FIM061List", commonCodes.get("FIM061")) // 전기차 충전구역 및 충전방해 위반 코드(VLTN_ID) + .addObject("FIM064List", commonCodes.get("FIM064")) // 화물자동차 밤샘주차 위반 코드(VLTN_ID) + ; + } + + /**계도장 발송 대상 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "wrngSndngTrgtList": [계도장 발송 대상 목록]
+	 *     "wrngSndngTrgtStart": 계도장 발송 대상 목록 시작 인덱스
+	 *     "wrngSndngTrgtFetch": 한 번에 가져오는 계도장 발송 대상 목록 수
+	 *     "wrngSndngTrgtTotal": 조회 결과 찾은 전체 계도장 발송 대상 수
+	 * }
+ */ + public ModelAndView getWrngSndngTrgtList(SndbQuery req) { + List result = sndngService.getWrngSndngTrgtList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "wrngSndngTrgt"); + } + + + /**계도장 발송 대상 정보 화면(sndb/sndb01/020-info)을 연다. + * @param crdnIDs 단속 IDs + * @return fims/sndb/sndb01020-info 또는 jsonView + *
{
+	 *     "wrngSndngTrgts": [계도장 발송 대상 목록]
+	 * }
+ */ + public ModelAndView getWrngSndngTrgtInfo(SndbQuery req) { + List wrngSndngTrgts = sndngService.getWrngSndngTrgts(req); + + boolean json = jsonResponse(); + + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/sndb/sndb01020-info"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav + .addObject("pageName", "sndb01020") + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + .addObject("wrngSndngTrgts", json ? wrngSndngTrgts : toJson(wrngSndngTrgts)) // 계도장 발송 대상 정보 + ; + } + + /**계도장 발송 현황 메인화면(sndb/sndb01/020-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb01/020-main + */ + public ModelAndView warningSendingMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01020-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb01020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**계도장 발송 현황 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [계도장 발송 현황 목록]
+	 *     "sndngStart": 계도장 발송 현황 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 계도장 발송 현황 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 계도장 발송 현황 수
+	 * }
+ */ + public ModelAndView getWrngSndngList(SndbQuery req) { + List result = sndngService.getWrngSndngList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + + /**사전 통보 발송 대상 자료 메인화면(sndb/sndb01/030-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb01/030-main + */ + public ModelAndView advanceNoticeSendingTargetMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01030-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb01030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**사전 통보 발송 대상 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [사전 통보 발송 대상 목록]
+	 *     "sndngStart": 사전 통보 발송 대상 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 사전 통보 발송 대상 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 사전 통보 발송 대상 수
+	 * }
+ */ + public ModelAndView getAdvntceSndngTrgtList(SndbQuery req) { + List result = sndngService.getAdvntceSndngTrgtList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + + /**사전 통보 발송 현황 메인화면(sndb/sndb01/040-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb01/040-main + */ + public ModelAndView advanceNoticeSendingMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01040-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb01040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**사전 통보 발송 현황 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [사전 통보 발송 현황 목록]
+	 *     "sndngStart": 사전 통보 발송 현황 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 사전 통보 발송 현황 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 사전 통보 발송 현황 수
+	 * }
+ */ + public ModelAndView getAdvntceSndngList(SndbQuery req) { + List result = sndngService.getAdvntceSndngList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + + /**고지서 발송 현황 메인화면(sndb/sndb01/060-main)을 연다. + * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. + * @return /sndb/sndb01/060-main + */ + public ModelAndView noticeSheetSendingMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01060-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb01060") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**고지서 발송 현황 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [고지서 발송 현황 목록]
+	 *     "sndngStart": 고지서 발송 현황 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 고지서 발송 현황 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 고지서 발송 현황 수
+	 * }
+ */ + public ModelAndView getNhtSndngList(SndbQuery req) { + List result = sndngService.getNhtSndngList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + + + + + + /**발송 대장 목록을 조회하여 반환한다.
+ * {@link SndngService#getSndngList(SndngQuery)} 참고 + * @param req 발송 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngList": [발송 대장 목록]
+	 *     "sndngStart": 발송 대장 목록 시작 인덱스
+	 *     "sndngFetch": 한 번에 가져오는 발송 대장 목록 수
+	 *     "sndngTotal": 조회 결과 찾은 전체 발송 대장 수
+	 * }
+ */ + @RequestMapping(name = "발송 대장 조회", value = "/010/sndngList.do") + public ModelAndView getSndngList(SndbQuery req) { + List result = sndngService.getSndngList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndng"); + } + + /**발송 대장를 등록한다. + * @param sndng 발송 대장 정보 + * @return jsonView + *
 {
+	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "발송 대장 등록", value = "/010/createSndng.do") + public ModelAndView createSndng(Sndng sndng) { + boolean saved = sndngService.createSndng(sndng); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**발송 대장 정보를 수정한다. + * @param sndng 발송 대장 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "발송 대장 수정", value = "/010/updateSndng.do") + public ModelAndView updateSndng(Sndng sndng) { + boolean saved = sndngService.updateSndng(sndng); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**지정한 발송 대장를 제거한다. + * @param sndngIDs 발송 대장 아이디 + * @return jsonView + *
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "발송 대장 제거", value = "/010/removeSndng.do") + public ModelAndView removeSndng(Sndng sndng) { + boolean saved = sndngService.removeSndng(sndng); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**발송 상세 목록을 조회하여 반환한다.
+ * {@link SndngDtlService#getSndngDtlList(SndbQuery)} 참고 + * @param req 발송 상세 조회 조건 + * @return jsonView + *
 {
+	 *     "sndngDtlList": [발송 상세 목록]
+	 *     "sndngDtlStart": 발송 상세 목록 시작 인덱스
+	 *     "sndngDtlFetch": 한 번에 가져오는 발송 상세 목록 수
+	 *     "sndngDtlTotal": 조회 결과 찾은 전체 발송 상세 수
+	 * }
+ */ + @RequestMapping(name = "발송 상세 조회", value = "/010/sndngDtlList.do") + public ModelAndView getSndngDtlList(SndbQuery req) { + List result = sndngService.getSndngDtlList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "sndngDtl"); + } + + /**발송 상세를 등록한다. + * @param sndngDtl 발송 상세 정보 + * @return jsonView + *
 {
+	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "발송 상세 등록", value = "/010/createSndngDtl.do") + public ModelAndView createSndngDtl(SndngDtl sndngDtl) { + boolean saved = sndngService.createSndngDtl(sndngDtl); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**발송 상세 정보를 수정한다. + * @param sndngDtl 발송 상세 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "발송 상세 수정", value = "/010/updateSndngDtl.do") + public ModelAndView updateSndngDtl(SndngDtl sndngDtl) { + boolean saved = sndngService.updateSndngDtl(sndngDtl); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**지정한 발송 상세를 제거한다. + * @param sndngDtlIDs 발송 상세 아이디 + * @return jsonView + *
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "발송 상세 제거", value = "/010/removeSndngDtl.do") + public ModelAndView removeSndngDtl(SndngDtl sndngDtl) { + boolean saved = sndngService.removeSndngDtl(sndngDtl); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + + + + /**공시송달 대장 관리 메인화면(fims/sndb/sndb01120-main)을 연다. + * 조건없는 {@link #getSvbtcList(SndbQuery) 공시송달 대장 조회 결과}를 포함시킨다. + * @return /svbtc/svbtc-main + */ + @RequestMapping(name = "공시송달 대장 메인", value = "/120/main.do") + public ModelAndView ServiceByPublicNoticeMain() { + ModelAndView mav = new ModelAndView("fims/sndb/sndb01120-main"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM054"); + + return mav.addObject("pageName", "sndb01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("infoPrefix", "sndng") // prefix + .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) + ; + } + + /**공시송달 대장 목록을 조회하여 반환한다.
+ * {@link SvbtcService#getSvbtcList(SndbQuery)} 참고 + * @param req 공시송달 대장 조회 조건 + * @return jsonView + *
 {
+	 *     "svbtcList": [공시송달 대장 목록]
+	 *     "svbtcStart": 공시송달 대장 목록 시작 인덱스
+	 *     "svbtcFetch": 한 번에 가져오는 공시송달 대장 목록 수
+	 *     "svbtcTotal": 조회 결과 찾은 전체 공시송달 대장 수
+	 * }
+ */ + @RequestMapping(name = "공시송달 대장 조회", value = "/120/list.do") + public ModelAndView getSvbtcList(SndbQuery req) { + List result = sndngService.getSvbtcList(setFetchSize(req)); + + return setCollectionInfo(new ModelAndView("jsonView"), result, "svbtc"); + } + + /**공시송달 대장를 등록한다. + * @param svbtc 공시송달 대장 정보 + * @return jsonView + *
 {
+	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "공시송달 대장 등록", value = "/120/create.do") + public ModelAndView createSvbtc(Svbtc svbtc) { + boolean saved = sndngService.createSvbtc(svbtc); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**공시송달 대장 정보를 수정한다. + * @param svbtc 공시송달 대장 정보 + * @return jsonView + *
 {
+	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "공시송달 대장 수정", value = "/120/update.do") + public ModelAndView updateSvbtc(Svbtc svbtc) { + boolean saved = sndngService.updateSvbtc(svbtc); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**지정한 공시송달 대장를 제거한다. + * @param svbtcIDs 공시송달 대장 아이디 + * @return jsonView + *
 {
+	 *     "affected": 저장된 정보수
+	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
+	 * }
+ */ + @PostMapping(name = "공시송달 대장 제거", value = "/120/remove.do") + public ModelAndView removeSvbtc(Svbtc svbtc) { + boolean saved = sndngService.removeSvbtc(svbtc); + + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + +} diff --git a/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java b/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java index 30e1e546..706fc0d4 100644 --- a/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java +++ b/src/main/java/cokr/xit/fims/sprt/web/Sprt02Controller.java @@ -26,7 +26,7 @@ import cokr.xit.fims.payer.service.PayerService; import cokr.xit.fims.rcvm.RcvmQuery; import cokr.xit.fims.rcvm.service.Rcvm01Service; import cokr.xit.fims.sndb.SndbQuery; -import cokr.xit.fims.sndb.service.Sndb01Service; +import cokr.xit.fims.sndb.service.SndngService; import cokr.xit.fims.sprt.SprtQuery; import cokr.xit.fims.sprt.service.Sprt02Service; import cokr.xit.fims.sprt.service.Sprt04Service; @@ -74,8 +74,8 @@ public class Sprt02Controller extends ApplicationController { protected Excl02Service excl02Service; /** 발송 대장 서비스*/ - @Resource(name = "sndb01Service") - protected Sndb01Service sndb01Service; + @Resource(name = "sndngService") + protected SndngService sndngService; /** 부과 대장 서비스*/ @Resource(name = "levy01Service") @@ -289,14 +289,14 @@ public class Sprt02Controller extends ApplicationController { sndb01Query.setDelYn(req.getDelYn()); sndb01Query.setOrderBy("SD.REG_DT, SD.SNDNG_DTL_ID DESC"); - List sndngDtl = sndb01Service.getSndngDtls(sndb01Query); + List sndngDtl = sndngService.getSndngDtls(sndb01Query); // 공시송달 정보 sndb01Query.setCrdnId(req.getCrdnId()); sndb01Query.setDelYn(req.getDelYn()); sndb01Query.setOrderBy("SV.REG_DT DESC, SV.SVBTC_ID DESC"); - List svbtc = sndb01Service.getSvbtcs(sndb01Query); + List svbtc = sndngService.getSvbtcs(sndb01Query); boolean json = jsonResponse(); diff --git a/src/main/java/cokr/xit/fims/task/web/CmnController.java b/src/main/java/cokr/xit/fims/task/web/CmnController.java index 816f6eed..b9fd9a85 100644 --- a/src/main/java/cokr/xit/fims/task/web/CmnController.java +++ b/src/main/java/cokr/xit/fims/task/web/CmnController.java @@ -226,7 +226,7 @@ public class CmnController { } @Controller - @RequestMapping(name = "발송 관리", value = Sndb01Controller.CLASS_URL) + @RequestMapping(name = "계도장 발송", value = Sndb01Controller.CLASS_URL) class Sndb01Controller extends cokr.xit.fims.sndb.web.Sndb01Controller { /** 계도장 발송 대상 자료 메인 화면을 연다. @@ -239,7 +239,7 @@ public class CmnController { } /** 계도장 발송 현황 메인 화면을 연다. - * @return fims/sndb/sndb01020-main + * @return fims/sndb/sndb01030-main */ @Override @RequestMapping(name = "계도장 발송 현황", value = METHOD_URL.warningSendingMain) @@ -247,8 +247,14 @@ public class CmnController { return super.warningSendingMain(); } + } + + @Controller + @RequestMapping(name = "사전통보 발송", value = Sndb02Controller.CLASS_URL) + class Sndb02Controller extends cokr.xit.fims.sndb.web.Sndb02Controller { + /** 사전 통보 발송 대상 자료 메인 화면을 연다. - * @return fims/sndb/sndb01030-main + * @return fims/sndb/sndb02010-main */ @Override @RequestMapping(name = "사전 통보 발송 대상 자료", value = METHOD_URL.advanceNoticeSendingTargetMain) @@ -257,7 +263,7 @@ public class CmnController { } /** 사전 통보 발송 현황 메인 화면을 연다. - * @return fims/sndb/sndb01040-main + * @return fims/sndb/sndb02030-main */ @Override @RequestMapping(name = "사전 통보 발송 현황", value = METHOD_URL.advanceNoticeSendingMain) @@ -265,8 +271,14 @@ public class CmnController { return super.advanceNoticeSendingMain(); } + } + + @Controller + @RequestMapping(name = "고지서 발송", value = Sndb03Controller.CLASS_URL) + class Sndb03Controller extends cokr.xit.fims.sndb.web.Sndb03Controller { + /** 고지서 발송 현황 메인 화면을 연다. - * @return fims/sndb/sndb01060-main + * @return fims/sndb/sndb03030-main */ @Override @RequestMapping(name = "고지서 발송 현황", value = METHOD_URL.noticeSheetSendingMain) 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 8fa2c6e8..b5c5ca8f 100644 --- a/src/main/java/cokr/xit/fims/task/web/DpvController.java +++ b/src/main/java/cokr/xit/fims/task/web/DpvController.java @@ -483,7 +483,7 @@ public class DpvController { } @Controller - @RequestMapping(name="장애인과태료업무 발송, 반송 관리", value=CLASS_URL+Sndb01Controller.CLASS_URL) + @RequestMapping(name="장애인과태료업무 발송,반송 관리_계고장 발송", value=CLASS_URL+Sndb01Controller.CLASS_URL) class Sndb01Controller extends cokr.xit.fims.sndb.web.Sndb01Controller { @Override @@ -492,12 +492,24 @@ public class DpvController { return super.getWrngSndngTrgtList(req); } + @Override + @RequestMapping(name="장애인과태료업무 계고장 발송 대상 등록", value=METHOD_URL.getWrngSndngTrgtInfo) + public ModelAndView getWrngSndngTrgtInfo(SndbQuery req) { + return super.getWrngSndngTrgtInfo(req); + } + @Override @RequestMapping(name="장애인과태료업무 계고장 발송 현황 목록 조회", value=METHOD_URL.getWrngSndngList) public ModelAndView getWrngSndngList(SndbQuery req) { return super.getWrngSndngList(req); } + } + + @Controller + @RequestMapping(name="장애인과태료업무 발송,반송 관리_사전통보 발송", value=CLASS_URL+Sndb02Controller.CLASS_URL) + class Sndb02Controller extends cokr.xit.fims.sndb.web.Sndb02Controller { + @Override @RequestMapping(name="장애인과태료업무 사전통보 발송 대상 목록 조회", value=METHOD_URL.getAdvntceSndngTrgtList) public ModelAndView getAdvntceSndngTrgtList(SndbQuery req) { @@ -510,6 +522,12 @@ public class DpvController { return super.getAdvntceSndngList(req); } + } + + @Controller + @RequestMapping(name="장애인과태료업무 발송,반송 관리_고지서 발송", value=CLASS_URL+Sndb03Controller.CLASS_URL) + class Sndb03Controller extends cokr.xit.fims.sndb.web.Sndb03Controller { + @Override @RequestMapping(name="장애인과태료업무 고지서 발송 현황 목록 조회", value=METHOD_URL.getNhtSndngList) public ModelAndView getNhtSndngList(SndbQuery req) { @@ -518,6 +536,12 @@ public class DpvController { } + @Controller + @RequestMapping(name="장애인과태료업무 발송,반송 관리_반송, 공시송달", value=CLASS_URL+Sndb04Controller.CLASS_URL) + class Sndb04Controller extends cokr.xit.fims.sndb.web.Sndb04Controller { + + } + @Controller @RequestMapping(name="장애인과태료업무 업무지원_통합조회", value=CLASS_URL+"/sprt/sprt01") class Sprt01Controller extends cokr.xit.fims.sprt.web.Sprt01Controller {} 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 32f9e738..d9f346ee 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml @@ -126,6 +126,7 @@ , C.CRDN_PLC /* 단속 장소 */ , C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */ , C.FFNLG_AMT /* 과태료 금액 */ + , C.ADVNTCE_AMT /* 사전통지 금액 */ , C.CRDN_STTS_CD /* 단속 상태 코드 */ , (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ , CC.CVLCPT_LINK_ID /* 민원 연계 ID */ @@ -165,6 +166,7 @@ WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */ AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */ AND C.DEL_YN = #{crdnDelYn} /* 삭제 여부 */ + AND C.CRDN_STTS_CD = #{crdnSttsCd} /* 단속 상태 코드 */ AND LE.LEVY_EXCL_YMD = ]]> #{schLevyExclYmdFrom} /* 부과제외 일자 시작 */ diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp index bc9a252d..5a45fc83 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01010-main.jsp @@ -154,10 +154,10 @@ - - @@ -315,8 +315,8 @@ checkbox.prop("checked", keys.includes(checkbox.val())); }); - $("#btnRemove--${pageName}").prop("disabled", keys.length < 1); - }; + $("#btnCreateWrngSndngTrg--${pageName}").prop("disabled", keys.length < 1); +}; // 개별총정보 dialog ${pageName}Control.getInfo = (crdnId) => { @@ -392,8 +392,10 @@ return; } - $("#schVltnId--${pageName}").empty(); // 항목 초기화 + // 항목 초기화 + $("#schVltnId--${pageName}").empty(); + $("#schVltnId--${pageName}").append(""); $(vltnIdCode).each(function(index, item) { $("#schVltnId--${pageName}").append(""); }) @@ -412,10 +414,16 @@ return formData; } - // 수정 dialog -> callback 추가 + // 계고장 발송 등록 dialog -> callback 추가 ${pageName}Info = (params) => { + let selected = ${pageName}Control.dataset.getKeys("selected"); + + if (selected.length < 1) return; + + params["crdnIDs"] = selected.join(","); + ajax.get({ - url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do?openerPageName=${pageName}") + url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do") , data : params || {} , success : resp => { dialog.open({ @@ -430,6 +438,24 @@ }); } + // 계고 수정 dialog -> callback 추가 + ${pageName}levyExclInfo = (params) => { + ajax.get({ + url : wctx.url("/" + params.taskSeCd + "/excl/excl01/020/info.do?openerPageName=${pageName}") + , data : params || {} + , success : resp => { + dialog.open({ + id : "levyExclDialog" + , title : "부과제외 정보" + , content : resp + , size : ${pageName}Control.infoSize + , init : () => { } + , onClose : () => { ${pageName}Control.load(${pageName}Control.query.pageNum); } // callback + }); + } + }); + } + /************************************************************************** * 초기 셋팅 **************************************************************************/ @@ -504,6 +530,7 @@ ${pageName}Control.query = fnGetParams${pageName}(); ${pageName}Control.query.delYn = "N"; // 삭제 여부 ${pageName}Control.query.crdnDelYn = "N"; // 단속 대장 삭제 여부 + ${pageName}Control.query.crdnSttsCd = "83"; // 계고 ${pageName}Control.load(); } @@ -514,12 +541,18 @@ } // 계고장 발송 등록 - fnCreateWrng${pageName} = () => { + fnCreateWrngSndngTrg${pageName} = () => { + let params = { + callPurpose : "create" + , sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드 + , taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 + }; + ${pageName}Info(params); } // 계고 수정 - fnUpdate${pageName} = () => { + fnLevyExclInfo${pageName} = () => { let levyExclId = ${pageName}Control.dataset.getValue("LEVY_EXCL_ID"); // 부과제외ID 가 없다면.. return @@ -534,7 +567,7 @@ , levyExclId : levyExclId }; - ${pageName}Info(params); + ${pageName}levyExclInfo(params); } /************************************************************************** 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 new file mode 100644 index 00000000..335c7392 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp @@ -0,0 +1,227 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" session="false"%> +<%@ include file="/WEB-INF/jsp/include/taglib.jsp"%> + + +
+ +
+ 부과제외 정보 + + +
+ +
+ + + + + + +
+ +
+ + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + +
+ +
+ + +
+
+
+
+ + +
+ + + + + + +
+ + +
+
+ +