|
|
|
@ -72,10 +72,14 @@ public class SnisBean extends AbstractBean {
|
|
|
|
// 발송대상 사전통보 과태료대장 등록
|
|
|
|
// 발송대상 사전통보 과태료대장 등록
|
|
|
|
Map<String, Bu18WebPreNoticeDTO> prenotices = getPreNotices(req); // 과태료대장 등록을 위한 사전통보 추출
|
|
|
|
Map<String, Bu18WebPreNoticeDTO> prenotices = getPreNotices(req); // 과태료대장 등록을 위한 사전통보 추출
|
|
|
|
Map<String, Bu18WebReturnInfoDTO> results = sntrisBean.registerPreNotices(prenotices); // 발송대상 ID별 과태료 등록 응답
|
|
|
|
Map<String, Bu18WebReturnInfoDTO> results = sntrisBean.registerPreNotices(prenotices); // 발송대상 ID별 과태료 등록 응답
|
|
|
|
|
|
|
|
return update(results);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String update(Map<String, Bu18WebReturnInfoDTO> results) {
|
|
|
|
// 로컬 발송대상 상세 업데이트
|
|
|
|
// 로컬 발송대상 상세 업데이트
|
|
|
|
Set<String> ids = results.keySet(); // 발송대상 상세ID
|
|
|
|
Set<String> ids = results.keySet(); // 발송대상 상세ID
|
|
|
|
List<SndngDtl> details = sndngDtlMapper.selectSndngDetails(req.setSndngDtlIds(ids.toArray(new String[ids.size()]))).stream()
|
|
|
|
SndbQuery req = new SndbQuery().setSndngDtlIds(ids.toArray(new String[ids.size()]));
|
|
|
|
|
|
|
|
List<SndngDtl> details = sndngDtlMapper.selectSndngDetails(req).stream()
|
|
|
|
.map(detail -> update(
|
|
|
|
.map(detail -> update(
|
|
|
|
results.get(
|
|
|
|
results.get(
|
|
|
|
detail.getSndngDtlId()),
|
|
|
|
detail.getSndngDtlId()),
|
|
|
|
@ -122,7 +126,7 @@ public class SnisBean extends AbstractBean {
|
|
|
|
private SndngDtl update(Bu18WebReturnInfoDTO returned, SndngDtl sndngDtl) {
|
|
|
|
private SndngDtl update(Bu18WebReturnInfoDTO returned, SndngDtl sndngDtl) {
|
|
|
|
if (returned == null) return null;
|
|
|
|
if (returned == null) return null;
|
|
|
|
|
|
|
|
|
|
|
|
sndngDtl.setLinkMngKey(returned.getNoticeAk()); // 연계 키 <- 과태료대장 키
|
|
|
|
sndngDtl.setLinkMngKey(returned.getBuAfk()); // 연계 키 <- 세외수입 부과키
|
|
|
|
sndngDtl.setEpayno(returned.getEnapbuNo()); // 전자납부번호
|
|
|
|
sndngDtl.setEpayno(returned.getEnapbuNo()); // 전자납부번호
|
|
|
|
setBankAccounts(returned.accountGetters(), sndngDtl.bankAccountSetters()); // 은행 / 계좌번호
|
|
|
|
setBankAccounts(returned.accountGetters(), sndngDtl.bankAccountSetters()); // 은행 / 계좌번호
|
|
|
|
sndngDtl.setSndngDtlSttsCd("01");
|
|
|
|
sndngDtl.setSndngDtlSttsCd("01");
|
|
|
|
@ -134,7 +138,7 @@ public class SnisBean extends AbstractBean {
|
|
|
|
getters.forEach((bank, account) -> {
|
|
|
|
getters.forEach((bank, account) -> {
|
|
|
|
if (setters.isEmpty()) return;
|
|
|
|
if (setters.isEmpty()) return;
|
|
|
|
|
|
|
|
|
|
|
|
setters.remove(0).accept("전용계좌(" + bank + ")", account.get());
|
|
|
|
setters.remove(0).accept("전용계좌(" + bank + ")", account.get().replace("-", ""));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -188,48 +192,18 @@ public class SnisBean extends AbstractBean {
|
|
|
|
return sntrisBean.getDownloadable(prenotices.values().stream().toList());
|
|
|
|
return sntrisBean.getDownloadable(prenotices.values().stream().toList());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public SndngDtl registerPreNotice(SndngDtl sndngDtl) {
|
|
|
|
|
|
|
|
if (!"00".equals(sndngDtl.getSndngDtlSttsCd())) return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 사용자 정보
|
|
|
|
|
|
|
|
UserInfo currentUser = currentUser();
|
|
|
|
|
|
|
|
DataObject userInfo = userBean.getUserInfo(currentUser.getId());
|
|
|
|
|
|
|
|
// 2. 세외수입 과태료대장에 연계할 단속 정보를 조회
|
|
|
|
|
|
|
|
DataObject crdnInfo = nisA01Mapper.selectCrdnInfo(sndngDtl.getCrdnId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String now = dateFormats.format("yyyyMMddHHmmss", System.currentTimeMillis());
|
|
|
|
|
|
|
|
Bu18WebPreNoticeDTO prenotice = createPreNotice(currentUser, now, userInfo, crdnInfo);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
Bu18WebReturnInfoDTO result = sntrisBean.register(prenotice);
|
|
|
|
|
|
|
|
if (result.isSuccess()) {
|
|
|
|
|
|
|
|
SndngDtl uptSndngDtl = new SndngDtl();
|
|
|
|
|
|
|
|
uptSndngDtl.setSndngDtlSttsCd("01"); // 발송 상태 코드(FIM050) 01:세외수입부과
|
|
|
|
|
|
|
|
uptSndngDtl.setSndngDtlId(sndngDtl.getSndngDtlId()); // 발송 상세 ID
|
|
|
|
|
|
|
|
update(result, uptSndngDtl);
|
|
|
|
|
|
|
|
return uptSndngDtl;
|
|
|
|
|
|
|
|
} else
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
throw runtimeException(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Bu18WebPreNoticeDTO createPreNotice(UserInfo currentUser, String now, DataObject userInfo, DataObject crdnInfo) {
|
|
|
|
private Bu18WebPreNoticeDTO createPreNotice(UserInfo currentUser, String now, DataObject userInfo, DataObject crdnInfo) {
|
|
|
|
String sggCd = crdnInfo.string("SGG_CD");
|
|
|
|
|
|
|
|
String linkMngKey = sggCd + crdnInfo.string("CRDN_ID") + '_' + now;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bu18WebPreNoticeDTO prenotice = new Bu18WebPreNoticeDTO();
|
|
|
|
Bu18WebPreNoticeDTO prenotice = new Bu18WebPreNoticeDTO();
|
|
|
|
|
|
|
|
|
|
|
|
prenotice.setBigo(crdnInfo.string("ETC_CN")); // 비고
|
|
|
|
prenotice.setBigo(crdnInfo.string("ETC_CN")); // 비고
|
|
|
|
prenotice.setBookNo(linkMngKey); // 자료키
|
|
|
|
prenotice.setBookNo(crdnInfo.string("SNDNG_DTL_ID")); // 자료키 <- 발송상세 아이디
|
|
|
|
prenotice.setSidoCd("11"); // 시도코드
|
|
|
|
prenotice.setSidoCd("11"); // 시도코드
|
|
|
|
prenotice.setSiguCd(sggCd); // 시구코드
|
|
|
|
prenotice.setSiguCd(currentUser.info("instCd")); // 시구코드 <- 기관코드
|
|
|
|
// prenotice.setBuseoCd(currentUser.getDeptCode()); // 서울 세외수입 시스템에서 시도, 시구, 작업자ID로 조회해서 설정
|
|
|
|
// prenotice.setBuseoCd(currentUser.getDeptCode()); // 서울 세외수입 시스템에서 시도, 시구, 작업자ID로 조회해서 설정
|
|
|
|
|
|
|
|
|
|
|
|
prenotice.setDisposalContent("부과"); // 처분내용
|
|
|
|
prenotice.setDisposalContent("부과"); // 처분내용
|
|
|
|
prenotice.setRawBasis(Vltn.legalBasis(crdnInfo)); // 부과근거
|
|
|
|
prenotice.setRawBasis(Vltn.legalBasis(crdnInfo)); // 부과근거
|
|
|
|
prenotice.setSemokCd(crdnInfo.string("TXITM_CD")); // 세목코드
|
|
|
|
prenotice.setSemokCd(crdnInfo.string("ACNTG_SE_CD") + crdnInfo.string("TXITM_CD")); // 세목코드
|
|
|
|
long taxAmt = toLong(crdnInfo.get("FFNLG_AMT"));
|
|
|
|
long taxAmt = toLong(crdnInfo.get("FFNLG_AMT"));
|
|
|
|
prenotice.setTaxAmt(taxAmt); // 과세금액
|
|
|
|
prenotice.setTaxAmt(taxAmt); // 과세금액
|
|
|
|
prenotice.setPreTaxAmt(toLong(taxAmt * 0.8)); //
|
|
|
|
prenotice.setPreTaxAmt(toLong(taxAmt * 0.8)); //
|
|
|
|
@ -261,7 +235,7 @@ public class SnisBean extends AbstractBean {
|
|
|
|
prenotice.setSubmitYmd(crdnInfo.string("ADVNTCE_DUDT_YMD")); // 의견제출기한
|
|
|
|
prenotice.setSubmitYmd(crdnInfo.string("ADVNTCE_DUDT_YMD")); // 의견제출기한
|
|
|
|
|
|
|
|
|
|
|
|
prenotice.setSysGubun(FimsConf.get().getSystemGubun()); // 시스템 구분
|
|
|
|
prenotice.setSysGubun(FimsConf.get().getSystemGubun()); // 시스템 구분
|
|
|
|
prenotice.setLastWorkId(userInfo.string("NTRIS_KEY")); // 작업자 ID <- 세외수입 사용자키
|
|
|
|
prenotice.setLastWorkId(notEmpty(userInfo.string("NTRIS_KEY"), "세외수입 인사대체키")); // 작업자 ID <- 세외수입 사용자키
|
|
|
|
prenotice.setLastWorkNm(currentUser.getName()); // 작업자 이름
|
|
|
|
prenotice.setLastWorkNm(currentUser.getName()); // 작업자 이름
|
|
|
|
prenotice.setWorkYmd(now); // 작업일자
|
|
|
|
prenotice.setWorkYmd(now); // 작업일자
|
|
|
|
|
|
|
|
|
|
|
|
@ -272,13 +246,17 @@ public class SnisBean extends AbstractBean {
|
|
|
|
* @param input 조회조건
|
|
|
|
* @param input 조회조건
|
|
|
|
* @return 과태료대장 조회결과
|
|
|
|
* @return 과태료대장 조회결과
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public List<Ye22NoticeInfoDTO> getPreNoticeList(Ye22InputDTO input) {
|
|
|
|
public List<Ye22NoticeInfoDTO> getPreNoticeList(SndngDtl sndngDtl) {
|
|
|
|
|
|
|
|
Ye22InputDTO input = new Ye22InputDTO();
|
|
|
|
|
|
|
|
String buAk = sndngDtl.getLinkMngKey(); // 연계관리키 <- 세외수입 부과키
|
|
|
|
|
|
|
|
input.setBuAk(buAk);
|
|
|
|
|
|
|
|
input.setSystemGubun(FimsConf.get().getSystemGubun());
|
|
|
|
List<Ye22NoticeInfoDTO> prenotices = sntrisBean.getPreNoticeList(input);
|
|
|
|
List<Ye22NoticeInfoDTO> prenotices = sntrisBean.getPreNoticeList(input);
|
|
|
|
update(prenotices);
|
|
|
|
update(sndngDtl, prenotices);
|
|
|
|
return prenotices;
|
|
|
|
return prenotices;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void update(List<Ye22NoticeInfoDTO> notices) {
|
|
|
|
private void update(SndngDtl sndngDtl, List<Ye22NoticeInfoDTO> notices) {
|
|
|
|
if (isEmpty(notices)) return;
|
|
|
|
if (isEmpty(notices)) return;
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, Ye22NoticeInfoDTO> noticeMap = notices.stream().collect(Collectors.toMap(
|
|
|
|
Map<String, Ye22NoticeInfoDTO> noticeMap = notices.stream().collect(Collectors.toMap(
|
|
|
|
@ -294,7 +272,9 @@ public class SnisBean extends AbstractBean {
|
|
|
|
levy.setSggCd(notice.getSiguCd()); // 시군구 코드
|
|
|
|
levy.setSggCd(notice.getSiguCd()); // 시군구 코드
|
|
|
|
levy.setDeptCd(notice.getBuseoCd()); // 부서코드
|
|
|
|
levy.setDeptCd(notice.getBuseoCd()); // 부서코드
|
|
|
|
|
|
|
|
|
|
|
|
levy.setTxitmCd(notice.getSemokCd()); // 세목코드
|
|
|
|
String semokCd = notice.getSemokCd();
|
|
|
|
|
|
|
|
if (!semokCd.contains(levy.getTxitmCd()))
|
|
|
|
|
|
|
|
levy.setTxitmCd(semokCd); // 세목코드
|
|
|
|
levy.setLevyNo(notice.getTaxNo()); // 부과번호
|
|
|
|
levy.setLevyNo(notice.getTaxNo()); // 부과번호
|
|
|
|
levy.setLevyYmd(notice.getTaxYmd()); // 부과일자
|
|
|
|
levy.setLevyYmd(notice.getTaxYmd()); // 부과일자
|
|
|
|
levy.setDudtYmd(notice.getNapgiYmd()); // 납기일자
|
|
|
|
levy.setDudtYmd(notice.getNapgiYmd()); // 납기일자
|
|
|
|
@ -316,7 +296,7 @@ public class SnisBean extends AbstractBean {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
int affected = levyMapper.updateLevies(levies);
|
|
|
|
int affected = levyMapper.updateLevies(levies);
|
|
|
|
|
|
|
|
|
|
|
|
List<SndngDtl> details = sndngDtlMapper.selectSndngDetails(new SndbQuery());
|
|
|
|
List<SndngDtl> details = sndngDtlMapper.selectSndngDetails(new SndbQuery().setSndngDtlIds(sndngDtl.getSndngDtlId()));
|
|
|
|
details.forEach(detail -> {
|
|
|
|
details.forEach(detail -> {
|
|
|
|
Ye22NoticeInfoDTO notice = noticeMap.get(detail.getLinkMngKey());
|
|
|
|
Ye22NoticeInfoDTO notice = noticeMap.get(detail.getLinkMngKey());
|
|
|
|
if (notice == null) return;
|
|
|
|
if (notice == null) return;
|
|
|
|
@ -340,7 +320,6 @@ public class SnisBean extends AbstractBean {
|
|
|
|
setBankAccounts(notice.accountGetters(), detail.bankAccountSetters()); // 은행 / 계좌번호
|
|
|
|
setBankAccounts(notice.accountGetters(), detail.bankAccountSetters()); // 은행 / 계좌번호
|
|
|
|
if (toInt(detail.getSndngDtlSttsCd()) < 2)
|
|
|
|
if (toInt(detail.getSndngDtlSttsCd()) < 2)
|
|
|
|
detail.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득
|
|
|
|
detail.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
for (SndngDtl detail: details) {
|
|
|
|
for (SndngDtl detail: details) {
|
|
|
|
affected += sndngDtlMapper.updateSndngDtl(detail);
|
|
|
|
affected += sndngDtlMapper.updateSndngDtl(detail);
|
|
|
|
|