|
|
|
|
@ -14,7 +14,6 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
|
|
import cokr.xit.base.user.service.bean.UserBean;
|
|
|
|
|
import cokr.xit.fims.FimsConf;
|
|
|
|
|
import cokr.xit.fims.cmmn.CrdnSttsHstry;
|
|
|
|
|
import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean;
|
|
|
|
|
import cokr.xit.fims.crdn.Crdn;
|
|
|
|
|
import cokr.xit.fims.crdn.dao.CrdnInfoMapper;
|
|
|
|
|
@ -27,6 +26,8 @@ import cokr.xit.fims.nxrp.NisIndivQuery;
|
|
|
|
|
import cokr.xit.fims.nxrp.dao.NisA01Mapper;
|
|
|
|
|
import cokr.xit.fims.rcvm.Rcvmt;
|
|
|
|
|
import cokr.xit.fims.rcvm.service.bean.RcvmtBean;
|
|
|
|
|
import cokr.xit.fims.rdca.Rdamt;
|
|
|
|
|
import cokr.xit.fims.rdca.service.bean.RdamtBean;
|
|
|
|
|
import cokr.xit.fims.sndb.SndbQuery;
|
|
|
|
|
import cokr.xit.fims.sndb.SndngDtl;
|
|
|
|
|
import cokr.xit.fims.sndb.dao.SndngDtlMapper;
|
|
|
|
|
@ -34,6 +35,7 @@ import cokr.xit.foundation.Downloadable;
|
|
|
|
|
import cokr.xit.foundation.UserInfo;
|
|
|
|
|
import cokr.xit.foundation.component.AbstractBean;
|
|
|
|
|
import cokr.xit.foundation.data.DataObject;
|
|
|
|
|
import cokr.xit.foundation.data.JSON;
|
|
|
|
|
import cokr.xit.interfaces.sntris.buga.Bu04BugaWSDTO;
|
|
|
|
|
import cokr.xit.interfaces.sntris.fileoffer.Ye22InputDTO;
|
|
|
|
|
import cokr.xit.interfaces.sntris.fileoffer.Ye22NoticeInfoDTO;
|
|
|
|
|
@ -75,6 +77,10 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
private LevyMapper levyMapper;
|
|
|
|
|
@Resource(name = "rcvmtBean")
|
|
|
|
|
private RcvmtBean rcvmtBean;
|
|
|
|
|
@Resource(name = "rdamtBean")
|
|
|
|
|
private RdamtBean rdamtBean;
|
|
|
|
|
|
|
|
|
|
private JSON json = new JSON();
|
|
|
|
|
|
|
|
|
|
/**발송대상 사전통보를 서울 세외수입 시스템의 과태료대장에 등록한다.
|
|
|
|
|
* @param req 발송대상 사전통보 조회조건
|
|
|
|
|
@ -87,6 +93,7 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String update(Map<String, Bu18WebReturnInfoDTO> results) {
|
|
|
|
|
log().debug("{} Bu18WebReturnInfoDTOs received", results.size());
|
|
|
|
|
// 로컬 발송대상 상세 업데이트
|
|
|
|
|
Set<String> ids = results.keySet(); // 발송대상 상세ID
|
|
|
|
|
SndbQuery req = new SndbQuery().setSndngDtlIds(ids.toArray(new String[ids.size()]));
|
|
|
|
|
@ -137,6 +144,8 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
private SndngDtl update(Bu18WebReturnInfoDTO returned, SndngDtl sndngDtl) {
|
|
|
|
|
if (returned == null) return null;
|
|
|
|
|
|
|
|
|
|
log().debug("returned\n{}", json.stringify(returned, true));
|
|
|
|
|
|
|
|
|
|
sndngDtl.setLinkMngKey(returned.getNoticeAk()); // 연계 키 <- 세외수입 과태료대장키
|
|
|
|
|
// sndngDtl.setLinkMngKey(returned.getBuAfk()); // 연계 키 <- 세외수입 부과키
|
|
|
|
|
sndngDtl.setEpayno(returned.getEnapbuNo()); // 전자납부번호
|
|
|
|
|
@ -309,7 +318,7 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
|
|
|
|
|
levy.setLevyPcptax((int)notice.getTaxAmt()); // 부과본세 <- 과세금액
|
|
|
|
|
levy.setLevyAdamt((int)notice.gasanAmt()); // 부과가산금
|
|
|
|
|
levy.setLastAmt((int)notice.totalAmt()); // 최종금액
|
|
|
|
|
levy.setLastAmt((int)notice.finalAmt()); // 최종금액
|
|
|
|
|
levy.setDudtAftrAmt(null);
|
|
|
|
|
|
|
|
|
|
if ("1".equals(notice.getBuStatusCd())) { // 완납일경우
|
|
|
|
|
@ -352,6 +361,7 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void update(List<Ye22NoticeInfoDTO> notices) {
|
|
|
|
|
log().debug("{} Ye22NoticeInfoDTO(s) received", !isEmpty(notices) ? notices.size() : 0);
|
|
|
|
|
if (isEmpty(notices)) return;
|
|
|
|
|
|
|
|
|
|
// 세외수입 연계키별 부과정보
|
|
|
|
|
@ -380,24 +390,40 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
for (Ye22NoticeInfoDTO notice: notices) {
|
|
|
|
|
String status = notice.getBuStatusCd(); // 과태료 상태
|
|
|
|
|
boolean paidFull = "1".equals(status); // '완납' 여부
|
|
|
|
|
log().debug("Ye22NoticeInfoDTO of\n{}", json.stringify(notice, true));
|
|
|
|
|
String statusCode = notice.getBuStatusCd(), // 과태료 상태
|
|
|
|
|
status = notice.getBuStatusNm(); // 상태이름
|
|
|
|
|
boolean paid = "1,2,3,4,5".contains(statusCode); // 수납(완납,이중납,일부납,과납,오납)
|
|
|
|
|
String linkMngKey = Long.toString(notice.getBuAk()); // 세외수입 연계키
|
|
|
|
|
int rcvmtAmt = (int)notice.totalAmt();
|
|
|
|
|
log().debug("세외수입 연계키: {}, 상태: {}", linkMngKey, status);
|
|
|
|
|
log().debug("세외수입 연계키: {}, 상태: {}", linkMngKey, statusCode);
|
|
|
|
|
|
|
|
|
|
Levy levy = levies.get(linkMngKey);
|
|
|
|
|
if (levy == null) continue;
|
|
|
|
|
update(notice, levy); // 부과정보에 적용
|
|
|
|
|
levyMapper.updateLevy(levy);
|
|
|
|
|
|
|
|
|
|
if (paidFull) {
|
|
|
|
|
Rcvmt rcvmt = new Rcvmt(); // 수납등록
|
|
|
|
|
rcvmt.setLevyId(levy.getLevyId());
|
|
|
|
|
rcvmt.setRcvmtAmt(rcvmtAmt);
|
|
|
|
|
String crdnId = levy.getCrdnId();
|
|
|
|
|
Crdn crdn = crdns.get(crdnId);
|
|
|
|
|
if (crdn == null) continue;
|
|
|
|
|
|
|
|
|
|
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"; // 사전부과, 의견제출, 사전통보발송, 사전통보완료 -> 사전통보수납
|
|
|
|
|
case "51" -> "2"; // 부과 -> 부과수납
|
|
|
|
|
case "55" -> "3"; // 압류 -> 압류수납
|
|
|
|
|
default -> null;
|
|
|
|
|
};
|
|
|
|
|
if (rcvmtSttsCd != null)
|
|
|
|
|
rcvmt.setRcvmtSttsCd(rcvmtSttsCd);
|
|
|
|
|
}
|
|
|
|
|
rcvmtBean.createRcvmt(rcvmt);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String crdnId = levy.getCrdnId();
|
|
|
|
|
if (bugwa) {
|
|
|
|
|
SndngDtl sndngDtl = sndngDetails.get(crdnId);
|
|
|
|
|
update(notice, sndngDtl); // 발송상세에 적용
|
|
|
|
|
@ -405,18 +431,24 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
sndngDtlMapper.updateSndngDtl(sndngDtl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Crdn crdn = crdns.get(crdnId);
|
|
|
|
|
if (crdn == null) continue;
|
|
|
|
|
boolean reduced = "30".equals(statusCode) || "전액감액".equals(status);
|
|
|
|
|
if (reduced) { // 감면, 전액감액 -> 감액 등록
|
|
|
|
|
Rdamt rdamt = Rdamt.create(levy);
|
|
|
|
|
rdamtBean.createRdamt(rdamt);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!paid && !reduced)
|
|
|
|
|
levyMapper.updateLevy(levy);
|
|
|
|
|
|
|
|
|
|
String crdnStatus = crdn.getCrdnSttsCd();
|
|
|
|
|
// String crdnStatus = crdn.getCrdnSttsCd();
|
|
|
|
|
// 단속정보에 적용
|
|
|
|
|
if ("0".equals(status)) { // '부과'상태
|
|
|
|
|
if ("0".equals(statusCode)) { // '부과'상태
|
|
|
|
|
|
|
|
|
|
} else if (paidFull) {
|
|
|
|
|
} 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"; // 부과 -> 부과수납
|
|
|
|
|
@ -429,6 +461,9 @@ public class SnisBean extends AbstractBean {
|
|
|
|
|
CrdnSttsHstry history = CrdnSttsHstry.create(crdnStatus, null, crdn);
|
|
|
|
|
crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(history);
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
} else if ("전액감액".equals(status)) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|