서울 세외수입 연계 수정

main
mjkhan21 4 months ago
parent c5a798841e
commit 067bddeebe

@ -72,10 +72,14 @@ public class SnisBean extends AbstractBean {
// 발송대상 사전통보 과태료대장 등록
Map<String, Bu18WebPreNoticeDTO> prenotices = getPreNotices(req); // 과태료대장 등록을 위한 사전통보 추출
Map<String, Bu18WebReturnInfoDTO> results = sntrisBean.registerPreNotices(prenotices); // 발송대상 ID별 과태료 등록 응답
return update(results);
}
public String update(Map<String, Bu18WebReturnInfoDTO> results) {
// 로컬 발송대상 상세 업데이트
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(
results.get(
detail.getSndngDtlId()),
@ -122,7 +126,7 @@ public class SnisBean extends AbstractBean {
private SndngDtl update(Bu18WebReturnInfoDTO returned, SndngDtl sndngDtl) {
if (returned == null) return null;
sndngDtl.setLinkMngKey(returned.getNoticeAk()); // 연계 키 <- 태료대장
sndngDtl.setLinkMngKey(returned.getBuAfk()); // 연계 키 <- 세외수입 부과키
sndngDtl.setEpayno(returned.getEnapbuNo()); // 전자납부번호
setBankAccounts(returned.accountGetters(), sndngDtl.bankAccountSetters()); // 은행 / 계좌번호
sndngDtl.setSndngDtlSttsCd("01");
@ -134,7 +138,7 @@ public class SnisBean extends AbstractBean {
getters.forEach((bank, account) -> {
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());
}
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) {
String sggCd = crdnInfo.string("SGG_CD");
String linkMngKey = sggCd + crdnInfo.string("CRDN_ID") + '_' + now;
Bu18WebPreNoticeDTO prenotice = new Bu18WebPreNoticeDTO();
prenotice.setBigo(crdnInfo.string("ETC_CN")); // 비고
prenotice.setBookNo(linkMngKey); // 자료키
prenotice.setBookNo(crdnInfo.string("SNDNG_DTL_ID")); // 자료키 <- 발송상세 아이디
prenotice.setSidoCd("11"); // 시도코드
prenotice.setSiguCd(sggCd); // 시구코드
prenotice.setSiguCd(currentUser.info("instCd")); // 시구코드 <- 기관코드
// prenotice.setBuseoCd(currentUser.getDeptCode()); // 서울 세외수입 시스템에서 시도, 시구, 작업자ID로 조회해서 설정
prenotice.setDisposalContent("부과"); // 처분내용
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"));
prenotice.setTaxAmt(taxAmt); // 과세금액
prenotice.setPreTaxAmt(toLong(taxAmt * 0.8)); //
@ -261,7 +235,7 @@ public class SnisBean extends AbstractBean {
prenotice.setSubmitYmd(crdnInfo.string("ADVNTCE_DUDT_YMD")); // 의견제출기한
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.setWorkYmd(now); // 작업일자
@ -272,13 +246,17 @@ public class SnisBean extends AbstractBean {
* @param input
* @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);
update(prenotices);
update(sndngDtl, prenotices);
return prenotices;
}
public void update(List<Ye22NoticeInfoDTO> notices) {
private void update(SndngDtl sndngDtl, List<Ye22NoticeInfoDTO> notices) {
if (isEmpty(notices)) return;
Map<String, Ye22NoticeInfoDTO> noticeMap = notices.stream().collect(Collectors.toMap(
@ -294,7 +272,9 @@ public class SnisBean extends AbstractBean {
levy.setSggCd(notice.getSiguCd()); // 시군구 코드
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.setLevyYmd(notice.getTaxYmd()); // 부과일자
levy.setDudtYmd(notice.getNapgiYmd()); // 납기일자
@ -316,7 +296,7 @@ public class SnisBean extends AbstractBean {
});
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 -> {
Ye22NoticeInfoDTO notice = noticeMap.get(detail.getLinkMngKey());
if (notice == null) return;
@ -340,7 +320,6 @@ public class SnisBean extends AbstractBean {
setBankAccounts(notice.accountGetters(), detail.bankAccountSetters()); // 은행 / 계좌번호
if (toInt(detail.getSndngDtlSttsCd()) < 2)
detail.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득
});
for (SndngDtl detail: details) {
affected += sndngDtlMapper.updateSndngDtl(detail);

@ -52,6 +52,12 @@ public interface SndngDtlService {
*/
String getNxrpIndivA03List(SndngDtl sndngDtl);
/** ( ) .
* @param req
* @return
*/
String updatePreNotice(SndngDtl sndngDtl);
/** .
* @param req
* @return

@ -150,117 +150,6 @@ public class SndngDtlBean extends AbstractBean {
nisIndivQuery.setSndngDtlId(sndngDtl.getSndngDtlId());
String a03Msg = nisIndivBean.createNisIndivA03(nisIndivQuery);
/*
// 테스트 샘플
String a03Msg = "{ "
+ " \"linkRstCd\":" + "\"000" + "\""
+ ", \"linkRstMsg\":" + "\"정상 조회되었습니다." + "\""
+ ", \"resVo1\":" + "{ "
+ " \"sgbCd\":" + "\"5530000" + "\""
+ ", \"linkTrgtCd\":" + "\"5530000DPV01001" + "\""
+ ", \"linkMngKey\":" + "\"415902024000236920240412153509" + "\""
+ ", \"finScrgAcbKey\":" + "\"20240009451" + "\""
+ ", \"dptCd\":" + "\"5530497" + "\""
+ ", \"dptNm\":" + "\"장애인복지과" + "\""
+ ", \"rcptYr\":" + "\"2024" + "\""
+ ", \"spacBizCd\":" + "\"0000" + "\""
+ ", \"spacBizNm\":" + "null"
+ ", \"actSeCd\":" + "\"41" + "\""
+ ", \"actSeNm\":" + "\"일반회계(시군구세외)" + "\""
+ ", \"rprsTxmCd\":" + "\"234179" + "\""
+ ", \"rprsTxmNm\":" + "\"장애인등편의법위반과태료" + "\""
+ ", \"operItemCd\":" + "\"002" + "\""
+ ", \"operItemNm\":" + "\"장애인전용주차구역주차방해행위과태료" + "\""
+ ", \"regYmd\":" + "\"20240412" + "\""
+ ", \"pyrSeCd\":" + "\"02" + "\""
+ ", \"pyrSeNm\":" + "\"법인" + "\""
+ ", \"pyrNo\":" + "\"1101113634428" + "\""
+ ", \"pyrNm\":" + "\"엔에이치농협캐피탈(주)" + "\""
+ ", \"pyrSttCd\":" + "\"99" + "\""
+ ", \"pyrSttNm\":" + "\"기타" + "\""
+ ", \"pyrZip\":" + "\"42089" + "\""
+ ", \"pyrAddr\":" + "\"대구광역시 수성구 달구벌대로 2532 4층(범어동, 대아빌딩)" + "\""
+ ", \"telno\":" + "null"
+ ", \"mblTelno\":" + "null"
+ ", \"pyrEmlAddr\":" + "null"
+ ", \"vhrno\":" + "null"
+ ", \"mngItemCn1\":" + "\"위반일시 : 2024-04-05 17:40" + "\""
+ ", \"mngItemCn2\":" + "null"
+ ", \"mngItemCn3\":" + "\"위반장소 : 경기도 화성시 남양읍 활초리 산 62-3 " + "\""
+ ", \"mngItemCn4\":" + "null"
+ ", \"mngItemCn5\":" + "\"주차방해" + "\""
+ ", \"mngItemCn6\":" + "\"4159020240002369" + "\""
+ ", \"fcltSeCd\":" + "null"
+ ", \"fcltSeNm\":" + "null"
+ ", \"regSeCd\":" + "null"
+ ", \"regSeNm\":" + "null"
+ ", \"bfAvtsmtYmd\":" + "\"20240412" + "\""
+ ", \"opnSbmsnTermBgngYmd\":" + "\"20240412" + "\""
+ ", \"opnSbmsnTermEndYmd\":" + "\"20240508" + "\""
+ ", \"frstFinScrgAmt\":" + "\"500000" + "\""
+ ", \"rdtRsnSeCd\":" + "null"
+ ", \"rdtRsnSeNm\":" + "null"
+ ", \"agvtRsnCd\":" + "null"
+ ", \"agvtRsnNm\":" + "null"
+ ", \"finScrgAmt\":" + "\"500000" + "\""
+ ", \"bfRdtRt\":" + "\"20" + "\""
+ ", \"bfRdtAmt\":" + "\"100000" + "\""
+ ", \"rmCn\":" + "null"
+ ", \"rdtRmCn\":" + "null"
+ ", \"nhtFrwarSeCd\":" + "null"
+ ", \"nhtFrwarSeNm\":" + "null"
+ ", \"endYmd\":" + "null"
+ ", \"endRsnCn\":" + "null"
+ ", \"rcvmtSeNm\":" + "\"수납" + "\""
+ ", \"epayNo\":" + "\"4159022441440452990" + "\""
+ ", \"vtlacBankNm1\":" + "\"농협" + "\""
+ ", \"vrActno1\":" + "\"790253-90-024117" + "\""
+ ", \"vtlacBankNm2\":" + "null"
+ ", \"vrActno2\":" + "null"
+ ", \"vtlacBankNm3\":" + "null"
+ ", \"vrActno3\":" + "null"
+ ", \"vtlacBankNm4\":" + "null"
+ ", \"vrActno4\":" + "null"
+ ", \"vtlacBankNm5\":" + "null"
+ ", \"vrActno5\":" + "null"
+ ", \"vtlacBankNm6\":" + "null"
+ ", \"vrActno6\":" + "null"
+ ", \"vtlacBankNm7\":" + "null"
+ ", \"vrActno7\":" + "null"
+ ", \"vtlacBankNm8\":" + "null"
+ ", \"vrActno8\":" + "null"
+ ", \"vtlacBankNm9\":" + "null"
+ ", \"vrActno9\":" + "null"
+ ", \"vtlacBankNm10\":" + "null"
+ ", \"vrActno10\":" + "null"
+ ", \"vtlacBankNm11\":" + "null"
+ ", \"vrActno11\":" + "null"
+ ", \"vtlacBankNm12\":" + "null"
+ ", \"vrActno12\":" + "null"
+ ", \"vtlacBankNm13\":" + "null"
+ ", \"vrActno13\":" + "null"
+ ", \"vtlacBankNm14\":" + "null"
+ ", \"vrActno14\":" + "null"
+ ", \"vtlacBankNm15\":" + "null"
+ ", \"vrActno15\":" + "null"
+ ", \"vtlacBankNm16\":" + "null"
+ ", \"vrActno16\":" + "null"
+ ", \"vtlacBankNm17\":" + "null"
+ ", \"vrActno17\":" + "null"
+ ", \"vtlacBankNm18\":" + "null"
+ ", \"vrActno18\":" + "null"
+ ", \"vtlacBankNm19\":" + "null"
+ ", \"vrActno19\":" + "null"
+ ", \"vtlacBankNm20\":" + "null"
+ ", \"vrActno20\":" + "null"
+ ", \"rsveItem1\":" + "\"5530497000020244123417900178200" + "\""
+ ", \"rsveItem2\":" + "null"
+ ", \"rsveItem3\":" + "null"
+ ", \"rsveItem4\":" + "null"
+ ", \"rsveItem5\":" + "null"
+ " }"
+ " }";
*/
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode linkRst = mapper.readTree(a03Msg);

@ -71,6 +71,12 @@ public class SndngDtlServiceBean extends AbstractServiceBean implements SndngDtl
return sndngDtlBean.getNxrpIndivA03List(sndngDtl);
}
@Override
public String updatePreNotice(SndngDtl sndngDtl) {
snisBean.getPreNoticeList(sndngDtl);
return "[S] 저장됐습니다.";
}
@Override
public List<DataObject> getSndbkList(SndbQuery req) {
return sndngDtlBean.getSndbkList(req);

@ -2214,7 +2214,6 @@ public class Sndb01Controller extends ApplicationController {
List<DataObject> dtlIds = sndngDtlService.getSndngTrgtDtlIds(req);
if ("lntris".equals(TaskProcessor.get().getNtrisInterface(req.getTaskSeCd()))) { // 지방 세외수입
// 발송상세 Ids 만큼 반복..
for (DataObject dtl: dtlIds) {
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngDtlId(dtl.string("SNDNG_DTL_ID"));
@ -2228,7 +2227,18 @@ public class Sndb01Controller extends ApplicationController {
saved = rtnMsg.contains("[S]");
}
} else { // 서울 세외수입
for (DataObject dtl: dtlIds) {
SndngDtl sndngDtl = new SndngDtl();
sndngDtl.setSndngDtlId(dtl.string("SNDNG_DTL_ID"));
sndngDtl.setCrdnId(dtl.string("CRDN_ID"));
sndngDtl.setLinkTrgtCd(dtl.string("LINK_TRGT_CD"));
sndngDtl.setLinkMngKey(dtl.string("LINK_MNG_KEY"));
sndngDtl.setSndngDtlSttsCd(dtl.string("SNDNG_DTL_STTS_CD"));
sndngDtl.setDelYn("N");
rtnMsg = sndngDtlService.updatePreNotice(sndngDtl);
saved = rtnMsg.contains("[S]");
}
}
return new ModelAndView("jsonView")

@ -198,7 +198,7 @@ AND C.CRDN_TM = #{crdnTm}
</otherwise>
</choose>
</if>
<include refid="utility.sortBy" />
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix"/>
</select>

Loading…
Cancel
Save