|
|
|
|
@ -229,9 +229,8 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
prenotice.setDisposalContent("부과"); // 처분내용
|
|
|
|
|
prenotice.setRawBasis(Vltn.legalBasis(crdnInfo)); // 부과근거
|
|
|
|
|
prenotice.setSemokCd(crdnInfo.string("ACNTG_SE_CD") + crdnInfo.string("TXITM_CD")); // 세목코드
|
|
|
|
|
long taxAmt = toLong(crdnInfo.get("FFNLG_AMT"));
|
|
|
|
|
prenotice.setTaxAmt(taxAmt); // 과세금액
|
|
|
|
|
prenotice.setPreTaxAmt(toLong(taxAmt * 0.8)); //
|
|
|
|
|
prenotice.setTaxAmt(toLong(crdnInfo.get("FFNLG_AMT"))); // 부과예정금액(감경전)
|
|
|
|
|
prenotice.setPreTaxAmt(toLong(crdnInfo.get("ADVNTCE_AMT"))); // 자진납부금액(감경후)
|
|
|
|
|
|
|
|
|
|
prenotice.setJukbalDtlAddr(Crdn.location(crdnInfo)); // 위반장소
|
|
|
|
|
prenotice.setJukbalMgrNm(currentUser.getName()); // 적발담당자
|
|
|
|
|
@ -318,18 +317,20 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
levy.setLevyNo(notice.getTaxNo()); // 부과번호
|
|
|
|
|
levy.setLevyYmd(notice.getTaxYmd()); // 부과일자
|
|
|
|
|
levy.setDudtYmd(notice.getNapgiYmd()); // 납기일자
|
|
|
|
|
levy.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자
|
|
|
|
|
|
|
|
|
|
levy.setLevyPcptax((int)notice.getTaxAmt()); // 부과본세 <- 과세금액
|
|
|
|
|
levy.setLevyAdamt((int)notice.gasanAmt()); // 부과가산금
|
|
|
|
|
levy.setLastAmt((int)notice.totalAmt()); // 최종금액
|
|
|
|
|
int taxAmt = (int)notice.getTaxAmt();
|
|
|
|
|
levy.setLevyPcptax(taxAmt); // 부과본세 <- 과세금액
|
|
|
|
|
int gasanAmt = (int)notice.gasanAmt();
|
|
|
|
|
levy.setLevyAdamt(gasanAmt); // 부과가산금
|
|
|
|
|
levy.setDudtAftrAmt(null);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
if ("1".equals(notice.getBuStatusCd())) { // 완납일경우
|
|
|
|
|
levy.setRcvmtPcptax((int)notice.getTaxAmt());
|
|
|
|
|
levy.setRcvmtAdamt((int)notice.gasanAmt());
|
|
|
|
|
levy.setRcvmtPcptax(taxAmt);
|
|
|
|
|
levy.setRcvmtAdamt(gasanAmt);
|
|
|
|
|
levy.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
levy.setLastAmt(levy.lastAmt()); // 최종금액
|
|
|
|
|
*/
|
|
|
|
|
levy.setDudtAftrYmd(notice.getNapgiAftYmd()); // 납기후일자
|
|
|
|
|
levy.setTxtnThing(notice.getMulNm()); // 물건이름
|
|
|
|
|
|
|
|
|
|
@ -365,7 +366,11 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void update(List<Ye22NoticeInfoDTO> notices) {
|
|
|
|
|
log().debug("{} Ye22NoticeInfoDTO(s) received", !isEmpty(notices) ? notices.size() : 0);
|
|
|
|
|
log().debug("Ye22NoticeInfoDTO(s) received: {}", !isEmpty(notices) ? notices.size() : 0);
|
|
|
|
|
// 상태가 부과,완납,감면,전액감액,신고종료인 것들만 처리
|
|
|
|
|
notices = !isEmpty(notices) ?
|
|
|
|
|
notices.stream().filter(notice -> "부과,완납,감면,전액감액,신고종료".contains(notice.getBuStatusNm())).toList() :
|
|
|
|
|
Collections.emptyList();
|
|
|
|
|
if (isEmpty(notices)) return;
|
|
|
|
|
|
|
|
|
|
// 세외수입 연계키별 부과정보
|
|
|
|
|
@ -380,14 +385,8 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
Crdn::getCrdnId,
|
|
|
|
|
crdn -> crdn
|
|
|
|
|
));
|
|
|
|
|
// '부과'상태 사전통보 포함여부
|
|
|
|
|
boolean bugwa = notices.stream()
|
|
|
|
|
.filter(notice -> "0".equals(notice.getBuStatusCd()))
|
|
|
|
|
.count() > 0;
|
|
|
|
|
// 단속ID별 발송상세 정보
|
|
|
|
|
List<SndngDtl> sndngDtls = !bugwa ?
|
|
|
|
|
Collections.emptyList() :
|
|
|
|
|
sndngDtlMapper.selectSndngDetails(new SndbQuery().setCrdnIds(crdnIDs.toArray(new String[crdnIDs.size()])));
|
|
|
|
|
List<SndngDtl> sndngDtls = sndngDtlMapper.selectSndngDetails(new SndbQuery().setCrdnIds(crdnIDs.toArray(new String[crdnIDs.size()])));
|
|
|
|
|
Map<String, SndngDtl> sndngDetails = sndngDtls.stream().collect(Collectors.toMap(
|
|
|
|
|
SndngDtl::getCrdnId,
|
|
|
|
|
sndngDtl -> sndngDtl
|
|
|
|
|
@ -405,17 +404,17 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
|
|
|
|
|
String statusCode = notice.getBuStatusCd(), // 과태료 상태
|
|
|
|
|
status = notice.getBuStatusNm(); // 상태이름
|
|
|
|
|
boolean paid = "1,2,3,4,5".contains(statusCode); // 수납(완납,이중납,일부납,과납,오납)
|
|
|
|
|
boolean paid = "완납".equals(status);
|
|
|
|
|
int rcvmtAmt = (int)notice.totalAmt();
|
|
|
|
|
log().debug("세외수입 연계키: {}, 상태: {}({})", linkMngKey, status, statusCode);
|
|
|
|
|
|
|
|
|
|
update(notice, levy); // 부과정보에 적용
|
|
|
|
|
levyMapper.updateLevy(levy);
|
|
|
|
|
|
|
|
|
|
if (paid) {
|
|
|
|
|
Rcvmt rcvmt = Rcvmt.create(levy); // 수납등록
|
|
|
|
|
rcvmt.setRcvmtAmt(rcvmtAmt); // 수납금액
|
|
|
|
|
rcvmt.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자
|
|
|
|
|
rcvmt.calcAmts();
|
|
|
|
|
if ("1".equals(statusCode)) { // 완납
|
|
|
|
|
String rcvmtSttsCd = switch (crdn.getCrdnSttsCd()) {
|
|
|
|
|
case "23", "31", "42", "43", "44", "45" -> "1"; // 사전부과, 의견제출, 사전통보발송, 사전통보완료 -> 사전통보수납
|
|
|
|
|
@ -427,51 +426,30 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
rcvmt.setRcvmtSttsCd(rcvmtSttsCd);
|
|
|
|
|
}
|
|
|
|
|
rcvmtBean.createRcvmt(rcvmt);
|
|
|
|
|
|
|
|
|
|
crdn.setRcvmtAmt(rcvmtAmt); // 수납금액
|
|
|
|
|
crdnUpdtMapper.updateEditCrdn(crdn);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bugwa) {
|
|
|
|
|
SndngDtl sndngDtl = sndngDetails.get(crdnId);
|
|
|
|
|
update(notice, sndngDtl); // 발송상세에 적용
|
|
|
|
|
if (sndngDtl != null)
|
|
|
|
|
sndngDtlMapper.updateSndngDtl(sndngDtl);
|
|
|
|
|
SndngDtl sndngDtl = sndngDetails.get(crdnId);
|
|
|
|
|
update(notice, sndngDtl); // 발송상세에 적용
|
|
|
|
|
if (sndngDtl != null) {
|
|
|
|
|
sndngDtl.setLastAmt(levy.getLastAmt());
|
|
|
|
|
sndngDtlMapper.updateSndngDtl(sndngDtl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
boolean reduced = "30".equals(statusCode);
|
|
|
|
|
boolean reduced = "감면".equals(status);
|
|
|
|
|
if (reduced) { // 감면 -> 감액 등록
|
|
|
|
|
Rdamt rdamt = Rdamt.create(levy);
|
|
|
|
|
rdamtBean.createRdamt(rdamt);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!paid && !reduced)
|
|
|
|
|
levyMapper.updateLevy(levy);
|
|
|
|
|
|
|
|
|
|
// String crdnStatus = crdn.getCrdnSttsCd();
|
|
|
|
|
// 단속정보에 적용
|
|
|
|
|
if ("0".equals(statusCode)) { // '부과'상태
|
|
|
|
|
|
|
|
|
|
} else if (paid) {
|
|
|
|
|
crdn.setRcvmtAmt(rcvmtAmt); // 수납금액
|
|
|
|
|
// notice.getNapbuYmd(); // 납부일자
|
|
|
|
|
crdnUpdtMapper.updateEditCrdn(crdn);
|
|
|
|
|
/*
|
|
|
|
|
crdnStatus = switch (crdn.getCrdnSttsCd()) {
|
|
|
|
|
case "23", "31", "42", "43", "44", "45" -> "71"; // 사전부과, 의견제출, 사전통보발송, 사전통보완료 -> 사전통보수납
|
|
|
|
|
case "51" -> "72"; // 부과 -> 부과수납
|
|
|
|
|
case "52" -> "73"; // 독촉 -> 독촉수납
|
|
|
|
|
case "53", "54" -> "74"; // 압류예고, 압류대상 -> 압류예정수납
|
|
|
|
|
case "55" -> "75"; // 압류 -> 압류수납
|
|
|
|
|
default -> null;
|
|
|
|
|
};
|
|
|
|
|
if (crdnStatus != null) {
|
|
|
|
|
CrdnSttsHstry history = CrdnSttsHstry.create(crdnStatus, null, crdn);
|
|
|
|
|
crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(history);
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
} else if ("전액감액".equals(status)) { // 전액감액 -> 부과취소
|
|
|
|
|
if ("전액감액,신고종료".contains(status)) { // 전액감액, -> 부과취소
|
|
|
|
|
LevyExcl levyExcl = new LevyExcl();
|
|
|
|
|
levyExcl.setCrdnId(crdnId);
|
|
|
|
|
levyExcl.setLevyExclSeCd("3");
|
|
|
|
|
levyExcl.setLevyExclYmd(ifEmpty(notice.getNapbuYmd(), dateFormats::today));
|
|
|
|
|
levyExcl.setLevyExclSeCd("3"); // 구분: 부과취소
|
|
|
|
|
levyExcl.setLevyExclRsnCd("150"); // 사유: 부과취소
|
|
|
|
|
levyExcl.setLevyExclYmd(dateFormats.today());
|
|
|
|
|
levyExclBean.createLevyExcl(levyExcl);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|