diff --git a/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java b/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java index 7f88944a..c0d8fad9 100644 --- a/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java +++ b/src/main/java/cokr/xit/fims/nxrp/service/bean/SnisBean.java @@ -72,10 +72,14 @@ public class SnisBean extends AbstractBean { // 발송대상 사전통보 과태료대장 등록 Map prenotices = getPreNotices(req); // 과태료대장 등록을 위한 사전통보 추출 Map results = sntrisBean.registerPreNotices(prenotices); // 발송대상 ID별 과태료 등록 응답 + return update(results); + } + public String update(Map results) { // 로컬 발송대상 상세 업데이트 Set ids = results.keySet(); // 발송대상 상세ID - List details = sndngDtlMapper.selectSndngDetails(req.setSndngDtlIds(ids.toArray(new String[ids.size()]))).stream() + SndbQuery req = new SndbQuery().setSndngDtlIds(ids.toArray(new String[ids.size()])); + List 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 getPreNoticeList(Ye22InputDTO input) { + public List getPreNoticeList(SndngDtl sndngDtl) { + Ye22InputDTO input = new Ye22InputDTO(); + String buAk = sndngDtl.getLinkMngKey(); // 연계관리키 <- 세외수입 부과키 + input.setBuAk(buAk); + input.setSystemGubun(FimsConf.get().getSystemGubun()); List prenotices = sntrisBean.getPreNoticeList(input); - update(prenotices); + update(sndngDtl, prenotices); return prenotices; } - public void update(List notices) { + private void update(SndngDtl sndngDtl, List notices) { if (isEmpty(notices)) return; Map 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 details = sndngDtlMapper.selectSndngDetails(new SndbQuery()); + List 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); diff --git a/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java b/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java index b2176cb2..bc50f20c 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java @@ -52,6 +52,12 @@ public interface SndngDtlService { */ String getNxrpIndivA03List(SndngDtl sndngDtl); + /**지정한 조건에 따라 과태료 대장 등록 자료 상세 조회 목록을 (서울 세외수입)조회하여 반환한다. + * @param req 발송 상세 조회 조건 + * @return 저장 여부 + */ + String updatePreNotice(SndngDtl sndngDtl); + /**지정한 조건에 따라 반송 목록을 조회하여 반환한다. * @param req 발송 대장 조회 조건 * @return 발송 대장 객체 목록 diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java index c213ceb5..8cb23a46 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlBean.java @@ -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); diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java index 10aebc26..3e12350c 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngDtlServiceBean.java @@ -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 getSndbkList(SndbQuery req) { return sndngDtlBean.getSndbkList(req); diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java index 34fa63d2..18b38bd5 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -2214,7 +2214,6 @@ public class Sndb01Controller extends ApplicationController { List 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") diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml index b7b06367..fe72619c 100644 --- a/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-list-mapper.xml @@ -198,7 +198,7 @@ AND C.CRDN_TM = #{crdnTm} - +