|
|
|
@ -78,10 +78,6 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
* @return 계도장 발송 대상 목록
|
|
|
|
|
*/
|
|
|
|
|
public List<DataObject> getWrngSndngTrgtList(SndbQuery req) {
|
|
|
|
|
if (req.getOrderBy() == null) {
|
|
|
|
|
req.setOrderBy("CRDN_YMD_TM");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sndngMapper.selectWrngSndngTrgtList(req);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -102,10 +98,6 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
* @return 계도장 발송 대상 목록
|
|
|
|
|
*/
|
|
|
|
|
public List<DataObject> getAdvntceSndngTrgtList(SndbQuery req) {
|
|
|
|
|
if (req.getOrderBy() == null) {
|
|
|
|
|
req.setOrderBy("CRDN_YMD_TM");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sndngMapper.selectAdvntceSndngTrgtList(req);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -126,10 +118,6 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
* @return 발송 대장 목록
|
|
|
|
|
*/
|
|
|
|
|
public List<DataObject> getSndngList(SndbQuery req) {
|
|
|
|
|
if (req.getOrderBy() == null) {
|
|
|
|
|
req.setOrderBy("REG_DT");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sndngMapper.selectSndngList(req);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -158,32 +146,31 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
*/
|
|
|
|
|
public String createSndng(Sndng sndng) {
|
|
|
|
|
// 변수 선언
|
|
|
|
|
boolean retSuccess = false; // DB 처리 결과
|
|
|
|
|
String retMessage = "[F] "; // 처리 결과 메시지
|
|
|
|
|
String newCrdnSttsCd = ""; // 단속 상태 코드
|
|
|
|
|
int ffnlgAmt = 0; // 과태료 금액
|
|
|
|
|
int levyPcptax = 0; // 부과 본세
|
|
|
|
|
int levyAdamt = 0; // 부과 가산금
|
|
|
|
|
int levySumAmt = 0; // 부과 합계 금액
|
|
|
|
|
boolean retSuccess = false; // DB 처리 결과
|
|
|
|
|
String retMessage = "[F] "; // 처리 결과 메시지
|
|
|
|
|
String newCrdnSttsCd = ""; // 단속 상태 코드
|
|
|
|
|
int ffnlgAmt = 0; // 과태료 금액
|
|
|
|
|
int pcptax = 0; // 본세
|
|
|
|
|
int adamt = 0; // 가산금
|
|
|
|
|
int sumAmt = 0; // 합계 금액
|
|
|
|
|
|
|
|
|
|
// 사용자 정보
|
|
|
|
|
DataObject userInfo = userBean.getUserInfo(currentUser().getId());
|
|
|
|
|
|
|
|
|
|
// 부서 코드
|
|
|
|
|
sndng.setDeptCd(userInfo.string("DEPT_CD"));
|
|
|
|
|
// 위반 ID
|
|
|
|
|
sndng.setVltnId(sndng.getVltnId());
|
|
|
|
|
sndng.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
|
|
|
|
|
sndng.setVltnId(sndng.getVltnId()); // 위반 ID
|
|
|
|
|
|
|
|
|
|
// 계고장
|
|
|
|
|
if (sndng.getSndngSeCd().equals("01")) {
|
|
|
|
|
sndng.setLevyBgngYmd(null); // 부과 시작 일자
|
|
|
|
|
sndng.setLevyEndYmd(null); // 부과 종료 일자
|
|
|
|
|
sndng.setDudtYmd(null); // 납기 일자
|
|
|
|
|
sndng.setLevyBgngYmd(null); // 부과 시작 일자
|
|
|
|
|
sndng.setLevyEndYmd(null); // 부과 종료 일자
|
|
|
|
|
sndng.setDudtYmd(null); // 납기 일자
|
|
|
|
|
}
|
|
|
|
|
// 발송 등록 구분 코드
|
|
|
|
|
if (sndng.getTnocs() == 1) {
|
|
|
|
|
sndng.setSndngRegSeCd("02"); // 개별
|
|
|
|
|
sndng.setSndngRegSeCd("02"); // 개별
|
|
|
|
|
} else {
|
|
|
|
|
sndng.setSndngRegSeCd("01"); // 일괄
|
|
|
|
|
sndng.setSndngRegSeCd("01"); // 일괄
|
|
|
|
|
}
|
|
|
|
|
// 재발송 여부
|
|
|
|
|
if (sndng.getResndYn() == null) {
|
|
|
|
@ -194,13 +181,13 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
sndng.setDelYn("N");
|
|
|
|
|
}
|
|
|
|
|
// 발송 상태 코드
|
|
|
|
|
sndng.setSndngSttsCd("00"); // 00 발송 준비
|
|
|
|
|
sndng.setSndngSttsCd("00"); // 00 발송 준비
|
|
|
|
|
|
|
|
|
|
// 발송 구분 코드에 따른 처리상태 변경
|
|
|
|
|
if (sndng.getSndngSeCd().equals("01")) { // 계고장
|
|
|
|
|
newCrdnSttsCd = "84"; // 단속 상태 코드 - 84 계고장 출력 완료
|
|
|
|
|
} else if (sndng.getSndngSeCd().equals("02")) { // 사전통지서
|
|
|
|
|
newCrdnSttsCd = "42"; // 단속 상태 코드 - 42 사전통지 발송
|
|
|
|
|
if (sndng.getSndngSeCd().equals("01")) {
|
|
|
|
|
newCrdnSttsCd = "84"; // 단속 상태 코드 - 84 계고장 출력 완료
|
|
|
|
|
} else if (sndng.getSndngSeCd().equals("02")) {
|
|
|
|
|
newCrdnSttsCd = "42"; // 단속 상태 코드 - 42 사전통지 발송
|
|
|
|
|
} else {
|
|
|
|
|
newCrdnSttsCd = "";
|
|
|
|
|
}
|
|
|
|
@ -208,35 +195,35 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
// 발송 등록
|
|
|
|
|
retSuccess = sndngMapper.insertSndng(sndng);
|
|
|
|
|
if (!retSuccess) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("발송 등록에 실패하였습니다.");
|
|
|
|
|
throw new RuntimeException("발송 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int iLoop = 0; iLoop < sndng.getCrdnIDs().length; iLoop++) {
|
|
|
|
|
// 발송 상세 등록
|
|
|
|
|
SndngDtl sndngDtl = new SndngDtl();
|
|
|
|
|
|
|
|
|
|
// 단속, 납부자 정보 조회
|
|
|
|
|
DataObject infoCrdnPayer = sndngMapper.selectCrdnPayerTrgtInfo(sndng.getCrdnIDs()[iLoop]);
|
|
|
|
|
|
|
|
|
|
// 납부자 ID가 없다면 오류메세지
|
|
|
|
|
if (infoCrdnPayer == null) {
|
|
|
|
|
throw new RuntimeException("발송상세 등록 작업중 단속 정보가 확인되지 않았습니다." + "<p>단속ID : " + sndng.getCrdnIDs()[iLoop]); // 예외를 발생시켜서 DB Rollback
|
|
|
|
|
}
|
|
|
|
|
if (infoCrdnPayer.string("RTPYR_ID").equals("")) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("발송 상세 등록 작업중 납부자 정보가 확인되지 않았습니다." + "<p>차량번호 : " + infoCrdnPayer.string("VHRNO"));
|
|
|
|
|
throw new RuntimeException("발송상세 등록 작업중 납부자 정보가 확인되지 않았습니다." + "<p>차량번호 : " + infoCrdnPayer.string("VHRNO")); // 예외를 발생시켜서 DB Rollback
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (sndng.getSndngSeCd().equals("01")) { // 계고장
|
|
|
|
|
ffnlgAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 과태료 금액
|
|
|
|
|
levyPcptax = 0; // 부과 본세
|
|
|
|
|
levyAdamt = 0; // 부과 가산금
|
|
|
|
|
levySumAmt = 0; // 부과 합계 금액
|
|
|
|
|
} else if (sndng.getSndngSeCd().equals("02")) { // 사전통지 발송 등록시 부과대장 등록
|
|
|
|
|
// 발송 상세 등록
|
|
|
|
|
SndngDtl sndngDtl = new SndngDtl();
|
|
|
|
|
|
|
|
|
|
if (sndng.getSndngSeCd().equals("01")) {
|
|
|
|
|
ffnlgAmt = infoCrdnPayer.number("FFNLG_CRDN_AMT").intValue(); // 과태료 단속 금액
|
|
|
|
|
pcptax = 0;
|
|
|
|
|
adamt = 0;
|
|
|
|
|
sumAmt = 0;
|
|
|
|
|
} else if (sndng.getSndngSeCd().equals("02")) {
|
|
|
|
|
// 세외수입에 등록 후 세외수입에서 감경해야 하므로 사전통보액 80,000 원이 아닌 본 부과액 100,000 원으로 등록한다.
|
|
|
|
|
// 세외수입에서 가상계좌를 부여 받은 후 다시 금액이 80,000 원으로 업데이트 된다.
|
|
|
|
|
ffnlgAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 과태료 금액
|
|
|
|
|
levyPcptax = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 본세
|
|
|
|
|
levyAdamt = 0; // 부과 가산금
|
|
|
|
|
levySumAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 합계 금액
|
|
|
|
|
pcptax = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 본세
|
|
|
|
|
adamt = 0; // 부과 가산금
|
|
|
|
|
sumAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 합계 금액
|
|
|
|
|
|
|
|
|
|
// 부과 ID가 없다면 부과대장 등록
|
|
|
|
|
if (infoCrdnPayer.string("LEVY_ID").equals("")) {
|
|
|
|
@ -249,30 +236,29 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
levy.setInstCd(userInfo.string("NSTT_CD")); // 자치단체 코드
|
|
|
|
|
levy.setDeptCd(userInfo.string("DEPT_CD")); // 부서 코드
|
|
|
|
|
levy.setFfnlgAmt(ffnlgAmt); // 과태료 금액
|
|
|
|
|
levy.setLevyPcptax(levyPcptax); // 부과 금액
|
|
|
|
|
levy.setLevyAdamt(levyAdamt); // 가산 금액
|
|
|
|
|
levy.setSumAmt(levySumAmt); // 합계 금액
|
|
|
|
|
levy.setLevyPcptax(pcptax); // 부과 금액
|
|
|
|
|
levy.setLevyAdamt(adamt); // 가산 금액
|
|
|
|
|
levy.setSumAmt(sumAmt); // 합계 금액
|
|
|
|
|
|
|
|
|
|
// 부과 대장에 등록한다.
|
|
|
|
|
// 부과 대장(TB_LEVY)에 등록
|
|
|
|
|
levyBean.createLevy(levy);
|
|
|
|
|
if (!retSuccess) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("발송 상세 등록 작업중 부과대장 등록에 실패하였습니다.");
|
|
|
|
|
throw new RuntimeException("발송 상세 등록 작업중 부과대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sndngDtl.setLevyId(levy.getLevyId()); // 부과 ID
|
|
|
|
|
} else {
|
|
|
|
|
sndngDtl.setLevyId(infoCrdnPayer.string("LEVY_ID")); // 부과 ID
|
|
|
|
|
}
|
|
|
|
|
} else { // 기타
|
|
|
|
|
} else {
|
|
|
|
|
ffnlgAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 과태료 금액
|
|
|
|
|
levyPcptax = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 본세
|
|
|
|
|
levyAdamt = 0; // 부과 가산금
|
|
|
|
|
levySumAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 합계 금액
|
|
|
|
|
pcptax = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 본세
|
|
|
|
|
adamt = 0; // 부과 가산금
|
|
|
|
|
sumAmt = infoCrdnPayer.number("FFNLG_AMT").intValue(); // 부과 합계 금액
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 사전통지 발송 등록시 세외수입 연계 자료 등록 ///////////////////////////////////
|
|
|
|
|
if (sndng.getSndngSeCd().equals("02")) { // 사전통지
|
|
|
|
|
if (sndng.getSndngSeCd().equals("02")) {
|
|
|
|
|
// 세외수입 매칭 내역(TB_ENIS_MTCHG)
|
|
|
|
|
EnisMtchg enisMtchg = new EnisMtchg();
|
|
|
|
|
|
|
|
|
@ -289,16 +275,15 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
enisMtchg.setCrdnDt(infoCrdnPayer.string("CRDN_YMD_TM_MASK")); // 단속 일시
|
|
|
|
|
enisMtchg.setStdgNm(infoCrdnPayer.string("CRDN_STDG_NM")); // 법정동 명
|
|
|
|
|
enisMtchg.setCrdnPlc(infoCrdnPayer.string("CRDN_PLC")); // 단속 장소
|
|
|
|
|
enisMtchg.setLevyAmt(levyPcptax); // 부과 금액
|
|
|
|
|
enisMtchg.setAdtnAmt(levyAdamt); // 가산 금액
|
|
|
|
|
enisMtchg.setSumAmt(levySumAmt); // 합계 금액
|
|
|
|
|
enisMtchg.setLevyAmt(pcptax); // 부과 금액
|
|
|
|
|
enisMtchg.setAdtnAmt(adamt); // 가산 금액
|
|
|
|
|
enisMtchg.setSumAmt(sumAmt); // 합계 금액
|
|
|
|
|
enisMtchg.setPrcsSttsCd("01"); // 처리 상태 코드
|
|
|
|
|
|
|
|
|
|
// 세외수입 매칭 내역을 등록한다.
|
|
|
|
|
// 세외수입 매칭 내역을 등록
|
|
|
|
|
retSuccess = enisMtchgBean.createEnisMtchg(enisMtchg);
|
|
|
|
|
if (!retSuccess) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다.");
|
|
|
|
|
throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -311,9 +296,9 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
|
|
|
|
|
sndngDtl.setDudtYmd(sndng.getDudtYmd()); // 납기 일자
|
|
|
|
|
sndngDtl.setFfnlgAmt(ffnlgAmt); // 과태료 금액
|
|
|
|
|
sndngDtl.setLevyPcptax(levyPcptax); // 부과 본세
|
|
|
|
|
sndngDtl.setLevyAdamt(levyAdamt); // 부과 가산금
|
|
|
|
|
sndngDtl.setLevySumAmt(levySumAmt); // 부과 합계 금액
|
|
|
|
|
sndngDtl.setPcptax(pcptax); // 본세
|
|
|
|
|
sndngDtl.setAdamt(adamt); // 가산금
|
|
|
|
|
sndngDtl.setSumAmt(sumAmt); // 합계 금액
|
|
|
|
|
sndngDtl.setRtpyrNm(infoCrdnPayer.string("RTPYR_NM")); // 납부자 명
|
|
|
|
|
sndngDtl.setRtpyrNo(infoCrdnPayer.string("RTPYR_NO")); // 납부자 번호
|
|
|
|
|
sndngDtl.setRtpyrAddr(infoCrdnPayer.string("ADDR")); // 납부자 주소
|
|
|
|
@ -322,15 +307,13 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
|
|
|
|
|
sndngDtl.setDelYn("N"); // 삭제 여부
|
|
|
|
|
|
|
|
|
|
// 발송 상세(TB_SNDNG_DTL)
|
|
|
|
|
// 발송 상세(TB_SNDNG_DTL) 등록
|
|
|
|
|
retSuccess = sndngMapper.insertSndngDtl(sndngDtl);
|
|
|
|
|
if (!retSuccess) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("발송 상세 등록에 실패하였습니다.");
|
|
|
|
|
throw new RuntimeException("발송 상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!newCrdnSttsCd.equals("")) {
|
|
|
|
|
// 단속상태이력(TB_CRDN_STTS_HSTRY)
|
|
|
|
|
CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry();
|
|
|
|
|
|
|
|
|
|
crdnSttsHstry.setCrdnId(infoCrdnPayer.string("CRDN_ID"));
|
|
|
|
@ -342,8 +325,7 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
|
|
|
|
|
retSuccess = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
|
|
|
|
|
if (!retSuccess) {
|
|
|
|
|
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
|
|
|
|
|
throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다.");
|
|
|
|
|
throw new RuntimeException("부과제외 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -398,23 +380,22 @@ public class SndngBean extends AbstractComponent {
|
|
|
|
|
// 전자우편 접수 내역을 등록한다. ///////////////////////////////////////////////
|
|
|
|
|
ctpvCode = sndngInfo.string("SGG_CD").substring(0, 2); // 시도 코드
|
|
|
|
|
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) { // 계고장
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("01")) {
|
|
|
|
|
sealCd3 = "E"; // E:과태료부과계도장
|
|
|
|
|
} else if (sndngInfo.string("TASK_SE_CD").equals("DPV")) { // 장애인전용
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("02")) {
|
|
|
|
|
sealCd3 = "2"; // 2:장애인주차구역사전통보
|
|
|
|
|
} else {
|
|
|
|
|
sealCd3 = "7"; // 7:장애인주차구역고지서
|
|
|
|
|
}
|
|
|
|
|
} else if (sndngInfo.string("TASK_SE_CD").equals("ECA")) { // 전기차주차
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("02")) { // 사전통지
|
|
|
|
|
if (sndngInfo.string("SNDNG_SE_CD").equals("02")) {
|
|
|
|
|
sealCd3 = "L"; // L:전기차충전구역과태료사전통지서
|
|
|
|
|
} else {
|
|
|
|
|
sealCd3 = "M"; // M:전기차충전구역과태료고지서
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
retMessage = "[E] 작업중 지정되지 않았습니다.";
|
|
|
|
|
|
|
|
|
|
return retMessage;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|