계고장 발송 대상 수정.

main
jjh 11 months ago
parent c9596346db
commit 8838f17904

@ -7,7 +7,6 @@ import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import cokr.xit.foundation.component.AbstractMapper; import cokr.xit.foundation.component.AbstractMapper;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.sndb.Sndng; import cokr.xit.fims.sndb.Sndng;
import cokr.xit.fims.sndb.SndngDtl; import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.SndbQuery; import cokr.xit.fims.sndb.SndbQuery;
@ -43,6 +42,12 @@ public interface SndngMapper extends AbstractMapper {
return !wrngTrgtInfo.isEmpty() ? wrngTrgtInfo.get(0) : null; return !wrngTrgtInfo.isEmpty() ? wrngTrgtInfo.get(0) : null;
} }
/** ID .
* @param req
* @return
*/
List<DataObject> selectWrngTrgtCrdnIDs(SndbQuery req);
/** .<br /> /** .<br />
* @param req * @param req
* @return * @return
@ -158,6 +163,19 @@ public interface SndngMapper extends AbstractMapper {
/** , , .
* @param req
* @return
*/
List<DataObject> selectCrdnPayerTrgts(SndbQuery req);
default DataObject selectCrdnPayerInfo(String crdnId) {
List<DataObject> crdnPayerInfo = selectCrdnPayerTrgts(new SndbQuery().setCrdnId(crdnId));
return !crdnPayerInfo.isEmpty() ? crdnPayerInfo.get(0) : null;
}
@ -170,17 +188,6 @@ public interface SndngMapper extends AbstractMapper {
*/ */
List<DataObject> selectSndngTrgts(String sndngId); List<DataObject> selectSndngTrgts(String sndngId);
/** , , .
* @param req
* @return
*/
List<DataObject> selectCrdnPayerTrgts(SndbQuery req);
default DataObject selectCrdnPayerTrgtInfo(String crdnId) {
List<DataObject> InfoCrdnPayerTrgt = selectCrdnPayerTrgts(new SndbQuery().setCrdnId(crdnId));
return !InfoCrdnPayerTrgt.isEmpty() ? InfoCrdnPayerTrgt.get(0) : null;
}

@ -138,112 +138,52 @@ public class SndngBean extends AbstractComponent {
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지 String rtnMsg = "[F] "; // 처리 결과 메시지
// 첫번째 페이지 확인 List<DataObject> wrngTrgtList = sndngMapper.selectWrngTrgtCrdnIDs(req);;
req.setPageNum(1);
List<DataObject> wrngTrgtList = sndngMapper.selectWrngTrgtList(req);
// 조회 건수 확인 // 조회 건수 확인
if (wrngTrgtList == null || wrngTrgtList.size() < 1) { if (wrngTrgtList == null || wrngTrgtList.size() < 1) {
rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다."; rtnMsg = "[F] 작업 중 대상 자료가 존재하지 않습니다.";
return rtnMsg; return rtnMsg;
} }
if (sndng.getTnocs() != wrngTrgtList.get(0).number("TOT_CNT").intValue()) { if (sndng.getTnocs() != wrngTrgtList.size()) {
rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다."; rtnMsg = "[F] 조회된 총 건수와 대상 건수가 다릅니다.";
return rtnMsg; return rtnMsg;
} }
// 총 페이지 건수 확인 // 사용자 정보를 조회한다.
int totalPageCnt = wrngTrgtList.get(0).number("TOT_CNT").intValue() / req.getFetchSize() + ((wrngTrgtList.get(0).number("TOT_CNT").intValue() % req.getFetchSize() == 0) ? 0 : 1); DataObject userInfo = userBean.getUserInfo(currentUser().getId());
// 페이지 건수 + 1 만큼 반복문 실행..
for (int iLoop = 1; iLoop <= totalPageCnt; iLoop++) {
if (iLoop == 1) {
// 발송(TB_SNDNG) 대장에 등록한다.
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
sndng.setSndngEndYmd(null); // 발송 종료 일자
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYN() == null) {
sndng.setResndYN("N"); // 재발송 여부
}
if (sndng.getDelYN() == null) {
sndng.setDelYN("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송 등록
rtnScs = sndngMapper.insert(sndng);
if (!rtnScs) {
throw new RuntimeException("계도장 발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
req.setPageNum(iLoop);
wrngTrgtList = sndngMapper.selectWrngTrgtList(req);
// 조회 건수 확인
if (wrngTrgtList == null || wrngTrgtList.size() < 1) {
throw new RuntimeException("계도장 발송 등록 작업 중 대상 자료가 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback
}
}
// 발송 상세(TB_SNDNG_DTL) 대장에 등록한다.
for (int jLoop = 0; jLoop < wrngTrgtList.size(); jLoop++) {
String newCrdnSttsCd = "84"; // 단속 상태 코드 - 84 계고장 출력 완료
Integer ffnlgAmt = wrngTrgtList.get(jLoop).number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
Integer pcptax = wrngTrgtList.get(jLoop).number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
Integer adamt = 0;
Integer sumAmt = 0;
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
sndngDtl.setCrdnId(wrngTrgtList.get(jLoop).string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRtpyrNm(wrngTrgtList.get(jLoop).string("RTPYR_NM")); // 납부자 명
sndngDtl.setRtpyrBrdt(wrngTrgtList.get(jLoop).string("RTPYR_BRDT")); // 납부자 생년월일
sndngDtl.setRtpyrAddr(wrngTrgtList.get(jLoop).string("ADDR")); // 납부자 주소
sndngDtl.setRtpyrDtlAddr(wrngTrgtList.get(jLoop).string("DTL_ADDR")); // 납부자 상세 주소
sndngDtl.setRtpyrZip(wrngTrgtList.get(jLoop).string("ZIP")); // 납부자 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(wrngTrgtList.get(jLoop).string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(wrngTrgtList.get(jLoop).string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(wrngTrgtList.get(jLoop).string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(wrngTrgtList.get(jLoop).string("CRDN_PLC")); // 단속 장소
sndngDtl.setFfnlgAmt(ffnlgAmt); // 과태료 금액
sndngDtl.setPcptax(pcptax); // 본세
sndngDtl.setAdamt(adamt); // 가산금
sndngDtl.setSumAmt(sumAmt); // 합계 금액
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setDelYN("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 코드를 수정한다. // 발송(TB_SNDNG) 대장에 등록한다.
if (!newCrdnSttsCd.equals("")) { sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); sndng.setVltnId(wrngTrgtList.get(0).string("VLTN_ID")); // 위반 ID
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
sndng.setSndngEndYmd(null); // 발송 종료 일자
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYN() == null) {
sndng.setResndYN("N"); // 재발송 여부
}
if (sndng.getDelYN() == null) {
sndng.setDelYN("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
crdnSttsHstry.setCrdnId(wrngTrgtList.get(jLoop).string("CRDN_ID")); // 발송 등록
crdnSttsHstry.setBfrSttsCd(wrngTrgtList.get(jLoop).string("CRDN_STTS_CD")); rtnScs = sndngMapper.insert(sndng);
crdnSttsHstry.setBfrSttsChgDt(wrngTrgtList.get(jLoop).string("CRDN_STTS_CHG_DT")); if (!rtnScs) {
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); throw new RuntimeException("계도장 발송 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId()); }
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. // 발송 상세(TB_SNDNG_DTL) 대장에 등록한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); for (int iLoop = 0; iLoop < wrngTrgtList.size(); iLoop++) {
if (!rtnScs) { rtnMsg = createWrngSndngDtl(sndng, wrngTrgtList.get(iLoop).string("CRDN_ID"));
throw new RuntimeException("발송 상세 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback // 메시지 확인
} if (!rtnMsg.contains("[S]")) {
} throw new RuntimeException("계도장 발송 등록 작업중 발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
} }
@ -253,201 +193,62 @@ public class SndngBean extends AbstractComponent {
} }
/** . /** .
* @param sndng * @param sndngDtl
* @return * @return
* <ul><li> true</li> * <ul><li> true</li>
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
public String createWrngSndngDtl(Sndng sndng) { public String createWrngSndngDtl(Sndng sndng, String crdnId) {
// 변수 선언 // 변수 선언
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = "[F] "; // 처리 결과 메시지 String rtnMsg = "[F] "; // 처리 결과 메시지
String newCrdnSttsCd = ""; // 단속 상태 코드 DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(crdnId);
int ffnlgAmt = 0; // 과태료 금액
int pcptax = 0; // 본세
int adamt = 0; // 가산금
int sumAmt = 0; // 합계 금액
// 사용자 정보
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드 SndngDtl sndngDtl = new SndngDtl();
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
if (sndng.getSndngSeCd().equals("11") || sndng.getSndngSeCd().equals("12")) { // 계고장
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
sndng.setSndngEndYmd(null); // 발송 종료 일자
newCrdnSttsCd = "84"; // 단속 상태 코드 - 84 계고장 출력 완료
} else if (sndng.getSndngSeCd().equals("01") || sndng.getSndngSeCd().equals("02")) { // 사전통지
sndng.setLevyBgngYmd(null); // 부과 시작 일자
sndng.setLevyEndYmd(null); // 부과 종료 일자
newCrdnSttsCd = "42"; // 단속 상태 코드 - 42 사전통지 발송
} else {
newCrdnSttsCd = "";
}
if (sndng.getTnocs() == 1) {
sndng.setSndngRegSeCd("02"); // 발송 등록 구분 코드 - 개별
} else {
sndng.setSndngRegSeCd("01"); // 발송 등록 구분 코드 - 일괄
}
if (sndng.getResndYN() == null) {
sndng.setResndYN("N"); // 재발송 여부
}
if (sndng.getDelYN() == null) {
sndng.setDelYN("N"); // 삭제 여부
}
sndng.setSndngSttsCd("00"); // 발송 상태 코드(FIM049) - 00 발송 준비
// 발송 등록 sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
rtnScs = sndngMapper.insert(sndng); sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRtpyrNm(crdnPayerInfo.string("RTPYR_NM")); // 납부자 명
sndngDtl.setRtpyrBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 납부자 생년월일
sndngDtl.setRtpyrAddr(crdnPayerInfo.string("ADDR")); // 납부자 주소
sndngDtl.setRtpyrDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 납부자 상세 주소
sndngDtl.setRtpyrZip(crdnPayerInfo.string("ZIP")); // 납부자 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue());// 과태료 금액
sndngDtl.setPcptax(crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue()); // 본세
sndngDtl.setAdamt(0); // 가산금
sndngDtl.setSumAmt(0); // 합계 금액
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
sndngDtl.setDelYN("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("발송 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
} }
for (int iLoop = 0; iLoop < sndng.getCrdnIDs().length; iLoop++) { // 단속 상태 코드를 수정한다.
// 단속, 납부자 정보 조회 if (crdnPayerInfo.string("CRDN_STTS_CD").equals("83")) {
DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerTrgtInfo(sndng.getCrdnIDs()[iLoop]); CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
if (crdnPayerInfo == null) {
throw new RuntimeException("발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + "<p>단속ID : " + sndng.getCrdnIDs()[iLoop]); // 예외를 발생시켜서 DB Rollback
}
if (crdnPayerInfo.string("RTPYR_ID").equals("")) {
throw new RuntimeException("발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." + "<p>차량번호 : " + crdnPayerInfo.string("VHRNO")); // 예외를 발생시켜서 DB Rollback
}
if (sndng.getSndngSeCd().equals("11") || sndng.getSndngSeCd().equals("12")) { // 계고장
ffnlgAmt = crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
pcptax = crdnPayerInfo.number("FFNLG_CRDN_AMT").intValue(); // 과태료 최초 단속 금액
adamt = 0;
sumAmt = 0;
} else if (sndng.getSndngSeCd().equals("01") || sndng.getSndngSeCd().equals("02")) { // 사전통지
// 부과 ID가 없다면 부과대장 등록
if (crdnPayerInfo.string("LEVY_ID").equals("")) {
Levy levy = new Levy();
levy.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
rtnMsg = levyBean.createRductLevy(levy);
if (rtnMsg.contains("[F]")) {
throw new RuntimeException("발송 상세 등록 작업중 부과대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속, 납부자 정보 재조회 /////////////////////////////////////////
crdnPayerInfo = sndngMapper.selectCrdnPayerTrgtInfo(sndng.getCrdnIDs()[iLoop]);
} else {
if ("BPV,PVS".contains(crdnPayerInfo.string("TASK_SE_CD"))) {
// 부과일자, 최초납기일자, 납기일자를 변경한다.
Levy levy = new Levy();
levy.setLevyId(crdnPayerInfo.string("LEVY_ID")); // 부과 ID
levy.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
levy.setFrstDudtYmd(sndng.getSndngEndYmd()); // 최초 납기 일자
levy.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
levy.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액
levy.setLevyPcptax(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 본세 금액
levy.setSumAmt(crdnPayerInfo.number("ADVNTCE_AMT").intValue()); // 합계 금액
rtnMsg = levyBean.updateRductLevyYmd(levy);
if (rtnMsg.contains("[F]")) {
throw new RuntimeException("발송 상세 등록 작업중 부과대장 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
ffnlgAmt = crdnPayerInfo.number("FFNLG_AMT").intValue(); // 과태료 금액
pcptax = crdnPayerInfo.number("PCPTAX").intValue(); // 부과 본세
adamt = 0; // 부과 가산금
sumAmt = crdnPayerInfo.number("SUM_AMT").intValue(); // 부과 합계 금액
} else {
ffnlgAmt = crdnPayerInfo.number("FFNLG_AMT").intValue(); // 과태료 금액
pcptax = crdnPayerInfo.number("PCPTAX").intValue(); // 부과본세 - 수납본세 - 감액본세
adamt = crdnPayerInfo.number("ADAMT").intValue(); // 부과가산금 - 수납가산금 - 감액가산금
sumAmt = crdnPayerInfo.number("SUM_AMT").intValue(); // 합계 금액
}
// 발송 상세(TB_SNDNG_DTL) 대장에 등록한다. crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID"));
SndngDtl sndngDtl = new SndngDtl(); crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd("84");
crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId());
sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
sndngDtl.setRtpyrNm(crdnPayerInfo.string("RTPYR_NM")); // 납부자 명
sndngDtl.setRtpyrBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 납부자 생년월일
sndngDtl.setRtpyrAddr(crdnPayerInfo.string("ADDR")); // 납부자 주소
sndngDtl.setRtpyrDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 납부자 상세 주소
sndngDtl.setRtpyrZip(crdnPayerInfo.string("ZIP")); // 납부자 우편번호
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자
sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자
sndngDtl.setFfnlgAmt(ffnlgAmt); // 과태료 금액
sndngDtl.setPcptax(pcptax); // 본세
sndngDtl.setAdamt(adamt); // 가산금
sndngDtl.setSumAmt(sumAmt); // 합계 금액
sndngDtl.setDudtAftrAmt(crdnPayerInfo.number("DUDT_AFTR_AMT").intValue()); // 납기 후 금액
sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
sndngDtl.setDelYN("N"); // 삭제 여부
rtnScs = sndngDtlMapper.insert(sndngDtl); // 발송 상세 등록
if (!rtnScs) { if (!rtnScs) {
throw new RuntimeException("발송 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("발송 상세 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 상태 코드를 수정한다.
if (!newCrdnSttsCd.equals("")) {
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
crdnSttsHstry.setCrdnId(crdnPayerInfo.string("CRDN_ID"));
crdnSttsHstry.setBfrSttsCd(crdnPayerInfo.string("CRDN_STTS_CD"));
crdnSttsHstry.setBfrSttsChgDt(crdnPayerInfo.string("CRDN_STTS_CHG_DT"));
crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd);
crdnSttsHstry.setTaskDtlId(sndngDtl.getSndngDtlId());
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
throw new RuntimeException("발송 상세 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} }
} }
@ -456,13 +257,6 @@ public class SndngBean extends AbstractComponent {
return rtnMsg; return rtnMsg;
} }
/** . /** .
* @param req * @param req
* @return * @return
@ -597,7 +391,7 @@ public class SndngBean extends AbstractComponent {
for (int iLoop = 0; iLoop < sndng.getCrdnIDs().length; iLoop++) { for (int iLoop = 0; iLoop < sndng.getCrdnIDs().length; iLoop++) {
// 단속, 납부자 정보 조회 // 단속, 납부자 정보 조회
DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerTrgtInfo(sndng.getCrdnIDs()[iLoop]); DataObject crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(sndng.getCrdnIDs()[iLoop]);
if (crdnPayerInfo == null) { if (crdnPayerInfo == null) {
throw new RuntimeException("발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + "<p>단속ID : " + sndng.getCrdnIDs()[iLoop]); // 예외를 발생시켜서 DB Rollback throw new RuntimeException("발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + "<p>단속ID : " + sndng.getCrdnIDs()[iLoop]); // 예외를 발생시켜서 DB Rollback
@ -627,7 +421,7 @@ public class SndngBean extends AbstractComponent {
} }
// 단속, 납부자 정보 재조회 ///////////////////////////////////////// // 단속, 납부자 정보 재조회 /////////////////////////////////////////
crdnPayerInfo = sndngMapper.selectCrdnPayerTrgtInfo(sndng.getCrdnIDs()[iLoop]); crdnPayerInfo = sndngMapper.selectCrdnPayerInfo(sndng.getCrdnIDs()[iLoop]);
} else { } else {
if ("BPV,PVS".contains(crdnPayerInfo.string("TASK_SE_CD"))) { if ("BPV,PVS".contains(crdnPayerInfo.string("TASK_SE_CD"))) {
// 부과일자, 최초납기일자, 납기일자를 변경한다. // 부과일자, 최초납기일자, 납기일자를 변경한다.

@ -109,6 +109,9 @@
, (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */ , (SELECT GET_CODE_NM('FIM022', LE.LEVY_EXCL_RSN_CD) FROM DUAL) AS LEVY_EXCL_RSN_NM /* 부과 제외 사유 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM /* 등록자 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM /* 등록자 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM /* 수정자 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM /* 수정자 명 */
</sql>
<sql id="fromWrngTrgt">
FROM TB_CRDN C FROM TB_CRDN C
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID) 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) INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID)
@ -117,7 +120,6 @@
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N') LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */ WHERE C.SGG_CD = #{sggCd} /* 시군구 코드 */
AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */ AND C.TASK_SE_CD = #{taskSeCd} /* 업무 구분 코드 */
AND C.CRDN_STTS_CD = '83' /* 단속 상태 코드 */
<if test="crdnIDs != null"> <if test="crdnIDs != null">
AND C.CRDN_ID IN ( AND C.CRDN_ID IN (
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach> /* 단속 IDs */ <foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach> /* 단속 IDs */
@ -126,6 +128,9 @@
<if test="crdnId != null"> <if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */ AND C.CRDN_ID = #{crdnId} /* 단속 ID */
</if> </if>
<if test="crdnSttsCd != null">
AND C.CRDN_STTS_CD = #{crdnSttsCd} /* 단속 상태 코드 */
</if>
<if test="schLevyExclYmdFrom != null"> <if test="schLevyExclYmdFrom != null">
AND LE.LEVY_EXCL_YMD <![CDATA[>=]]> #{schLevyExclYmdFrom} /* 부과제외 일자 시작 */ AND LE.LEVY_EXCL_YMD <![CDATA[>=]]> #{schLevyExclYmdFrom} /* 부과제외 일자 시작 */
</if> </if>
@ -227,6 +232,7 @@
<include refid="utility.paging-prefix" /> <include refid="utility.paging-prefix" />
SELECT C.CRDN_ID /* 단속 ID */ SELECT C.CRDN_ID /* 단속 ID */
<include refid="selectWrngTrgt" /> <include refid="selectWrngTrgt" />
<include refid="fromWrngTrgt" />
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /> <include refid="utility.paging-suffix" />
</select> </select>
@ -236,12 +242,143 @@
, SUM(C.FFNLG_AMT) OVER() AS GRAMT /* 총금액 */ , SUM(C.FFNLG_AMT) OVER() AS GRAMT /* 총금액 */
, C.CRDN_ID /* 단속 ID */ , C.CRDN_ID /* 단속 ID */
<include refid="selectWrngTrgt" /> <include refid="selectWrngTrgt" />
<include refid="fromWrngTrgt" />
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
<select id="selectWrngTrgtCrdnIDs" parameterType="map" resultType="dataobject">/* 계고장 발송 대상 단속ID 가져오기(sndngMapper.selectWrngTrgtCrdnIDs) */
SELECT C.CRDN_ID /* 단속 ID */
<include refid="fromWrngTrgt" />
<include refid="utility.orderBy" />
</select>
<sql id="selectCrdnPayer">
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
, C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.CRDN_ROAD_NM /* 단속 도로 명 */
, C.CRDN_PLC /* 단속 장소 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.ADVNTCE_AMT /* 사전통지 금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK /* 단속 일시 마스크 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, CA.CRDN_SE_CD /* 단속 구분 코드 */
, CA.CRDN_SPAREA_CD /* 단속 특별구역 코드 */
, CA.PARKNG_PSBLTY_RSLT_CD /* 주차 가능 결과 코드 */
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM /* 단속 구분 명 */
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM /* 단속 특별구역 명 */
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM /* 주차 가능 결과 명 */
, V.VLTN_ID /* 위반 ID */
, V.VLTN_CD /* 위반 코드 */
, V.VLTN_ARTCL /* 위반 항목 */
, V.ACNTG_SE_NM /* 회계 구분 명 */
, V.TXITM_NM /* 세목 명 */
, V.OPER_ITEM_NM /* 운영 항목 명 */
, CC.CVLCPT_LINK_ID /* 민원 연계 ID */
, CC.CVLCPT_RCPT_YMD /* 민원 접수 일자 */
, CC.CVLCPT_APLY_NO /* 민원 신청 번호 */
, CC.CVLCPT_RCPT_NO /* 민원 접수 번호 */
, CC.CVLCPT_PRCS_SUMRY /* 민원 처리 요약 */
, CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */
, CC.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */
, CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */
, CC.CVLCPT_TRSM_DT /* 민원 전송 일시 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_BRDT /* 납부자 생년월일 */
, P.ZIP /* 우편번호 */
, P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */
, L.LEVY_ID /* 부과 ID */
, L.INST_CD /* 기관 코드 */
, L.DEPT_CD /* 부서 코드 */
, L.FYR /* 회계연도 */
, L.ACNTG_SE_CD /* 회계 구분 코드*/
, L.TXITM_CD /* 세목 코드 */
, L.OPER_ITEM_CD /* 운영 항목 코드 */
, L.SPCL_BIZ_CD /* 특별회계 사업 코드 */
, L.LEVY_NO /* 부과 번호 */
, L.INSPY_SN /* 분납 순번 */
, L.LEVY_SE_CD /* 부과 구분 코드 */
, L.LEVY_YMD /* 부과 일자 */
, L.FRST_DUDT_YMD /* 최초 납기 일자 */
, L.DUDT_YMD /* 납기 일자 */
, L.DUDT_AFTR_YMD /* 납기 후 일자 */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */
, L.RCVMT_PCPTAX /* 수납 본세 */
, L.RCVMT_ADAMT /* 수납 가산금 */
, L.RDCAMT_PCPTAX /* 감액 본세 */
, L.RDCAMT_ADAMT /* 감액 가산금 */
, L.SUM_AMT /* 합계 금액 */
, L.DUDT_AFTR_AMT /* 납기 후 금액 */
, L.TXTN_THING /* 과세 물건 */
, L.MNG_ITEM1 /* 관리 아이템1 */
, L.MNG_ITEM2 /* 관리 아이템2 */
, L.MNG_ITEM3 /* 관리 아이템3 */
, L.MNG_ITEM4 /* 관리 아이템4 */
, L.MNG_ITEM5 /* 관리 아이템5 */
, L.MNG_ITEM6 /* 관리 아이템6 */
, L.EPAYNO /* 전자납부번호 */
, L.BANK_NM /* 은행 명 */
, L.VR_ACTNO /* 가상 계좌번호 */
, L.BANK_NM2 /* 은행 명2 */
, L.VR_ACTNO2 /* 가상 계좌번호2 */
, L.BANK_NM3 /* 은행 명3 */
, L.VR_ACTNO3 /* 가상 계좌번호3 */
, L.BANK_NM4 /* 은행 명4 */
, L.VR_ACTNO4 /* 가상 계좌번호4 */
, L.BANK_NM5 /* 은행 명5 */
, L.VR_ACTNO5 /* 가상 계좌번호5 */
, L.BANK_NM6 /* 은행 명6 */
, L.VR_ACTNO6 /* 가상 계좌번호6 */
, L.BANK_NM7 /* 은행 명7 */
, L.VR_ACTNO7 /* 가상 계좌번호7 */
, L.BANK_NM8 /* 은행 명8 */
, L.VR_ACTNO8 /* 가상 계좌번호8 */
, L.BANK_NM9 /* 은행 명9 */
, L.VR_ACTNO9 /* 가상 계좌번호9 */
, L.BANK_NM10 /* 은행 명10 */
, L.VR_ACTNO10 /* 가상 계좌번호10 */
, L.BANK_NM11 /* 은행 명11 */
, L.VR_ACTNO11 /* 가상 계좌번호11 */
, (CASE WHEN L.FFNLG_AMT IS NOT NULL THEN L.FFNLG_AMT
ELSE C.FFNLG_AMT
END) AS FFNLG_AMT /* 과태료 금액 */
, L.LEVY_PCPTAX - L.RCVMT_PCPTAX - L.RDCAMT_PCPTAX AS PCPTAX /* 본세 */
, L.LEVY_ADAMT - L.RCVMT_ADAMT - L.RDCAMT_ADAMT AS ADAMT /* 가산금 */
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)
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N')
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
</sql>
<select id="selectCrdnPayerTrgts" parameterType="map" resultType="dataobject">/* 단속, 납부자, 부과 대장 객체 가져오기(sndngMapper.selectCrdnPayerTrgts) */
<include refid="selectCrdnPayer" />
<choose>
<when test="crdnIDs != null">
WHERE C.CRDN_ID IN ( /* 단속 IDs */
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach>
)
</when>
<otherwise>
WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */
</otherwise>
</choose>
AND C.DEL_YN = 'N' /* 삭제 여부 */
<include refid="utility.orderBy" />
</select>
<sql id="selectAdvntceTrgt"> <sql id="selectAdvntceTrgt">
, C.SGG_CD /* 시군구 코드 */ , C.SGG_CD /* 시군구 코드 */
@ -592,141 +729,6 @@
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
</select> </select>
<sql id="selectCrdnPayerTrgt">
SELECT C.CRDN_ID /* 단속 ID */
, C.SGG_CD /* 시군구 코드 */
, C.TASK_SE_CD /* 업무 구분 코드 */
, C.CRDN_INPT_SE_CD /* 단속 입력 구분 코드 */
, C.CRDN_YMD /* 단속 일자 */
, C.CRDN_TM /* 단속 시각 */
, C.VHRNO /* 차량번호 */
, C.CRDN_STDG_NM /* 단속 법정동 명 */
, C.CRDN_ROAD_NM /* 단속 도로 명 */
, C.CRDN_PLC /* 단속 장소 */
, C.FFNLG_CRDN_AMT /* 과태료 단속 금액 */
, C.ADVNTCE_AMT /* 사전통지 금액 */
, C.CRDN_STTS_CD /* 단속 상태 코드 */
, C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */
, C.REG_DT /* 등록 일시 */
, C.RGTR /* 등록자 */
, C.MDFCN_DT /* 수정 일시 */
, C.MDFR /* 수정자 */
, CA.CRDN_SE_CD /* 단속 구분 코드 */
, CA.CRDN_SPAREA_CD /* 단속 특별구역 코드 */
, CA.PARKNG_PSBLTY_RSLT_CD /* 주차 가능 결과 코드 */
, V.VLTN_ID /* 위반 ID */
, V.VLTN_CD /* 위반 코드 */
, V.VLTN_ARTCL /* 위반 항목 */
, V.ACNTG_SE_NM /* 회계 구분 명 */
, V.TXITM_NM /* 세목 명 */
, V.OPER_ITEM_NM /* 운영 항목 명 */
, CC.CVLCPT_LINK_ID /* 민원 연계 ID */
, CC.CVLCPT_RCPT_YMD /* 민원 접수 일자 */
, CC.CVLCPT_APLY_NO /* 민원 신청 번호 */
, CC.CVLCPT_RCPT_NO /* 민원 접수 번호 */
, CC.CVLCPT_PRCS_SUMRY /* 민원 처리 요약 */
, CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */
, CC.CVLCPT_PRCS_CMPTN_DT /* 민원 처리 완료 일시 */
, CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */
, CC.CVLCPT_TRSM_DT /* 민원 전송 일시 */
, P.RTPYR_ID /* 납부자 ID */
, P.RTPYR_NO /* 납부자 번호 */
, P.RTPYR_NM /* 납부자 명 */
, P.RTPYR_BRDT /* 납부자 생년월일 */
, P.ZIP /* 우편번호 */
, P.ADDR /* 주소 */
, P.DTL_ADDR /* 상세 주소 */
, L.LEVY_ID /* 부과 ID */
, L.INST_CD /* 기관 코드 */
, L.DEPT_CD /* 부서 코드 */
, L.FYR /* 회계연도 */
, L.ACNTG_SE_CD /* 회계 구분 코드*/
, L.TXITM_CD /* 세목 코드 */
, L.OPER_ITEM_CD /* 운영 항목 코드 */
, L.SPCL_BIZ_CD /* 특별회계 사업 코드 */
, L.LEVY_NO /* 부과 번호 */
, L.INSPY_SN /* 분납 순번 */
, L.LEVY_SE_CD /* 부과 구분 코드 */
, L.LEVY_YMD /* 부과 일자 */
, L.FRST_DUDT_YMD /* 최초 납기 일자 */
, L.DUDT_YMD /* 납기 일자 */
, L.DUDT_AFTR_YMD /* 납기 후 일자 */
, L.LEVY_PCPTAX /* 부과 본세 */
, L.LEVY_ADAMT /* 부과 가산금 */
, L.INSPY_INT /* 분납 이자 */
, L.RCVMT_PCPTAX /* 수납 본세 */
, L.RCVMT_ADAMT /* 수납 가산금 */
, L.RDCAMT_PCPTAX /* 감액 본세 */
, L.RDCAMT_ADAMT /* 감액 가산금 */
, L.SUM_AMT /* 합계 금액 */
, L.DUDT_AFTR_AMT /* 납기 후 금액 */
, L.TXTN_THING /* 과세 물건 */
, L.MNG_ITEM1 /* 관리 아이템1 */
, L.MNG_ITEM2 /* 관리 아이템2 */
, L.MNG_ITEM3 /* 관리 아이템3 */
, L.MNG_ITEM4 /* 관리 아이템4 */
, L.MNG_ITEM5 /* 관리 아이템5 */
, L.MNG_ITEM6 /* 관리 아이템6 */
, L.EPAYNO /* 전자납부번호 */
, L.BANK_NM /* 은행 명 */
, L.VR_ACTNO /* 가상 계좌번호 */
, L.BANK_NM2 /* 은행 명2 */
, L.VR_ACTNO2 /* 가상 계좌번호2 */
, L.BANK_NM3 /* 은행 명3 */
, L.VR_ACTNO3 /* 가상 계좌번호3 */
, L.BANK_NM4 /* 은행 명4 */
, L.VR_ACTNO4 /* 가상 계좌번호4 */
, L.BANK_NM5 /* 은행 명5 */
, L.VR_ACTNO5 /* 가상 계좌번호5 */
, L.BANK_NM6 /* 은행 명6 */
, L.VR_ACTNO6 /* 가상 계좌번호6 */
, L.BANK_NM7 /* 은행 명7 */
, L.VR_ACTNO7 /* 가상 계좌번호7 */
, L.BANK_NM8 /* 은행 명8 */
, L.VR_ACTNO8 /* 가상 계좌번호8 */
, L.BANK_NM9 /* 은행 명9 */
, L.VR_ACTNO9 /* 가상 계좌번호9 */
, L.BANK_NM10 /* 은행 명10 */
, L.VR_ACTNO10 /* 가상 계좌번호10 */
, L.BANK_NM11 /* 은행 명11 */
, L.VR_ACTNO11 /* 가상 계좌번호11 */
, (CASE WHEN L.FFNLG_AMT IS NOT NULL THEN L.FFNLG_AMT
ELSE C.FFNLG_AMT
END) AS FFNLG_AMT /* 과태료 금액 */
, L.LEVY_PCPTAX - L.RCVMT_PCPTAX - L.RDCAMT_PCPTAX AS PCPTAX /* 본세 */
, L.LEVY_ADAMT - L.RCVMT_ADAMT - L.RDCAMT_ADAMT AS ADAMT /* 가산금 */
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */
, (SELECT GET_CODE_NM('FIM003', C.CRDN_INPT_SE_CD) FROM DUAL) AS CRDN_INPT_SE_NM /* 단속 입력 구분 명 */
, (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK /* 단속 일시 마스크 */
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.RGTR) AS RGTR_NM /* 등록자 */
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = C.MDFR) AS MDFR_NM /* 수정자 */
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM /* 단속 구분 명 */
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM /* 단속 특별구역 명 */
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM /* 주차 가능 결과 명 */
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)
LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID)
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N')
</sql>
<select id="selectCrdnPayerTrgts" parameterType="map" resultType="dataobject">/* 단속, 납부자, 부과 대장 객체 가져오기(sndngMapper.selectCrdnPayerTrgts) */
<include refid="selectCrdnPayerTrgt" />
<where>
<if test="crdnIDs != null">
AND C.CRDN_ID IN ( /* 단속 IDs */
<foreach collection="crdnIDs" item="crdnId" separator=","> #{crdnId} </foreach>
)
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
AND C.DEL_YN = 'N' /* 삭제 여부 */
</where>
<include refid="utility.orderBy" />
</select>
<insert id="insertSndng" parameterType="map">/* 발송 대장 등록(sndngMapper.insertSndng) */ <insert id="insertSndng" parameterType="map">/* 발송 대장 등록(sndngMapper.insertSndng) */

@ -17,7 +17,7 @@
<result property="docNo" column="DOC_NO" /> <!-- 문서 번호 --> <result property="docNo" column="DOC_NO" /> <!-- 문서 번호 -->
<result property="etcCn" column="ETC_CN" /> <!-- 기타 내용 --> <result property="etcCn" column="ETC_CN" /> <!-- 기타 내용 -->
<result property="tnocs" column="TNOCS" /> <!-- 총건수 --> <result property="tnocs" column="TNOCS" /> <!-- 총건수 -->
<result property="delYn" column="DEL_YN" /> <!-- 삭제 여부 --> <result property="delYN" column="DEL_YN" /> <!-- 삭제 여부 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 --> <result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 --> <result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 --> <result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
@ -87,8 +87,8 @@
<if test="sndngId != null"> <if test="sndngId != null">
AND SD.SNDNG_ID = #{sndngId} <!-- 발송 ID --> AND SD.SNDNG_ID = #{sndngId} <!-- 발송 ID -->
</if> </if>
<if test="delYn != null"> <if test="delYN != null">
AND SV.DEL_YN = #{delYn} <!-- 삭제 여부 --> AND SV.DEL_YN = #{delYN} <!-- 삭제 여부 -->
</if> </if>
</where> </where>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />
@ -173,8 +173,8 @@
<if test="crdnId != null"> <if test="crdnId != null">
AND SD.CRDN_ID = #{crdnId} <!-- 단속 ID --> AND SD.CRDN_ID = #{crdnId} <!-- 단속 ID -->
</if> </if>
<if test="delYn != null"> <if test="delYN != null">
AND SV.DEL_YN = #{delYn} <!-- 삭제 여부 --> AND SV.DEL_YN = #{delYN} <!-- 삭제 여부 -->
</if> </if>
</where> </where>
<include refid="utility.orderBy" /> <include refid="utility.orderBy" />

@ -365,7 +365,7 @@
, data : params || {} , data : params || {}
, success : resp => { , success : resp => {
dialog.open({ dialog.open({
id : "wrngTrgtDtlDialog" id : "wrngTrgtDialog"
, title : dialogTitle , title : dialogTitle
, content : resp , content : resp
, size : "xl" , size : "xl"
@ -540,6 +540,7 @@
${pageName}Control.query = ${pageName}Fields.get(); ${pageName}Control.query = ${pageName}Fields.get();
${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수 ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수
${pageName}Control.query.crdnSttsCd = "83"; // 계고 상태
${pageName}Control.query.delYN = "N"; // 삭제 여부 ${pageName}Control.query.delYN = "N"; // 삭제 여부
${pageName}Control.load(1); ${pageName}Control.load(1);
@ -665,9 +666,7 @@
// 기본 데이터 설정 // 기본 데이터 설정
setFormData${pageName} = (taskSeCd) => { setFormData${pageName} = (taskSeCd) => {
// ${pageName}Control 설정 // ${pageName}Control 설정
// ${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 ${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
${pageName}Control.defaultFetchSize = 1; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30
// 화면 데이터 설정 // 화면 데이터 설정
$("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드

@ -279,8 +279,9 @@
let params = { let params = {
callControlName : "${pageName}Control" callControlName : "${pageName}Control"
, callPurpose : "view"
, sggCd : $("#sggCd--${pageName}").val() , sggCd : $("#sggCd--${pageName}").val()
, taskSeCd : $("input[name=taskSeCd]:checked").val() , taskSeCd : $("#taskSeCd--${pageName}").val()
, crdnId : crdnId , crdnId : crdnId
} }

Loading…
Cancel
Save