From 80b53d0a8d6585d611639ed686c859a74b9109cb Mon Sep 17 00:00:00 2001 From: jjh Date: Wed, 27 Sep 2023 16:30:46 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=84=EA=B3=A0=20=EB=B0=9C=EC=86=A1=20?= =?UTF-8?q?=EB=8C=80=EC=83=81=20=EC=9E=90=EB=A3=8C=20=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?=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 + src/main/java/cokr/xit/fims/sndb/Sndng.java | 10 + .../java/cokr/xit/fims/sndb/SndngDtl.java | 8 +- .../cokr/xit/fims/sndb/dao/SndngMapper.java | 2 +- .../xit/fims/sndb/service/SndngService.java | 6 +- .../xit/fims/sndb/service/bean/SndngBean.java | 36 ++- .../sndb/service/bean/SndngServiceBean.java | 6 +- .../xit/fims/sndb/web/Sndb01Controller.java | 37 ++- .../cokr/xit/fims/task/web/DpvController.java | 13 +- .../sql/mapper/fims/sndb/sndng-mapper.xml | 233 +++++++++++------- .../WEB-INF/jsp/fims/sndb/sndb01010-main.jsp | 14 +- .../WEB-INF/jsp/fims/sndb/sndb01020-info.jsp | 183 ++++++++++---- 12 files changed, 393 insertions(+), 166 deletions(-) diff --git a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java index 25fb0b17..c761a3d9 100644 --- a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java +++ b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java @@ -44,6 +44,7 @@ public class SndbQuery extends CmmnQuery { private String delYn; // 삭제 여부 private String delRsn; // 삭제 사유 private String crdnDelYn; // 단속 삭제 여부 + private String sndngSeCd; // 발송 구분 코드 public String[] getCrdnIDs() { return ifEmpty(crdnIDs, () -> null); @@ -287,6 +288,16 @@ public class SndbQuery extends CmmnQuery { return self(); } + + public String getSndngSeCd() { + return ifEmpty(sndngSeCd, () -> null); + } + + public T setSndngSeCd(String sndngSeCd) { + this.sndngSeCd = sndngSeCd; + + return self(); + } // ETC ///////////////////////////////////////////////////////////////////// } diff --git a/src/main/java/cokr/xit/fims/sndb/Sndng.java b/src/main/java/cokr/xit/fims/sndb/Sndng.java index eb5109db..00ca7936 100644 --- a/src/main/java/cokr/xit/fims/sndb/Sndng.java +++ b/src/main/java/cokr/xit/fims/sndb/Sndng.java @@ -112,4 +112,14 @@ public class Sndng extends AbstractEntity { */ private String resndYn; + /** + * 단속 IDs + */ + private String[] crdnIDs; + + /** + * 단속 ID + */ + private String crdnId; + } diff --git a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java index 39c14faa..85300c5e 100644 --- a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java +++ b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java @@ -80,22 +80,22 @@ public class SndngDtl extends AbstractEntity { /** * 과태료 금액 */ - private java.lang.Integer ffnlgAmt; + private Integer ffnlgAmt; /** * 부과 본세 */ - private java.lang.Integer levyPcptax; + private Integer levyPcptax; /** * 부과 가산금 */ - private java.lang.Integer levyAdamt; + private Integer levyAdamt; /** * 부과 합계 금액 */ - private java.lang.Integer levySumAmt; + private Integer levySumAmt; /** * 납부자 명 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 1e541ff4..e7f206c2 100644 --- a/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java +++ b/src/main/java/cokr/xit/fims/sndb/dao/SndngMapper.java @@ -35,7 +35,7 @@ public interface SndngMapper extends AbstractMapper { * @param req 발송 대장 조회 조건 * @return 계도장 발송 대상 객체 목록 */ - List selectWrngSndngTrgts(SndbQuery req); + List selectSndngTrgts(SndbQuery req); /**지정한 조건에 따라 계도장 발송 현황 목록을 조회하여 반환한다.
* @param req 발송 대장 조회 조건 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 3efa07f0..880be814 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngService.java @@ -26,11 +26,11 @@ public interface SndngService { */ List getWrngSndngTrgtList(SndbQuery req); - /**지정한 조건에 따라 계도장 발송 대상 객체들을 반환한다. + /**지정한 조건에 따라 발송 대상 객체들을 반환한다. * @param req 발송 대장 조회 조건 * @return 발송 대장 객체 목록 */ - List getWrngSndngTrgts(SndbQuery req); + List getSndngTrgts(SndbQuery req); /**지정한 조건에 따라 계도장 발송 현황 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 @@ -109,7 +109,7 @@ public interface SndngService { *
  • 그렇지 않으면 false
  • * */ - boolean createSndng(Sndng sndng); + String createSndng(Sndng sndng); /**발송 대장 정보를 수정한다. * @param sndng 발송 대장 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 0c1962da..f86f1aa3 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 @@ -42,15 +42,19 @@ public class SndngBean extends AbstractComponent { * @return 계도장 발송 대상 목록 */ public List getWrngSndngTrgtList(SndbQuery req) { + if (req.getOrderBy() == null) { + req.setOrderBy("CRDN_YMD_TM"); + } + return sndngMapper.selectWrngSndngTrgtList(req); } - /**지정한 조건에 따라 계도장 발송 대상 객체들을 반환한다. + /**지정한 조건에 따라 발송 대상 객체들을 반환한다. * @param req 발송 대장 조회 조건 * @return 계도장 발송 대상 객체 목록 */ - public List getWrngSndngTrgts(SndbQuery req) { - return sndngMapper.selectWrngSndngTrgts(req); + public List getSndngTrgts(SndbQuery req) { + return sndngMapper.selectSndngTrgts(req); } /**지정한 조건에 따라 계도장 발송 현황 목록을 조회하여 반환한다. @@ -158,8 +162,30 @@ public class SndngBean extends AbstractComponent { *
  • 그렇지 않으면 false
  • * */ - public boolean createSndng(Sndng sndng) { - return sndngMapper.insertSndng(sndng); + public String createSndng(Sndng sndng) { + // 변수 선언 + boolean retSuccess = false; // DB 처리 결과 + String retMessage = "[F] "; // 처리 결과 메시지 + + // 발송 등록 +// retSuccess = sndngMapper.insertSndng(sndng); +// if (!retSuccess) { +// // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback +// throw new RuntimeException("발송 등록에 실패하였습니다."); +// } + + // 발송 상세 등록 +// SndngDtl sndngDtl = new SndngDtl(); +// +// retSuccess = sndngMapper.insertSndngDtl(sndngDtl); +// if (!retSuccess) { +// // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback +// throw new RuntimeException("발송 등록에 실패하였습니다."); +// } + + retMessage = "[S] 작업이 정상 처리 되었습니다."; + + return retMessage; } /**발송 대장 정보를 수정한다. 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 24587ac1..02654856 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 @@ -37,8 +37,8 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic } @Override - public List getWrngSndngTrgts(SndbQuery req) { - return sndngBean.getWrngSndngTrgts(req); + public List getSndngTrgts(SndbQuery req) { + return sndngBean.getSndngTrgts(req); } @Override @@ -100,7 +100,7 @@ public class SndngServiceBean extends AbstractServiceBean implements SndngServic } @Override - public boolean createSndng(Sndng sndng) { + public String createSndng(Sndng sndng) { return sndngBean.createSndng(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 99b8b1ae..976cb742 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -10,6 +10,7 @@ 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.service.SndngService; /**발송 대장 서비스의 웹 컨트롤러 @@ -30,7 +31,8 @@ public class Sndb01Controller extends ApplicationController { public static final String warningSendingTargetMain = "/010/main.do" // 계도장 발송 대상 메인 화면 , getWrngSndngTrgtList = "/010/list.do" // 계도장 발송 대상 목록 조회 - , getWrngSndngTrgtInfo = "/020/info.do" // 계도장 발송 대상 등록 + , getSndngTrgtInfo = "/020/info.do" // 발송 대상 조회 + , createSndng = "/020/create.do" // 발송 대상 등록 , warningSendingMain = "/030/main.do" // 계도장 발송 현황 메인 화면 , getWrngSndngList = "/030/list.do" // 계도장 발송 현황 목록 조 ; @@ -87,23 +89,42 @@ public class Sndb01Controller extends ApplicationController { * "wrngSndngTrgts": [계도장 발송 대상 목록] * } */ - public ModelAndView getWrngSndngTrgtInfo(SndbQuery req) { - List wrngSndngTrgts = sndngService.getWrngSndngTrgts(req); + public ModelAndView getSndngTrgtInfo(SndbQuery req) { + List sndngTrgts = sndngService.getSndngTrgts(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("wrngSndngTrgtInfo", json ? wrngSndngTrgts : toJson(wrngSndngTrgts)) // 계도장 발송 대상 정보 + .addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드 + .addObject("sndngTrgtInfo", json ? sndngTrgts : toJson(sndngTrgts)) // 계도장 발송 대상 정보 ; } + /**발송 대상을 등록한다. + * @param sndng 발송 정보 + * @return jsonView + *
     {
    +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ + public ModelAndView createSndng(Sndng sndng) { + boolean saved = false; + String retMessage = sndngService.createSndng(sndng); + + if (retMessage.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("retMessage", retMessage); + } + /**계도장 발송 현황 메인화면(sndb/sndb01/030-main)을 연다. * 조건없는 {@link #getSndngList(SndbQuery) 발송 대장 조회 결과}를 포함시킨다. * @return /sndb/sndb01/030-main 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 2ac959f5..603e63aa 100644 --- a/src/main/java/cokr/xit/fims/task/web/DpvController.java +++ b/src/main/java/cokr/xit/fims/task/web/DpvController.java @@ -19,6 +19,7 @@ import cokr.xit.fims.levy.Rduct; import cokr.xit.fims.payer.Payer; import cokr.xit.fims.payer.PayerQuery; import cokr.xit.fims.sndb.SndbQuery; +import cokr.xit.fims.sndb.Sndng; import cokr.xit.fims.sprt.CvlcptDscsnCn; import cokr.xit.fims.sprt.SprtQuery; @@ -504,9 +505,15 @@ public class DpvController { } @Override - @RequestMapping(name="장애인과태료업무 계고장 발송 대상 등록", value=METHOD_URL.getWrngSndngTrgtInfo) - public ModelAndView getWrngSndngTrgtInfo(SndbQuery req) { - return super.getWrngSndngTrgtInfo(req); + @RequestMapping(name="장애인과태료업무 발송 대상 등록", value=METHOD_URL.getSndngTrgtInfo) + public ModelAndView getSndngTrgtInfo(SndbQuery req) { + return super.getSndngTrgtInfo(req); + } + + @Override + @RequestMapping(name="장애인과태료업무 발송 등록", value=METHOD_URL.createSndng) + public ModelAndView createSndng(Sndng sndng) { + return super.createSndng(sndng); } @Override 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 58141a85..f7ca930c 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndng-mapper.xml @@ -113,8 +113,6 @@ SELECT C.CRDN_ID /* 단속 ID */ , C.SGG_CD /* 시군구 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */ - , C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */ - , (SELECT FN_GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 단속 등록 구분 명 */ , C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */ , (SELECT FN_GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */ , C.CRDN_YMD /* 단속 일자 */ @@ -125,42 +123,34 @@ , C.CRDN_ROAD_NM /* 단속 도로 명 */ , 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 /* 단속 상태 명 */ + , C.REG_DT /* 등록 일시 */ + , C.RGTR /* 등록자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM /* 등록자 명 */ + , C.MDFCN_DT /* 수정 일시 */ + , C.MDFR /* 수정자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM /* 수정자 명 */ , CC.CVLCPT_LINK_ID /* 민원 연계 ID */ , CC.CVLCPT_RCPT_YMD /* 민원 접수 일자 */ , CC.CVLCPT_APLY_NO /* 민원 신청 번호 */ , CC.CVLCPT_RCPT_NO /* 민원 접수 번호 */ + , CC.CVLCPT_PRCS_SUMRY /* 민원 처리 요약 */ , CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */ , CC.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */ , CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */ , CC.CVLCPT_TRSM_DT /* 민원 전송 일시 */ - , P.RTPYR_ID /* 납부자 ID */ - , P.RTPYR_SE_CD /* 납부자 구분 코드 */ - , (SELECT FN_GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */ - , P.RTPYR_NO /* 납부자 번호 */ - , P.RTPYR_NM /* 납부자 명 */ - , P.RTPYR_BRDT /* 납부자 생년월일 */ - , (SELECT FN_GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_FORMAT /* 납부자 생년월일 */ - , P.ZIP /* 우편번호 */ - , P.ADDR /* 주소 */ - , P.DTL_ADDR /* 상세 주소 */ - , LE.LEVY_EXCL_ID /* 부과제외 ID */ - , LE.LEVY_EXCL_YMD /* 부과제외 일자 */ - , LE.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */ - , (SELECT FN_GET_CODE_NM('FIM021', LE.LEVY_EXCL_SE_CD) FROM DUAL) AS LEVY_EXCL_SE_NM /* 부과 제외 구분 명 */ - , LE.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */ + , LE.LEVY_EXCL_ID /* 부과 제외 ID */ + , LE.LEVY_EXCL_YMD /* 부과 제외 일자 */ + , LE.LEVY_EXCL_RSN_CD /* 부과 제외 사유 코드 */ , (SELECT FN_GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */ , LE.ETC_CN /* 기타 내용 */ FROM TB_CRDN C LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') - LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N') - /* 계고장 발송 대상 목록 조회(sndngMapper.selectWrngSndngTrgtList) */ WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */ @@ -182,9 +172,6 @@ AND C.VHRNO = #{schVhrno} /* 차량번호 */ - - AND P.RTPYR_NM = #{schRtpyrNm} /* 납부자 명 */ - @@ -248,8 +235,69 @@ - /* 발송 대상 객체 가져오기(sndngMapper.selectSndngTrgts) */ + SELECT COUNT(*) OVER() AS TNOCS + , SUM(FFNLG_CRDN_AMT) OVER() AS GRAMT + , C.CRDN_ID /* 단속 ID */ + , C.SGG_CD /* 시군구 코드 */ + , C.TASK_SE_CD /* 업무 구분 코드 */ + , C.CRDN_REG_SE_CD /* 단속 등록 구분 코드 */ + , (SELECT FN_GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM /* 단속 등록 구분 명 */ + , C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */ + , (SELECT FN_GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */ + , C.CRDN_YMD /* 단속 일자 */ + , C.CRDN_TM /* 단속 시각 */ + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_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 /* 단속 상태 코드 */ + , (SELECT FN_GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ + , C.REG_DT /* 등록 일시 */ + , C.RGTR /* 등록자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM /* 등록자 명 */ + , C.MDFCN_DT /* 수정 일시 */ + , C.MDFR /* 수정자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM /* 수정자 명 */ + , CC.CVLCPT_LINK_ID /* 민원 연계 ID */ + , CC.CVLCPT_RCPT_YMD /* 민원 접수 일자 */ + , CC.CVLCPT_APLY_NO /* 민원 신청 번호 */ + , CC.CVLCPT_RCPT_NO /* 민원 접수 번호 */ + , CC.CVLCPT_APLY_DT /* 민원 신청 일시 */ + , CC.CVLCPT_APLY_TTL_NM /* 민원 신청 제목 명 */ + , CC.CVLCPT_GIST /* 민원 요지 */ + , CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */ + , (SELECT FN_GET_CODE_NM('FIM017', CC.CVLCPT_PRCS_CD) FROM DUAL) AS CVLCPT_PRCS_NM /* 민원 처리 명 */ + , CC.CVLCPT_PRCS_SUMRY /* 민원 처리 요약 */ + , CC.CVLCPT_PRCS_RSLT_CN /* 민원 처리 결과 내용 */ + , CC.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */ + , CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */ + , (SELECT FN_GET_CODE_NM('FIM018', CC.CVLCPT_TRSM_CD) FROM DUAL) AS CVLCPT_TRSM_NM /* 민원 전송 명 */ + , CC.CVLCPT_TRSM_DT /* 민원 전송 일시 */ + , P.RTPYR_ID /* 납부자 ID */ + , P.RTPYR_SE_CD /* 납부자 구분 코드 */ + , (SELECT FN_GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM /* 납부자 구분 명 */ + , P.RTPYR_NO /* 납부자 번호 */ + , P.RTPYR_NM /* 납부자 명 */ + , P.RTPYR_BRDT /* 납부자 생년월일 */ + , (SELECT FN_GET_BRDT_FORMAT(P.RTPYR_BRDT, '.') FROM DUAL) AS RTPYR_BRDT_FORMAT /* 납부자 생년월일 */ + , P.ZIP /* 우편번호 */ + , P.ADDR /* 주소 */ + , P.DTL_ADDR /* 상세 주소 */ + , LE.LEVY_EXCL_ID /* 부과 제외 ID */ + , LE.LEVY_EXCL_YMD /* 부과 제외 일자 */ + , LE.LEVY_EXCL_RSN_CD /* 부과 제외 사유 코드 */ + , (SELECT FN_GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */ + , LE.ETC_CN /* 기타 내용 */ + FROM TB_CRDN C + INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) + LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') + LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) + LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N') AND C.CRDN_ID IN ( @@ -299,70 +347,79 @@ FROM TB_SNDNG - + - + -/* 발송 대장 등록(sndngMapper.insertSndng) */ -INSERT INTO TB_SNDNG ( - SNDNG_ID - , SGG_CD - , VLTN_ID - , SNDNG_REG_SE_CD - , SNDNG_SE_CD - , LEVY_BGNG_YMD - , LEVY_END_YMD - , SNDNG_YMD - , DUDT_YMD - , TTL_NM - , DOC_NO - , ETC_CN - , TNOCS - , GRAMT - , CON_KEY - , DIV_KB - , EPOST_NOTICE_ID - , SNDNG_STTS_CD - , RESND_YN - , REG_DT - , RGTR - , MDFCN_DT - , MDFR - , TASK_SE_CD -) VALUES ( - #{sndng.sndngId} - , #{sndng.sggCd} - , #{sndng.vltnId} - , #{sndng.sndngRegSeCd} - , #{sndng.sndngSeCd} - , #{sndng.levyBgngYmd} - , #{sndng.levyEndYmd} - , #{sndng.sndngYmd} - , #{sndng.dudtYmd} - , #{sndng.ttlNm} - , #{sndng.docNo} - , #{sndng.etcCn} - , #{sndng.tnocs} - , #{sndng.gramt} - , #{sndng.conKey} - , #{sndng.divKb} - , #{sndng.epostNoticeId} - , #{sndng.sndngSttsCd} - , #{sndng.resndYn} - , - , #{currentUser.id} - , - , #{currentUser.id} - , #{sndng.taskSeCd} -) + /* 발송 대장 등록(sndngMapper.insertSndng) */ + + SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(SNDNG_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID + FROM TB_SNDNG + WHERE SNDNG_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') + + INSERT INTO TB_SNDNG ( + SNDNG_ID /* 발송 ID */ + , SGG_CD /* 시군구 코드 */ + , TASK_SE_CD /* 업무 구분 코드 */ + , VLTN_ID /* 위반 ID */ + , SNDNG_REG_SE_CD /* 발송 등록 구분 코드 */ + , SNDNG_SE_CD /* 발송 구분 코드 */ + , LEVY_BGNG_YMD /* 부과 시작 일자 */ + , LEVY_END_YMD /* 부과 종료 일자 */ + , SNDNG_YMD /* 발송 일자 */ + , DUDT_YMD /* 납기 일자 */ + , TTL_NM /* 제목 명 */ + , DOC_NO /* 문서 번호 */ + , ETC_CN /* 기타 내용 */ + , TNOCS /* 총건수 */ + , GRAMT /* 총금액 */ + , CON_KEY /* 외부연계식별키 */ + , DIV_KB /* 취급 구분 */ + , EPOST_NOTICE_ID /* 전자우편 안내문 ID */ + , SNDNG_STTS_CD /* 발송 상태 코드 */ + , RESND_YN /* 재발송 여부 */ + , REG_DT /* 등록 일시 */ + , RGTR /* 등록자 */ + , MDFCN_DT /* 수정 일시 */ + , MDFR /* 수정자 */ + ) + VALUES ( + #{sndng.sndngId} /* 발송 ID */ + , #{sndng.sggCd} /* 시군구 코드 */ + , #{sndng.taskSeCd} /* 업무 구분 코드 */ + , #{sndng.vltnId} /* 위반 ID */ + , #{sndng.sndngRegSeCd} /* 발송 등록 구분 코드 */ + , #{sndng.sndngSeCd} /* 발송 구분 코드 */ + , #{sndng.levyBgngYmd} /* 부과 시작 일자 */ + , #{sndng.levyEndYmd} /* 부과 종료 일자 */ + , #{sndng.sndngYmd} /* 발송 일자 */ + , #{sndng.dudtYmd} /* 납기 일자 */ + , #{sndng.ttlNm} /* 제목 명 */ + , #{sndng.docNo} /* 문서 번호 */ + , #{sndng.etcCn} /* 기타 내용 */ + , #{sndng.tnocs} /* 총건수 */ + , #{sndng.gramt} /* 총금액 */ + , #{sndng.conKey} /* 외부연계식별키 */ + , #{sndng.divKb} /* 취급 구분 */ + , #{sndng.epostNoticeId} /* 전자우편 안내문 ID */ + , #{sndng.sndngSttsCd} /* 발송 상태 코드 */ + , #{sndng.resndYn} /* 재발송 여부 */ + , /* 등록 일시 */ + , #{sndng.createdBy} /* 등록자 */ + , /* 수정 일시 */ + , #{sndng.modifiedBy} /* 수정자 */ + ) + /* 발송 대장 수정(sndngMapper.updateSndng) */ UPDATE TB_SNDNG SET 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 ba2e5037..b24bb7dc 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 @@ -177,15 +177,14 @@ - 계고일자 - 계고사유 + 계고일자 + 계고사유 기타내용 단속일시 차량번호 법정동 단속장소 - 단속금액 - 처리상태 + 처리상태 등록일시 등록사용자 수정일시 @@ -208,7 +207,6 @@ {VHRNO} {CRDN_STDG_NM} {CRDN_PLC} - {FFNLG_CRDN_AMT} {CRDN_STTS_NM} {REG_DT} {RGTR_NM} @@ -219,7 +217,7 @@ @@ -310,7 +308,7 @@ checkbox.prop("checked", keys.includes(checkbox.val())); }); - $("#btnCreateWrngSndngTrg--${pageName}").prop("disabled", keys.length < 1); + $("#btnWrngSndngTrgInfo--${pageName}").prop("disabled", keys.length < 1); }; // 개별총정보 dialog @@ -411,6 +409,7 @@ // 계고장 발송 등록 dialog -> callback 추가 ${pageName}Info = (params) => { + // 선택된 자료의 단속ID 추가 let selected = ${pageName}Control.dataset.getKeys("selected"); if (selected.length < 1) return; @@ -541,6 +540,7 @@ callPurpose : "create" , sggCd : ${pageName}Control.dataset.getValue("SGG_CD") // 시군구 코드 , taskSeCd : ${pageName}Control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드 + , sndngSeCd : "10" // 발송 구분 코드 - 10 계고장 }; ${pageName}Info(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 index c2fc8493..58271adf 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01020-info.jsp @@ -7,56 +7,61 @@
    - -
    - - - -
    - - +
    + + + +
    - - - + + +
    -
    +
    -
    + +
    + + + +
    - +
    - +
    -
    - +
    - + @@ -72,18 +77,27 @@ + + + 계고일자 - 계고사유 + 계고사유 기타내용 + 민원신청번호 + 민원접수번호 + 민원접수일자 + 민원처리결과 단속일시 차량번호 법정동 단속장소 - 단속금액 - 처리상태 + 단속금액 + 처리상태 납부자명 납부자생일 - 우편번호 + 우편번호 + 주소 + 상세주소 등록일시 등록사용자 수정일시 @@ -95,9 +109,16 @@ @@ -135,19 +158,23 @@ **************************************************************************/ // URL var ${pageName}PrefixUrl = "/sndb/sndb01"; + // FormFields + var ${pageName}Fields = new FormFields("#frmEdit--${pageName}"); /************************************************************************** * DatasetControl **************************************************************************/ var ${pageName}Control = new DatasetControl({ - prefix : "wrngSndngTrgtInfo" - , prefixName : "계고장 발송 대상" + prefix : "sndngTrgtInfo" + , prefixName : "발송 대상" , keymapper : info => info ? info.CRDN_ID : "" - , dataGetter : obj => obj.wrngSndngTrgtInfoList + , dataGetter : obj => obj.sndngTrgtInfoList , appendData : true , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 , formats : { - LEVY_EXCL_YMD : dateFormat + TNOCS : numberFormat + , GRAMT : numberFormat + , LEVY_EXCL_YMD : dateFormat , CRDN_YMD_TM : datetimeFormat , FFNLG_CRDN_AMT : numberFormat , REG_DT : datetimeFormat @@ -162,14 +189,11 @@ ${pageName}Control.onDatasetChange = obj => { renderList${pageName}(); - $("#paging--${pageName}").setPagingInfo({ - list : ${pageName}Control.dataset - , prefix : "paging--${pageName}" - , start : obj.${infoPrefix}Start - , totalSize : obj.${infoPrefix}Total - , fetchSize : obj.${infoPrefix}Fetch - , func : "${pageName}Control.load({index})" - }); + ${pageName}Control.select(true); // 전체 선택 되도록.. + + if (obj.length > 0) { + + } ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 완료 }; @@ -183,6 +207,18 @@ $("#tbody--${pageName}").setCurrentRow(key); }; + // 선택(체크) 변경 이벤트 + ${pageName}Control.onSelectionChange = selected => { + let ${infoPrefix}List = ${pageName}Control.dataset; + let keys = selected.map(e => ${infoPrefix}List.getKey(e)); + + $("#tbody--${pageName} input[type='checkbox']").each(function() { + let checkbox = $(this); + + checkbox.prop("checked", keys.includes(checkbox.val())); + }); + }; + // 개별총정보 dialog ${pageName}Control.getInfo = (crdnId) => { if (crdnId == undefined || crdnId == null || crdnId == "") { @@ -210,6 +246,38 @@ }); } + // 저장 callback + ${pageName}Control.onSave = (resp) => { + let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html(); + let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle); + + dialog.alert(showMessage); + + if (resp.saved) { + dialog.close(${pageName}Control.prefix + "Dialog"); + } + } + + // 저장 + ${pageName}Control.save = (info) => { + if (!info) return; + + // 선택된 자료의 단속ID 추가 + let selected = ${pageName}Control.dataset.getKeys("selected"); + + if (selected.length < 1) return; + + info.crdnIDs = selected.join(","); + + let createUrl = wctx.url(info.taskSeCd + ${pageName}PrefixUrl + "/020/create.do"); + + ajax.post({ + url : createUrl + , data : info + , success : resp => ${pageName}Control.onSave(resp) + }); + } + /************************************************************************** * **************************************************************************/ @@ -240,11 +308,21 @@ // 화면 초기값 셋팅 initForm${pageName} = () => { // 달력 초기화 - initDatepicker("frmSearch--${pageName}"); - + initDatepicker("frmEdit--${pageName}"); $("#sndngYmd--${pageName}").datepicker("setDate", new Date()); - - ${pageName}Control.dataset.clear(); + $("#dudtYmd--${pageName}").datepicker("setDate", new Date()); + + let sndngSeCd = "${sndngSeCd}"; + + if (sndngSeCd == "10") { + $("#dudtYmd--${pageName}").val(""); + $("#dudtYmd--${pageName}").prop("disabled", true); + $("#divDudtYmd--${pageName}").hide(); + } else { + $("#dudtYmd--${pageName}").datepicker("setDate", new Date()); + $("#dudtYmd--${pageName}").prop("disabled", false); + $("#divDudtYmd--${pageName}").show(); + } } // 이벤트 @@ -275,8 +353,16 @@ } // 계고장 등록 - fnCreateWrngSndng${pageName} = () => { - + fnSave${pageName} = () => { + // validate 확인 + if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; + + dialog.alert({ + content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?" + , onOK : () => { + ${pageName}Control.save(${pageName}Fields.get()); + } + }); } /************************************************************************** @@ -286,11 +372,20 @@ // 이벤트 설정 setEvent${pageName}(); + // 화면 초기 설정 + initForm${pageName}(); + // 보안모드 fn_securityModeToggle($("#securityMode--top").is(":checked")); // Dataset 셋팅 - 화면이 열리면서 조회하는 경우 addData 하여 자료를 추가 - ${pageName}Control.addData(${wrngSndngTrgtInfo}); + ${pageName}Control.addData(${sndngTrgtInfo}); + + $("#sndngSeCd--${pageName}").val("${sndngSeCd}"); // 발송 구분 코드 + $("#sggCd--${pageName}").val(${pageName}Control.dataset.getValue("SGG_CD")); // 시군구 코드 + $("#taskSeCd--${pageName}").val(${pageName}Control.dataset.getValue("TASK_SE_CD")); // 업무 구분 코드 + $("#tnocs--${pageName}").val(${pageName}Control.dataset.getValue("TNOCS")); // 총건수 + $("#gramt--${pageName}").val(${pageName}Control.dataset.getValue("GRAMT")); // 총금액 });