From 696d7ad691291d0a3efe95b75618b8d90d3c392f Mon Sep 17 00:00:00 2001 From: JoJH Date: Thu, 14 Nov 2024 14:53:21 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=A0=84=ED=86=B5=EC=A7=80=20?= =?UTF-8?q?=EB=B0=9C=EC=86=A1=EB=8C=80=EC=83=81=20=EC=83=81=EC=84=B8=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 --- .../xit/fims/sndb/service/bean/SndngBean.java | 2476 ++++++++--------- .../xit/fims/sndb/web/Sndb01Controller.java | 38 +- 2 files changed, 1263 insertions(+), 1251 deletions(-) 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 b6ed969f..b2fb9147 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 @@ -40,89 +40,89 @@ import cokr.xit.foundation.data.DataObject; * *
  * ============ 변경 이력 ============
- * 2023-08-25	JoJH 최초 작성
+ * 2023-08-25    JoJH 최초 작성
  * ================================
  * 
*/ @Component("sndngBean") public class SndngBean extends AbstractBean { - /** 발송 대장 정보 DAO */ - @Resource(name = "sndngMapper") - private SndngMapper sndngMapper; - - /** 발송 상세 정보 DAO */ - @Resource(name = "sndngDtlMapper") - private SndngDtlMapper sndngDtlMapper; - - /** 사용자 정보 DAO */ - @Resource(name="userBean") - protected UserBean userBean; - - /** 위반 정보 정보 DAO */ - @Resource(name = "vltnMapper") - private VltnMapper vltnMapper; - - /** 단속 정보 DAO */ - @Resource(name = "crdnUpdtMapper") - private CrdnUpdtMapper crdnUpdtMapper; - - /** 단속 상태 이력 정보 Bean */ - @Resource(name = "crdnSttsHstryBean") - private CrdnSttsHstryBean crdnSttsHstryBean; - - /** 부과 대장 정보 Bean */ - @Resource(name = "levyBean") - private LevyBean levyBean; - - /** 전자우편 접수 등록 정보 Bean */ - @Resource(name = "epostRcptRegBean") - private EpostRcptRegBean epostRcptRegBean; - - /** 전자우편 접수 상세 정보 Bean */ - @Resource(name = "epostRcptDtlBean") - private EpostRcptDtlBean epostRcptDtlBean; - - /** 파일 Bean */ - @Resource(name="fileBean") - private FileBean fileBean; - - /**지정한 조건에 따라 계도장 발송 대상 목록을 조회하여 반환한다. - * @param req 발송 대장 조회 조건 - * @return 계도장 발송 대상 목록 - */ - public List getWrngTrgtList(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.selectWrngTrgtList(req); - } - - /**지정한 조건에 따라 발송 대상 객체들을 반환한다. - * @param req 발송 대장 조회 조건 - * @return 계도장 발송 대상 객체 목록 - */ - public List getWrngTrgts(SndbQuery req) { - // 삭제 여부 확인 - if (req.getDelYn() == null) { - req.setDelYn("N"); - } - if (req.getOrderBy() == null) { - req.setOrderBy("CRDN_YMD_TM"); - } - - return sndngMapper.selectWrngTrgts(req); - } + /** 발송 대장 정보 DAO */ + @Resource(name = "sndngMapper") + private SndngMapper sndngMapper; + + /** 발송 상세 정보 DAO */ + @Resource(name = "sndngDtlMapper") + private SndngDtlMapper sndngDtlMapper; + + /** 사용자 정보 DAO */ + @Resource(name="userBean") + protected UserBean userBean; + + /** 위반 정보 정보 DAO */ + @Resource(name = "vltnMapper") + private VltnMapper vltnMapper; + + /** 단속 정보 DAO */ + @Resource(name = "crdnUpdtMapper") + private CrdnUpdtMapper crdnUpdtMapper; + + /** 단속 상태 이력 정보 Bean */ + @Resource(name = "crdnSttsHstryBean") + private CrdnSttsHstryBean crdnSttsHstryBean; + + /** 부과 대장 정보 Bean */ + @Resource(name = "levyBean") + private LevyBean levyBean; + + /** 전자우편 접수 등록 정보 Bean */ + @Resource(name = "epostRcptRegBean") + private EpostRcptRegBean epostRcptRegBean; + + /** 전자우편 접수 상세 정보 Bean */ + @Resource(name = "epostRcptDtlBean") + private EpostRcptDtlBean epostRcptDtlBean; + + /** 파일 Bean */ + @Resource(name="fileBean") + private FileBean fileBean; + + /**지정한 조건에 따라 계도장 발송 대상 목록을 조회하여 반환한다. + * @param req 발송 대장 조회 조건 + * @return 계도장 발송 대상 목록 + */ + public List getWrngTrgtList(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.selectWrngTrgtList(req); + } + + /**지정한 조건에 따라 발송 대상 객체들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 계도장 발송 대상 객체 목록 + */ + public List getWrngTrgts(SndbQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + if (req.getOrderBy() == null) { + req.setOrderBy("CRDN_YMD_TM"); + } + + return sndngMapper.selectWrngTrgts(req); + } /**계도장 발송 상세 정보를 등록한다. * @param sndngDtl 발송 상세 @@ -182,7 +182,7 @@ public class SndngBean extends AbstractBean { // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl); if (rtnNocs != 1) { - throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } // 단속 상태 코드를 수정한다. @@ -216,9 +216,6 @@ public class SndngBean extends AbstractBean { int rtnNocs = -1; // 처리 결과 건수 String rtnMsg = ""; // 처리 결과 메시지 - // 사용자 정보를 조회한다. - DataObject userInfo = userBean.getUserInfo(currentUser().getId()); - // 단속 IDs로 계도장 발송 대상 정보 조회 List trgtList = sndngMapper.selectWrngTrgtCrdnIds(req); @@ -232,6 +229,9 @@ public class SndngBean extends AbstractBean { return rtnMsg; } + // 사용자 정보를 조회한다. + DataObject userInfo = userBean.getUserInfo(currentUser().getId()); + // 위반 ID 조회 String vltnId = ""; if (req.getVltnCd() != null) { @@ -326,653 +326,653 @@ public class SndngBean extends AbstractBean { return "[S] 작업이 정상 처리 되었습니다."; } - /**지정한 조건에 따라 사전통지 발송 대상 목록을 조회하여 반환한다. - * @param req 발송 대장 조회 조건 - * @return 계도장 발송 대상 목록 - */ - public List getAdvntceTrgtList(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.selectAdvntceTrgtList(req); - } - - /**지정한 조건에 따라 사전통지 발송 대상 객체들을 반환한다. - * @param req 발송 대장 조회 조건 - * @return 계도장 발송 대상 객체 목록 - */ - public List getAdvntceTrgts(SndbQuery req) { - // 삭제 여부 확인 - if (req.getDelYn() == null) { - req.setDelYn("N"); - } - // 정렬 확인 - if (req.getOrderBy() == null) { - req.setOrderBy("CRDN_YMD_TM"); - } - - return sndngMapper.selectAdvntceTrgts(req); - } - - /**사전통지 발송 대상을 조회하여 발송 대장에 등록한다. - * @param req 사전통지 발송 대상 조회, sndng 발송 대장 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - public String createAdvntceSndngList(SndbQuery req, Sndng sndng) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = "[F] "; // 처리 결과 메시지 - - // 단속 Ids로 사전통지 발송 대상 정보 조회 - List advntceTrgtList = sndngMapper.selectAdvntceTrgtCrdnIds(req); - - // 조회 건수 확인 - if (advntceTrgtList == null || advntceTrgtList.size() < 1) { - rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다."; - return rtnMsg; - } - if (sndng.getTnocs() != advntceTrgtList.size()) { - rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다."; - return rtnMsg; - } - - // 사용자 정보를 조회한다. - DataObject userInfo = userBean.getUserInfo(currentUser().getId()); - - // 발송 대장에 등록한다. - sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 - if (sndng.getSndngRegSeCd() == null) { - sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드(FIM067) - 02: 개별 - } - if (sndng.getTnocs() == null) { - sndng.setTnocs(advntceTrgtList.size()); // 총건수 - } - if (sndng.getGramt() == null) { - sndng.setGramt(advntceTrgtList.get(0).number("GRAMT").longValue()); // 총금액 - } - if (sndng.getRsndYn() == null) { - sndng.setRsndYn("N"); // 재발송 여부 - } - if (sndng.getDelYn() == null) { - sndng.setDelYn("N"); // 삭제 여부 - } - sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00: 발송 준비 - - // 발송(TB_SNDNG) 대장을 등록한다. - rtnNocs = sndngMapper.insertSndng(sndng); - if (rtnNocs != 1) { - throw new RuntimeException("사전통지 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 발송 상세 대장에 등록한다. - for (int iLoop = 0; iLoop < advntceTrgtList.size(); iLoop++) { - rtnMsg = createAdvntceSndngDtl(sndng, advntceTrgtList.get(iLoop).string("CRDN_ID")); - // 메시지 확인 - if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. - throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**사전통지 발송 상세 정보를 등록한다. - * @param sndngDtl 발송 상세 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - public String createAdvntceSndngDtl(Sndng sndng, String crdnId) { - // 변수 선언 - boolean rtnScs = false; // 처리 결과 여부 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = ""; // 처리 결과 메시지 - - // 단속(TB_CRDN), 납부자(TB_PAYER), 부과(TB_LEVY) 대장을 조회 한다. - DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); - - if (crdnPayerInfo == null) { - rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." - + "

" + "단속 ID : " + crdnId + "

"; - return rtnMsg; - } - if (crdnPayerInfo.string("RTPYR_ID").equals("")) { - rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." - + "

" + "단속ID : " + crdnId - + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") - + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") - + "

"; - return rtnMsg; - } - - if ("BPV,PVS".contains(crdnPayerInfo.string("TASK_SE_CD"))) { - // 사전 감경부과가 되지 않았다면.. 감경부과를 등록한다. - if (crdnPayerInfo.string("LEVY_ID").equals("")) { - Levy levy = new Levy(); - levy.setSggCd(crdnPayerInfo.string("SGG_CD")); // 시군구 코드 - levy.setTaskSeCd(crdnPayerInfo.string("TASK_SE_CD")); // 업무 구분 코드 - levy.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID - levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자 - levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자 - levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자 - - // 부과(TB_LEVY) 대장을 등록한다. - rtnMsg = levyBean.createRdctLevy(levy); - - // 단속(TB_CRDN), 납부자(TB_PAYER), 부과(TB_LEVY) 대장을 조회 한다. - crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); - } else { - // 부과 가산금 확인 - if (crdnPayerInfo.number("LEVY_ADAMT").intValue() != 0) { - rtnMsg = "[F] 발송상세 등록 작업중 부과 가산금액이 0원이 아닙니다." - + "

" + "단속ID : " + crdnPayerInfo.string("CRDN_ID") - + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") - + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") - + "

"; - return rtnMsg; - } - // 사전 감경금액과 부과 본세금액 확인 - if (crdnPayerInfo.number("ADVNTCE_AMT").intValue() != crdnPayerInfo.number("LEVY_PCPTAX").intValue()) { - rtnMsg = "[F] 발송상세 등록 작업중 사전 감경금액과 부과 본세금액이 다릅니다." - + "

" + "단속ID : " + crdnPayerInfo.string("CRDN_ID") - + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") - + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") - + "
" + "사전 감경금액 : " + crdnPayerInfo.string("ADVNTCE_AMT") - + "
" + "부과 본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX") - + "

"; - return rtnMsg; - } - // 부과 본세와 합계 금액이 같은지 확인 - if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("SUM_AMT").intValue()) { - rtnMsg = "[F] 발송상세 등록 작업중 본세금액과 합계금액이 다릅니다." - + "

" + "단속ID : " + crdnPayerInfo.string("CRDN_ID") - + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") - + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") - + "
" + "본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX") - + "
" + "합계금액 : " + crdnPayerInfo.string("SUM_AMT") - + "

"; - return rtnMsg; - } - - Levy levy = new Levy(); - levy.setLevyId(crdnPayerInfo.string("LEVY_ID")); // 부과 ID - levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자 - levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자 - levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자 - levy.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 - levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액 - levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 - - // 부과(TB_LEVY) 대장에 부과일자, 최초납기일자, 납기일자를 수정한다. - rtnMsg = levyBean.updateRdctLevyYmd(levy); - if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. - throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback - } - } - } - - // 발송 상세(TB_SNDNG_DTL) - SndngDtl sndngDtl = new SndngDtl(); - sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드 - sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID - sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID - sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드 - sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자 - sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자 - sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명 - sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일 - sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소 - sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소 - sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호 - sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전 - sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호 - sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시 - sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명 - sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소 - sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도 - sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호 - sndngDtl.setLevyYmd(sndng.getSndngYmd()); // 부과 일자 - sndngDtl.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자 - sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 - if (crdnPayerInfo.string("PCPTAX").equals("")) { - sndngDtl.setPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 = 사전통지 금액 - } else { - sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 - } - sndngDtl.setAdamt(0); // 가산금 = 0 - if (crdnPayerInfo.string("SUM_AMT").equals("")) { - sndngDtl.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 = 사전통지 금액 - } else { - sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액 - } - sndngDtl.setDudtAftrAmt(0); // 납기 후 금액 - sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호 - sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호 - sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명 - sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호 - sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2 - sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2 - sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3 - sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3 - sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4 - sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4 - sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5 - sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5 - sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6 - sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6 - sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7 - sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7 - sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8 - sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8 - sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9 - sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9 - sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10 - sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10 - sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11 - sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11 - sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12 - sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12 - sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13 - sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13 - sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14 - sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14 - sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15 - sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15 - sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16 - sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16 - sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17 - sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17 - sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18 - sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18 - sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19 - sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19 - sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20 - sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20 - sndngDtl.setDelYn("N"); // 삭제 여부 - - // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. - rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl); - if (rtnNocs != 1) { - throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 단속 대장에 사전통지 일자를 수정한다. - Crdn crdn = new Crdn(); - crdn.setCrdnId(crdnPayerInfo.string("CRDN_ID")); - crdn.setSggCd(crdnPayerInfo.string("SGG_CD")); - crdn.setTaskSeCd(crdnPayerInfo.string("TASK_SE_CD")); - crdn.setAdvntceBgngYmd(sndng.getSndngYmd()); - crdn.setAdvntceDudtYmd(sndng.getSndngEndYmd()); - crdn.setDelYn("N"); - - // 단속(TB_CRDN) 대장을 수정한다. - rtnNocs = crdnUpdtMapper.updateAdvntceYmd(crdn); - if (rtnNocs != 1) { - throw new RuntimeException("단속 대장에 사전통지일자 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 단속 상태 이력(TB_CRDN_STTS_HSTRY)을 등록하고, 단속(TB_CRDN) 대장의 단속상태코드를 수정한다. - if ("21,22,23".contains(crdnPayerInfo.string("CRDN_STTS_CD"))) { - CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID")); - crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD")); - crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT")); - crdnSttsHstry.setCrdnSttsCd("42"); - crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId()); - crdnSttsHstry.setUseYn("Y"); - - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. - rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); - if (!rtnScs) { - throw new RuntimeException("발송상세 등록 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } else if (crdnPayerInfo.string("CRDN_STTS_CD").equals("31")) { - CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID")); - crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD")); - crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT")); - crdnSttsHstry.setCrdnSttsCd("42"); - crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId()); - crdnSttsHstry.setUseYn("Y"); - - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다. - rtnScs = crdnSttsHstryBean.create(crdnSttsHstry); - if (!rtnScs) { - throw new RuntimeException("발송상세 등록 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**지정한 조건에 따라 고지서 발송 대상 목록을 조회하여 반환한다. - * @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) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = ""; // 처리 결과 메시지 - - // 단속 Ids로 고지서 발송 대상 정보 조회 - List nhtTrgtList = sndngMapper.selectNhtTrgtCrdnIds(req); - - // 조회 건수 확인 - if (nhtTrgtList == null || nhtTrgtList.size() < 1) { - rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다."; - return rtnMsg; - } -// if (sndng.getTnocs() != nhtTrgtList.size()) { -// rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다."; -// return rtnMsg; -// } - - // 사용자 정보를 조회한다. - DataObject userInfo = userBean.getUserInfo(currentUser().getId()); - - // 발송 대장에 등록한다. - sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 - if (sndng.getSndngRegSeCd() == null) { - sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드(FIM067) - 02: 개별 - } - if (sndng.getTnocs() == null) { - sndng.setTnocs(nhtTrgtList.size()); // 총건수 - } - if (sndng.getGramt() == null) { - sndng.setGramt(nhtTrgtList.get(0).number("GRAMT").longValue()); // 총금액 - } - if (sndng.getRsndYn() == null) { - sndng.setRsndYn("N"); // 재발송 여부 - } - if (sndng.getDelYn() == null) { - sndng.setDelYn("N"); // 삭제 여부 - } - sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비 - - // 발송(TB_SNDNG) 대장을 등록한다. - rtnNocs = sndngMapper.insertSndng(sndng); - if (rtnNocs != 1) { - throw new RuntimeException("고지서 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 발송 상세 대장에 등록한다. - for (int iLoop = 0; iLoop < nhtTrgtList.size(); iLoop++) { - rtnMsg = createNhtSndngDtl(sndng, nhtTrgtList.get(iLoop).string("CRDN_ID")); - if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. - throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**고지서 발송 상세 정보를 등록한다. - * @param sndngDtl 발송 상세 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - public String createNhtSndngDtl(Sndng sndng, String crdnId) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = ""; // 처리 결과 메시지 - - // 단속, 납부자 대장을 조회 한다. - DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); - - if (crdnPayerInfo == null) { - rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." - + "

" + "단속 ID : " + crdnId + "

"; - return rtnMsg; - } - if (crdnPayerInfo.string("RTPYR_ID").equals("")) { - rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." - + "

" + "단속 ID : " + crdnId - + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") - + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") - + "

"; - return rtnMsg; - } - if (crdnPayerInfo.string("LEVY_ID").equals("")) { - rtnMsg = "[F] 발송상세 등록 작업중 부과 정보가 확인되지 않았습니다." - + "

" + "단속 ID : " + crdnId - + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") - + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") - + "

"; - return rtnMsg; - } - - // 발송 상세(TB_SNDNG_DTL) - SndngDtl sndngDtl = new SndngDtl(); - sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드 - sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID - sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID - sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드 - sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자 - sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자 - sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명 - sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일 - sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소 - sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소 - sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호 - sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전 - sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호 - sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시 - sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명 - sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소 - sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도 - sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호 - sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자 - sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자 - sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 - sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세 - sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금 - sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액 - sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액 - sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호 - sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호 - sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명 - sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호 - sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2 - sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2 - sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3 - sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3 - sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4 - sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4 - sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5 - sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5 - sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6 - sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6 - sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7 - sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7 - sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8 - sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8 - sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9 - sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9 - sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10 - sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10 - sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11 - sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11 - sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12 - sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12 - sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13 - sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13 - sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14 - sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14 - sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15 - sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15 - sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16 - sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16 - sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17 - sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17 - sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18 - sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18 - sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19 - sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19 - sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20 - sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20 - sndngDtl.setDelYn("N"); // 삭제 여부 - - // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. - rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl); - if (rtnNocs != 1) { - throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**지정한 조건에 따라 발송 대장 목록을 조회하여 반환한다. - * @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 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - public String removeSndng(Sndng sndng) { - // 변수 선언 - int rtnNocs = -1; + /**지정한 조건에 따라 사전통지 발송 대상 목록을 조회하여 반환한다. + * @param req 발송 대장 조회 조건 + * @return 계도장 발송 대상 목록 + */ + public List getAdvntceTrgtList(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.selectAdvntceTrgtList(req); + } + + /**지정한 조건에 따라 사전통지 발송 대상 객체들을 반환한다. + * @param req 발송 대장 조회 조건 + * @return 계도장 발송 대상 객체 목록 + */ + public List getAdvntceTrgts(SndbQuery req) { + // 삭제 여부 확인 + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + req.setOrderBy("CRDN_YMD_TM"); + } + + return sndngMapper.selectAdvntceTrgts(req); + } + + /**사전통지 발송 대상을 조회하여 발송 대장에 등록한다. + * @param req 사전통지 발송 대상 조회, sndng 발송 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createAdvntceSndngList(SndbQuery req, Sndng sndng) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 단속 Ids로 사전통지 발송 대상 정보 조회 + List trgtList = sndngMapper.selectAdvntceTrgtCrdnIds(req); + + // 조회 건수 확인 + if (trgtList == null || trgtList.size() < 1) { + rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다."; + return rtnMsg; + } + if (sndng.getTnocs() != trgtList.size()) { + rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다."; + return rtnMsg; + } + + // 사용자 정보를 조회한다. + DataObject userInfo = userBean.getUserInfo(currentUser().getId()); + + // 위반 ID 조회 + String vltnId = ""; + if (req.getVltnCd() != null) { + VltnQuery vltnReq = new VltnQuery(); + vltnReq.setSggCd(sndng.getSggCd()); + vltnReq.setTaskSeCd(sndng.getTaskSeCd()); + vltnReq.setVltnCd(req.getVltnCd()); + + DataObject vltnInfo = vltnMapper.selectVltnInfo(vltnReq); + + vltnId = vltnInfo.string("VLTN_ID"); + } + + // 발송 대장에 등록한다. + sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 + sndng.setVltnId(vltnId); // 위반 ID + + if (sndng.getSndngRegSeCd() == null) { + sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드(FIM067) - 02: 개별 + } + if (sndng.getRsndYn() == null) { + sndng.setRsndYn("N"); // 재발송 여부 + } + if (sndng.getDelYn() == null) { + sndng.setDelYn("N"); // 삭제 여부 + } + sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00: 발송 준비 + + // 발송(TB_SNDNG) 대장을 등록한다. + rtnNocs = sndngMapper.insertSndng(sndng); + if (rtnNocs != 1) { + throw new RuntimeException("사전통지 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 발송 상세 대장에 등록한다. + for (int iLoop = 0; iLoop < trgtList.size(); iLoop++) { + rtnMsg = createAdvntceSndngDtl(sndng, trgtList.get(iLoop).string("CRDN_ID")); + if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. + throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**사전통지 발송 상세 정보를 등록한다. + * @param sndngDtl 발송 상세 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createAdvntceSndngDtl(Sndng sndng, String crdnId) { + // 변수 선언 + boolean rtnScs = false; // 처리 결과 여부 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 단속(TB_CRDN), 납부자(TB_PAYER), 부과(TB_LEVY) 대장을 조회 한다. + DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); + + if (crdnPayerInfo == null) { + rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + + "

" + "단속 ID : " + crdnId + "

"; + return rtnMsg; + } + if (crdnPayerInfo.string("RTPYR_ID").equals("")) { + rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." + + "

" + "단속ID : " + crdnId + + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") + + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") + + "

"; + return rtnMsg; + } + + if ("BPV,PVS".contains(crdnPayerInfo.string("TASK_SE_CD"))) { + // 사전 감경부과가 되지 않았다면.. 감경부과를 등록한다. + if (crdnPayerInfo.string("LEVY_ID").equals("")) { + Levy levy = new Levy(); + levy.setSggCd(crdnPayerInfo.string("SGG_CD")); // 시군구 코드 + levy.setTaskSeCd(crdnPayerInfo.string("TASK_SE_CD")); // 업무 구분 코드 + levy.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID + levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자 + levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자 + levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자 + + // 부과(TB_LEVY) 대장을 등록한다. + rtnMsg = levyBean.createRdctLevy(levy); + + // 단속(TB_CRDN), 납부자(TB_PAYER), 부과(TB_LEVY) 대장을 조회 한다. + crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); + } else { + // 부과 가산금 확인 + if (crdnPayerInfo.number("LEVY_ADAMT").intValue() != 0) { + rtnMsg = "[F] 발송상세 등록 작업중 부과 가산금액이 0원이 아닙니다." + + "

" + "단속ID : " + crdnPayerInfo.string("CRDN_ID") + + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") + + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") + + "

"; + return rtnMsg; + } + // 사전 감경금액과 부과 본세금액 확인 + if (crdnPayerInfo.number("ADVNTCE_AMT").intValue() != crdnPayerInfo.number("LEVY_PCPTAX").intValue()) { + rtnMsg = "[F] 발송상세 등록 작업중 사전 감경금액과 부과 본세금액이 다릅니다." + + "

" + "단속ID : " + crdnPayerInfo.string("CRDN_ID") + + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") + + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") + + "
" + "사전 감경금액 : " + crdnPayerInfo.string("ADVNTCE_AMT") + + "
" + "부과 본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX") + + "

"; + return rtnMsg; + } + // 부과 본세와 합계 금액이 같은지 확인 + if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("SUM_AMT").intValue()) { + rtnMsg = "[F] 발송상세 등록 작업중 본세금액과 합계금액이 다릅니다." + + "

" + "단속ID : " + crdnPayerInfo.string("CRDN_ID") + + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") + + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") + + "
" + "본세금액 : " + crdnPayerInfo.string("LEVY_PCPTAX") + + "
" + "합계금액 : " + crdnPayerInfo.string("SUM_AMT") + + "

"; + return rtnMsg; + } + + Levy levy = new Levy(); + levy.setLevyId(crdnPayerInfo.string("LEVY_ID")); // 부과 ID + levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자 + levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자 + levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자 + levy.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 + levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액 + levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 + + // 부과(TB_LEVY) 대장에 부과일자, 최초납기일자, 납기일자를 수정한다. + rtnMsg = levyBean.updateRdctLevyYmd(levy); + if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. + throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback + } + } + } + + // 발송 상세(TB_SNDNG_DTL) + SndngDtl sndngDtl = new SndngDtl(); + sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드 + sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID + sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID + sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드 + sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자 + sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자 + sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명 + sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일 + sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소 + sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소 + sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호 + sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전 + sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호 + sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시 + sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명 + sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소 + sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도 + sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호 + sndngDtl.setLevyYmd(sndng.getSndngYmd()); // 부과 일자 + sndngDtl.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자 + sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 + if (crdnPayerInfo.string("PCPTAX").equals("")) { + sndngDtl.setPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 = 사전통지 금액 + } else { + sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 + } + sndngDtl.setAdamt(0); // 가산금 = 0 + if (crdnPayerInfo.string("SUM_AMT").equals("")) { + sndngDtl.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 = 사전통지 금액 + } else { + sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액 + } + sndngDtl.setDudtAftrAmt(0); // 납기 후 금액 + sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호 + sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호 + sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명 + sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호 + sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2 + sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2 + sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3 + sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3 + sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4 + sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4 + sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5 + sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5 + sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6 + sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6 + sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7 + sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7 + sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8 + sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8 + sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9 + sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9 + sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10 + sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10 + sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11 + sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11 + sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12 + sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12 + sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13 + sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13 + sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14 + sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14 + sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15 + sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15 + sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16 + sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16 + sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17 + sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17 + sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18 + sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18 + sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19 + sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19 + sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20 + sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20 + sndngDtl.setDelYn("N"); // 삭제 여부 + + // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. + rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl); + if (rtnNocs != 1) { + throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속 대장에 사전통지 일자를 수정한다. + Crdn crdn = new Crdn(); + crdn.setCrdnId(crdnPayerInfo.string("CRDN_ID")); + crdn.setSggCd(crdnPayerInfo.string("SGG_CD")); + crdn.setTaskSeCd(crdnPayerInfo.string("TASK_SE_CD")); + crdn.setAdvntceBgngYmd(sndng.getSndngYmd()); + crdn.setAdvntceDudtYmd(sndng.getSndngEndYmd()); + crdn.setDelYn("N"); + + // 단속(TB_CRDN) 대장을 수정한다. + rtnNocs = crdnUpdtMapper.updateAdvntceYmd(crdn); + if (rtnNocs != 1) { + throw new RuntimeException("단속 대장에 사전통지일자 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY)을 등록한다. + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setCrdnSttsCd("42"); + crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId()); + crdnSttsHstry.setUseYn("Y"); + + if ("21,22,23".contains(crdnPayerInfo.string("CRDN_STTS_CD"))) { + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("발송상세 등록 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } else if (crdnPayerInfo.string("CRDN_STTS_CD").equals("31")) { + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록한다. + rtnScs = crdnSttsHstryBean.create(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("발송상세 등록 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**지정한 조건에 따라 고지서 발송 대상 목록을 조회하여 반환한다. + * @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) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 단속 Ids로 고지서 발송 대상 정보 조회 + List nhtTrgtList = sndngMapper.selectNhtTrgtCrdnIds(req); + + // 조회 건수 확인 + if (nhtTrgtList == null || nhtTrgtList.size() < 1) { + rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다."; + return rtnMsg; + } + if (sndng.getTnocs() != nhtTrgtList.size()) { + rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다."; + return rtnMsg; + } + + // 사용자 정보를 조회한다. + DataObject userInfo = userBean.getUserInfo(currentUser().getId()); + + // 발송 대장에 등록한다. + sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 + if (sndng.getSndngRegSeCd() == null) { + sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드(FIM067) - 02: 개별 + } + if (sndng.getTnocs() == null) { + sndng.setTnocs(nhtTrgtList.size()); // 총건수 + } + if (sndng.getGramt() == null) { + sndng.setGramt(nhtTrgtList.get(0).number("GRAMT").longValue()); // 총금액 + } + if (sndng.getRsndYn() == null) { + sndng.setRsndYn("N"); // 재발송 여부 + } + if (sndng.getDelYn() == null) { + sndng.setDelYn("N"); // 삭제 여부 + } + sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비 + + // 발송(TB_SNDNG) 대장을 등록한다. + rtnNocs = sndngMapper.insertSndng(sndng); + if (rtnNocs != 1) { + throw new RuntimeException("고지서 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 발송 상세 대장에 등록한다. + for (int iLoop = 0; iLoop < nhtTrgtList.size(); iLoop++) { + rtnMsg = createNhtSndngDtl(sndng, nhtTrgtList.get(iLoop).string("CRDN_ID")); + if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. + throw new RuntimeException(rtnMsg.replace("[F]", "")); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**고지서 발송 상세 정보를 등록한다. + * @param sndngDtl 발송 상세 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createNhtSndngDtl(Sndng sndng, String crdnId) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 단속, 납부자 대장을 조회 한다. + DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId); + + if (crdnPayerInfo == null) { + rtnMsg = "[F] 발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + + "

" + "단속 ID : " + crdnId + "

"; + return rtnMsg; + } + if (crdnPayerInfo.string("RTPYR_ID").equals("")) { + rtnMsg = "[F] 발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." + + "

" + "단속 ID : " + crdnId + + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") + + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") + + "

"; + return rtnMsg; + } + if (crdnPayerInfo.string("LEVY_ID").equals("")) { + rtnMsg = "[F] 발송상세 등록 작업중 부과 정보가 확인되지 않았습니다." + + "

" + "단속 ID : " + crdnId + + "
" + "단속일시 : " + crdnPayerInfo.string("CRDN_YMD_TM_MASK") + + "
" + "차량번호 : " + crdnPayerInfo.string("VHRNO") + + "

"; + return rtnMsg; + } + + // 발송 상세(TB_SNDNG_DTL) + SndngDtl sndngDtl = new SndngDtl(); + sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드 + sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID + sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID + sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드 + sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자 + sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자 + sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명 + sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일 + sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소 + sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소 + sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호 + sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전 + sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호 + sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시 + sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명 + sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소 + sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도 + sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호 + sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자 + sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자 + sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 + sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세 + sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금 + sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액 + sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액 + sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호 + sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호 + sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명 + sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호 + sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2 + sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2 + sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3 + sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3 + sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4 + sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4 + sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5 + sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5 + sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6 + sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6 + sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7 + sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7 + sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8 + sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8 + sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9 + sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9 + sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10 + sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10 + sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11 + sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11 + sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12 + sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12 + sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13 + sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13 + sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14 + sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14 + sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15 + sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15 + sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16 + sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16 + sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17 + sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17 + sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18 + sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18 + sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19 + sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19 + sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20 + sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20 + sndngDtl.setDelYn("N"); // 삭제 여부 + + // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다. + rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl); + if (rtnNocs != 1) { + throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**지정한 조건에 따라 발송 대장 목록을 조회하여 반환한다. + * @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 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String removeSndng(Sndng sndng) { + // 변수 선언 + int rtnNocs = -1; // 발송 상세(TB_SNDNG_DTL) SndngDtl sndngDtl = new SndngDtl(); sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID sndngDtl.setDelRsn(sndng.getDelRsn()); // 삭제 사유 - // 발송 상세(TB_SNDNG_DTL) 대장을 삭제한다. - rtnNocs = sndngDtlMapper.deleteSndngDtl(sndngDtl); - if (rtnNocs < 1) { - throw new RuntimeException("발송상세 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 발송(TB_SNDNG) 대장을 삭제한다. - rtnNocs = sndngMapper.deleteSndng(sndng); - if (rtnNocs != 1) { - throw new RuntimeException("발송 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**전자우편 발송 대장 정보를 등록한다. - * @param sndng 발송 대장 - * @return 저장 여부 - *
  • 저장됐으면 true
  • - *
  • 그렇지 않으면 false
  • - *
- */ - public String createEPost(Sndng sndng) { - // 변수 선언 - boolean rtnScs = false; // DB 처리 결과 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = "[F] "; // 처리 결과 메시지 - - String ctpvCode = ""; // 시도 코드 - String sealCd3 = ""; // 내용문 상세 종류 3번째(마지막) 자리 - String jobCd = ""; - String conKey = ""; // 외부연계식별키 - - // 1. 발송 대장 조회 - DataObject sndngInfo = sndngMapper.selectSndngInfo(new SndbQuery().setSndngId(sndng.getSndngId())); + // 발송 상세(TB_SNDNG_DTL) 대장을 삭제한다. + rtnNocs = sndngDtlMapper.deleteSndngDtl(sndngDtl); + if (rtnNocs < 1) { + throw new RuntimeException("발송상세 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 발송(TB_SNDNG) 대장을 삭제한다. + rtnNocs = sndngMapper.deleteSndng(sndng); + if (rtnNocs != 1) { + throw new RuntimeException("발송 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**전자우편 발송 대장 정보를 등록한다. + * @param sndng 발송 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createEPost(Sndng sndng) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + String ctpvCode = ""; // 시도 코드 + String sealCd3 = ""; // 내용문 상세 종류 3번째(마지막) 자리 + String jobCd = ""; + String conKey = ""; // 외부연계식별키 + + // 1. 발송 대장 조회 + DataObject sndngInfo = sndngMapper.selectSndngInfo(new SndbQuery().setSndngId(sndng.getSndngId())); /* - // 전자우편 발송 등록 전 오류 자료가 존재하는지 체크 + // 전자우편 발송 등록 전 오류 자료가 존재하는지 체크 //사진파일 체크 while not eof do begin @@ -1103,209 +1103,209 @@ public class SndngBean extends AbstractBean { end; */ - // 2. 사용자 정보를 조회한다. - DataObject userInfo = userBean.getUserInfo(currentUser().getId()); - - // 3. 자치단체 및 부서 정보를 조회한다. - DataObject deptSggInfo = epostRcptRegBean.getDeptSggInfo(sndngInfo.string("DEPT_CD")); - - // 4. 위반 정보를 조회한다. - VltnQuery vltnQuery = new VltnQuery(); - if (sndngInfo.string("VLTN_ID").equals("")) { // 위반 ID가 없다면.. - vltnQuery.setSggCd(sndngInfo.string("SGG_CD")); - vltnQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD")); - vltnQuery.setVltnCd("01"); - } else { - vltnQuery.setSggCd(sndngInfo.string("SGG_CD")); - vltnQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD")); - vltnQuery.setVltnId(sndngInfo.string("VLTN_ID")); - } - DataObject vltnInfo = vltnMapper.selectVltnInfo(vltnQuery); - - // 5. 전자우편 접수 내역을 등록한다. - EpostRcptReg epostRcptReg = new EpostRcptReg(); - - ctpvCode = sndngInfo.string("SGG_CD").substring(0, 2); // 시도 코드 - - if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { - sealCd3 = "E"; // E:과태료부과계도장 - } else if (sndngInfo.string("TASK_SE_CD").equals("DPV")) { // 장애인전용 - if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { - sealCd3 = "2"; // 2:장애인주차구역사전통보 - } else { - sealCd3 = "7"; // 7:장애인주차구역고지서 - } - } else if (sndngInfo.string("TASK_SE_CD").equals("ECA")) { // 전기차주차 - if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { - sealCd3 = "L"; // L:전기차충전구역과태료사전통지서 - } else { - sealCd3 = "M"; // M:전기차충전구역과태료고지서 - } - } else { - rtnMsg = "[F] 작업중 지정되지 않았습니다."; - return rtnMsg; - } - - // 발송 구분 - if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계고장 - jobCd = vltnInfo.string("VLTN_CD") + "01"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지 - jobCd = vltnInfo.string("VLTN_CD") + "02"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("03")) { // 부과 - jobCd = vltnInfo.string("VLTN_CD") + "03"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("04")) { // 독촉 - jobCd = vltnInfo.string("VLTN_CD") + "04"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("05")) { // 압류예고 - jobCd = vltnInfo.string("VLTN_CD") + "05"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("06")) { // 압류통지 - jobCd = vltnInfo.string("VLTN_CD") + "06"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납분 - jobCd = vltnInfo.string("VLTN_CD") + "09"; - } else { - rtnMsg = "[F] 작업중 발송 구분이 지정되지 않았습니다."; - return rtnMsg; - } - - String epostSenderRegSeq = epostRcptRegBean.getEpostSenderRegSeq(sndngInfo.string("TODAY"), sndngInfo.string("DEPT_CD")); - conKey = sndngInfo.string("TODAY") + "-" + sndngInfo.string("DEPT_CD") + "0000" + "-" + epostSenderRegSeq; - - int seqNo = 0; - if (sndng.getPostSndngSeCd().equals("0")) { - seqNo = epostRcptDtlBean.getEpostSenderDetailSeq(sndngInfo.string("TODAY")); - } - // 포맷: 등록일(REG_YMD)-발송기관코드(RECEV_SENDER_ORG_CODE)-업무코드(WORK_ID)-우편물구분(POST_SE)일련번호(RECEV_SEQ_NO) - // 예시: 20170719-40504370000-003-1001 - - epostRcptReg.setConKey(conKey); // 외부연계식별키 - epostRcptReg.setConOrg(deptSggInfo.string("EGP_CON_ORG")); // 외부기관구분코드 - epostRcptReg.setRceptId(deptSggInfo.string("EGP_RCEPT_ID")); // 접수우체국국기호 - epostRcptReg.setDataCd("00"); // 접수코드 + // 2. 사용자 정보를 조회한다. + DataObject userInfo = userBean.getUserInfo(currentUser().getId()); + + // 3. 자치단체 및 부서 정보를 조회한다. + DataObject deptSggInfo = epostRcptRegBean.getDeptSggInfo(sndngInfo.string("DEPT_CD")); + + // 4. 위반 정보를 조회한다. + VltnQuery vltnQuery = new VltnQuery(); + if (sndngInfo.string("VLTN_ID").equals("")) { // 위반 ID가 없다면.. + vltnQuery.setSggCd(sndngInfo.string("SGG_CD")); + vltnQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD")); + vltnQuery.setVltnCd("01"); + } else { + vltnQuery.setSggCd(sndngInfo.string("SGG_CD")); + vltnQuery.setTaskSeCd(sndngInfo.string("TASK_SE_CD")); + vltnQuery.setVltnId(sndngInfo.string("VLTN_ID")); + } + DataObject vltnInfo = vltnMapper.selectVltnInfo(vltnQuery); + + // 5. 전자우편 접수 내역을 등록한다. + EpostRcptReg epostRcptReg = new EpostRcptReg(); + + ctpvCode = sndngInfo.string("SGG_CD").substring(0, 2); // 시도 코드 + + if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { + sealCd3 = "E"; // E:과태료부과계도장 + } else if (sndngInfo.string("TASK_SE_CD").equals("DPV")) { // 장애인전용 + if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { + sealCd3 = "2"; // 2:장애인주차구역사전통보 + } else { + sealCd3 = "7"; // 7:장애인주차구역고지서 + } + } else if (sndngInfo.string("TASK_SE_CD").equals("ECA")) { // 전기차주차 + if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { + sealCd3 = "L"; // L:전기차충전구역과태료사전통지서 + } else { + sealCd3 = "M"; // M:전기차충전구역과태료고지서 + } + } else { + rtnMsg = "[F] 작업중 지정되지 않았습니다."; + return rtnMsg; + } + + // 발송 구분 + if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계고장 + jobCd = vltnInfo.string("VLTN_CD") + "01"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지 + jobCd = vltnInfo.string("VLTN_CD") + "02"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("03")) { // 부과 + jobCd = vltnInfo.string("VLTN_CD") + "03"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("04")) { // 독촉 + jobCd = vltnInfo.string("VLTN_CD") + "04"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("05")) { // 압류예고 + jobCd = vltnInfo.string("VLTN_CD") + "05"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("06")) { // 압류통지 + jobCd = vltnInfo.string("VLTN_CD") + "06"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납분 + jobCd = vltnInfo.string("VLTN_CD") + "09"; + } else { + rtnMsg = "[F] 작업중 발송 구분이 지정되지 않았습니다."; + return rtnMsg; + } + + String epostSenderRegSeq = epostRcptRegBean.getEpostSenderRegSeq(sndngInfo.string("TODAY"), sndngInfo.string("DEPT_CD")); + conKey = sndngInfo.string("TODAY") + "-" + sndngInfo.string("DEPT_CD") + "0000" + "-" + epostSenderRegSeq; + + int seqNo = 0; + if (sndng.getPostSndngSeCd().equals("0")) { + seqNo = epostRcptDtlBean.getEpostSenderDetailSeq(sndngInfo.string("TODAY")); + } + // 포맷: 등록일(REG_YMD)-발송기관코드(RECEV_SENDER_ORG_CODE)-업무코드(WORK_ID)-우편물구분(POST_SE)일련번호(RECEV_SEQ_NO) + // 예시: 20170719-40504370000-003-1001 + + epostRcptReg.setConKey(conKey); // 외부연계식별키 + epostRcptReg.setConOrg(deptSggInfo.string("EGP_CON_ORG")); // 외부기관구분코드 + epostRcptReg.setRceptId(deptSggInfo.string("EGP_RCEPT_ID")); // 접수우체국국기호 + epostRcptReg.setDataCd("00"); // 접수코드 // 취급구분(DIV_KB) 000=일반 001=등기 201=선택등기 - if (sndng.getPostSndngSeCd().equals("1")) { - if (sndngInfo.string("SGG_CD").equals("11500")) { - epostRcptReg.setDivKb("00" + sndng.getPostSndngSeCd()); - epostRcptReg.setSealCd("1" + "2" + sealCd3); - } else { - epostRcptReg.setDivKb("20" + sndng.getPostSndngSeCd()); - epostRcptReg.setSealCd("E" + "2" + sealCd3); - } - } else { - epostRcptReg.setDivKb("00" + sndng.getPostSndngSeCd()); - epostRcptReg.setSealCd(sndng.getPostSndngSeCd() + "2" + sealCd3); - } - - epostRcptReg.setDfpayyn("001"); // 결재방법(DFPAYYN) - epostRcptReg.setRcptKb("020"); // 내용문 유형(RCPT_KB) - epostRcptReg.setWordKb("001"); // 내용문 종류(WORD_KB) - epostRcptReg.setRecevCnt(sndngInfo.number("TNOCS").intValue()); // 수취인 수 -> 건수 확인 필요하다. ///////////////////////////// - epostRcptReg.setEnvCd("003"); // 봉투 종류 - 접착식 - - if (ctpvCode.equals("11")) { // 서울특별시 - epostRcptReg.setColorYn("Y"); - epostRcptReg.setMailCnt(2); - - if (sealCd3.equals("E")) { - epostRcptReg.setFlexCd("N"); - } else { - epostRcptReg.setFlexCd("Y"); - } - } else { - if (sndngInfo.string("SGG_CD").equals("44200")) { // 아산시청 - if (sndng.getSndngSeCd().equals("02")) { // 사전통지는 컬러로.. - epostRcptReg.setColorYn("Y"); - } else { - epostRcptReg.setColorYn("N"); - } - } else if (sndngInfo.string("SGG_CD").equals("50110")) { // 제주시청 - if (sndng.getSndngSeCd().equals("02") || sndng.getSndngSeCd().equals("01") || sndng.getSndngSeCd().equals("10")) { // 사전통지, 계도 컬러로 - epostRcptReg.setColorYn("Y"); - } else { - epostRcptReg.setColorYn("N"); - } - } else { - epostRcptReg.setColorYn("N"); // 칼라우편물/흑백우편물(COLOR_YN) - } - - epostRcptReg.setFlexCd("N"); // 이면구분(FLEX_CD) - epostRcptReg.setMailCnt(1); // 내용문 매수(MAIL_CNT) - } - - epostRcptReg.setMmYn("Y"); // 메일머지 플래그(MM_YN) - epostRcptReg.setDmCnt(0); // 동봉물 개수(DM_CNT) - epostRcptReg.setSbFg("Y"); // 반송불필요 여부(SB_FG) - epostRcptReg.setApvlNb(deptSggInfo.string("EGP_APVL_NB")); // 후납계약 승인번호(APVL_NB) - epostRcptReg.setSendDate(sndngInfo.string("NOW").substring(0, 8)); // 신청 일자(SEND_DATE) - epostRcptReg.setSendTime(sndngInfo.string("NOW").substring(8)); // 전송 시간(SEND_TIME) - - if ("420".equals(sndngInfo.string("DEPT_CD").substring(0, 3)) && (sndngInfo.string("TASK_SE_CD").equals("ECA"))) { - epostRcptReg.setRelorsectCd("4200999"); // 연계기관결제부서코드(RELORSECT_CD) - } else { - epostRcptReg.setRelorsectCd(deptSggInfo.string("DEPT_CD")); // 연계기관결제부서코드(RELORSECT_CD) - } - - epostRcptReg.setRecevSenderOrgCode(deptSggInfo.string("DEPT_CD") + "0000"); // 발송기관코드(RECEV_SENDER_ORG_CODE) - epostRcptReg.setRecevSenderNm(deptSggInfo.string("INST_NM") + " " + deptSggInfo.string("DEPT_NM")); // 발송인명(SENDER_NM) - epostRcptReg.setRecevSenderZipcode(deptSggInfo.string("INST_ZIP")); // 우편번호(SENDER_ZIPCODE) - epostRcptReg.setRecevSenderAddr(deptSggInfo.string("INST_ADDR")); // 주소(SENDER_ADDR) - epostRcptReg.setRecevSenderDetailaddr(deptSggInfo.string("INST_DADDR")); // 상세주소(SENDER_DTAILADDR) - epostRcptReg.setRecevSenderDepartTel(deptSggInfo.string("DEPT_TELNO")); // 부과부서 전화번호(RECEV_SENDER_DEPART_TEL) - epostRcptReg.setRecevSenderDepartNm(deptSggInfo.string("DEPT_NM")); // 부과부서(RECEV_SENDER_DEPART_NM) - epostRcptReg.setRecevDivCd(sndng.getPostSndngSeCd()); // 등기구분(RECEV_DIV_CD) - epostRcptReg.setRecevPrintDt(sndngInfo.string("TODAY_MASK")); // 출력일자(RECEV_PRINT_DT) - epostRcptReg.setRecevPrintYear(sndngInfo.string("TODAY").substring(0, 4)); // 출력연도(RECEV_PRINT_YEAR) - epostRcptReg.setRecevPrintMonth(sndngInfo.string("TODAY").substring(4, 6)); // 출력월(RECEV_PRINT_MONTH) - epostRcptReg.setRecevPrintDay(sndngInfo.string("TODAY").substring(6, 8)); // 출력일(RECEV_PRINT_DAY) - epostRcptReg.setRecevSenderFax(deptSggInfo.string("DEPT_FXNO")); // 부과부서 팩스번호(RECEV_SENDER_FAX) - epostRcptReg.setRecevSerderStaff(userInfo.string("USER_NM")); // 부과부서 담당자(RECEV_SERDER_STAFF) - epostRcptReg.setRecevSenderEmail(userInfo.string("EML_ADRS")); // 부과부서 이메일(RECEV_SENDER_EMAIL) - epostRcptReg.setJobCd(jobCd); // 작업 코드(JOB_CD) - epostRcptReg.setPostPrcsSttsCd("01"); // 우편 처리 상태 코드(POST_PRCS_STTS_CD) - epostRcptReg.setDelYn("N"); // 삭제 여부 - epostRcptReg.setRceptYmd(sndngInfo.string("TODAY")); // 접수 일자 - epostRcptReg.setSndngId(sndngInfo.string("SNDNG_ID")); // 발송 ID - - // 6. 전자우편 접수 등록 - rtnScs = epostRcptRegBean.create(epostRcptReg); - if (!rtnScs) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("우편통합 발송 작업중 전자우편 접수 등록에 실패하였습니다."); - } - - // 7. 발송 내역을 수정한다. - Sndng updtSndng = new Sndng(); - updtSndng.setConKey(epostRcptReg.getConKey()); // 외부연계식별키 - updtSndng.setDivKb(epostRcptReg.getDivKb()); // 취급 구분 -// updtSndng.setEpostNoticeId(); // 전자우편 안내문 ID - updtSndng.setSndngSttsCd("01"); // 발송 상태 코드(FIM049) - 01 발송 대기 - updtSndng.setSndngId(sndng.getSndngId()); // 발송 ID - - rtnNocs = sndngMapper.updateEPostSndng(updtSndng); // 전자우편 발송 내역 수정 - if (rtnNocs != 1) { - throw new RuntimeException("우편통합 발송 작업중 발송 내역 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 8. 전자우편 접수 상세 내역을 등록한다. - String infoSndngSeNm = ""; // 약식 발송 구분 명 - - if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계도 - infoSndngSeNm = "계도"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지서 - infoSndngSeNm = "사전"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("03")) { // 부과고지서 - infoSndngSeNm = "부과"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("04")) { // 독촉고지서 - infoSndngSeNm = "독촉"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("05")) { // 압류예고통지서 - infoSndngSeNm = "예고"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("06")) { // 압류통지 - infoSndngSeNm = "압류"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("07")) { // 사전통지서(개별) - infoSndngSeNm = "사전"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("08")) { // 체납고지서(개별) - infoSndngSeNm = "체납"; - } else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납고지서 - infoSndngSeNm = "체납"; + if (sndng.getPostSndngSeCd().equals("1")) { + if (sndngInfo.string("SGG_CD").equals("11500")) { + epostRcptReg.setDivKb("00" + sndng.getPostSndngSeCd()); + epostRcptReg.setSealCd("1" + "2" + sealCd3); + } else { + epostRcptReg.setDivKb("20" + sndng.getPostSndngSeCd()); + epostRcptReg.setSealCd("E" + "2" + sealCd3); + } + } else { + epostRcptReg.setDivKb("00" + sndng.getPostSndngSeCd()); + epostRcptReg.setSealCd(sndng.getPostSndngSeCd() + "2" + sealCd3); + } + + epostRcptReg.setDfpayyn("001"); // 결재방법(DFPAYYN) + epostRcptReg.setRcptKb("020"); // 내용문 유형(RCPT_KB) + epostRcptReg.setWordKb("001"); // 내용문 종류(WORD_KB) + epostRcptReg.setRecevCnt(sndngInfo.number("TNOCS").intValue()); // 수취인 수 -> 건수 확인 필요하다. ///////////////////////////// + epostRcptReg.setEnvCd("003"); // 봉투 종류 - 접착식 + + if (ctpvCode.equals("11")) { // 서울특별시 + epostRcptReg.setColorYn("Y"); + epostRcptReg.setMailCnt(2); + + if (sealCd3.equals("E")) { + epostRcptReg.setFlexCd("N"); + } else { + epostRcptReg.setFlexCd("Y"); + } + } else { + if (sndngInfo.string("SGG_CD").equals("44200")) { // 아산시청 + if (sndng.getSndngSeCd().equals("02")) { // 사전통지는 컬러로.. + epostRcptReg.setColorYn("Y"); + } else { + epostRcptReg.setColorYn("N"); + } + } else if (sndngInfo.string("SGG_CD").equals("50110")) { // 제주시청 + if (sndng.getSndngSeCd().equals("02") || sndng.getSndngSeCd().equals("01") || sndng.getSndngSeCd().equals("10")) { // 사전통지, 계도 컬러로 + epostRcptReg.setColorYn("Y"); + } else { + epostRcptReg.setColorYn("N"); + } + } else { + epostRcptReg.setColorYn("N"); // 칼라우편물/흑백우편물(COLOR_YN) + } + + epostRcptReg.setFlexCd("N"); // 이면구분(FLEX_CD) + epostRcptReg.setMailCnt(1); // 내용문 매수(MAIL_CNT) + } + + epostRcptReg.setMmYn("Y"); // 메일머지 플래그(MM_YN) + epostRcptReg.setDmCnt(0); // 동봉물 개수(DM_CNT) + epostRcptReg.setSbFg("Y"); // 반송불필요 여부(SB_FG) + epostRcptReg.setApvlNb(deptSggInfo.string("EGP_APVL_NB")); // 후납계약 승인번호(APVL_NB) + epostRcptReg.setSendDate(sndngInfo.string("NOW").substring(0, 8)); // 신청 일자(SEND_DATE) + epostRcptReg.setSendTime(sndngInfo.string("NOW").substring(8)); // 전송 시간(SEND_TIME) + + if ("420".equals(sndngInfo.string("DEPT_CD").substring(0, 3)) && (sndngInfo.string("TASK_SE_CD").equals("ECA"))) { + epostRcptReg.setRelorsectCd("4200999"); // 연계기관결제부서코드(RELORSECT_CD) + } else { + epostRcptReg.setRelorsectCd(deptSggInfo.string("DEPT_CD")); // 연계기관결제부서코드(RELORSECT_CD) + } + + epostRcptReg.setRecevSenderOrgCode(deptSggInfo.string("DEPT_CD") + "0000"); // 발송기관코드(RECEV_SENDER_ORG_CODE) + epostRcptReg.setRecevSenderNm(deptSggInfo.string("INST_NM") + " " + deptSggInfo.string("DEPT_NM")); // 발송인명(SENDER_NM) + epostRcptReg.setRecevSenderZipcode(deptSggInfo.string("INST_ZIP")); // 우편번호(SENDER_ZIPCODE) + epostRcptReg.setRecevSenderAddr(deptSggInfo.string("INST_ADDR")); // 주소(SENDER_ADDR) + epostRcptReg.setRecevSenderDetailaddr(deptSggInfo.string("INST_DADDR")); // 상세주소(SENDER_DTAILADDR) + epostRcptReg.setRecevSenderDepartTel(deptSggInfo.string("DEPT_TELNO")); // 부과부서 전화번호(RECEV_SENDER_DEPART_TEL) + epostRcptReg.setRecevSenderDepartNm(deptSggInfo.string("DEPT_NM")); // 부과부서(RECEV_SENDER_DEPART_NM) + epostRcptReg.setRecevDivCd(sndng.getPostSndngSeCd()); // 등기구분(RECEV_DIV_CD) + epostRcptReg.setRecevPrintDt(sndngInfo.string("TODAY_MASK")); // 출력일자(RECEV_PRINT_DT) + epostRcptReg.setRecevPrintYear(sndngInfo.string("TODAY").substring(0, 4)); // 출력연도(RECEV_PRINT_YEAR) + epostRcptReg.setRecevPrintMonth(sndngInfo.string("TODAY").substring(4, 6)); // 출력월(RECEV_PRINT_MONTH) + epostRcptReg.setRecevPrintDay(sndngInfo.string("TODAY").substring(6, 8)); // 출력일(RECEV_PRINT_DAY) + epostRcptReg.setRecevSenderFax(deptSggInfo.string("DEPT_FXNO")); // 부과부서 팩스번호(RECEV_SENDER_FAX) + epostRcptReg.setRecevSerderStaff(userInfo.string("USER_NM")); // 부과부서 담당자(RECEV_SERDER_STAFF) + epostRcptReg.setRecevSenderEmail(userInfo.string("EML_ADRS")); // 부과부서 이메일(RECEV_SENDER_EMAIL) + epostRcptReg.setJobCd(jobCd); // 작업 코드(JOB_CD) + epostRcptReg.setPostPrcsSttsCd("01"); // 우편 처리 상태 코드(POST_PRCS_STTS_CD) + epostRcptReg.setDelYn("N"); // 삭제 여부 + epostRcptReg.setRceptYmd(sndngInfo.string("TODAY")); // 접수 일자 + epostRcptReg.setSndngId(sndngInfo.string("SNDNG_ID")); // 발송 ID + + // 6. 전자우편 접수 등록 + rtnScs = epostRcptRegBean.create(epostRcptReg); + if (!rtnScs) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException("우편통합 발송 작업중 전자우편 접수 등록에 실패하였습니다."); + } + + // 7. 발송 내역을 수정한다. + Sndng updtSndng = new Sndng(); + updtSndng.setConKey(epostRcptReg.getConKey()); // 외부연계식별키 + updtSndng.setDivKb(epostRcptReg.getDivKb()); // 취급 구분 +// updtSndng.setEpostNoticeId(); // 전자우편 안내문 ID + updtSndng.setSndngSttsCd("01"); // 발송 상태 코드(FIM049) - 01 발송 대기 + updtSndng.setSndngId(sndng.getSndngId()); // 발송 ID + + rtnNocs = sndngMapper.updateEPostSndng(updtSndng); // 전자우편 발송 내역 수정 + if (rtnNocs != 1) { + throw new RuntimeException("우편통합 발송 작업중 발송 내역 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 8. 전자우편 접수 상세 내역을 등록한다. + String infoSndngSeNm = ""; // 약식 발송 구분 명 + + if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계도 + infoSndngSeNm = "계도"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지서 + infoSndngSeNm = "사전"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("03")) { // 부과고지서 + infoSndngSeNm = "부과"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("04")) { // 독촉고지서 + infoSndngSeNm = "독촉"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("05")) { // 압류예고통지서 + infoSndngSeNm = "예고"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("06")) { // 압류통지 + infoSndngSeNm = "압류"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("07")) { // 사전통지서(개별) + infoSndngSeNm = "사전"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("08")) { // 체납고지서(개별) + infoSndngSeNm = "체납"; + } else if (sndngInfo.string("SNDNG_SE_CD").equals("09")) { // 체납고지서 + infoSndngSeNm = "체납"; } // 문서종류 @@ -1316,29 +1316,29 @@ public class SndngBean extends AbstractBean { String recevDocCd5 = ""; if ("DPV,ECA".contains(sndngInfo.string("TASK_SE_CD"))) { - recevDocCd1 = "납부(" + infoSndngSeNm + ")서 영수증"; // 문서종류1 - recevDocCd2 = vltnInfo.string("TASK_SE_NM") + " " + vltnInfo.string("VLTN_ARTCL"); // 문서종류2 - recevDocCd3 = "[" + infoSndngSeNm + "]"; // 문서종류3 - recevDocCd4 = "[" + "시세외" + "]" + sndngInfo.string("TXITM_NM"); // 문서종류4 - recevDocCd5 = "영수필통지서"; // 문서종류5 - } else { - recevDocCd1 = ""; // 문서종류1 - recevDocCd2 = ""; // 문서종류2 - recevDocCd3 = ""; // 문서종류3 - recevDocCd4 = ""; // 문서종류4 - recevDocCd5 = "영수필통지서"; // 문서종류5 - } + recevDocCd1 = "납부(" + infoSndngSeNm + ")서 영수증"; // 문서종류1 + recevDocCd2 = vltnInfo.string("TASK_SE_NM") + " " + vltnInfo.string("VLTN_ARTCL"); // 문서종류2 + recevDocCd3 = "[" + infoSndngSeNm + "]"; // 문서종류3 + recevDocCd4 = "[" + "시세외" + "]" + sndngInfo.string("TXITM_NM"); // 문서종류4 + recevDocCd5 = "영수필통지서"; // 문서종류5 + } else { + recevDocCd1 = ""; // 문서종류1 + recevDocCd2 = ""; // 문서종류2 + recevDocCd3 = ""; // 문서종류3 + recevDocCd4 = ""; // 문서종류4 + recevDocCd5 = "영수필통지서"; // 문서종류5 + } // 과목명 - String recevSubj1 = ""; // 과목명1 - String recevSubj2 = ""; // 과목명2 - String recevSubj3 = ""; // 과목명3 + String recevSubj1 = ""; // 과목명1 + String recevSubj2 = ""; // 과목명2 + String recevSubj3 = ""; // 과목명3 recevSubj1 = "과태료"; - if (sndngInfo.string("SNDNG_SE_CD").equals("01") || sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 계도, 사전통지서 - recevSubj2 = ""; + if (sndngInfo.string("SNDNG_SE_CD").equals("01") || sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 계도, 사전통지서 + recevSubj2 = ""; } else { - recevSubj2 = "가산금"; + recevSubj2 = "가산금"; } recevSubj3 = deptSggInfo.string("SGG_NM"); @@ -1350,314 +1350,314 @@ public class SndngBean extends AbstractBean { List sndngTrgts = sndngDtlMapper.selectSndngTrgtDtlIds(sndbQuery); for (int iLoop = 0; iLoop < sndngTrgts.size(); iLoop++) { - // 전자우편 접수 상세 - EpostRcptDtl epostRcptDtl = new EpostRcptDtl(); + // 전자우편 접수 상세 + EpostRcptDtl epostRcptDtl = new EpostRcptDtl(); - // 발송 상세 및 단속, 납부자, 부과 정보 조회 - DataObject sndngDtlInfo = sndngDtlMapper.selectSndngDtlInfo(new SndbQuery().setSndngDtlId(sndngTrgts.get(iLoop).string("SNDNG_DTL_ID"))); + // 발송 상세 및 단속, 납부자, 부과 정보 조회 + DataObject sndngDtlInfo = sndngDtlMapper.selectSndngDtlInfo(new SndbQuery().setSndngDtlId(sndngTrgts.get(iLoop).string("SNDNG_DTL_ID"))); - // 가상계좌취득 자료가 아니면 다음 자료로.. - if (!sndngDtlInfo.string("SNDNG_DTL_STTS_CD").equals("02")) { -// continue; - throw new RuntimeException("우편통합 발송 작업중 발송상세 상태코드가 가상계좌취득이 아닌 자료를 발견되었습니다."); // 예외를 발생시켜서 DB Rollback - } + // 가상계좌취득 자료가 아니면 다음 자료로.. + if (!sndngDtlInfo.string("SNDNG_DTL_STTS_CD").equals("02")) { +// continue; + throw new RuntimeException("우편통합 발송 작업중 발송상세 상태코드가 가상계좌취득이 아닌 자료를 발견되었습니다."); // 예외를 발생시켜서 DB Rollback + } // 고지번호 String becevBillNumber = ""; if ("01,02".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { - becevBillNumber = ""; + becevBillNumber = ""; + } else { + becevBillNumber = "고지번호:" + sndngDtlInfo.string("FYR") + "-" + sndngDtlInfo.string("LEVY_NO"); + } + + // 등기번호 + String rgstNmbr = ""; + if (sndng.getPostSndngSeCd().equals("1")) { + rgstNmbr = epostRcptRegBean.getEpostRgNo(sndngInfo.string("SGG_CD"), sndngInfo.string("TASK_SE_CD")); + } else { + seqNo++; + rgstNmbr = sndngInfo.string("TODAY") + String.format("%05d", seqNo + 1); + } + + // 금액 + int pcptax = 0; // 본세 + int adamt = 0; // 가산금 + int sumAmt = 0; // 합계 금액 + int afterPcptax = 0; // 납기후 본세 + int afterAdamt = 0; // 납기후 가산금 + int afterSumAmt = 0; // 납기후 합계 금액 + + // 계도장에는 최초 과태료 금액을 출력한다. + if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) { + pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액 + adamt = 0; // 가산금 = 0 + sumAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액 + afterPcptax = 0; // 납기후 본세 + afterAdamt = 0; // 납기후 가산금 + afterSumAmt = 0; // 납기후 합계 금액 + } else { + pcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 본세 + adamt = sndngDtlInfo.number("ADAMT").intValue(); // 가산금 + sumAmt = sndngDtlInfo.number("SUM_AMT").intValue(); // 합계 금액 + + if (sndngDtlInfo.string("SGG_CD").equals("50110")) { + afterPcptax = 0; // 납기후 본세 + afterAdamt = 0; // 납기후 가산금 + afterSumAmt = 0; // 납기후 합계 금액 + } else { + afterSumAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액 + if (afterSumAmt == 0) { // 납기후 금액이 0 이라면.. + afterPcptax = 0; + afterAdamt = 0; + afterSumAmt = 0; + } else { + afterPcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 납기후 본세 + if (afterSumAmt > afterPcptax) { // 납기후 금액이 본세보다 크다면.. + afterAdamt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue() - sndngDtlInfo.number("PCPTAX").intValue(); + } else if (afterSumAmt < afterPcptax) { // 납기후 금액이 본세보다 작다면 오류.. + throw new RuntimeException("우편통합 발송 작업중 납기후 금액이 본세보다 작은 자료가 발견되었습니다."); // 예외를 발생시켜서 DB Rollback + } else { + afterAdamt = 0; + } + } + } + } + + // OCR Band + String ocr0 = ""; + String ocr1 = ""; + String ocr2 = ""; + if ("11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { // 계도장 + ocr0 = ""; + ocr1 = ""; + ocr2 = ""; + } else if (ctpvCode.equals("11")) { // 서울 + ocr0 = sndngDtlInfo.string("TAX_NO"); + ocr1 = ""; + ocr2 = ""; } else { - becevBillNumber = "고지번호:" + sndngDtlInfo.string("FYR") + "-" + sndngDtlInfo.string("LEVY_NO"); + // TAX_NO = 부서코드(7) + 특별회계사업코드(4) + 회계연도(4) + 회계구분(2) + 세목코드(6) + 고지번호(6) + 분납순번(2) + ocr0 = sndngDtlInfo.string("TAX_NO") + CmmnUtil.getOcrVrfcCode("12357", sndngDtlInfo.string("TAX_NO"), 31); + ocr1 = CmmnUtil.getOcrband2(ocr0, sndngDtlInfo.string("LEVY_SE_CD"), sumAmt, sndngDtlInfo.string("DUDT_YMD")); + ocr2 = CmmnUtil.getOcrband3(ocr1, sumAmt, sndngDtlInfo.string("DUDT_YMD"), afterSumAmt); } + // 전자우편 접수 상세 ///////////////////////////////////////////////////// + // CON_KEY + epostRcptDtl.setConKey(conKey); // 등기번호 - String rgstNmbr = ""; - if (sndng.getPostSndngSeCd().equals("1")) { - rgstNmbr = epostRcptRegBean.getEpostRgNo(sndngInfo.string("SGG_CD"), sndngInfo.string("TASK_SE_CD")); - } else { - seqNo++; - rgstNmbr = sndngInfo.string("TODAY") + String.format("%05d", seqNo + 1); - } - - // 금액 - int pcptax = 0; // 본세 - int adamt = 0; // 가산금 - int sumAmt = 0; // 합계 금액 - int afterPcptax = 0; // 납기후 본세 - int afterAdamt = 0; // 납기후 가산금 - int afterSumAmt = 0; // 납기후 합계 금액 - - // 계도장에는 최초 과태료 금액을 출력한다. - if (sndngDtlInfo.string("SNDNG_SE_CD").equals("11") || sndngDtlInfo.string("SNDNG_SE_CD").equals("12")) { - pcptax = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 본세 = 과태료 단속 금액 - adamt = 0; // 가산금 = 0 - sumAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액 - afterPcptax = 0; // 납기후 본세 - afterAdamt = 0; // 납기후 가산금 - afterSumAmt = 0; // 납기후 합계 금액 - } else { - pcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 본세 - adamt = sndngDtlInfo.number("ADAMT").intValue(); // 가산금 - sumAmt = sndngDtlInfo.number("SUM_AMT").intValue(); // 합계 금액 - - if (sndngDtlInfo.string("SGG_CD").equals("50110")) { - afterPcptax = 0; // 납기후 본세 - afterAdamt = 0; // 납기후 가산금 - afterSumAmt = 0; // 납기후 합계 금액 - } else { - afterSumAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액 - if (afterSumAmt == 0) { // 납기후 금액이 0 이라면.. - afterPcptax = 0; - afterAdamt = 0; - afterSumAmt = 0; - } else { - afterPcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 납기후 본세 - if (afterSumAmt > afterPcptax) { // 납기후 금액이 본세보다 크다면.. - afterAdamt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue() - sndngDtlInfo.number("PCPTAX").intValue(); - } else if (afterSumAmt < afterPcptax) { // 납기후 금액이 본세보다 작다면 오류.. - throw new RuntimeException("우편통합 발송 작업중 납기후 금액이 본세보다 작은 자료가 발견되었습니다."); // 예외를 발생시켜서 DB Rollback - } else { - afterAdamt = 0; - } - } - } - } - - // OCR Band - String ocr0 = ""; - String ocr1 = ""; - String ocr2 = ""; - if ("11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { // 계도장 - ocr0 = ""; - ocr1 = ""; - ocr2 = ""; - } else if (ctpvCode.equals("11")) { // 서울 - ocr0 = sndngDtlInfo.string("TAX_NO"); - ocr1 = ""; - ocr2 = ""; - } else { - // TAX_NO = 부서코드(7) + 특별회계사업코드(4) + 회계연도(4) + 회계구분(2) + 세목코드(6) + 고지번호(6) + 분납순번(2) - ocr0 = sndngDtlInfo.string("TAX_NO") + CmmnUtil.getOcrVrfcCode("12357", sndngDtlInfo.string("TAX_NO"), 31); - ocr1 = CmmnUtil.getOcrband2(ocr0, sndngDtlInfo.string("LEVY_SE_CD"), sumAmt, sndngDtlInfo.string("DUDT_YMD")); - ocr2 = CmmnUtil.getOcrband3(ocr1, sumAmt, sndngDtlInfo.string("DUDT_YMD"), afterSumAmt); - } - - // 전자우편 접수 상세 ///////////////////////////////////////////////////// - // CON_KEY - epostRcptDtl.setConKey(conKey); - // 등기번호 - epostRcptDtl.setRgstNmbr(rgstNmbr); - // 일련번호 - epostRcptDtl.setRecevSeq(sndngDtlInfo.string("CRDN_ID")); - // 발송코드 - epostRcptDtl.setRecevCode(sndngDtlInfo.string("SNDNG_DTL_ID")); - // 바코드 - epostRcptDtl.setRecevBar1d(deptSggInfo.string("SGG_LEADER")); - // 이차원바코드 - epostRcptDtl.setRecevBar2d(""); - // 고지번호 - epostRcptDtl.setRecevBillNumber(becevBillNumber); - // 문서종류1 - epostRcptDtl.setRecevDocCd1(recevDocCd1); - // 문서종류2 - epostRcptDtl.setRecevDocCd2(recevDocCd2); - // 문서종류3 - epostRcptDtl.setRecevDocCd3(recevDocCd3); - // 문서종류4 - epostRcptDtl.setRecevDocCd4(recevDocCd4); - // 문서종류5 - epostRcptDtl.setRecevDocCd5(recevDocCd5); - // 과목명1 - epostRcptDtl.setRecevSubj1(recevSubj1); - // 과목명2 - epostRcptDtl.setRecevSubj2(recevSubj2); - // 과목명3 - epostRcptDtl.setRecevSubj3(recevSubj3); - // 위반일시 - epostRcptDtl.setRecevViolateDt(sndngDtlInfo.string("CRDN_YMD_TM_MASK")); - // 위반동 - epostRcptDtl.setRecevViolateDong(sndngDtlInfo.string("CRDN_STDG_NM")); - // 위반장소 - 80 - String crdnPlc = sndngDtlInfo.string("CRDN_PLC"); - if (crdnPlc.length() > 80) { - crdnPlc = sndngDtlInfo.string("CRDN_PLC").substring(0, 80); - epostRcptDtl.setRecevViolatePlace(crdnPlc); - } else { - epostRcptDtl.setRecevViolatePlace(crdnPlc); - } - // 법조항 - epostRcptDtl.setRecevLaws(vltnInfo.string("VLTN_LAW_NM") + " " + vltnInfo.string("VLTN_LAW1") + " " + vltnInfo.string("VLTN_LAW2")); - // 납부번호 - if (ocr0.equals("")) { - epostRcptDtl.setRecevPayNumber1(""); // 납부번호1 - epostRcptDtl.setRecevPayNumber2(""); // 납부번호2 - } else { - epostRcptDtl.setRecevPayNumber1(sndngDtlInfo.string("TAX_NO").substring(0, 17)); // 납부번호1 - epostRcptDtl.setRecevPayNumber2(sndngDtlInfo.string("TAX_NO").substring(17)); // 납부번호2 - } - // OCR0 - epostRcptDtl.setRecevOcr0(ocr0); - // OCR1 - epostRcptDtl.setRecevOcr1(ocr1); - // OCR2 - epostRcptDtl.setRecevOcr2(ocr2); + epostRcptDtl.setRgstNmbr(rgstNmbr); + // 일련번호 + epostRcptDtl.setRecevSeq(sndngDtlInfo.string("CRDN_ID")); + // 발송코드 + epostRcptDtl.setRecevCode(sndngDtlInfo.string("SNDNG_DTL_ID")); + // 바코드 + epostRcptDtl.setRecevBar1d(deptSggInfo.string("SGG_LEADER")); + // 이차원바코드 + epostRcptDtl.setRecevBar2d(""); + // 고지번호 + epostRcptDtl.setRecevBillNumber(becevBillNumber); + // 문서종류1 + epostRcptDtl.setRecevDocCd1(recevDocCd1); + // 문서종류2 + epostRcptDtl.setRecevDocCd2(recevDocCd2); + // 문서종류3 + epostRcptDtl.setRecevDocCd3(recevDocCd3); + // 문서종류4 + epostRcptDtl.setRecevDocCd4(recevDocCd4); + // 문서종류5 + epostRcptDtl.setRecevDocCd5(recevDocCd5); + // 과목명1 + epostRcptDtl.setRecevSubj1(recevSubj1); + // 과목명2 + epostRcptDtl.setRecevSubj2(recevSubj2); + // 과목명3 + epostRcptDtl.setRecevSubj3(recevSubj3); + // 위반일시 + epostRcptDtl.setRecevViolateDt(sndngDtlInfo.string("CRDN_YMD_TM_MASK")); + // 위반동 + epostRcptDtl.setRecevViolateDong(sndngDtlInfo.string("CRDN_STDG_NM")); + // 위반장소 - 80 + String crdnPlc = sndngDtlInfo.string("CRDN_PLC"); + if (crdnPlc.length() > 80) { + crdnPlc = sndngDtlInfo.string("CRDN_PLC").substring(0, 80); + epostRcptDtl.setRecevViolatePlace(crdnPlc); + } else { + epostRcptDtl.setRecevViolatePlace(crdnPlc); + } + // 법조항 + epostRcptDtl.setRecevLaws(vltnInfo.string("VLTN_LAW_NM") + " " + vltnInfo.string("VLTN_LAW1") + " " + vltnInfo.string("VLTN_LAW2")); + // 납부번호 + if (ocr0.equals("")) { + epostRcptDtl.setRecevPayNumber1(""); // 납부번호1 + epostRcptDtl.setRecevPayNumber2(""); // 납부번호2 + } else { + epostRcptDtl.setRecevPayNumber1(sndngDtlInfo.string("TAX_NO").substring(0, 17)); // 납부번호1 + epostRcptDtl.setRecevPayNumber2(sndngDtlInfo.string("TAX_NO").substring(17)); // 납부번호2 + } + // OCR0 + epostRcptDtl.setRecevOcr0(ocr0); + // OCR1 + epostRcptDtl.setRecevOcr1(ocr1); + // OCR2 + epostRcptDtl.setRecevOcr2(ocr2); // 전자 납부번호 - epostRcptDtl.setRecevOnlinePayNumber(sndngDtlInfo.string("EPAYNO")); - // 가상계좌 - if (ctpvCode.equals("11")) { // 서울 - epostRcptDtl.setVractno(sndngDtlInfo.string("VR_ACTNO")); - epostRcptDtl.setVractno2(sndngDtlInfo.string("VR_ACTNO2")); - epostRcptDtl.setVractno3(sndngDtlInfo.string("VR_ACTNO3")); - epostRcptDtl.setVractno4(sndngDtlInfo.string("VR_ACTNO4")); - epostRcptDtl.setVractno5(sndngDtlInfo.string("VR_ACTNO5")); - epostRcptDtl.setVractno6(sndngDtlInfo.string("VR_ACTNO6")); - epostRcptDtl.setVractno7(sndngDtlInfo.string("VR_ACTNO7")); - epostRcptDtl.setVractno8(sndngDtlInfo.string("VR_ACTNO8")); - epostRcptDtl.setVractno9(sndngDtlInfo.string("VR_ACTNO9")); - epostRcptDtl.setVractno10(sndngDtlInfo.string("VR_ACTNO10")); - epostRcptDtl.setVractno11(sndngDtlInfo.string("VR_ACTNO11")); - } else { - epostRcptDtl.setVractno(sndngDtlInfo.string("BANK_NM") + " " + sndngDtlInfo.string("VR_ACTNO")); - epostRcptDtl.setVractno2(sndngDtlInfo.string("BANK_NM2") + " " + sndngDtlInfo.string("VR_ACTNO2")); - epostRcptDtl.setVractno3(sndngDtlInfo.string("BANK_NM3") + " " + sndngDtlInfo.string("VR_ACTNO3")); - epostRcptDtl.setVractno4(sndngDtlInfo.string("BANK_NM4") + " " + sndngDtlInfo.string("VR_ACTNO4")); - epostRcptDtl.setVractno5(sndngDtlInfo.string("BANK_NM5") + " " + sndngDtlInfo.string("VR_ACTNO5")); - epostRcptDtl.setVractno6(sndngDtlInfo.string("BANK_NM6") + " " + sndngDtlInfo.string("VR_ACTNO6")); - epostRcptDtl.setVractno7(sndngDtlInfo.string("BANK_NM7") + " " + sndngDtlInfo.string("VR_ACTNO7")); - epostRcptDtl.setVractno8(sndngDtlInfo.string("BANK_NM8") + " " + sndngDtlInfo.string("VR_ACTNO8")); - epostRcptDtl.setVractno9(sndngDtlInfo.string("BANK_NM9") + " " + sndngDtlInfo.string("VR_ACTNO9")); - epostRcptDtl.setVractno10(sndngDtlInfo.string("BANK_NM10") + " " + sndngDtlInfo.string("VR_ACTNO10")); - epostRcptDtl.setVractno11(sndngDtlInfo.string("BANK_NM11") + " " + sndngDtlInfo.string("VR_ACTNO11")); - } - // 과태료금액 - epostRcptDtl.setRecevFinePrice(sndngDtlInfo.string("FFNLG_AMT")); - // 납부금액 - epostRcptDtl.setRecevPayPrice(String.valueOf(sumAmt)); - // 납부기한 - epostRcptDtl.setRecevPayDt(sndngDtlInfo.string("DUDT_YMD_MASK_KOR")); - // 납기내기한 - epostRcptDtl.setRecevPayInDate(sndngDtlInfo.string("DUDT_YMD_MASK")); - // 납기내금액 - epostRcptDtl.setRecevPayInPrice(String.valueOf(pcptax)); - // 납기내가산금 - epostRcptDtl.setRecevPayInAddPrice(String.valueOf(adamt)); - // 납기내합계금액 - epostRcptDtl.setRecevPayInDefaultPrice(String.valueOf(sumAmt)); - // 납기후기한 - epostRcptDtl.setRecevPayOutDate(sndngDtlInfo.string("DUDT_AFTR_YMD_MASK")); - // 납기후금액 - epostRcptDtl.setRecevPayOutPrice(String.valueOf(afterPcptax)); - // 납기후가산금 - epostRcptDtl.setRecevPayOutAddPrice(String.valueOf(afterAdamt)); - // 납기후합계금액 - epostRcptDtl.setRecevPayOutDefaultPrice(String.valueOf(afterSumAmt)); - // 차량번호 - epostRcptDtl.setRecevCarNumber(sndngDtlInfo.string("VHRNO")); - // 우편번호 - epostRcptDtl.setRecevCarOwnerZipcode(sndngDtlInfo.string("ZIP")); - // 주소(시, 구) - epostRcptDtl.setRecevCarOwnerAddr(sndngDtlInfo.string("ADDR")); - // 상세주소 - epostRcptDtl.setRecevCarOwnerDetailaddr(sndngDtlInfo.string("DTL_ADDR")); - // 소유자명 - epostRcptDtl.setRecevCarOwnerNm(sndngDtlInfo.string("RTPYR_NM")); - // 주민번호(납부자 생년월일) - epostRcptDtl.setRecevCarOwnerSsn(sndngDtlInfo.string("RTPYR_BRDT")); - // 증거번호 - epostRcptDtl.setRecevEvidenceNumber(sndngDtlInfo.string("SNDNG_DTL_ID")); - // 사진장수 - epostRcptDtl.setRecevPhotoCnt("0"); - // 사진파일명1 - epostRcptDtl.setRecevPhotoFilename1(""); - // 사진파일명2 - epostRcptDtl.setRecevPhotoFilename2(""); - // 사진파일명3 - epostRcptDtl.setRecevPhotoFilename3(""); - // 사진파일명4 - epostRcptDtl.setRecevPhotoFilename4(""); - - // 계도장(10,11), 사전통지서(01,02)에는 사진을 출력한다. - if ("01,02,11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { - // 단속 첨부 파일 조회 - List fileInfo = fileBean.getFilesOf(Crdn.INF_TYPE, sndngDtlInfo.string("CRDN_ID")); - - if (fileInfo.size() > 0) { - epostRcptDtl.setRecevPhotoCnt(String.valueOf(fileInfo.size())); // 사진장수 - - // 사진파일명이 중복이 되면 안되다.. 중복을 피하기 위해 서버에 저장된 파일명으로 지정하였다. - for (int jLoop = 0; jLoop < fileInfo.size(); jLoop++) { - // 서버 OS에 따라.. separator 지정. - String strSeparator = ""; // File.separator - if (deptSggInfo.string("SRVR_OS").contains("Windows")) { - strSeparator = "\\"; - } else { - strSeparator = "/"; - } - - // 파일 명 - String fileName = ""; - fileName = fileInfo.get(jLoop).getPath(); - fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1); - - try { - // 파일이 저장되는 경로 확인. file-job.conf 에서 확인. epost 전자우편 신청 전송 "attachmentDir" - File fPath = new File(new File("").getAbsolutePath() + "/files/interface/attachment/epost/"); - - // 폴더가 존재하는지 확인 후 폴더가 없다면 생성 - if (!fPath.exists()) { - fPath.mkdir(); - } - - // 파일 복사 - FileInputStream fInputStream = (FileInputStream) fileInfo.get(jLoop).getInputStream(); - FileOutputStream fOutputStream = new FileOutputStream(fPath + File.separator + fileName); - - byte[] buffer = new byte[1024]; - int length; - - while ((length = fInputStream.read(buffer)) > 0) { - fOutputStream.write(buffer, 0, length); - } - - fInputStream.close(); - fOutputStream.close(); - } catch (IOException e) { - throw new RuntimeException("우편통합 발송 작업중 전자우편 단속 사진 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - if (jLoop == 0) { - epostRcptDtl.setRecevPhotoFilename1(fileName); // 사진파일명1 - } else if (jLoop == 1) { - epostRcptDtl.setRecevPhotoFilename2(fileName); // 사진파일명2 - } else if (jLoop == 2) { - epostRcptDtl.setRecevPhotoFilename3(fileName); // 사진파일명3 - } else if (jLoop == 3) { - epostRcptDtl.setRecevPhotoFilename4(fileName); // 사진파일명4 - } - } - } - } - - // 10. 전자우편 접수 상세 - rtnScs = epostRcptDtlBean.create(epostRcptDtl); - if (!rtnScs) { - throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 11. 발송상세 내역을 수정한다. - SndngDtl sndngDtl = new SndngDtl(); - sndngDtl.setConKey(conKey); // 외부연계식별키 - sndngDtl.setRgNo(rgstNmbr); // 등기 번호 - sndngDtl.setSndngDtlSttsCd("03"); // 발송 상세 상태 코드(FIM050) - 03 발송 - sndngDtl.setSndngDtlId(sndngDtlInfo.string("SNDNG_DTL_ID")); - - rtnNocs = sndngDtlMapper.updateSndngDtlEPost(sndngDtl); // 전자우편 발송상세 내역 수정 - if (rtnNocs != 1) { - throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } + epostRcptDtl.setRecevOnlinePayNumber(sndngDtlInfo.string("EPAYNO")); + // 가상계좌 + if (ctpvCode.equals("11")) { // 서울 + epostRcptDtl.setVractno(sndngDtlInfo.string("VR_ACTNO")); + epostRcptDtl.setVractno2(sndngDtlInfo.string("VR_ACTNO2")); + epostRcptDtl.setVractno3(sndngDtlInfo.string("VR_ACTNO3")); + epostRcptDtl.setVractno4(sndngDtlInfo.string("VR_ACTNO4")); + epostRcptDtl.setVractno5(sndngDtlInfo.string("VR_ACTNO5")); + epostRcptDtl.setVractno6(sndngDtlInfo.string("VR_ACTNO6")); + epostRcptDtl.setVractno7(sndngDtlInfo.string("VR_ACTNO7")); + epostRcptDtl.setVractno8(sndngDtlInfo.string("VR_ACTNO8")); + epostRcptDtl.setVractno9(sndngDtlInfo.string("VR_ACTNO9")); + epostRcptDtl.setVractno10(sndngDtlInfo.string("VR_ACTNO10")); + epostRcptDtl.setVractno11(sndngDtlInfo.string("VR_ACTNO11")); + } else { + epostRcptDtl.setVractno(sndngDtlInfo.string("BANK_NM") + " " + sndngDtlInfo.string("VR_ACTNO")); + epostRcptDtl.setVractno2(sndngDtlInfo.string("BANK_NM2") + " " + sndngDtlInfo.string("VR_ACTNO2")); + epostRcptDtl.setVractno3(sndngDtlInfo.string("BANK_NM3") + " " + sndngDtlInfo.string("VR_ACTNO3")); + epostRcptDtl.setVractno4(sndngDtlInfo.string("BANK_NM4") + " " + sndngDtlInfo.string("VR_ACTNO4")); + epostRcptDtl.setVractno5(sndngDtlInfo.string("BANK_NM5") + " " + sndngDtlInfo.string("VR_ACTNO5")); + epostRcptDtl.setVractno6(sndngDtlInfo.string("BANK_NM6") + " " + sndngDtlInfo.string("VR_ACTNO6")); + epostRcptDtl.setVractno7(sndngDtlInfo.string("BANK_NM7") + " " + sndngDtlInfo.string("VR_ACTNO7")); + epostRcptDtl.setVractno8(sndngDtlInfo.string("BANK_NM8") + " " + sndngDtlInfo.string("VR_ACTNO8")); + epostRcptDtl.setVractno9(sndngDtlInfo.string("BANK_NM9") + " " + sndngDtlInfo.string("VR_ACTNO9")); + epostRcptDtl.setVractno10(sndngDtlInfo.string("BANK_NM10") + " " + sndngDtlInfo.string("VR_ACTNO10")); + epostRcptDtl.setVractno11(sndngDtlInfo.string("BANK_NM11") + " " + sndngDtlInfo.string("VR_ACTNO11")); + } + // 과태료금액 + epostRcptDtl.setRecevFinePrice(sndngDtlInfo.string("FFNLG_AMT")); + // 납부금액 + epostRcptDtl.setRecevPayPrice(String.valueOf(sumAmt)); + // 납부기한 + epostRcptDtl.setRecevPayDt(sndngDtlInfo.string("DUDT_YMD_MASK_KOR")); + // 납기내기한 + epostRcptDtl.setRecevPayInDate(sndngDtlInfo.string("DUDT_YMD_MASK")); + // 납기내금액 + epostRcptDtl.setRecevPayInPrice(String.valueOf(pcptax)); + // 납기내가산금 + epostRcptDtl.setRecevPayInAddPrice(String.valueOf(adamt)); + // 납기내합계금액 + epostRcptDtl.setRecevPayInDefaultPrice(String.valueOf(sumAmt)); + // 납기후기한 + epostRcptDtl.setRecevPayOutDate(sndngDtlInfo.string("DUDT_AFTR_YMD_MASK")); + // 납기후금액 + epostRcptDtl.setRecevPayOutPrice(String.valueOf(afterPcptax)); + // 납기후가산금 + epostRcptDtl.setRecevPayOutAddPrice(String.valueOf(afterAdamt)); + // 납기후합계금액 + epostRcptDtl.setRecevPayOutDefaultPrice(String.valueOf(afterSumAmt)); + // 차량번호 + epostRcptDtl.setRecevCarNumber(sndngDtlInfo.string("VHRNO")); + // 우편번호 + epostRcptDtl.setRecevCarOwnerZipcode(sndngDtlInfo.string("ZIP")); + // 주소(시, 구) + epostRcptDtl.setRecevCarOwnerAddr(sndngDtlInfo.string("ADDR")); + // 상세주소 + epostRcptDtl.setRecevCarOwnerDetailaddr(sndngDtlInfo.string("DTL_ADDR")); + // 소유자명 + epostRcptDtl.setRecevCarOwnerNm(sndngDtlInfo.string("RTPYR_NM")); + // 주민번호(납부자 생년월일) + epostRcptDtl.setRecevCarOwnerSsn(sndngDtlInfo.string("RTPYR_BRDT")); + // 증거번호 + epostRcptDtl.setRecevEvidenceNumber(sndngDtlInfo.string("SNDNG_DTL_ID")); + // 사진장수 + epostRcptDtl.setRecevPhotoCnt("0"); + // 사진파일명1 + epostRcptDtl.setRecevPhotoFilename1(""); + // 사진파일명2 + epostRcptDtl.setRecevPhotoFilename2(""); + // 사진파일명3 + epostRcptDtl.setRecevPhotoFilename3(""); + // 사진파일명4 + epostRcptDtl.setRecevPhotoFilename4(""); + + // 계도장(10,11), 사전통지서(01,02)에는 사진을 출력한다. + if ("01,02,11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { + // 단속 첨부 파일 조회 + List fileInfo = fileBean.getFilesOf(Crdn.INF_TYPE, sndngDtlInfo.string("CRDN_ID")); + + if (fileInfo.size() > 0) { + epostRcptDtl.setRecevPhotoCnt(String.valueOf(fileInfo.size())); // 사진장수 + + // 사진파일명이 중복이 되면 안되다.. 중복을 피하기 위해 서버에 저장된 파일명으로 지정하였다. + for (int jLoop = 0; jLoop < fileInfo.size(); jLoop++) { + // 서버 OS에 따라.. separator 지정. + String strSeparator = ""; // File.separator + if (deptSggInfo.string("SRVR_OS").contains("Windows")) { + strSeparator = "\\"; + } else { + strSeparator = "/"; + } + + // 파일 명 + String fileName = ""; + fileName = fileInfo.get(jLoop).getPath(); + fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1); + + try { + // 파일이 저장되는 경로 확인. file-job.conf 에서 확인. epost 전자우편 신청 전송 "attachmentDir" + File fPath = new File(new File("").getAbsolutePath() + "/files/interface/attachment/epost/"); + + // 폴더가 존재하는지 확인 후 폴더가 없다면 생성 + if (!fPath.exists()) { + fPath.mkdir(); + } + + // 파일 복사 + FileInputStream fInputStream = (FileInputStream) fileInfo.get(jLoop).getInputStream(); + FileOutputStream fOutputStream = new FileOutputStream(fPath + File.separator + fileName); + + byte[] buffer = new byte[1024]; + int length; + + while ((length = fInputStream.read(buffer)) > 0) { + fOutputStream.write(buffer, 0, length); + } + + fInputStream.close(); + fOutputStream.close(); + } catch (IOException e) { + throw new RuntimeException("우편통합 발송 작업중 전자우편 단속 사진 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + if (jLoop == 0) { + epostRcptDtl.setRecevPhotoFilename1(fileName); // 사진파일명1 + } else if (jLoop == 1) { + epostRcptDtl.setRecevPhotoFilename2(fileName); // 사진파일명2 + } else if (jLoop == 2) { + epostRcptDtl.setRecevPhotoFilename3(fileName); // 사진파일명3 + } else if (jLoop == 3) { + epostRcptDtl.setRecevPhotoFilename4(fileName); // 사진파일명4 + } + } + } + } + + // 10. 전자우편 접수 상세 + rtnScs = epostRcptDtlBean.create(epostRcptDtl); + if (!rtnScs) { + throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 11. 발송상세 내역을 수정한다. + SndngDtl sndngDtl = new SndngDtl(); + sndngDtl.setConKey(conKey); // 외부연계식별키 + sndngDtl.setRgNo(rgstNmbr); // 등기 번호 + sndngDtl.setSndngDtlSttsCd("03"); // 발송 상세 상태 코드(FIM050) - 03 발송 + sndngDtl.setSndngDtlId(sndngDtlInfo.string("SNDNG_DTL_ID")); + + rtnNocs = sndngDtlMapper.updateSndngDtlEPost(sndngDtl); // 전자우편 발송상세 내역 수정 + if (rtnNocs != 1) { + throw new RuntimeException("우편통합 발송 작업중 전자우편 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } } 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 cd873026..28b5f3da 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -292,12 +292,15 @@ public class Sndb01Controller extends ApplicationController { @Task @RequestMapping(name="계고장 발송 대상 상세 조회", value=METHOD_URL.getWarningTargetInfo) public ModelAndView getWarningTargetInfo(HttpServletRequest hReq, SndbQuery req) { + boolean json = jsonResponse(); ModelAndView mav = getWarningTargetList(req); - mav.setViewName("fims/sndb/sndb01020-info"); + if (json) { + mav.setViewName("jsonView"); + } else { + mav.setViewName("fims/sndb/sndb01020-info"); - return mav - .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도 .addObject("pageName", "sndb01020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("prefixUrl", CLASS_URL) // prefixUrl .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) @@ -306,7 +309,10 @@ public class Sndb01Controller extends ApplicationController { .addObject("mainQuery", toJson(req)) // 검색 조건 .addObject("List", toJson(mav.getModel().get("List"))) // 데이터 .addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징 - ; + ; + } + + return mav; } /**계도장 발송 대상을 조회하여 발송 대장에 등록한다. @@ -660,19 +666,22 @@ public class Sndb01Controller extends ApplicationController { @Task @RequestMapping(name="사전통지 발송 대상 상세 조회", value=METHOD_URL.getAdvanceNoticeTargetInfo) public ModelAndView getAdvanceNoticeTargetInfo(HttpServletRequest hReq, SndbQuery req) { + boolean json = jsonResponse(); ModelAndView mav = getAdvanceNoticeTargetList(req); - mav.setViewName("fims/sndb/sndb01060-info"); + if (json) { + mav.setViewName("jsonView"); + } else { + mav.setViewName("fims/sndb/sndb01060-info"); - // 사전통지 납기일자 조회 - CmmnQuery cmmnReq = new CmmnQuery(); - cmmnReq.setSggCd(req.getSggCd()); - cmmnReq.setTaskSeCd(req.getTaskSeCd()); + // 사전통지 납기일자 조회 + CmmnQuery cmmnReq = new CmmnQuery(); + cmmnReq.setSggCd(req.getSggCd()); + cmmnReq.setTaskSeCd(req.getTaskSeCd()); - DataObject advntceYmdInfo = taskBean.getAdvntceYmdInfo(cmmnReq); + DataObject advntceYmdInfo = taskBean.getAdvntceYmdInfo(cmmnReq); - return mav - .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + mav.addObject("callPurpose", req.getCallPurpose()) // 호출 용도 .addObject("pageName", "sndb01060") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("prefixUrl", CLASS_URL) // prefixUrl .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) @@ -682,7 +691,10 @@ public class Sndb01Controller extends ApplicationController { .addObject("advntceYmdInfo", toJson(advntceYmdInfo)) // 사전통지 기간 정보 .addObject("List", toJson(mav.getModel().get("List"))) // 데이터 .addObject("Paging", toJson(mav.getModel().get("Paging"))) // 페이징 - ; + ; + } + + return mav; } /**사전통지 발송 대상을 등록한다.