diff --git a/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java b/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java index f6f31374..f740565a 100644 --- a/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java +++ b/src/main/java/cokr/xit/fims/cmmn/OutsourcingFileMaker.java @@ -302,7 +302,7 @@ public class OutsourcingFileMaker { predefinedSetList.add(new PredefinedSet("CRDN_SE_NM", "단속구분명")); predefinedSetList.add(new PredefinedSet("ATCH_FILE_CNT", "첨부파일갯수")); predefinedSetList.add(new PredefinedSet("FFNLG_CRDN_AMT", "과태료단속금액")); - predefinedSetList.add(new PredefinedSet("SUM_AMT", "합계금액")); + predefinedSetList.add(new PredefinedSet("LAST_AMT", "최종금액")); predefinedSetList.add(new PredefinedSet("RG_NO", "등기번호")); predefinedSetList.add(new PredefinedSet("OCR0", "OCR0").offLog()); predefinedSetList.add(new PredefinedSet("OCR0_1", "OCR0_1").offLog()); diff --git a/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java b/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java index 3956d1d6..8a95a2c7 100644 --- a/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java +++ b/src/main/java/cokr/xit/fims/cmmn/hwp/format/ReportOnClaims.java @@ -74,7 +74,7 @@ public class ReportOnClaims extends HWPFormat { writer.setValue("체납자성명", EgovStringUtil.null2void(globalVariable.get("rtpyrNm"))); writer.setValue("체납자번호", EgovStringUtil.null2void(globalVariable.get("rtpyrNo"))); writer.setValue("체납자주소", EgovStringUtil.null2void(globalVariable.get("rtpyrFullAddr"))); - int sumOfList = data.stream().mapToInt(item -> item.number("SUM_AMT").intValue()).sum(); + int sumOfList = data.stream().mapToInt(item -> item.number("LAST_AMT").intValue()).sum(); writer.setValue("채권청구액", DataFormat.n_nn0(sumOfList)); writer.setValue("합계금액", DataFormat.n_nn0(sumOfList)); writer.setValue("합계금액한글", CmmnUtil.convertNumberToHangul(sumOfList)); @@ -100,7 +100,7 @@ public class ReportOnClaims extends HWPFormat { .set("세목", one.string("TXITM_NM")) .set("세액", DataFormat.n_nn0(one.string("LEVY_PCPTAX"))) .set("가산금", DataFormat.n_nn0(one.string("LEVY_ADAMT"))) - .set("합계", DataFormat.n_nn0(one.string("SUM_AMT"))); + .set("합계", DataFormat.n_nn0(one.string("LAST_AMT"))); return newObj; }).toList(); writer.table(0, 9, 2).setValues(list); diff --git a/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java b/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java index 03f26809..3d35aabb 100644 --- a/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java +++ b/src/main/java/cokr/xit/fims/cmmn/hwp/format/RequestForDelivery.java @@ -74,7 +74,7 @@ public class RequestForDelivery extends HWPFormat { writer.setValue("차량번호", EgovStringUtil.null2void(globalVariable.get("vhrno"))); writer.setValue("주소", EgovStringUtil.null2void(globalVariable.get("rtpyrFullAddr"))); - int sumOfList = data.stream().mapToInt(item -> item.number("SUM_AMT").intValue()).sum(); + int sumOfList = data.stream().mapToInt(item -> item.number("LAST_AMT").intValue()).sum(); writer.setValue("합계금액", DataFormat.n_nn0(sumOfList)); writer.setValue("교부청구금액", DataFormat.n_nn0(sumOfList)); writer.setValue("교부청구금액한글", CmmnUtil.convertNumberToHangul(sumOfList)); @@ -101,7 +101,7 @@ public class RequestForDelivery extends HWPFormat { DataObject newObj = (DataObject) new DataObject() .set("징수과목", one.string("TXITM_NM")) .set("고지번호", one.string("GOJI_NO")) - .set("과태료계", DataFormat.n_nn0(one.string("SUM_AMT"))) + .set("과태료계", DataFormat.n_nn0(one.string("LAST_AMT"))) .set("법정기일", DataFormat.yyyy_mm_dd(one.string("DUDT_YMD"))) ; return newObj; diff --git a/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java b/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java index 70858fee..2bf35b70 100644 --- a/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java +++ b/src/main/java/cokr/xit/fims/cmmn/pdf/print/format/Nht.java @@ -57,7 +57,7 @@ public class Nht extends PDFPrintFormat { text("pcptax","본세",""), text("adamt","가산금",""), - text("sumAmt","납기금액",""), + text("lastAmt","납기금액",""), text("dudtYmd","납기일자",""), text("dudtAftrPcptax","납기후본세",""), text("dudtAftrAdamt","납기후가산금",""), @@ -180,8 +180,8 @@ public class Nht extends PDFPrintFormat { case "adamt" -> { //가산금 result = dataObject.string("ADAMT"); } - case "sumAmt" -> { //납기금액 - result = dataObject.string("SUM_AMT"); + case "lastAmt" -> { //납기금액 + result = dataObject.string("LAST_AMT"); } case "dudtYmd" -> { //납기일자 result = dataObject.string("DUDT_YMD"); @@ -257,9 +257,9 @@ public class Nht extends PDFPrintFormat { String ocrBand1 = CmmnUtil.getOcrband1(deptCode, spclBizCd, fyr, acntgSeCd, txitmCd, levyNo, ispySn); String levySeCd = dataObject.string("LEVY_SE_CD"); - int sumAmt = dataObject.number("SUM_AMT").intValue(); // 합계 금액 + int lastAmt = dataObject.number("LAST_AMT").intValue(); // 최종 금액 String dudtYmd = dataObject.string("DUDT_YMD"); - result = CmmnUtil.getOcrband2(ocrBand1, levySeCd, sumAmt, dudtYmd); + result = CmmnUtil.getOcrband2(ocrBand1, levySeCd, lastAmt, dudtYmd); } case "ocr3" -> { String deptCode = dataObject.string("DEPT_CD"); @@ -272,12 +272,12 @@ public class Nht extends PDFPrintFormat { String ocrBand1 = CmmnUtil.getOcrband1(deptCode, spclBizCd, fyr, acntgSeCd, txitmCd, levyNo, ispySn); String levySeCd = dataObject.string("LEVY_SE_CD"); - int sumAmt = dataObject.number("SUM_AMT").intValue(); // 합계 금액 + int lastAmt = dataObject.number("LAST_AMT").intValue(); // 최종 금액 String dudtYmd = dataObject.string("DUDT_YMD"); - String ocrBand2 = CmmnUtil.getOcrband2(ocrBand1, levySeCd, sumAmt, dudtYmd); + String ocrBand2 = CmmnUtil.getOcrband2(ocrBand1, levySeCd, lastAmt, dudtYmd); int afterSumAmt = dataObject.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액 - result = CmmnUtil.getOcrband3(ocrBand2, sumAmt, dudtYmd, afterSumAmt); + result = CmmnUtil.getOcrband3(ocrBand2, lastAmt, dudtYmd, afterSumAmt); } case "otptYmd" -> { @@ -428,7 +428,7 @@ public class Nht extends PDFPrintFormat { dataObject.put("PCPTAX", "80000"); //본세 dataObject.put("ADAMT", "0"); //가산금 - dataObject.put("SUM_AMT", "80000"); //합계금액 + dataObject.put("LAST_AMT", "80000"); //최종금액 dataObject.put("DUDT_YMD", "20231215"); //납기일자 dataObject.put("DUDT_AFTR_AMT", "100000"); //납기후 금액 dataObject.put("DUDT_AFTR_YMD", "20231231"); //납기후 일자 diff --git a/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java b/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java index 5db4ce62..5e759c9b 100644 --- a/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java +++ b/src/main/java/cokr/xit/fims/levy/dao/RdctMapper.java @@ -100,9 +100,4 @@ public interface RdctMapper extends AbstractMapper { */ int updateCrdnRdct(Crdn crdn); - /**부과(TB_LEVY) 대장의 금액을 수정한다. - * @param levy 부과 대장 - * @return 저장된 정보수 - */ - int updateLevyRdct(Levy levy); } diff --git a/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java b/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java index 2a593fb9..f70155b6 100644 --- a/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java +++ b/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java @@ -215,7 +215,7 @@ public class LevyBean extends AbstractBean { } levy.setFfnlgAmt(crdnInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 levy.setLevyPcptax(crdnInfo.number("ADVNTCE_AMT").intValue()); // 부과 본세 - levy.setSumAmt(crdnInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 + levy.setLastAmt(crdnInfo.number("ADVNTCE_AMT").intValue()); // 최종 금액 levy.setLevyAdamt(0); // 부과 가산금 levy.setIspyInt(0); // 분납 이자 levy.setRcvmtPcptax(0); // 수납 본세 @@ -284,8 +284,8 @@ public class LevyBean extends AbstractBean { *
  • 그렇지 않으면 false
  • * */ - public String updateRcvmt(Levy levy) { - int rtnNocs = levyMapper.updateRcvmt(levy); + public String updateLevyRcvmt(Levy levy) { + int rtnNocs = levyMapper.updateLevyRcvmt(levy); if (rtnNocs != 1) { throw new RuntimeException("부과 대장에 수납금액 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } @@ -300,8 +300,8 @@ public class LevyBean extends AbstractBean { *
  • 그렇지 않으면 false
  • * */ - public String updateRdcamt(Levy levy) { - int rtnNocs = levyMapper.updateRdamt(levy); + public String updateLevyRdcamt(Levy levy) { + int rtnNocs = levyMapper.updateLevyRdamt(levy); if (rtnNocs != 1) { throw new RuntimeException("부과 대장에 수납금액 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } diff --git a/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java b/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java index 628afe6a..8a088630 100644 --- a/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java +++ b/src/main/java/cokr/xit/fims/levy/service/bean/RdctBean.java @@ -11,6 +11,7 @@ import cokr.xit.fims.crdn.service.bean.CrdnStngBean; import cokr.xit.fims.levy.Levy; import cokr.xit.fims.levy.LevyQuery; import cokr.xit.fims.levy.Rdct; +import cokr.xit.fims.levy.dao.LevyMapper; import cokr.xit.fims.levy.dao.RdctMapper; import cokr.xit.foundation.component.AbstractBean; import cokr.xit.foundation.data.DataObject; @@ -21,281 +22,285 @@ import cokr.xit.foundation.data.DataObject; * *
      * ============ 변경 이력 ============
    - * 2023-08-30	JoJH 최초 작성
    + * 2023-08-30    JoJH 최초 작성
      * ================================
      * 
    */ @Component("rdctBean") public class RdctBean extends AbstractBean { - /** 과태료 감경 대장 정보 DAO */ - @Resource(name = "rdctMapper") - private RdctMapper rdctMapper; - - @Resource(name = "crdnStngBean") - private CrdnStngBean crdnStngBean; - - /**지정한 조건에 따라 과태료 감경 대장 목록을 조회하여 반환한다. - * @param req 과태료 감경 대장 조회 조건 - * @return 과태료 감경 대장 목록 - */ - public List getRdctList(LevyQuery req) { - if (req.getDelYn() == null) { - req.setDelYn("N"); - } - if (req.getOrderBy() == null) { - req.setOrderBy("REG_DT"); - } - - return rdctMapper.selectRdctList(req); - } - - /**지정한 조건에 따라 과태료 감경 대장 객체들을 반환한다. - * @param req 과태료 감경 대장 조회 조건 - * @return 과태료 감경 대장 객체 목록 - */ - public List getRdcts(LevyQuery req) { - if (req.getOrderBy() == null) { - req.setOrderBy("R.RDCT_ID DESC"); - } - - return rdctMapper.selectRdcts(req); - } - - /**지정한 감경 ID의 과태료 감경 대장 객체를 반환한다.
    - * @param req 과태료 감경 대장 조회 조건 - * @return 과태료 감경 대장 객체 - */ - public DataObject getRdctInfo(LevyQuery req) { - return rdctMapper.selectRdctInfo(req); - } - - /**지정한 단속 ID의 단속 정보를 반환한다.
    - * @param req 과태료 감경 대장 조회 조건 - * @return 단속 정보 - */ - - public DataObject getCrdnInfo(LevyQuery req) { - DataObject dataCrdn = rdctMapper.selectCrdn(req); - - if (req.getCallPurpose().equals("create")) { - dataCrdn.set("RDCT_YMD", dataCrdn.get("TODAY")); // 감경 일자 - dataCrdn.set("RDCT_AMT", dataCrdn.get("CALC_RDCT_AMT")); // 감경 금액 - } - - return dataCrdn; - } - - /**과태료 감경 대장 정보를 등록한다. - * @param rdct 과태료 감경 대장 - * @return 저장 여부 - * - */ - public String createRdct(Rdct rdct) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = "[F] "; // 처리 결과 메시지 - - // 단속 ID로 단속, 감경 정보 조회 - DataObject crdnRdctInfo = rdctMapper.selectCrdnInfo(rdct.getCrdnId()); - - // 감경 ID가 있다면 이미 부과제외 자료가 존재하므로 종료.. - if (!crdnRdctInfo.string("RDCT_ID").equals("")) { - rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다."; - return rtnMsg; - } - // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면.. - if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) { - rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다."; - return rtnMsg; - } - // 부과 가산금(LEVY_ADAMT)이 있다면.. - if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) { - rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    부과 가산금이 존재합니다."; - return rtnMsg; - } - - // 과태료 감경(TB_RDCT) 대장을 등록한다. - rtnNocs = rdctMapper.insertRdct(rdct); - if (rtnNocs != 1) { - throw new RuntimeException("과태료 감경 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - int ffnlgAmt = 0; // 과태료 금액 - int advntceAmt = 0; // 사전통지 금액 - - ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue() - rdct.getRdctAmt(); // 과태료 단속 금액 - 감경 금액 - advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100) - - // 단속(TB_CRDN) 대장을 수정한다. - Crdn crdn = new Crdn(); - crdn.setCrdnId(rdct.getCrdnId()); // 단속 ID - crdn.setFfnlgRdcrt(crdnRdctInfo.string("WKSN_RDCRT")); // 과태료 감경 율 - crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액 - crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액 - - rtnNocs = rdctMapper.updateCrdnRdct(crdn); - if (rtnNocs != 1) { - throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다. - if (!crdnRdctInfo.string("LEVY_ID").equals("")) { - // 가산금이 존재하는 확인 - if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) { - throw new RuntimeException("감경 등록 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - Levy levy = new Levy(); - levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID - levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액 - - // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로.. - if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) { - levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 - } else { - // 주정차위반, 전용차로위반 과태료 - if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) { - // 납기 일자 확인 - if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) { - levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 - } else { - levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 - } - } else { - levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 - } - } - - int sumAmt = levy.getLevyPcptax() - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_PCPTAX").intValue(); - levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세 - - rtnNocs = rdctMapper.updateLevyRdct(levy); - if (rtnNocs != 1) { - throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**과태료 감경 대장 정보를 수정한다. - * @param rdct 과태료 감경 대장 - * @return 저장 여부 - * - */ - public String updateRdct(Rdct rdct) { - // 과태료 감경(TB_RDCT) 대장을 수정한다. - int rtnNocs = rdctMapper.updateRdct(rdct); - if (rtnNocs != 1) { - throw new RuntimeException("과태료 감경 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**과태료 감경 대장 정보를 삭제한다. - * @param rdct 과태료 감경 대장 - * @return 저장 여부 - * - */ - public String removeRdct(Rdct rdct) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = "[F] "; // 처리 결과 메시지 - - // 단속 ID로 단속, 감경 정보 조회 - LevyQuery req = new LevyQuery(); - req.setRdctId(rdct.getRdctId()); - req.setDelYn("N"); - - DataObject crdnRdctInfo = rdctMapper.selectCrdn(req); - - // 감경 ID가 조회되지 않았다면 종료.. - if (crdnRdctInfo.string("RDCT_ID").equals("")) { - rtnMsg = "[F] 작업 중 자료가 존재하지 않습니다."; - return rtnMsg; - } - // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면.. - if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) { - rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다."; - return rtnMsg; - } - // 부과 가산금(LEVY_ADAMT)이 있다면.. - if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) { - rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    부과 가산금이 존재합니다."; - return rtnMsg; - } - - // 감경(TB_RDCT) 대장을 삭제한다. - rtnNocs = rdctMapper.deleteRdct(rdct); - if (rtnNocs != 1) { - // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback - throw new RuntimeException("감경 대장 삭제에 실패하였습니다."); - } - - // 과태료 금액 - int ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액 - 감경 금액 - int advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100) - - // 단속(TB_CRDN) 대장을 수정한다. - Crdn crdn = new Crdn(); - crdn.setCrdnId(crdnRdctInfo.string("CRDN_ID")); // 단속 ID - crdn.setFfnlgRdcrt("0"); // 과태료 감경 율 - crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액 - crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액 - - rtnNocs = rdctMapper.updateCrdnRdct(crdn); - if (rtnNocs != 1) { - throw new RuntimeException("감경 취소 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다. - if (!crdnRdctInfo.string("LEVY_ID").equals("")) { - // 가산금이 존재하는 확인 - if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) { - throw new RuntimeException("감경 취소 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - Levy levy = new Levy(); - levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID - levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액 - - // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로.. - if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) { - levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 - } else { - // 주정차위반, 전용차로위반 과태료 - if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) { - // 납기 일자 확인 - if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) { - levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 - } else { - levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 - } - } else { - levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 - } - } - - int sumAmt = levy.getLevyPcptax() + crdnRdctInfo.number("LEVY_ADAMT").intValue() - - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RCVMT_ADAMT").intValue() - - crdnRdctInfo.number("RDAMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_ADAMT").intValue(); - levy.setSumAmt(sumAmt); // 합계 금액 = 부과 본세 + 부과 가산금 + 분납 이자 - 수납 본세 - 수납 가산금 - 감액 본세 - 감액 가산금 - - rtnNocs = rdctMapper.updateLevyRdct(levy); - if (rtnNocs != 1) { - throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } + /** 과태료 감경 대장 정보 DAO */ + @Resource(name = "rdctMapper") + private RdctMapper rdctMapper; + + /** 부과 대장 정보 DAO */ + @Resource(name = "levyMapper") + private LevyMapper levyMapper; + + @Resource(name = "crdnStngBean") + private CrdnStngBean crdnStngBean; + + /**지정한 조건에 따라 과태료 감경 대장 목록을 조회하여 반환한다. + * @param req 과태료 감경 대장 조회 조건 + * @return 과태료 감경 대장 목록 + */ + public List getRdctList(LevyQuery req) { + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + if (req.getOrderBy() == null) { + req.setOrderBy("REG_DT"); + } + + return rdctMapper.selectRdctList(req); + } + + /**지정한 조건에 따라 과태료 감경 대장 객체들을 반환한다. + * @param req 과태료 감경 대장 조회 조건 + * @return 과태료 감경 대장 객체 목록 + */ + public List getRdcts(LevyQuery req) { + if (req.getOrderBy() == null) { + req.setOrderBy("R.RDCT_ID DESC"); + } + + return rdctMapper.selectRdcts(req); + } + + /**지정한 감경 ID의 과태료 감경 대장 객체를 반환한다.
    + * @param req 과태료 감경 대장 조회 조건 + * @return 과태료 감경 대장 객체 + */ + public DataObject getRdctInfo(LevyQuery req) { + return rdctMapper.selectRdctInfo(req); + } + + /**지정한 단속 ID의 단속 정보를 반환한다.
    + * @param req 과태료 감경 대장 조회 조건 + * @return 단속 정보 + */ + + public DataObject getCrdnInfo(LevyQuery req) { + DataObject dataCrdn = rdctMapper.selectCrdn(req); + + if (req.getCallPurpose().equals("create")) { + dataCrdn.set("RDCT_YMD", dataCrdn.get("TODAY")); // 감경 일자 + dataCrdn.set("RDCT_AMT", dataCrdn.get("CALC_RDCT_AMT")); // 감경 금액 + } + + return dataCrdn; + } + + /**과태료 감경 대장 정보를 등록한다. + * @param rdct 과태료 감경 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String createRdct(Rdct rdct) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + // 단속 ID로 단속, 감경 정보 조회 + DataObject crdnRdctInfo = rdctMapper.selectCrdnInfo(rdct.getCrdnId()); + + // 감경 ID가 있다면 이미 부과제외 자료가 존재하므로 종료.. + if (!crdnRdctInfo.string("RDCT_ID").equals("")) { + rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다."; + return rtnMsg; + } + // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면.. + if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) { + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다."; + return rtnMsg; + } + // 부과 가산금(LEVY_ADAMT)이 있다면.. + if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) { + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    부과 가산금이 존재합니다."; + return rtnMsg; + } + + // 과태료 감경(TB_RDCT) 대장을 등록한다. + rtnNocs = rdctMapper.insertRdct(rdct); + if (rtnNocs != 1) { + throw new RuntimeException("과태료 감경 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + int ffnlgAmt = 0; // 과태료 금액 + int advntceAmt = 0; // 사전통지 금액 + + ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue() - rdct.getRdctAmt(); // 과태료 단속 금액 - 감경 금액 + advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100) + + // 단속(TB_CRDN) 대장을 수정한다. + Crdn crdn = new Crdn(); + crdn.setCrdnId(rdct.getCrdnId()); // 단속 ID + crdn.setFfnlgRdcrt(crdnRdctInfo.string("WKSN_RDCRT")); // 과태료 감경 율 + crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액 + crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액 + + rtnNocs = rdctMapper.updateCrdnRdct(crdn); + if (rtnNocs != 1) { + throw new RuntimeException("감경 등록 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다. + if (!crdnRdctInfo.string("LEVY_ID").equals("")) { + // 가산금이 존재하는 확인 + if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) { + throw new RuntimeException("감경 등록 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + Levy levy = new Levy(); + levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID + levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액 + + // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로.. + if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) { + levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 + } else { + // 주정차위반, 전용차로위반 과태료 + if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) { + // 납기 일자 확인 + if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) { + levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 + } else { + levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 + } + } else { + levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 + } + } + + int lastAmt = levy.getLevyPcptax() - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_PCPTAX").intValue(); + levy.setLastAmt(lastAmt); // 합계 금액 = 부과 본세 - 수납 본세 - 감액 본세 + + rtnNocs = levyMapper.updateLevyRdct(levy); + if (rtnNocs != 1) { + throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**과태료 감경 대장 정보를 수정한다. + * @param rdct 과태료 감경 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String updateRdct(Rdct rdct) { + // 과태료 감경(TB_RDCT) 대장을 수정한다. + int rtnNocs = rdctMapper.updateRdct(rdct); + if (rtnNocs != 1) { + throw new RuntimeException("과태료 감경 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**과태료 감경 대장 정보를 삭제한다. + * @param rdct 과태료 감경 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String removeRdct(Rdct rdct) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + // 단속 ID로 단속, 감경 정보 조회 + LevyQuery req = new LevyQuery(); + req.setRdctId(rdct.getRdctId()); + req.setDelYn("N"); + + DataObject crdnRdctInfo = rdctMapper.selectCrdn(req); + + // 감경 ID가 조회되지 않았다면 종료.. + if (crdnRdctInfo.string("RDCT_ID").equals("")) { + rtnMsg = "[F] 작업 중 자료가 존재하지 않습니다."; + return rtnMsg; + } + // 단속 상태 코드(CRDN_STTS_CD) 확인하여 부과(51) 이후라면.. + if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() > 51) { + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + crdnRdctInfo.string("CRDN_STTS_NM") + " 상태 입니다."; + return rtnMsg; + } + // 부과 가산금(LEVY_ADAMT)이 있다면.. + if (crdnRdctInfo.number("LEVY_ADAMT").intValue() > 0) { + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    부과 가산금이 존재합니다."; + return rtnMsg; + } + + // 감경(TB_RDCT) 대장을 삭제한다. + rtnNocs = rdctMapper.deleteRdct(rdct); + if (rtnNocs != 1) { + // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback + throw new RuntimeException("감경 대장 삭제에 실패하였습니다."); + } + + // 과태료 금액 + int ffnlgAmt = crdnRdctInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액 - 감경 금액 + int advntceAmt = ffnlgAmt - (ffnlgAmt * crdnRdctInfo.number("ADVNTCE_RDCRT").intValue() / 100); // 과태료 금액 - (과태료 금액 * 사전통지 감경 율 / 100) + + // 단속(TB_CRDN) 대장을 수정한다. + Crdn crdn = new Crdn(); + crdn.setCrdnId(crdnRdctInfo.string("CRDN_ID")); // 단속 ID + crdn.setFfnlgRdcrt("0"); // 과태료 감경 율 + crdn.setFfnlgAmt(ffnlgAmt); // 과태료 금액 + crdn.setAdvntceAmt(advntceAmt); // 사전통지 금액 + + rtnNocs = rdctMapper.updateCrdnRdct(crdn); + if (rtnNocs != 1) { + throw new RuntimeException("감경 취소 중 단속대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 부과 ID가 존재한다면 부과(TB_LEVY) 대장을 수정한다. + if (!crdnRdctInfo.string("LEVY_ID").equals("")) { + // 가산금이 존재하는 확인 + if (crdnRdctInfo.number("LEVY_ADAMT").intValue() != 0 ) { + throw new RuntimeException("감경 취소 중 부과 대장에 가산금이 발생하여 부과 대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + Levy levy = new Levy(); + levy.setLevyId(crdnRdctInfo.string("LEVY_ID")); // 부과 ID + levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액 + + // 단속상태코드가 부과(51)면 과태료 금액, 부과 이전이라면 사전통지 금액으로.. + if (crdnRdctInfo.number("CRDN_STTS_CD").intValue() == 51) { + levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 + } else { + // 주정차위반, 전용차로위반 과태료 + if (crdnRdctInfo.string("TASK_SE_CD").equals("BPV") || crdnRdctInfo.string("TASK_SE_CD").equals("PVS")) { + // 납기 일자 확인 + if (crdnRdctInfo.number("DUDT_YMD").intValue() >= crdnRdctInfo.number("TODAY").intValue()) { + levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 + } else { + levy.setLevyPcptax(ffnlgAmt); // 부과 본세 = 과태료 금액 + } + } else { + levy.setLevyPcptax(advntceAmt); // 부과 본세 = 사전통지 금액 + } + } + + int lastAmt = levy.getLevyPcptax() + crdnRdctInfo.number("LEVY_ADAMT").intValue() + - crdnRdctInfo.number("RCVMT_PCPTAX").intValue() - crdnRdctInfo.number("RCVMT_ADAMT").intValue() + - crdnRdctInfo.number("RDAMT_PCPTAX").intValue() - crdnRdctInfo.number("RDAMT_ADAMT").intValue(); + levy.setLastAmt(lastAmt); // 합계 금액 = 부과 본세 + 부과 가산금 + 분납 이자 - 수납 본세 - 수납 가산금 - 감액 본세 - 감액 가산금 + + rtnNocs = levyMapper.updateLevyRdct(levy); + if (rtnNocs != 1) { + throw new RuntimeException("감경 등록 중 부과대장 금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } } diff --git a/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java b/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java index fb5a421e..7c7d768a 100644 --- a/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java +++ b/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java @@ -295,7 +295,7 @@ public class Levy01Controller extends ApplicationController { valueMap.put("수납가산금", format.of("RCVMT_ADAMT").style(numeric)); valueMap.put("감액본세", format.of("RDAMT_PCPTAX").style(numeric)); valueMap.put("감액가산금", format.of("RDAMT_ADAMT").style(numeric)); - valueMap.put("미납금액", format.of("SUM_AMT").style(numeric)); + valueMap.put("최종금액", format.of("LAST_AMT").style(numeric)); valueMap.put("과세물건", format.of("TXTN_THING")); valueMap.put("체납사유", format.of("NPMNT_RSN_NM")); valueMap.put("수납일자", FormatMaker.yyyy_mm_dd(format, "RCVMT_YMD").style(dateYMD)); diff --git a/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java b/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java index ee520559..f72b5489 100644 --- a/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java +++ b/src/main/java/cokr/xit/fims/levy/web/Levy02Controller.java @@ -139,7 +139,7 @@ public class Levy02Controller extends ApplicationController { valueMap.put("단속원금", format.of("FFNLG_CRDN_AMT").style(numeric)); valueMap.put("감경금액", format.of("RDCT_AMT").style(numeric)); valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric)); - valueMap.put("미납금액", format.of("SUM_AMT").style(numeric)); + valueMap.put("최종금액", format.of("LAST_AMT").style(numeric)); valueMap.put("처리상태", format.of("CRDN_STTS_NM")); valueMap.put("단속특별구역", format.of("CRDN_SPAREA_NM").style(center)); valueMap.put("사용연료", format.of("USE_FUEL_NM").style(center)); diff --git a/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java b/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java index 73ec1b69..feedf23b 100644 --- a/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java +++ b/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java @@ -24,317 +24,353 @@ import cokr.xit.foundation.data.DataObject; * *
      * ============ 변경 이력 ============
    - * 2023-08-31	JoJH 최초 작성
    + * 2023-08-31    JoJH 최초 작성
      * ================================
      * 
    */ @Component("rcvmtBean") public class RcvmtBean extends AbstractBean { - /** 수납 대장 정보 DAO */ - @Resource(name = "rcvmtMapper") - private RcvmtMapper rcvmtMapper; - - /** 부과 대장 정보 DAO */ - @Resource(name = "levyMapper") - private LevyMapper levyMapper; - - /** 단속 상태 이력 정보 Bean */ - @Resource(name = "crdnSttsHstryBean") - private CrdnSttsHstryBean crdnSttsHstryBean; - - /**지정한 조건에 따라 수납 대장 목록을 조회하여 반환한다. - * @param req 수납 대장 조회 조건 - * @return 수납 대장 목록 - */ - public List getRcvmtList(RcvmtQuery 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 rcvmtMapper.selectRcvmtList(req); - } - - /**지정한 조건에 따라 수납 대장 객체들을 반환한다. - * @param req 수납 대장 조회 조건 - * @return 수납 대장 객체 목록 - */ - public List getRcvmts(RcvmtQuery req) { - if (req.getDelYn() == null) { - req.setDelYn("N"); - } - if (req.getOrderBy() == null) { - req.setOrderBy("R.RCVMT_ID DESC"); - } - - return rcvmtMapper.selectRcvmts(req); - } - - /**지정한 ID의 수납 정보를 반환한다.
    - * @param req 수납 대장 조회 조건 - * @return 수납 정보 - */ - public DataObject getRcvmtInfo(RcvmtQuery req) { - return rcvmtMapper.selectRcvmtInfo(req); - } - - /**지정한 ID의 부과 정보를 반환한다.
    - * @param req 수납 대장 조회 조건 - * @return 수납 정보 - */ - public DataObject getLevyInfo(RcvmtQuery req) { - return rcvmtMapper.selectLevyInfo(req); - } - - /**수납 대장 정보를 등록한다. - * @param rcvmt 수납 대장 - * @return 저장 여부 - *
    • 저장됐으면 true
    • - *
    • 그렇지 않으면 false
    • - *
    - */ - public String createRcvmt(Rcvmt rcvmt) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - String rtnMsg = ""; // 처리 결과 메시지 - - // 부과 ID로 부과 정보 조회 - DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmt.getLevyId())); - - rcvmt.setDeptCd(levyInfo.string("DEPT_CD")); // 부서 코드 - rcvmt.setSpclBizCd(levyInfo.string("SPCL_BIZ_CD")); // 특별회계 사업 코드 - rcvmt.setLastPcptax(levyInfo.number("LAST_PCPTAX").intValue()); // 최종 본세 - rcvmt.setLastAdamt(levyInfo.number("LAST_ADAMT").intValue()); // 최종 가산금 - - // 입력된 수납 금액으로 수납 본세, 수납 가산금 나누기 - String rcvmtSeCd = ""; // 수납 구분 코드(FIM041) - if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == 0) { // 최종 금액이 0원 이라면.. - rcvmt.setRcvmtPcptax(0); // 수납 본세 - rcvmt.setRcvmtAdamt(0); // 수납 가산금 - rcvmtSeCd = "02"; // 수납 구분 코드 = 이중수납 - } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == rcvmt.getRcvmtAmt()) { // 최종 금액과 수납 금액이 일치한다면.. - rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세 - rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금 - rcvmtSeCd = "01"; // 수납 구분 코드 = 완납 - } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() < rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 많다면.. - rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세 - rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금 - rcvmtSeCd = "04"; // 수납 구분 코드 = 과납 - } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() > rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 적다면.. - if (rcvmt.getRcvmtAmt() > rcvmt.getLastPcptax()) { - rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세 - rcvmt.setRcvmtAdamt(rcvmt.getRcvmtAmt() - rcvmt.getLastPcptax()); // 수납 가산금 - } else { - rcvmt.setRcvmtPcptax(rcvmt.getRcvmtAmt()); // 수납 본세 - rcvmt.setRcvmtAdamt(0); // 수납 가산금 - } - rcvmtSeCd = "06"; // 수납 구분 코드 = 일부수납 - } else { - rtnMsg = "[F] 수납 등록 중 수납금액 계산에 실패하였습니다."; // 예외를 발생시켜서 DB Rollback - return rtnMsg; - } - - // 수납 구분 코드가 입력 되지 않았다면.. - if (rcvmt.getRcvmtSeCd() == null) { - rcvmt.setRcvmtSeCd(rcvmtSeCd); - } - - // 수납(TB_RCVMT) 대장을 등록한다. - rtnNocs = rcvmtMapper.insertRcvmt(rcvmt); - if (rtnNocs != 1) { - throw new RuntimeException("수납 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - if (!rcvmtSeCd.equals("02")) { // 이중 수납이 아니라면.. - Levy levy = new Levy(); - levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID - levy.setRcvmtPcptax(rcvmt.getRcvmtPcptax()); // 수납 본세 - levy.setRcvmtAdamt(rcvmt.getRcvmtAdamt()); // 수납 가산금 - levy.setSumAmt(rcvmt.getLastPcptax() + rcvmt.getLastAdamt() - rcvmt.getRcvmtPcptax() - rcvmt.getRcvmtAdamt()); // 합계 금액 - levy.setRcvmtYmd(rcvmt.getRcvmtYmd()); // 수납 일자 - levy.setPayMthdSeCd(rcvmt.getPayMthdSeCd()); // 납부 방법 구분 코드 - - // 부과(TB_LEVY) 대장에 수납금액을 수정한다. - rtnNocs = levyMapper.updateRcvmt(levy); - if (rtnNocs != 1) { - throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 합계 금액이 0이면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다. - if (levy.getSumAmt() == 0 && (rcvmtSeCd.equals("01") || rcvmtSeCd.equals("04"))) { - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. - String newCrdnSttsCd = ""; - if (levyInfo.number("CRDN_STTS_CD").intValue() >= 11 && levyInfo.number("CRDN_STTS_CD").intValue() <= 45) { - newCrdnSttsCd = "71"; // 사전통보수납 - } else if (levyInfo.string("CRDN_STTS_CD").equals("51")) { - newCrdnSttsCd = "72"; // 부과수납 - } else if (levyInfo.string("CRDN_STTS_CD").equals("52")) { - newCrdnSttsCd = "73"; // 독촉수납 - } else if (levyInfo.string("CRDN_STTS_CD").equals("53")) { - newCrdnSttsCd = "74"; // 압류예정수납 - } else if (levyInfo.string("CRDN_STTS_CD").equals("54")) { - newCrdnSttsCd = "74"; // 압류예정수납 - } else if (levyInfo.string("CRDN_STTS_CD").equals("55")) { - newCrdnSttsCd = "75"; // 압류수납 - } - - CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID - crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드 - crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시 - crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010) - crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID - - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. - boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); - if (!rtnScs) { - throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**수납 대장에 수납취소 정보를 등록하고, 과오납 정보를 등록을 한다. - * @param rcvmt 수납 대장 - * @return 저장 여부 - *
    • 저장됐으면 true
    • - *
    • 그렇지 않으면 false
    • - *
    - */ - public String updateRcvmtRtrcn(Rcvmt rcvmt) { - // 변수 선언 - String rtnMsg = ""; - - // 수납 취소 - rtnMsg = updateRcvmtCancle(rcvmt); - if (!rtnMsg.contains("[S]")) { - throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback - } - - // 과오납 등록 - - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**수납 대장에 수납취소 정보를 등록한다. - * @param rcvmt 수납 대장 - * @return 저장 여부 - *
    • 저장됐으면 true
    • - *
    • 그렇지 않으면 false
    • - *
    - */ - public String updateRcvmtCancle(Rcvmt rcvmt) { - // 변수 선언 - int rtnNocs = -1; // 처리 결과 건수 - - // 수납 ID로 수납 정보 조회 - DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId()).setDelYn("N")); - - // 수납(TB_RCVMT) 대장에 수납취소 정보를 수정한다. - rtnNocs = rcvmtMapper.updateRcvmtRtrcn(rcvmt); - if (rtnNocs != 1) { - throw new RuntimeException("수납 대장에 수납취소 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 수납구분코드(RCVMT_SE_CD)가 이중 수납이 아니라면.. - if (!rcvmtInfo.string("RCVMT_SE_CD").equals("02")) { - // 부과 ID로 단속, 부과 정보 조회 - DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmtInfo.string("LEVY_ID"))); - - int rcvmtPcptax = levyInfo.number("RCVMT_PCPTAX").intValue() - rcvmtInfo.number("RCVMT_PCPTAX").intValue(); // 부과 수납본세 - 수납 수납본세 - int rcvmtAdamt = levyInfo.number("RCVMT_ADAMT").intValue() - rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 부과 수납가산금 - 수납 수납가산금 - int sumAmt = levyInfo.number("SUM_AMT").intValue() - + rcvmtInfo.number("RCVMT_PCPTAX").intValue() + rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 합계 금액 - - Levy levy = new Levy(); - levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID - levy.setRcvmtPcptax(rcvmtPcptax); // 수납 본세 - levy.setRcvmtAdamt(rcvmtAdamt); // 수납 가산금 - levy.setSumAmt(sumAmt); // 합계 금액 - - // 수납 금액이 0이면서.. 완납(01) 또는 과납(04)이라면 수납 일자를 NULL로 수정한다. - if (rcvmtPcptax + rcvmtAdamt == 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) { - levy.setRcvmtYmd(null); // 수납 일자 - levy.setPayMthdSeCd(null); // 납부 방법 구분 코드 - } else { - levy.setRcvmtYmd(levyInfo.string("RCVMT_YMD")); // 수납 일자 - levy.setPayMthdSeCd(levyInfo.string("PAY_MTHD_SE_CD")); // 납부 방법 구분 코드 - } - - // 부과(TB_LEVY) 대장에 수납금액 정보를 수정한다. - rtnNocs = levyMapper.updateRcvmt(levy); - if (rtnNocs != 1) { - throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 단속 대장 수정 /////////////////////////////////////////////////////////// - // 합계 금액이 0보다 크면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다. - if (levy.getSumAmt() > 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) { - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. - CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - String newCrdnSttsCd = ""; - - if (levyInfo.string("CRDN_STTS_CD").equals("71")) { - newCrdnSttsCd = "42"; // 사전통보 발송 - } else if (levyInfo.string("CRDN_STTS_CD").equals("72")) { - newCrdnSttsCd = "51"; // 부과 - } else if (levyInfo.string("CRDN_STTS_CD").equals("73")) { - newCrdnSttsCd = "52"; // 독촉 - } else if (levyInfo.string("CRDN_STTS_CD").equals("74")) { - newCrdnSttsCd = "54"; // 압류대상 - } else if (levyInfo.string("CRDN_STTS_CD").equals("75")) { - newCrdnSttsCd = "55"; // 압류 - } - - crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID - crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드 - crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시 - crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010) - crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID - - // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. - boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); - if (!rtnScs) { - throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - } - } - - return "[S] 작업이 정상 처리 되었습니다."; - } - - /**수납 대장 정보를 삭제한다. - * @param rcvmt 수납 대장 - * @return 저장 여부 - *
    • 저장됐으면 true
    • - *
    • 그렇지 않으면 false
    • - *
    - */ - public String removeRcvmt(Rcvmt rcvmt) { - // 수납 ID로 수납 정보 조회 - DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId())); - - if (rcvmtInfo.string("RCVMT_INPT_SE_CD").equals("03")) { - throw new RuntimeException("수납입력구분이 수기등록 자료만 삭제가 가능합니다."); // 예외를 발생시켜서 DB Rollback - } - // 수납(TB_RCVMT) 대장을 삭제한다. - int rtnNocs = rcvmtMapper.deleteRcvmt(rcvmt); - if (rtnNocs != 1) { - throw new RuntimeException("수납 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - return "[S] 작업이 정상 처리 되었습니다."; - } + /** 수납 대장 정보 DAO */ + @Resource(name = "rcvmtMapper") + private RcvmtMapper rcvmtMapper; + + /** 부과 대장 정보 DAO */ + @Resource(name = "levyMapper") + private LevyMapper levyMapper; + + /** 단속 상태 이력 정보 Bean */ + @Resource(name = "crdnSttsHstryBean") + private CrdnSttsHstryBean crdnSttsHstryBean; + + /**지정한 조건에 따라 수납 대장 목록을 조회하여 반환한다. + * @param req 수납 대장 조회 조건 + * @return 수납 대장 목록 + */ + public List getRcvmtList(RcvmtQuery 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 rcvmtMapper.selectRcvmtList(req); + } + + /**지정한 조건에 따라 수납 대장 객체들을 반환한다. + * @param req 수납 대장 조회 조건 + * @return 수납 대장 객체 목록 + */ + public List getRcvmts(RcvmtQuery req) { + if (req.getDelYn() == null) { + req.setDelYn("N"); + } + if (req.getOrderBy() == null) { + req.setOrderBy("R.RCVMT_ID DESC"); + } + + return rcvmtMapper.selectRcvmts(req); + } + + /**지정한 ID의 수납 정보를 반환한다.
    + * @param req 수납 대장 조회 조건 + * @return 수납 정보 + */ + public DataObject getRcvmtInfo(RcvmtQuery req) { + return rcvmtMapper.selectRcvmtInfo(req); + } + + /**지정한 ID의 부과 정보를 반환한다.
    + * @param req 수납 대장 조회 조건 + * @return 수납 정보 + */ + public DataObject getLevyInfo(RcvmtQuery req) { + return rcvmtMapper.selectLevyInfo(req); + } + + /**수납 대장 정보를 등록한다. + * @param rcvmt 수납 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String createRcvmt(Rcvmt rcvmt) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + String rtnMsg = ""; // 처리 결과 메시지 + + // 부과 ID로 부과 정보 조회 + DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmt.getLevyId())); + + rcvmt.setDeptCd(levyInfo.string("DEPT_CD")); // 부서 코드 + rcvmt.setSpclBizCd(levyInfo.string("SPCL_BIZ_CD")); // 특별회계 사업 코드 + rcvmt.setLastPcptax(levyInfo.number("LAST_PCPTAX").intValue()); // 최종 본세 + rcvmt.setLastAdamt(levyInfo.number("LAST_ADAMT").intValue()); // 최종 가산금 + + // 입력된 수납 금액으로 수납 본세, 수납 가산금 나누기 + String rcvmtSeCd = ""; // 수납 구분 코드(FIM041) + if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == 0) { // 최종 금액이 0원 이라면.. + rcvmt.setRcvmtPcptax(0); // 수납 본세 + rcvmt.setRcvmtAdamt(0); // 수납 가산금 + rcvmtSeCd = "02"; // 수납 구분 코드 = 이중수납 + } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() == rcvmt.getRcvmtAmt()) { // 최종 금액과 수납 금액이 일치한다면.. + rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세 + rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금 + rcvmtSeCd = "01"; // 수납 구분 코드 = 완납 + } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() < rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 많다면.. + rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세 + rcvmt.setRcvmtAdamt(rcvmt.getLastAdamt()); // 수납 가산금 + rcvmtSeCd = "04"; // 수납 구분 코드 = 과납 + } else if (rcvmt.getLastPcptax() + rcvmt.getLastAdamt() > rcvmt.getRcvmtAmt()) { // 최종 금액보다 수납 금액이 적다면.. + if (rcvmt.getRcvmtAmt() > rcvmt.getLastPcptax()) { + rcvmt.setRcvmtPcptax(rcvmt.getLastPcptax()); // 수납 본세 + rcvmt.setRcvmtAdamt(rcvmt.getRcvmtAmt() - rcvmt.getLastPcptax()); // 수납 가산금 + } else { + rcvmt.setRcvmtPcptax(rcvmt.getRcvmtAmt()); // 수납 본세 + rcvmt.setRcvmtAdamt(0); // 수납 가산금 + } + rcvmtSeCd = "06"; // 수납 구분 코드 = 일부수납 + } else { + rtnMsg = "[F] 수납 등록 중 수납금액 계산에 실패하였습니다."; // 예외를 발생시켜서 DB Rollback + return rtnMsg; + } + + // 수납 구분 코드가 입력 되지 않았다면.. + if (rcvmt.getRcvmtSeCd() == null) { + rcvmt.setRcvmtSeCd(rcvmtSeCd); + } + + // 수납(TB_RCVMT) 대장을 등록한다. + rtnNocs = rcvmtMapper.insertRcvmt(rcvmt); + if (rtnNocs != 1) { + throw new RuntimeException("수납 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + if (!rcvmtSeCd.equals("02")) { // 이중 수납이 아니라면.. + Levy levy = new Levy(); + levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID + levy.setRcvmtPcptax(rcvmt.getRcvmtPcptax()); // 수납 본세 + levy.setRcvmtAdamt(rcvmt.getRcvmtAdamt()); // 수납 가산금 + levy.setLastAmt(rcvmt.getLastPcptax() + rcvmt.getLastAdamt() - rcvmt.getRcvmtPcptax() - rcvmt.getRcvmtAdamt()); // 최종 금액 + levy.setRcvmtYmd(rcvmt.getRcvmtYmd()); // 수납 일자 + levy.setPayMthdSeCd(rcvmt.getPayMthdSeCd()); // 납부 방법 구분 코드 + + // 부과(TB_LEVY) 대장에 수납금액을 수정한다. + rtnNocs = levyMapper.updateLevyRcvmt(levy); + if (rtnNocs != 1) { + throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 합계 금액이 0이면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다. + if (levy.getLastAmt() == 0 && (rcvmtSeCd.equals("01") || rcvmtSeCd.equals("04"))) { + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + String newCrdnSttsCd = ""; + if (levyInfo.number("CRDN_STTS_CD").intValue() >= 11 && levyInfo.number("CRDN_STTS_CD").intValue() <= 45) { + newCrdnSttsCd = "71"; // 사전통보수납 + } else if (levyInfo.string("CRDN_STTS_CD").equals("51")) { + newCrdnSttsCd = "72"; // 부과수납 + } else if (levyInfo.string("CRDN_STTS_CD").equals("52")) { + newCrdnSttsCd = "73"; // 독촉수납 + } else if (levyInfo.string("CRDN_STTS_CD").equals("53")) { + newCrdnSttsCd = "74"; // 압류예정수납 + } else if (levyInfo.string("CRDN_STTS_CD").equals("54")) { + newCrdnSttsCd = "74"; // 압류예정수납 + } else if (levyInfo.string("CRDN_STTS_CD").equals("55")) { + newCrdnSttsCd = "75"; // 압류수납 + } + + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID + crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드 + crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시 + crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010) + crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**수납 대장에 수납취소 정보를 등록하고, 과오납 정보를 등록을 한다. + * @param rcvmt 수납 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String updateRcvmtRtrcn(Rcvmt rcvmt) { + // 변수 선언 + String rtnMsg = ""; + + // 수납 취소 + rtnMsg = updateRcvmtCancle(rcvmt); + if (!rtnMsg.contains("[S]")) { + throw new RuntimeException(rtnMsg); // 예외를 발생시켜서 DB Rollback + } + + // 과오납 등록 + + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**수납 대장에 수납취소 정보를 등록한다. + * @param rcvmt 수납 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String updateRcvmtCancle(Rcvmt rcvmt) { + // 변수 선언 + int rtnNocs = -1; // 처리 결과 건수 + + // 수납 ID로 수납 정보 조회 + DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId()).setDelYn("N")); + + // 수납(TB_RCVMT) 대장에 수납취소 정보를 수정한다. + rtnNocs = rcvmtMapper.updateRcvmtRtrcn(rcvmt); + if (rtnNocs != 1) { + throw new RuntimeException("수납 대장에 수납취소 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 수납구분코드(RCVMT_SE_CD)가 이중 수납이 아니라면.. + if (!rcvmtInfo.string("RCVMT_SE_CD").equals("02")) { + // 부과 ID로 단속, 부과 정보 조회 + DataObject levyInfo = levyMapper.selectLevyAmt(new LevyQuery().setLevyId(rcvmtInfo.string("LEVY_ID"))); + + int rcvmtPcptax = levyInfo.number("RCVMT_PCPTAX").intValue() - rcvmtInfo.number("RCVMT_PCPTAX").intValue(); // 부과 수납본세 - 수납 수납본세 + int rcvmtAdamt = levyInfo.number("RCVMT_ADAMT").intValue() - rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 부과 수납가산금 - 수납 수납가산금 + int lastAmt = levyInfo.number("LAST_AMT").intValue() + + rcvmtInfo.number("RCVMT_PCPTAX").intValue() + rcvmtInfo.number("RCVMT_ADAMT").intValue(); // 최종 금액 + + Levy levy = new Levy(); + levy.setLevyId(levyInfo.string("LEVY_ID")); // 부과 ID + levy.setRcvmtPcptax(rcvmtPcptax); // 수납 본세 + levy.setRcvmtAdamt(rcvmtAdamt); // 수납 가산금 + levy.setLastAmt(lastAmt); // 최종 금액 + + // 수납 금액이 0이면서.. 완납(01) 또는 과납(04)이라면 수납 일자를 NULL로 수정한다. + if (rcvmtPcptax + rcvmtAdamt == 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) { + levy.setRcvmtYmd(null); // 수납 일자 + levy.setPayMthdSeCd(null); // 납부 방법 구분 코드 + } else { + levy.setRcvmtYmd(levyInfo.string("RCVMT_YMD")); // 수납 일자 + levy.setPayMthdSeCd(levyInfo.string("PAY_MTHD_SE_CD")); // 납부 방법 구분 코드 + } + + // 부과(TB_LEVY) 대장에 수납금액 정보를 수정한다. + rtnNocs = levyMapper.updateLevyRcvmt(levy); + if (rtnNocs != 1) { + throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속 대장 수정 /////////////////////////////////////////////////////////// + // 합계 금액이 0보다 크면서 완납(01) 또는 과납(04)이라면 단속 상태 코드를 수정한다. + if (levy.getLastAmt() > 0 && "01,04".contains(rcvmtInfo.string("RCVMT_SE_CD"))) { + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + String newCrdnSttsCd = ""; + + if (levyInfo.string("CRDN_STTS_CD").equals("71")) { + newCrdnSttsCd = "42"; // 사전통보 발송 + } else if (levyInfo.string("CRDN_STTS_CD").equals("72")) { + newCrdnSttsCd = "51"; // 부과 + } else if (levyInfo.string("CRDN_STTS_CD").equals("73")) { + newCrdnSttsCd = "52"; // 독촉 + } else if (levyInfo.string("CRDN_STTS_CD").equals("74")) { + newCrdnSttsCd = "54"; // 압류대상 + } else if (levyInfo.string("CRDN_STTS_CD").equals("75")) { + newCrdnSttsCd = "55"; // 압류 + } + + crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID + crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드 + crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시 + crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010) + crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**수납 대장 정보를 삭제한다. + * @param rcvmt 수납 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public String removeRcvmt(Rcvmt rcvmt) { + // + boolean rtnScs = false; // 처리 결과 여부 + + // 수납 ID로 수납 정보 조회 + DataObject rcvmtInfo = rcvmtMapper.selectRcvmtInfo(new RcvmtQuery().setRcvmtId(rcvmt.getRcvmtId())); + + if (!rcvmtInfo.string("RCVMT_INPT_SE_CD").equals("03")) { + throw new RuntimeException("수납입력구분이 수기등록 자료만 삭제가 가능합니다."); // 예외를 발생시켜서 DB Rollback + } + // 수납(TB_RCVMT) 대장을 삭제한다. + int rtnNocs = rcvmtMapper.deleteRcvmt(rcvmt); + if (rtnNocs != 1) { + throw new RuntimeException("수납 대장 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 부과(TB_LEVY) 대장 수납 금액 수정한다. + int rcvmtPcptax = rcvmtInfo.number("L_RCVMT_PCPTAX").intValue() - rcvmtInfo.number("RCVMT_PCPTAX").intValue(); + int rcvmtAdamt = rcvmtInfo.number("L_RCVMT_ADAMT").intValue() - rcvmtInfo.number("RCVMT_ADAMT").intValue(); + + Levy levy = new Levy(); + levy.setLevyId(rcvmtInfo.string("LEVY_ID")); // 부과 ID + levy.setRcvmtPcptax(rcvmtPcptax); // 수납 본세 + levy.setRcvmtAdamt(rcvmtAdamt); // 수납 가산금 + levy.setLastAmt(rcvmtInfo.number("L_LEVY_PCPTAX").intValue() + rcvmtInfo.number("L_LEVY_ADAMT").intValue() + - rcvmtPcptax - rcvmtAdamt + - rcvmtInfo.number("L_RDAMT_PCPTAX").intValue() - rcvmtInfo.number("L_RDAMT_ADAMT").intValue()); // 최종 금액 + + // 부과(TB_LEVY) 대장에 수납금액을 수정한다. + rtnNocs = levyMapper.updateLevyRcvmt(levy); + if (rtnNocs != 1) { + throw new RuntimeException("부과 대장에 수납금액 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 최종 금액이 0보다 크다면 이전 처리상태로 변경한다. + if (levy.getLastAmt() > 0) { + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(rcvmtInfo.string("CRDN_ID")); // 단속 ID + crdnSttsHstry.setCrdnSttsCd(rcvmtInfo.string("CRDN_STTS_CD")); // 단속 상태 코드 + crdnSttsHstry.setEtcCn(rcvmt.getDelRsn()); // 기타 내용 - 삭제 사유 + crdnSttsHstry.setUseYn("N"); // 사용 여부 + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장의 사용 여부를 "N"으로 처리하고, 단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다. + rtnScs = crdnSttsHstryBean.removeHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("[F] 발송상세 삭제 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } } diff --git a/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java b/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java index 10ae12ff..2c8e4234 100644 --- a/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java +++ b/src/main/java/cokr/xit/fims/rcvm/web/Rcvm01Controller.java @@ -35,7 +35,7 @@ import cokr.xit.foundation.data.DataObject; * *
      * ============ 변경 이력 ============
    - * 2023-08-31	JoJH 최초 작성
    + * 2023-08-31    JoJH 최초 작성
      * ================================
      * 
    */ @@ -43,243 +43,239 @@ import cokr.xit.foundation.data.DataObject; @RequestMapping(name = "수납 관리", value = Rcvm01Controller.CLASS_URL) public class Rcvm01Controller extends ApplicationController { - public static final String CLASS_URL = "/rcvm/rcvm01"; - - public class METHOD_URL { - public static final String - receivingMoneyMain = "/010/main.do" // 수납 관리 메인 화면 - , getReceivingMoneyList = "/010/list.do" // 수납 대장 목록 조회 - , getReceivingMoneyInfo = "/020/info.do" // 수납 정보 조회 - , createReceivingMoney = "/020/create.do" // 수납 대장 등록 - , updateReceivingMoney = "/020/update.do" // 수납 대장 수정 - , removeReceivingMoney = "/010/remove.do" // 수납 대장 삭제 - , updateReceivingMoneyRetraction = "/010/updateRcvmtRtrcn.do" // 수납취소 등록 - ; - } - - /**수납 대장 서비스*/ - @Resource(name="rcvmtService") - private RcvmtService rcvmtService; - - @Resource(name="stngBean") - private StngBean stngBean; - - /**수납 대장 관리 메인화면(rcvmt/rcvmt-main)을 연다. - * 조건없는 {@link #getRcvmtList(RcvmtQuery) 수납 대장 조회 결과}를 포함시킨다. - * @return /rcvmt/rcvmt-main - */ - @RequestMapping(name = "수납 관리 메인", value = METHOD_URL.receivingMoneyMain) - public ModelAndView receivingMoneyMain() { - // View(jsp) - ModelAndView mav = new ModelAndView("fims/rcvm/rcvm01010-main"); - - // 사용자 정보 - FimsUser fimsUser = (FimsUser)currentUser().getUser(); - - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM041", "FIM045", "FIM054"); - - return mav - .addObject("pageName", "rcvm01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("infoPrefix", "rcvmt") // prefix - .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl - .addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD) - .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) - .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD) - .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD) - ; - } - - /**수납 대장 목록을 조회하여 반환한다.
    - * {@link RcvmtService#getRcvmtList(RcvmtQuery)} 참고 - * @param req 수납 대장 조회 조건 - * @return jsonView - *
     {
    -	 *     "rcvmtList": [수납 대장 목록]
    -	 *     "rcvmtStart": 수납 대장 목록 시작 인덱스
    -	 *     "rcvmtFetch": 한 번에 가져오는 수납 대장 목록 수
    -	 *     "rcvmtTotal": 조회 결과 찾은 전체 수납 대장 수
    -	 * }
    - */ - @Task - @RequestMapping(name="수납 대장 목록 조회", value=METHOD_URL.getReceivingMoneyList) - public ModelAndView getReceivingMoneyList(RcvmtQuery req) { - if (!"xls".equals(req.getDownload())) { - List result = rcvmtService.getRcvmtList(setFetchSize(req)); - return setCollectionInfo(new ModelAndView("jsonView"), result, "rcvmt"); - } else { - // 현재 날짜 구하기 - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); - String dateTime = dateFormat.format(System.currentTimeMillis()); - - List cellDefs = fromJson(req.getCellDefs(), CellDef.listType()); - - XLSWriter xlsx = new XLSWriter().worksheet(0); - Format format = new Format(xlsx); - CellStyle center = format.cellStyle(Style.CENTER); - CellStyle numeric = format.n_nn0(); - CellStyle dateYMD = format.yyyy_mm_dd(); - CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss(); - - List list = rcvmtService.getRcvmtList(req.setFetchSize(0)); - - Map valueMap = new HashMap(); - valueMap.put("업무구분", format.of("TASK_SE_NM").style(center)); - valueMap.put("수납입력구분", format.of("RCVMT_INPT_SE_NM").style(center)); - valueMap.put("수납취소", format.of("RCVMT_RTRCN_NM").style(center)); - valueMap.put("회계연도", format.of("FYR").style(center)); - valueMap.put("회계구분", format.of("ACNTG_SE_CD").style(center)); - valueMap.put("세목코드", format.of("TXITM_CD").style(center)); - valueMap.put("세목명", format.of("TXITM_NM")); - valueMap.put("부과번호", format.of("LEVY_NO").style(center)); - valueMap.put("분납일련번호", format.of("ISPY_SN").style(center)); - valueMap.put("최종본세", format.of("LAST_PCPTAX").style(numeric)); - valueMap.put("최종가산금", format.of("LAST_ADAMT").style(numeric)); - valueMap.put("수납일련번호", format.of("RCVMT_SN").style(center)); - valueMap.put("수납구분", format.of("RCVMT_SE_NM").style(center)); - valueMap.put("수납일자", FormatMaker.yyyy_mm_dd(format, "RCVMT_YMD").style(dateYMD)); - valueMap.put("회계일자", FormatMaker.yyyy_mm_dd(format, "ACNTG_YMD").style(dateYMD)); - valueMap.put("이체일자", FormatMaker.yyyy_mm_dd(format, "TSF_YMD").style(dateYMD)); - valueMap.put("수납금액", format.of("RCVMT_AMT").style(numeric)); - valueMap.put("수납본세", format.of("RCVMT_PCPTAX").style(numeric)); - valueMap.put("수납가산금", format.of("RCVMT_ADAMT").style(numeric)); - valueMap.put("수납이자", format.of("RCVMT_INT").style(numeric)); - valueMap.put("수납은행", format.of("RCVMT_BANK_NM")); - valueMap.put("납부방법", format.of("PAY_MTHD_SE_NM")); - valueMap.put("수납상태", format.of("RCVMT_STTS_NM").style(center)); - valueMap.put("부과일자", FormatMaker.yyyy_mm_dd(format, "LEVY_YMD").style(dateYMD)); - valueMap.put("최초납기일자", FormatMaker.yyyy_mm_dd(format, "FRST_DUDT_YMD").style(dateYMD)); - valueMap.put("납기일자", FormatMaker.yyyy_mm_dd(format, "DUDT_YMD").style(dateYMD)); - valueMap.put("압류일자", FormatMaker.yyyy_mm_dd(format, "SZR_YMD").style(dateYMD)); - valueMap.put("압류물건", format.of("SZR_THING")); - valueMap.put("대체압류차량", format.of("RPM_SZR_VHRNO")); - valueMap.put("압류해제일자", FormatMaker.yyyy_mm_dd(format, "SZR_RMV_YMD").style(dateYMD)); - valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT)); - valueMap.put("차량번호", format.of("VHRNO")); - valueMap.put("납부자구분", format.of("RTPYR_SE_NM").style(center)); - valueMap.put("납부자번호", format.of("RTPYR_NO").style(center)); - valueMap.put("납부자명", format.of("RTPYR_NM")); - valueMap.put("단속법정동", format.of("CRDN_STDG_NM")); - valueMap.put("단속장소", format.of("CRDN_PLC")); - valueMap.put("처리상태", format.of("CRDN_STTS_NM")); - valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT)); - valueMap.put("등록사용자", format.of("RGTR_NM").style(center)); - valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT)); - valueMap.put("수정사용자", format.of("MDFR_NM").style(center)); - - CellDef.setValues(cellDefs, valueMap); - - xlsx.cell(0, 0).value("수납").value(center).merge(0, cellDefs.size() - 1) - .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx))) - .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList())); - - return new ModelAndView("downloadView") - .addObject("download", xlsx.getDownloadable().setFilename("수납" + "_목록_" + dateTime + ".xlsx")); - } - } - - /**지정한 부과 ID의 수납 정보를 반환한다. - * @param levyId 부과 ID - * @return fims/rcvm/rcvm01020-info 또는 jsonView - *
    {
    -	 *     "rcvmtInfo": 수납 정보
    -	 * }
    - */ - @Task - @RequestMapping(name="수납 정보 조회", value=METHOD_URL.getReceivingMoneyInfo) - public ModelAndView getReceivingMoneyInfo(HttpServletRequest hReq, RcvmtQuery req) { - DataObject info = rcvmtService.getRcvmtInfo(req); - - boolean json = jsonResponse(); - - ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/rcvm/rcvm01020-info"); - - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM041", "FIM045", "FIM054"); - - return mav - .addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName - .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 - .addObject("pageName", "rcvm01020") // jsp pageName - .addObject("infoPrefix", "rcvmt") // prefix - .addObject("infoPrefixUrl", CLASS_URL) // prefixUrl - .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD) - .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD) - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) - .addObject("rcvmtInfo", json ? info : toJson(info)) // 수납 정보 - ; - } - - /**수납 대장 정보를 등록한다. - * @param rcvmt 수납 대장 정보 - * @return jsonView - *
     {
    -	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    -	 * }
    - */ - @Task - @RequestMapping(name="수납 대장 등록", value=METHOD_URL.createReceivingMoney) - public ModelAndView createReceivingMoney(Rcvmt rcvmt) { - boolean saved = false; - String rtnMsg = rcvmtService.createRcvmt(rcvmt); - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - - /**수납 대장에 수납취소 정보를 등록한다. - * @param rcvmt 수납 대장 정보 - * @return jsonView - *
     {
    -	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    -	 * }
    - */ - @Task - @RequestMapping(name="수납 대장에 수납취소 수정", value=METHOD_URL.updateReceivingMoneyRetraction) - public ModelAndView updateReceivingMoneyRetraction(Rcvmt rcvmt) { - boolean saved = false; - String rtnMsg = rcvmtService.updateRcvmtRtrcn(rcvmt); - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - - /**수납 대장 정보를 삭제한다. - * @param rcvmt 수납 대장 정보 - * @return jsonView - *
     {
    -	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    -	 * }
    - */ - @Task - @RequestMapping(name="수납 대장 삭제", value=METHOD_URL.removeReceivingMoney) - public ModelAndView removeReceivingMoney(Rcvmt rcvmt) { - boolean saved = false; - String rtnMsg = rcvmtService.removeRcvmt(rcvmt); - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } + public static final String CLASS_URL = "/rcvm/rcvm01"; + + public class METHOD_URL { + public static final String + receivingMoneyMain = "/010/main.do" // 수납 관리 메인 화면 + , getReceivingMoneyList = "/010/list.do" // 수납 대장 목록 조회 + , getReceivingMoneyInfo = "/020/info.do" // 수납 정보 조회 + , createReceivingMoney = "/020/create.do" // 수납 대장 등록 + , updateReceivingMoney = "/020/update.do" // 수납 대장 수정 + , removeReceivingMoney = "/010/remove.do" // 수납 대장 삭제 + , updateReceivingMoneyRetraction = "/010/updateRcvmtRtrcn.do" // 수납취소 등록 + ; + } + + /**수납 대장 서비스*/ + @Resource(name="rcvmtService") + private RcvmtService rcvmtService; + + @Resource(name="stngBean") + private StngBean stngBean; + + /**수납 대장 관리 메인화면(rcvmt/rcvmt-main)을 연다. + * 조건없는 {@link #getRcvmtList(RcvmtQuery) 수납 대장 조회 결과}를 포함시킨다. + * @return /rcvmt/rcvmt-main + */ + @RequestMapping(name = "수납 관리 메인", value = METHOD_URL.receivingMoneyMain) + public ModelAndView receivingMoneyMain() { + // View(jsp) + ModelAndView mav = new ModelAndView("fims/rcvm/rcvm01010-main"); + + // 사용자 정보 + FimsUser fimsUser = (FimsUser)currentUser().getUser(); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM041", "FIM045", "FIM054"); + + return mav + .addObject("pageName", "rcvm01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("prefixUrl", CLASS_URL) // prefixUrl + .addObject("sggCd", fimsUser.getOrgID()) // 시군구 코드(SGG_CD) + .addObject("taskListForSgg", stngBean.filterTaskSectionCodeForSgg(commonCodes.get("FIM054"))) + .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD) + .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD) + ; + } + + /**수납 대장 목록을 조회하여 반환한다.
    + * {@link RcvmtService#getRcvmtList(RcvmtQuery)} 참고 + * @param req 수납 대장 조회 조건 + * @return jsonView + *
     {
    +     *     "rcvmtList": [수납 대장 목록]
    +     *     "rcvmtStart": 수납 대장 목록 시작 인덱스
    +     *     "rcvmtFetch": 한 번에 가져오는 수납 대장 목록 수
    +     *     "rcvmtTotal": 조회 결과 찾은 전체 수납 대장 수
    +     * }
    + */ + @Task + @RequestMapping(name="수납 대장 목록 조회", value=METHOD_URL.getReceivingMoneyList) + public ModelAndView getReceivingMoneyList(RcvmtQuery req) { + if (!"xls".equals(req.getDownload())) { + List result = rcvmtService.getRcvmtList(setFetchSize(req)); + return setPagingInfo(new ModelAndView("jsonView"), result, ""); + } else { + // 현재 날짜 구하기 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String dateTime = dateFormat.format(System.currentTimeMillis()); + + List cellDefs = fromJson(req.getCellDefs(), CellDef.listType()); + + XLSWriter xlsx = new XLSWriter().worksheet(0); + Format format = new Format(xlsx); + CellStyle center = format.cellStyle(Style.CENTER); + CellStyle numeric = format.n_nn0(); + CellStyle dateYMD = format.yyyy_mm_dd(); + CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss(); + + List list = rcvmtService.getRcvmtList(req.setFetchSize(0)); + + Map valueMap = new HashMap(); + valueMap.put("업무구분", format.of("TASK_SE_NM").style(center)); + valueMap.put("수납입력구분", format.of("RCVMT_INPT_SE_NM").style(center)); + valueMap.put("수납취소", format.of("RCVMT_RTRCN_NM").style(center)); + valueMap.put("회계연도", format.of("FYR").style(center)); + valueMap.put("회계구분", format.of("ACNTG_SE_CD").style(center)); + valueMap.put("세목코드", format.of("TXITM_CD").style(center)); + valueMap.put("세목명", format.of("TXITM_NM")); + valueMap.put("부과번호", format.of("LEVY_NO").style(center)); + valueMap.put("분납일련번호", format.of("ISPY_SN").style(center)); + valueMap.put("최종본세", format.of("LAST_PCPTAX").style(numeric)); + valueMap.put("최종가산금", format.of("LAST_ADAMT").style(numeric)); + valueMap.put("수납일련번호", format.of("RCVMT_SN").style(center)); + valueMap.put("수납구분", format.of("RCVMT_SE_NM").style(center)); + valueMap.put("수납일자", FormatMaker.yyyy_mm_dd(format, "RCVMT_YMD").style(dateYMD)); + valueMap.put("회계일자", FormatMaker.yyyy_mm_dd(format, "ACNTG_YMD").style(dateYMD)); + valueMap.put("이체일자", FormatMaker.yyyy_mm_dd(format, "TSF_YMD").style(dateYMD)); + valueMap.put("수납금액", format.of("RCVMT_AMT").style(numeric)); + valueMap.put("수납본세", format.of("RCVMT_PCPTAX").style(numeric)); + valueMap.put("수납가산금", format.of("RCVMT_ADAMT").style(numeric)); + valueMap.put("수납이자", format.of("RCVMT_INT").style(numeric)); + valueMap.put("수납은행", format.of("RCVMT_BANK_NM")); + valueMap.put("납부방법", format.of("PAY_MTHD_SE_NM")); + valueMap.put("수납상태", format.of("RCVMT_STTS_NM").style(center)); + valueMap.put("부과일자", FormatMaker.yyyy_mm_dd(format, "LEVY_YMD").style(dateYMD)); + valueMap.put("최초납기일자", FormatMaker.yyyy_mm_dd(format, "FRST_DUDT_YMD").style(dateYMD)); + valueMap.put("납기일자", FormatMaker.yyyy_mm_dd(format, "DUDT_YMD").style(dateYMD)); + valueMap.put("압류일자", FormatMaker.yyyy_mm_dd(format, "SZR_YMD").style(dateYMD)); + valueMap.put("압류물건", format.of("SZR_THING")); + valueMap.put("대체압류차량", format.of("RPM_SZR_VHRNO")); + valueMap.put("압류해제일자", FormatMaker.yyyy_mm_dd(format, "SZR_RMV_YMD").style(dateYMD)); + valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT)); + valueMap.put("차량번호", format.of("VHRNO")); + valueMap.put("납부자구분", format.of("RTPYR_SE_NM").style(center)); + valueMap.put("납부자번호", format.of("RTPYR_NO").style(center)); + valueMap.put("납부자명", format.of("RTPYR_NM")); + valueMap.put("단속법정동", format.of("CRDN_STDG_NM")); + valueMap.put("단속장소", format.of("CRDN_PLC")); + valueMap.put("처리상태", format.of("CRDN_STTS_NM")); + valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT)); + valueMap.put("등록사용자", format.of("RGTR_NM").style(center)); + valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT)); + valueMap.put("수정사용자", format.of("MDFR_NM").style(center)); + + CellDef.setValues(cellDefs, valueMap); + + xlsx.cell(0, 0).value("수납").value(center).merge(0, cellDefs.size() - 1) + .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx))) + .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList())); + + return new ModelAndView("downloadView") + .addObject("download", xlsx.getDownloadable().setFilename("수납" + "_목록_" + dateTime + ".xlsx")); + } + } + + /**지정한 부과 ID의 수납 정보를 반환한다. + * @param levyId 부과 ID + * @return fims/rcvm/rcvm01020-info 또는 jsonView + *
    {
    +     *     "rcvmtInfo": 수납 정보
    +     * }
    + */ + @Task + @RequestMapping(name="수납 정보 조회", value=METHOD_URL.getReceivingMoneyInfo) + public ModelAndView getReceivingMoneyInfo(HttpServletRequest hReq, RcvmtQuery req) { + // + DataObject rcvmtInfo = rcvmtService.getRcvmtInfo(req); + + boolean json = jsonResponse(); + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/rcvm/rcvm01020-info"); + + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM041", "FIM045"); + + return mav + .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + .addObject("pageName", "rcvm01020") // jsp pageName + .addObject("prefixUrl", CLASS_URL) // prefixUrl + .addObject("FIM041List", commonCodes.get("FIM041")) // 수납 구분 코드(RCVMT_SE_CD) + .addObject("FIM045List", commonCodes.get("FIM045")) // 납부 방법 구분 코드(PAY_MTHD_SE_CD) + .addObject("Info", json ? rcvmtInfo : toJson(rcvmtInfo)) // 수납 정보 + ; + } + + /**수납 대장 정보를 등록한다. + * @param rcvmt 수납 대장 정보 + * @return jsonView + *
     {
    +     *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +     * }
    + */ + @Task + @RequestMapping(name="수납 대장 등록", value=METHOD_URL.createReceivingMoney) + public ModelAndView createReceivingMoney(Rcvmt rcvmt) { + boolean saved = false; + String rtnMsg = rcvmtService.createRcvmt(rcvmt); + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + + /**수납 대장에 수납취소 정보를 등록한다. + * @param rcvmt 수납 대장 정보 + * @return jsonView + *
     {
    +     *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +     * }
    + */ + @Task + @RequestMapping(name="수납 대장에 수납취소 수정", value=METHOD_URL.updateReceivingMoneyRetraction) + public ModelAndView updateReceivingMoneyRetraction(Rcvmt rcvmt) { + boolean saved = false; + String rtnMsg = rcvmtService.updateRcvmtRtrcn(rcvmt); + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + + /**수납 대장 정보를 삭제한다. + * @param rcvmt 수납 대장 정보 + * @return jsonView + *
     {
    +     *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +     * }
    + */ + @Task + @RequestMapping(name="수납 대장 삭제", value=METHOD_URL.removeReceivingMoney) + public ModelAndView removeReceivingMoney(Rcvmt rcvmt) { + boolean saved = false; + String rtnMsg = rcvmtService.removeRcvmt(rcvmt); + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } } diff --git a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java index 31c8a92f..1fa19e2b 100644 --- a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java +++ b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java @@ -138,9 +138,9 @@ public class SndngDtl extends AbstractEntity { private String bfrDlvrYmd; /** - * 전 배달 시간 + * 전 배달 시각 */ - private String bfrDlvrHr; + private String bfrDlvrTm; /** * 발송 수납 코드 @@ -213,9 +213,9 @@ public class SndngDtl extends AbstractEntity { private Integer adamt; /** - * 합계 금액 + * 최종 금액 */ - private Integer sumAmt; + private Integer lastAmt; /** * 납기 후 금액 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 a4dd0881..d8189570 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 @@ -175,7 +175,7 @@ public class SndngBean extends AbstractBean { sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue());// 과태료 금액 sndngDtl.setPcptax(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue()); // 본세 sndngDtl.setAdamt(0); // 가산금 - sndngDtl.setSumAmt(0); // 합계 금액 + sndngDtl.setLastAmt(0); // 최종 금액 sndngDtl.setDudtAftrAmt(0); // 납기 후 금액 sndngDtl.setDelYn("N"); // 삭제 여부 @@ -505,13 +505,13 @@ public class SndngBean extends AbstractBean { return rtnMsg; } // 부과 본세와 합계 금액이 같은지 확인 - if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("SUM_AMT").intValue()) { - rtnMsg = "[F] 발송상세 등록 작업중 본세금액과 합계금액이 다릅니다." + if (crdnPayerInfo.number("LEVY_PCPTAX").intValue() != crdnPayerInfo.number("LAST_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") + + "
    " + "최종금액 : " + crdnPayerInfo.string("LAST_AMT") + "

    "; return rtnMsg; } @@ -523,7 +523,7 @@ public class SndngBean extends AbstractBean { 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()); // 합계 금액 + levy.setLastAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 최종 금액 // 부과(TB_LEVY) 대장에 부과일자, 최초납기일자, 납기일자를 수정한다. rtnMsg = levyBean.updateRdctLevyYmd(levy); @@ -562,10 +562,10 @@ public class SndngBean extends AbstractBean { sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 } sndngDtl.setAdamt(0); // 가산금 = 0 - if (crdnPayerInfo.string("SUM_AMT").equals("")) { - sndngDtl.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액 = 사전통지 금액 + if (crdnPayerInfo.string("LAST_AMT").equals("")) { + sndngDtl.setLastAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 최종 금액 = 사전통지 금액 } else { - sndngDtl.setSumAmt(crdnPayerInfo.number("SUM_AMT").intValue()); // 합계 금액 + sndngDtl.setLastAmt(crdnPayerInfo.number("LAST_AMT").intValue()); // 최종 금액 } sndngDtl.setDudtAftrAmt(0); // 납기 후 금액 sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호 @@ -871,7 +871,7 @@ public class SndngBean extends AbstractBean { 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.setLastAmt(crdnPayerInfo.number("LAST_AMT").intValue()); // 최종 금액 sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액 sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호 sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호 @@ -1430,42 +1430,42 @@ public class SndngBean extends AbstractBean { // 금액 int pcptax = 0; // 본세 int adamt = 0; // 가산금 - int sumAmt = 0; // 합계 금액 - int afterPcptax = 0; // 납기후 본세 - int afterAdamt = 0; // 납기후 가산금 - int afterSumAmt = 0; // 납기후 합계 금액 + int lastAmt = 0; // 최종 금액 + int dudtAftrPcptax = 0; // 납기후 본세 + int dudtAftrAdamt = 0; // 납기후 가산금 + int dudtAftrAmt = 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; // 납기후 합계 금액 + lastAmt = sndngDtlInfo.number("FFNLG_AMT").intValue(); // 합계 금액 = 과태료 단속 금액 + dudtAftrPcptax = 0; // 납기후 본세 + dudtAftrAdamt = 0; // 납기후 가산금 + dudtAftrAmt = 0; // 납기후 합계 금액 } else { pcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 본세 adamt = sndngDtlInfo.number("ADAMT").intValue(); // 가산금 - sumAmt = sndngDtlInfo.number("SUM_AMT").intValue(); // 합계 금액 + lastAmt = sndngDtlInfo.number("LAST_AMT").intValue(); // 최종 금액 if (sndngDtlInfo.string("SGG_CD").equals("50110")) { - afterPcptax = 0; // 납기후 본세 - afterAdamt = 0; // 납기후 가산금 - afterSumAmt = 0; // 납기후 합계 금액 + dudtAftrPcptax = 0; // 납기후 본세 + dudtAftrAdamt = 0; // 납기후 가산금 + dudtAftrAmt = 0; // 납기후 합계 금액 } else { - afterSumAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액 - if (afterSumAmt == 0) { // 납기후 금액이 0 이라면.. - afterPcptax = 0; - afterAdamt = 0; - afterSumAmt = 0; + dudtAftrAmt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue(); // 납기후 금액 + if (dudtAftrAmt == 0) { // 납기후 금액이 0 이라면.. + dudtAftrPcptax = 0; // 납기후 본세 + dudtAftrAdamt = 0; // 납기후 가산금 + dudtAftrAmt = 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) { // 납기후 금액이 본세보다 작다면 오류.. + dudtAftrPcptax = sndngDtlInfo.number("PCPTAX").intValue(); // 납기후 본세 + if (dudtAftrAmt > dudtAftrPcptax) { // 납기후 금액이 본세보다 크다면.. + dudtAftrAdamt = sndngDtlInfo.number("DUDT_AFTR_AMT").intValue() - sndngDtlInfo.number("PCPTAX").intValue(); + } else if (dudtAftrAmt < dudtAftrPcptax) { // 납기후 금액이 본세보다 작다면 오류.. throw new RuntimeException("우편통합 발송 작업중 납기후 금액이 본세보다 작은 자료가 발견되었습니다."); // 예외를 발생시켜서 DB Rollback } else { - afterAdamt = 0; + dudtAftrAdamt = 0; } } } @@ -1486,8 +1486,8 @@ public class SndngBean extends AbstractBean { } 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); + ocr1 = CmmnUtil.getOcrband2(ocr0, sndngDtlInfo.string("LEVY_SE_CD"), lastAmt, sndngDtlInfo.string("DUDT_YMD")); + ocr2 = CmmnUtil.getOcrband3(ocr1, lastAmt, sndngDtlInfo.string("DUDT_YMD"), dudtAftrAmt); } // 전자우편 접수 상세 ///////////////////////////////////////////////////// @@ -1580,25 +1580,25 @@ public class SndngBean extends AbstractBean { // 과태료금액 epostRcptDtl.setRecevFinePrice(sndngDtlInfo.string("FFNLG_AMT")); // 납부금액 - epostRcptDtl.setRecevPayPrice(String.valueOf(sumAmt)); + epostRcptDtl.setRecevPayPrice(String.valueOf(lastAmt)); // 납부기한 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.setRecevPayInDefaultPrice(String.valueOf(lastAmt)); // 납기후기한 epostRcptDtl.setRecevPayOutDate(sndngDtlInfo.string("DUDT_AFTR_YMD_MASK")); - // 납기후금액 - epostRcptDtl.setRecevPayOutPrice(String.valueOf(afterPcptax)); + // 납기후본세 + epostRcptDtl.setRecevPayOutPrice(String.valueOf(dudtAftrPcptax)); // 납기후가산금 - epostRcptDtl.setRecevPayOutAddPrice(String.valueOf(afterAdamt)); - // 납기후합계금액 - epostRcptDtl.setRecevPayOutDefaultPrice(String.valueOf(afterSumAmt)); + epostRcptDtl.setRecevPayOutAddPrice(String.valueOf(dudtAftrAdamt)); + // 납기후금액 + epostRcptDtl.setRecevPayOutDefaultPrice(String.valueOf(dudtAftrAmt)); // 차량번호 epostRcptDtl.setRecevCarNumber(sndngDtlInfo.string("VHRNO")); // 우편번호 diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java index 7a6fbb5f..e023f35d 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java @@ -324,9 +324,9 @@ public class SndngDtlBean extends AbstractBean { uptSndngDtl.setLevyYmd(a03.getOpnSbmsnTermBgngYmd()); // 부과 일자 uptSndngDtl.setDudtYmd(a03.getOpnSbmsnTermEndYmd()); // 납기 일자 uptSndngDtl.setFfnlgAmt(Integer.parseInt(a03.getFinScrgAmt())); // 과태료 금액 - uptSndngDtl.setPcptax(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 본세 + uptSndngDtl.setPcptax(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 본세 uptSndngDtl.setAdamt(0); // 가산금 - uptSndngDtl.setSumAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 합계 금액 + uptSndngDtl.setLastAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 최종 금액 uptSndngDtl.setDudtAftrAmt(0); // 납기 후 금액 uptSndngDtl.setTaxNo(a03.getRsveItem1()); // 납세 번호 uptSndngDtl.setEpayno(a03.getEpayNo()); // 전자납부번호 @@ -417,7 +417,7 @@ public class SndngDtlBean extends AbstractBean { levy.setRcvmtAdamt(0); // 수납 가산금 levy.setRdamtPcptax(0); // 감액 본세 levy.setRdamtAdamt(0); // 감액 가산금 - levy.setSumAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 합계 금액 + levy.setLastAmt(Integer.parseInt(a03.getFinScrgAmt()) - Integer.parseInt(a03.getBfRdtAmt())); // 최종 금액 levy.setDudtAftrAmt(0); // 납기 후 금액 // levy.setTxtnThing(a03.getVhrno()); // 과세 물건 -> 값이 넘어오지 않는다.. 차세대 연계 확인 요청이 필요하다. levy.setTxtnThing(crdnLevyInfo.string("VHRNO")); // 과세 물건 @@ -693,7 +693,7 @@ public class SndngDtlBean extends AbstractBean { } sndngDtl.setDlvrYmd(sndbkInfo.string("BFR_DLVR_YMD")); - sndngDtl.setDlvrTm(sndbkInfo.string("BFR_DLVR_HR")); + sndngDtl.setDlvrTm(sndbkInfo.string("BFR_DLVR_TM")); sndngDtl.setSndngDtlSttsCd(sndbkInfo.string("BFR_SNDNG_DTL_STTS_CD")); // 발송 상세(TB_SNDNG_DTL) 대장에 반송 정보를 삭제한다. 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 ae7f4ab9..9b5ff781 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -942,7 +942,7 @@ public class Sndb01Controller extends ApplicationController { valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric)); valueMap.put("본세", format.of("PCPTAX").style(numeric)); valueMap.put("가산금", format.of("ADAMT").style(numeric)); - valueMap.put("미납금액", format.of("SUM_AMT").style(numeric)); + valueMap.put("최종금액", format.of("LAST_AMT").style(numeric)); valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT)); valueMap.put("등록사용자", format.of("RGTR_NM").style(center)); valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT)); @@ -1329,7 +1329,7 @@ public class Sndb01Controller extends ApplicationController { valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric)); valueMap.put("본세", format.of("PCPTAX").style(numeric)); valueMap.put("가산금", format.of("ADAMT").style(numeric)); - valueMap.put("미납금액", format.of("SUM_AMT").style(numeric)); + valueMap.put("최종금액", format.of("LAST_AMT").style(numeric)); valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT)); valueMap.put("등록사용자", format.of("RGTR_NM").style(center)); valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT)); @@ -1451,7 +1451,7 @@ public class Sndb01Controller extends ApplicationController { valueMap.put("과태료금액", format.of("FFNLG_AMT").style(numeric)); valueMap.put("본세", format.of("PCPTAX").style(numeric)); valueMap.put("가산금", format.of("ADAMT").style(numeric)); - valueMap.put("미납금액", format.of("SUM_AMT").style(numeric)); + valueMap.put("최종금액", format.of("LAST_AMT").style(numeric)); valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT)); valueMap.put("등록사용자", format.of("RGTR_NM").style(center)); valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT)); diff --git a/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml b/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml index e9c63cea..6e4fc6a2 100644 --- a/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml +++ b/src/main/resources/sql/mapper/fims/levy/rdct-mapper.xml @@ -78,7 +78,7 @@ , L.RCVMT_ADAMT , L.RDAMT_PCPTAX , L.RDAMT_ADAMT - , L.SUM_AMT + , L.LAST_AMT , L.LEVY_PCPTAX + L.LEVY_ADAMT AS LEVY_AMT , L.RCVMT_PCPTAX + L.RCVMT_ADAMT AS RCVMT_AMT , L.RDAMT_PCPTAX + L.RDAMT_ADAMT AS RDAMT_AMT @@ -205,31 +205,31 @@ , C.FFNLG_AMT , C.ADVNTCE_AMT , C.CRDN_STTS_CD - , (CONCAT(C.CRDN_YMD,C.CRDN_TM)) AS CRDN_YMD_TM - , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , (CONCAT(C.CRDN_YMD,C.CRDN_TM)) AS CRDN_YMD_TM + , (GET_CODE_NM('FIM010', C.CRDN_STTS_CD)) AS CRDN_STTS_NM , L.LEVY_ID - , L.SUM_AMT - , L.LEVY_PCPTAX + LEVY_ADAMT AS LEVY_AMT - , L.RCVMT_PCPTAX + RCVMT_ADAMT AS RCVMT_AMT - , L.RDAMT_PCPTAX + RDAMT_ADAMT AS RDAMT_AMT + , L.LAST_AMT + , L.LEVY_PCPTAX + LEVY_ADAMT AS LEVY_AMT + , L.RCVMT_PCPTAX + RCVMT_ADAMT AS RCVMT_AMT + , L.RDAMT_PCPTAX + RDAMT_ADAMT AS RDAMT_AMT , P.RTPYR_ID , P.RTPYR_NO , P.RTPYR_NM , R.RDCT_ID , R.RDCT_YMD , R.RDCT_RSN_CD + , (GET_CODE_NM('FIM019', R.RDCT_RSN_CD)) AS RDCT_RSN_NM , R.RDCT_AMT , R.ETC_CN , R.DEL_YN , R.REG_DT , R.RGTR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM , R.MDFCN_DT , R.MDFR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM , R.DEL_DT , R.DLTR - , (SELECT GET_CODE_NM('FIM019', R.RDCT_RSN_CD) FROM DUAL) AS RDCT_RSN_NM - , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM - , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.DLTR) AS DLTR_NM FROM TB_CRDN C INNER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) @@ -372,15 +372,4 @@ AND DEL_YN = 'N' - /* 부과 대장 과태료 감경 금액 수정(rdctMapper.updateLevyRdct) */ - UPDATE TB_LEVY - SET FFNLG_AMT = #{ffnlgAmt} - , LEVY_PCPTAX = #{levyPcptax} - , SUM_AMT = #{sumAmt} - , MDFCN_DT = - , MDFR = #{modifiedBy} - WHERE LEVY_ID = #{levyId} - AND DEL_YN = 'N' - - diff --git a/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml b/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml index f64c8d66..dc92ce27 100644 --- a/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml +++ b/src/main/resources/sql/mapper/fims/rcvm/rcvmt-mapper.xml @@ -53,23 +53,23 @@ SELECT R.RCVMT_ID , R.SGG_CD , R.TASK_SE_CD - , (SELECT GET_CODE_NM('FIM054', R.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM + , (GET_CODE_NM('FIM054', R.TASK_SE_CD)) AS TASK_SE_NM , R.RCVMT_INPT_SE_CD - , (SELECT GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD) FROM DUAL) AS RCVMT_INPT_SE_NM + , (GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD)) AS RCVMT_INPT_SE_NM , R.DEPT_CD , R.SPCL_BIZ_CD , R.FYR , R.ACNTG_SE_CD - , (SELECT GET_CODE_NM('FIM074', R.ACNTG_SE_CD) FROM DUAL) AS ACNTG_SE_NM + , (GET_CODE_NM('FIM074', R.ACNTG_SE_CD)) AS ACNTG_SE_NM , R.TXITM_CD - , (SELECT GET_CODE_NM('FIM075', R.TXITM_CD) FROM DUAL) AS TXITM_NM + , (GET_CODE_NM('FIM075', R.TXITM_CD)) AS TXITM_NM , R.LEVY_NO , R.ISPY_SN , R.LAST_PCPTAX , R.LAST_ADAMT , R.RCVMT_SN , R.RCVMT_SE_CD - , (SELECT GET_CODE_NM('FIM041', R.RCVMT_SE_CD) FROM DUAL) AS RCVMT_SE_NM + , (GET_CODE_NM('FIM041', R.RCVMT_SE_CD)) AS RCVMT_SE_NM , R.RCVMT_YMD , R.ACNTG_YMD , R.TSF_YMD @@ -79,15 +79,15 @@ , R.RCVMT_INT , R.RCVMT_BANK_NM , R.PAY_MTHD_SE_CD - , (SELECT GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD) FROM DUAL) AS PAY_MTHD_SE_NM + , (GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD)) AS PAY_MTHD_SE_NM , R.EPAYNO , R.VR_ACTNO , R.RCVMT_RTRCN_YN - , (SELECT GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN) FROM DUAL) AS RCVMT_RTRCN_NM + , (GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN)) AS RCVMT_RTRCN_NM , R.RCVMT_RTRCN_DT , R.RCVMT_RTRCN_RSN , R.RCVMT_STTS_CD - , (SELECT GET_CODE_NM('FIM020', R.RCVMT_STTS_CD) FROM DUAL) AS RCVMT_STTS_NM + , (GET_CODE_NM('FIM020', R.RCVMT_STTS_CD)) AS RCVMT_STTS_NM , R.DEL_YN , R.REG_DT , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM @@ -97,6 +97,7 @@ , L.LEVY_YMD , L.FRST_DUDT_YMD , L.DUDT_YMD + , L.LAST_AMT , L.SZR_YMD , L.SZR_THING , L.RPM_SZR_VHRNO @@ -104,17 +105,17 @@ , L.SZR_RMV_RSN , C.CRDN_ID , C.CRDN_YMD - , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM , C.VHRNO , C.CRDN_STDG_NM , C.CRDN_ROAD_NM , C.CRDN_PLC , C.CRDN_STTS_CD - , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , (GET_CODE_NM('FIM010', C.CRDN_STTS_CD)) AS CRDN_STTS_NM , C.CRDN_STTS_CHG_DT , P.RTPYR_ID , P.RTPYR_SE_CD - , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , (GET_CODE_NM('FIM011', P.RTPYR_SE_CD)) AS RTPYR_SE_NM , P.RTPYR_NO , P.RTPYR_NM , PA.ADDR_SN @@ -274,23 +275,23 @@ SELECT R.RCVMT_ID , R.SGG_CD , R.TASK_SE_CD - , (SELECT GET_CODE_NM('FIM054', R.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM + , (GET_CODE_NM('FIM054', R.TASK_SE_CD)) AS TASK_SE_NM , R.RCVMT_INPT_SE_CD - , (SELECT GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD) FROM DUAL) AS RCVMT_INPT_SE_NM + , (GET_CODE_NM('FIM044', R.RCVMT_INPT_SE_CD)) AS RCVMT_INPT_SE_NM , R.DEPT_CD , R.SPCL_BIZ_CD , R.FYR , R.ACNTG_SE_CD - , (SELECT GET_CODE_NM('FIM074', R.ACNTG_SE_CD) FROM DUAL) AS ACNTG_SE_NM + , (GET_CODE_NM('FIM074', R.ACNTG_SE_CD)) AS ACNTG_SE_NM , R.TXITM_CD - , (SELECT GET_CODE_NM('FIM075', R.TXITM_CD) FROM DUAL) AS TXITM_NM + , (GET_CODE_NM('FIM075', R.TXITM_CD)) AS TXITM_NM , R.LEVY_NO , R.ISPY_SN , R.LAST_PCPTAX , R.LAST_ADAMT , R.RCVMT_SN , R.RCVMT_SE_CD - , (SELECT GET_CODE_NM('FIM041', R.RCVMT_SE_CD) FROM DUAL) AS RCVMT_SE_NM + , (GET_CODE_NM('FIM041', R.RCVMT_SE_CD)) AS RCVMT_SE_NM , R.RCVMT_YMD , R.ACNTG_YMD , R.TSF_YMD @@ -300,22 +301,31 @@ , R.RCVMT_INT , R.RCVMT_BANK_NM , R.PAY_MTHD_SE_CD - , (SELECT GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD) FROM DUAL) AS PAY_MTHD_SE_NM + , (GET_CODE_NM('FIM045', R.PAY_MTHD_SE_CD)) AS PAY_MTHD_SE_NM , R.EPAYNO , R.VR_ACTNO , R.RCVMT_RTRCN_YN , R.RCVMT_RTRCN_DT , R.RCVMT_RTRCN_RSN - , (SELECT GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN) FROM DUAL) AS RCVMT_RTRCN_NM + , (GET_CODE_NM('CMN005', R.RCVMT_RTRCN_YN)) AS RCVMT_RTRCN_NM , R.RCVMT_STTS_CD - , (SELECT GET_CODE_NM('FIM020', R.RCVMT_STTS_CD) FROM DUAL) AS RCVMT_STTS_NM + , (GET_CODE_NM('FIM020', R.RCVMT_STTS_CD)) AS RCVMT_STTS_NM , R.DEL_YN , R.REG_DT , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.RGTR) AS RGTR_NM , R.MDFCN_DT , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = R.MDFR) AS MDFR_NM , L.LEVY_ID + , L.LEVY_PCPTAX AS L_LEVY_PCPTAX + , L.LEVY_ADAMT AS L_LEVY_ADAMT + , L.RCVMT_PCPTAX AS L_RCVMT_PCPTAX + , L.RCVMT_ADAMT AS L_RCVMT_ADAMT + , L.RDAMT_PCPTAX AS L_RDAMT_PCPTAX + , L.RDAMT_ADAMT AS L_RDAMT_ADAMT + , L.LAST_AMT , C.CRDN_ID + , C.CRDN_STTS_CD + , C.CRDN_STTS_CHG_DT FROM TB_RCVMT R LEFT OUTER JOIN TB_LEVY L ON (R.LEVY_ID = L.LEVY_ID) LEFT OUTER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID) @@ -480,32 +490,38 @@ /* 사전통지 발송 대상 목록 조회(sndngMapper.selectAdvntceSndngTrgtList) */ SELECT L.LEVY_ID - , SUM(L.SUM_AMT) OVER() AS GRAMT + , SUM(L.LAST_AMT) OVER() AS GRAMT @@ -762,7 +762,7 @@ @@ -835,7 +835,7 @@ , L.RCVMT_ADAMT , L.RDAMT_PCPTAX , L.RDAMT_ADAMT - , L.SUM_AMT + , L.LAST_AMT , L.DUDT_AFTR_AMT , L.TXTN_THING , L.MNG_ITEM1 diff --git a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml index 04e62a9f..06c19148 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -29,7 +29,7 @@ - + @@ -47,7 +47,7 @@ - + @@ -134,7 +134,7 @@ , SD.BFR_SNDNG_DTL_STTS_CD , (GET_CODE_NM('FIM050', SD.BFR_SNDNG_DTL_STTS_CD)) AS BFR_SNDNG_DTL_STTS_NM , SD.BFR_DLVR_YMD - , SD.BFR_DLVR_HR + , SD.BFR_DLVR_TM , SD.SNDNG_RCVMT_CD , (GET_CODE_NM('FIM051', SD.SNDNG_RCVMT_CD)) AS SNDNG_RCVMT_NM , SD.ADDR_CHG_CD @@ -154,7 +154,7 @@ , SD.FFNLG_AMT , SD.PCPTAX , SD.ADAMT - , SD.SUM_AMT + , SD.LAST_AMT , SD.DUDT_AFTR_AMT , SD.TAX_NO , SD.EPAYNO @@ -371,7 +371,7 @@ , SNDNG_DTL_STTS_CD , BFR_SNDNG_DTL_STTS_CD , BFR_DLVR_YMD - , BFR_DLVR_HR + , BFR_DLVR_TM , SNDNG_RCVMT_CD , ADDR_CHG_CD , CRDN_DT @@ -386,7 +386,7 @@ , FFNLG_AMT , PCPTAX , ADAMT - , SUM_AMT + , LAST_AMT , DUDT_AFTR_AMT , TAX_NO , EPAYNO @@ -462,7 +462,7 @@ , #{sndngDtlSttsCd} , #{bfrSndngDtlSttsCd} , #{bfrDlvrYmd} - , #{bfrDlvrHr} + , #{bfrDlvrTm} , #{sndngRcvmtCd} , #{addrChgCd} , #{crdnDt} @@ -477,7 +477,7 @@ , #{ffnlgAmt} , #{pcptax} , #{adamt} - , #{sumAmt} + , #{lastAmt} , #{dudtAftrAmt} , #{taxNo} , #{epayno} @@ -550,10 +550,10 @@ , UNDLVR_RSN_NM = #{undlvrRsnNm} , ACTL_RCPN_NM = #{actlRcpnNm} , RCPN_REL_NM = #{rcpnRelNm} - , SNDNG_DTL_STTS_CD = #{sndngDtlSttsCd} + , SNDNG_DTL_STTS_CD= #{sndngDtlSttsCd} , BFR_SNDNG_DTL_STTS_CD = #{bfrSndngDtlSttsCd} , BFR_DLVR_YMD = #{bfrDlvrYmd} - , BFR_DLVR_HR = #{bfrDlvrHr} + , BFR_DLVR_TM = #{bfrDlvrTm} , SNDNG_RCVMT_CD = #{sndngRcvmtCd} , ADDR_CHG_CD = #{addrChgCd} , CRDN_DT = #{crdnDt} @@ -568,7 +568,7 @@ , FFNLG_AMT = #{ffnlgAmt} , PCPTAX = #{pcptax} , ADAMT = #{adamt} - , SUM_AMT = #{sumAmt} + , LAST_AMT = #{lastAmt} , DUDT_AFTR_AMT = #{dudtAftrAmt} , TAX_NO = #{taxNo} , EPAYNO = #{epayno} @@ -669,7 +669,7 @@ , FFNLG_AMT = #{ffnlgAmt} , PCPTAX = #{pcptax} , ADAMT = #{adamt} - , SUM_AMT = #{sumAmt} + , LAST_AMT = #{lastAmt} , DUDT_AFTR_AMT = #{dudtAftrAmt} , TAX_NO = #{taxNo} , EPAYNO = #{epayno} @@ -775,7 +775,7 @@ , SD.FFNLG_AMT , SD.PCPTAX , SD.ADAMT - , SD.SUM_AMT + , SD.LAST_AMT , SD.REG_DT , SD.RGTR , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = SD.RGTR) AS RGTR_NM @@ -970,7 +970,7 @@ , SD.SNDNG_DTL_STTS_CD , SD.BFR_SNDNG_DTL_STTS_CD , SD.BFR_DLVR_YMD - , SD.BFR_DLVR_HR + , SD.BFR_DLVR_TM , S.SNDNG_ID , S.SGG_CD , S.TASK_SE_CD @@ -1039,7 +1039,7 @@ /* 발송상세의 반송 정보 수정(sndngDtlMapper.updateSndbk) */ UPDATE TB_SNDNG_DTL SET BFR_DLVR_YMD = DLVR_YMD - , BFR_DLVR_HR = DLVR_TM + , BFR_DLVR_TM = DLVR_TM , DLVR_YMD = #{dlvrYmd} , DLVR_TM = #{dlvrTm} , UNDLVR_RSN_CD = #{undlvrRsnCd} @@ -1063,7 +1063,7 @@ UPDATE TB_SNDNG_DTL SET BFR_SNDNG_DTL_STTS_CD = NULL , BFR_DLVR_YMD = NULL - , BFR_DLVR_HR = NULL + , BFR_DLVR_TM = NULL , DLVR_YMD = #{dlvrYmd} , DLVR_TM = #{dlvrTm} , UNDLVR_RSN_CD = NULL diff --git a/src/main/resources/sql/mapper/fims/sndb/svbtc-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/svbtc-mapper.xml index 048f99e0..447e365c 100644 --- a/src/main/resources/sql/mapper/fims/sndb/svbtc-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/svbtc-mapper.xml @@ -179,7 +179,7 @@ , SD.FFNLG_AMT , SD.PCPTAX , SD.ADAMT - , SD.SUM_AMT + , SD.LAST_AMT , SD.RCPN_NM , SD.RCPN_BRDT , SD.RCPN_ADDR diff --git a/src/main/resources/sql/mapper/fims/sprt/integrationSearch-mapper.xml b/src/main/resources/sql/mapper/fims/sprt/integrationSearch-mapper.xml index 3a01054d..84839b11 100644 --- a/src/main/resources/sql/mapper/fims/sprt/integrationSearch-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sprt/integrationSearch-mapper.xml @@ -93,7 +93,7 @@ , L.RCVMT_ADAMT , L.RDAMT_PCPTAX , L.RDAMT_ADAMT - , L.SUM_AMT + , L.LAST_AMT , (L.LEVY_PCPTAX + L.LEVY_ADAMT) AS LEVY_AMT , (L.RCVMT_PCPTAX + L.RCVMT_ADAMT) AS RCVMT_AMT , (L.RDAMT_PCPTAX + L.RDAMT_ADAMT) AS REDUC_AMT @@ -317,7 +317,7 @@ LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = ' IFNULL(CA.TOWNG_YN,'N') L.SZR_YMD L.SZR_RMV_YMD - L.SUM_AMT + L.LAST_AMT GET_MINAP_AMT(C.CRDN_ID) (L.LEVY_PCPTAX+L.LEVY_ADAMT) L.LEVY_PCPTAX diff --git a/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml b/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml index 8bf778fb..377d4105 100644 --- a/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sprt/totalInfo-mapper.xml @@ -22,7 +22,7 @@ LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') - /* 개별총정보 조회(TotalInfoMapper.selectCrdnInfo) */ WHERE C.CRDN_ID = #{crdnId} @@ -31,11 +31,11 @@ SELECT C.CRDN_ID , C.SGG_CD , C.TASK_SE_CD - , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM + , (GET_CODE_NM('FIM054', C.TASK_SE_CD)) AS TASK_SE_NM , C.CRDN_REG_SE_CD - , (SELECT GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD) FROM DUAL) AS CRDN_REG_SE_NM + , (GET_CODE_NM('FIM026', C.CRDN_REG_SE_CD)) AS CRDN_REG_SE_NM , C.CRDN_INPT_SE_CD - , (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM + , (GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD)) AS CRDN_INPT_SE_NM , C.CVLCPT_LINK_YN , C.CVLCPT_LINK_TBL_NM , C.CVLCPT_LINK_ID @@ -62,7 +62,7 @@ , C.OPNN_SBMSN_YN , C.ETC_CN , C.CRDN_STTS_CD - , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , (GET_CODE_NM('FIM010', C.CRDN_STTS_CD)) AS CRDN_STTS_NM , C.CRDN_STTS_CHG_DT , C.BFR_CRDN_ID , C.DEL_YN @@ -77,45 +77,45 @@ , C.DEL_RSN , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.DLTR) AS DLTR_NM , CA.CRDN_SE_CD - , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM + , (GET_CODE_NM('FIM002', CA.CRDN_SE_CD)) AS CRDN_SE_NM , CA.TEAM_ID , CA.DTL_CRDN_PLC , CA.CRDN_SPAREA_CD - , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM + , (GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD)) AS CRDN_SPAREA_NM , CA.CRDN_BGNG_TM , CA.CRDN_END_TM , CA.CRDN_SN , CA.MOSC_X , CA.MOSC_Y , CA.TOWNG_YN - , (SELECT GET_CODE_NM('FIM053', CA.TOWNG_YN) FROM DUAL) AS TOWNG_NM + , (GET_CODE_NM('FIM053', CA.TOWNG_YN)) AS TOWNG_NM , CA.USE_FUEL_CD - , (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM + , (GET_CODE_NM('LVS005', CA.USE_FUEL_CD)) AS USE_FUEL_NM , CA.FFNLG_CARMDL_CD - , (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM + , (GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD)) AS FFNLG_CARMDL_NM , CA.PRK_PSBLTY_RSLT_CD - , (SELECT GET_CODE_NM('FIM034', CA.PRK_PSBLTY_RSLT_CD) FROM DUAL) AS PRK_PSBLTY_RSLT_NM + , (GET_CODE_NM('FIM034', CA.PRK_PSBLTY_RSLT_CD)) AS PRK_PSBLTY_RSLT_NM , CA.VLTN_NMTM , CA.OVTM_YN - , (SELECT GET_CODE_NM('CMN006', CA.OVTM_YN) FROM DUAL) AS OVTM_NM + , (GET_CODE_NM('CMN006', CA.OVTM_YN)) AS OVTM_NM , CA.OVTM_PRTTN_YN - , (SELECT GET_CODE_NM('CMN006', CA.OVTM_PRTTN_YN) FROM DUAL) AS OVTM_PRTTN_NM + , (GET_CODE_NM('CMN006', CA.OVTM_PRTTN_YN)) AS OVTM_PRTTN_NM , V.VLTN_ARTCL , P.RTPYR_ID , P.RTPYR_INPT_SE_CD - , (SELECT GET_CODE_NM('FIM015', P.RTPYR_INPT_SE_CD) FROM DUAL) AS RTPYR_INPT_SE_NM + , (GET_CODE_NM('FIM015', P.RTPYR_INPT_SE_CD)) AS RTPYR_INPT_SE_NM , P.RTPYR_SE_CD - , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , (GET_CODE_NM('FIM011', P.RTPYR_SE_CD)) AS RTPYR_SE_NM , P.RTPYR_NO , P.RTPYR_NM , P.RTPYR_TELNO , P.RTPYR_MBL_TELNO , P.RTPYR_EML , P.RTPYR_STTS_CD - , (SELECT GET_CODE_NM('FIM014', P.RTPYR_STTS_CD) FROM DUAL) AS RTPYR_STTS_NM + , (GET_CODE_NM('FIM014', P.RTPYR_STTS_CD)) AS RTPYR_STTS_NM , PA.ADDR_SN , PA.ADDR_SE_CD - , (SELECT GET_CODE_NM('FIM013', PA.ADDR_SE_CD) FROM DUAL) AS ADDR_SE_NM + , (GET_CODE_NM('FIM013', PA.ADDR_SE_CD)) AS ADDR_SE_NM , PA.ZIP , PA.ADDR , PA.DTL_ADDR @@ -142,10 +142,11 @@ , CC.CVLCPT_PRCS_CMPTN_DT , CC.CVLCPT_PRCS_PIC , L.LEVY_ID - , (CONCAT(L.FYR, '-', L.LEVY_NO)) AS GOJI_NO - , (L.LEVY_PCPTAX + L.LEVY_ADAMT) AS LEVY_AMT - , (L.RCVMT_PCPTAX + L.RCVMT_ADAMT) AS RCVMT_AMT - , (L.RDAMT_PCPTAX + L.RDAMT_ADAMT) AS RDAMT_AMT + , (CONCAT(L.FYR, '-', L.LEVY_NO)) AS GOJI_NO + , (L.LEVY_PCPTAX + L.LEVY_ADAMT) AS LEVY_AMT + , (L.RCVMT_PCPTAX + L.RCVMT_ADAMT) AS RCVMT_AMT + , (L.RDAMT_PCPTAX + L.RDAMT_ADAMT) AS RDAMT_AMT + , L.LAST_AMT FROM TB_CRDN C INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID) @@ -155,12 +156,12 @@ LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') - /* 개별총정보 조회(TotalInfoMapper.selectCrdnPayerInfo) */ WHERE C.CRDN_ID = #{crdnId} - /* 단속 첨부 파일갯수 수정 (sprt02Mapper.updateCrdnAtchFileCnt) */ + /* 단속 첨부 파일갯수 수정 (TotalInfoMapper.updateCrdnAtchFileCnt) */ UPDATE TB_CRDN SET ATCH_FILE_CNT= #{crdn.atchFileCnt} , MDFCN_DT = #{crdn.lastModified}