From 5d88969f3cb00c7d6370198b7ea27385a61c6fcd Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Mon, 13 Oct 2025 11:03:10 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B3=A0=EC=A7=80=EC=84=9C=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=EB=93=B1=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xit/fims/nxrp/service/bean/SnisBean.java | 38 +++++++++++++++---- .../xit/fims/rcvm/service/bean/RcvmtBean.java | 8 +--- .../java/cokr/xit/fims/sndb/SndbQuery.java | 13 ++++++- .../fims/sndb/service/SndngDtlService.java | 2 + .../fims/sndb/service/bean/SndngDtlBean.java | 14 ++++--- .../service/bean/SndngDtlServiceBean.java | 5 +++ .../xit/fims/sndb/web/Sndb01Controller.java | 26 ++++++++++--- .../sql/mapper/fims/sndb/sndngDtl-mapper.xml | 9 ++++- 8 files changed, 89 insertions(+), 26 deletions(-) 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 51b95fdc..13629941 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 @@ -14,6 +14,7 @@ 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; @@ -316,7 +317,8 @@ public class SnisBean extends ScheduledBean { private void update(Ye22NoticeInfoDTO notice, SndngDtl sndngDtl) { if (notice == null || sndngDtl == null) return; - boolean chenap = "체납".equals(notice.getBuStatusNm()); + String status = notice.getBuStatusNm(); + boolean chenap = "체납".equals(status); sndngDtl.setSggCd(notice.getSiguCd()); // 시군구 코드 sndngDtl.setTaxNo(notice.getNapseNo()); // 납세번호 @@ -335,8 +337,11 @@ public class SnisBean extends ScheduledBean { sndngDtl.setDudtAftrAmt(null); // 납기후 금액 setBankAccounts(notice.accountGetters(), sndngDtl.bankAccountSetters()); // 은행 / 계좌번호 - if (toInt(sndngDtl.getSndngDtlSttsCd()) < 2) - sndngDtl.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득 + int sttsCd = toInt(sndngDtl.getSndngDtlSttsCd()); + if (sttsCd < 2) + sndngDtl.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득 + if ("완납".equals(status) && sttsCd != 9) + sndngDtl.setSndngDtlSttsCd("09"); // 발송 상태 코드(FIM050) 09:수납 } private void update(List notices) { @@ -378,17 +383,36 @@ public class SnisBean extends ScheduledBean { String statusCode = notice.getBuStatusCd(), // 과태료 상태 status = notice.getBuStatusNm(); // 상태이름 - boolean paid = "완납".equals(status); int rcvmtAmt = (int)notice.totalAmt(); log().debug("세외수입 연계키: {}, 상태: {}({})", linkMngKey, status, statusCode); update(notice, levy); // 부과정보에 적용 levyMapper.updateLevy(levy); - // 사전부과 <- 상태: 부과, 구분: 신고 - // 본부과 <- 상태: 부과, 구분: 수시분 + if ("부과".equals(status)) { + // 상태 == 부과 && 구분 == 신고 -> 사전부과(23) + // 상태 == 부과 && 구분 == 수시분 -> 본부과(51) + String noticeStatus = "신고".equals(notice.getTaxGubunNm()) ? "23" : "51", + crdnStatus = crdn.getCrdnSttsCd(); + switch (noticeStatus) { + case "23": + if (crdnStatus.compareTo(noticeStatus) < 0) // 현재상태가 사전부과보다 작을 경우 + crdnStatus = noticeStatus; + break; + case "51": + if (crdnStatus.compareTo(noticeStatus) < 0) // 현재상태가 본부과보다 작을 경우 + crdnStatus = noticeStatus; + break; + default: break; + } + if (!equals(crdnStatus, crdn.getCrdnSttsCd())) { + CrdnSttsHstry statusHistory = CrdnSttsHstry.create(crdnStatus, null, crdn); + crdnSttsHstryBean.create(statusHistory); + crdnSttsHstryBean.updateCrdn(statusHistory); + } + } - if (paid) { + if ("완납".equals(status)) { Rcvmt rcvmt = Rcvmt.create(levy); // 수납등록 rcvmt.setRcvmtAmt(rcvmtAmt); // 수납금액 rcvmt.setRcvmtYmd(notice.getNapbuYmd()); // 수납일자 diff --git a/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java b/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java index a09bd1f5..923fad40 100644 --- a/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java +++ b/src/main/java/cokr/xit/fims/rcvm/service/bean/RcvmtBean.java @@ -262,13 +262,7 @@ public class RcvmtBean extends AbstractBean { default -> ""; }; - CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - crdnSttsHstry.setCrdnId(levyInfo.string("CRDN_ID")); // 단속 ID - crdnSttsHstry.setBfrSttsCd(levyInfo.string("CRDN_STTS_CD")); // 단속 상태 코드 - crdnSttsHstry.setBfrSttsChgDt(levyInfo.string("CRDN_STTS_CHG_DT")); // 단소 상태 변경 일시 - crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); // 단속상태코드(FIM010) - crdnSttsHstry.setTaskDtlId(rcvmt.getRcvmtId()); // 수납 ID - + CrdnSttsHstry crdnSttsHstry = CrdnSttsHstry.create(newCrdnSttsCd, rcvmt.getRcvmtId(), null, levyInfo); // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. if (!crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry)) throw new RuntimeException("수납 등록 중 단속 대장의 단속상태 수정에 실패하였습니다."); diff --git a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java index 8793b7c9..9d23d0aa 100644 --- a/src/main/java/cokr/xit/fims/sndb/SndbQuery.java +++ b/src/main/java/cokr/xit/fims/sndb/SndbQuery.java @@ -1,5 +1,7 @@ package cokr.xit.fims.sndb; +import java.util.List; + import cokr.xit.fims.cmmn.CmmnQuery; /**발송 대장 정보 조회 요청 @@ -13,7 +15,6 @@ import cokr.xit.fims.cmmn.CmmnQuery; * */ public class SndbQuery extends CmmnQuery { - private static final long serialVersionUID = 1L; // ID @@ -72,6 +73,7 @@ public class SndbQuery extends CmmnQuery { private String sndngSeCdFrom; // 발송 구분 코드 시작 private String sndngSeCdTo; // 발송 구분 코드 종료 private String sndngDtlSttsCd; // 발송 상세 상태 코드 + private List sndngDtlSttsCds; // 발송 상세 상태 코드 private String rcpnRelNm1; private String rcpnRelNm2; private String rcpnRelNm3; @@ -535,6 +537,15 @@ public class SndbQuery extends CmmnQuery { return self(); } + public List getSndngDtlSttsCds() { + return ifEmpty(sndngDtlSttsCds, () -> null); + } + + public T setSndngDtlSttsCds(List sndngDtlSttsCds) { + this.sndngDtlSttsCds = sndngDtlSttsCds; + return self(); + } + public String getSndngDtlSttsCd() { return ifEmpty(sndngDtlSttsCd, () -> null); } 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 1e8aefff..55cb3d20 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java +++ b/src/main/java/cokr/xit/fims/sndb/service/SndngDtlService.java @@ -18,6 +18,8 @@ import cokr.xit.foundation.data.DataObject; * */ public interface SndngDtlService { + List getSndngDetails(SndbQuery req); + /**지정한 조건에 따라 발송상세 목록을 조회하여 반환한다. * @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 fbf0a457..cacb70fe 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 @@ -60,6 +60,10 @@ public class SndngDtlBean extends AbstractBean { @Resource(name = "nisIndivBean") private NisIndivBean nisIndivBean; + public List getSndngDetails(SndbQuery req) { + return sndngDtlMapper.selectSndngDetails(req); + } + /**지정한 조건에 따라 발송 상세 목록을 조회하여 반환한다. * @param req 발송 상세 조회 조건 * @return 발송 상세 목록 @@ -145,11 +149,11 @@ public class SndngDtlBean extends AbstractBean { public String getNxrpIndivA03List(SndngDtl sndngDtl) { // 발송 상세 상태 코드(SNDNG_DTL_STTS_CD) 가 세외수입부과(01)인 자료만 처리 if ("01".equals(sndngDtl.getSndngDtlSttsCd())) { - NisIndivQuery nisIndivQuery = new NisIndivQuery(); - nisIndivQuery.setCrdnId(sndngDtl.getCrdnId()); - nisIndivQuery.setSndngDtlId(sndngDtl.getSndngDtlId()); - - String a03Msg = nisIndivBean.createNisIndivA03(nisIndivQuery); + String a03Msg = nisIndivBean.createNisIndivA03( + new NisIndivQuery() + .setCrdnId(sndngDtl.getCrdnId()) + .setSndngDtlId(sndngDtl.getSndngDtlId()) + ); 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 11cc6876..578ddfae 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 @@ -36,6 +36,11 @@ public class SndngDtlServiceBean extends ScheduledServiceBean implements SndngDt @Resource(name = "svbtcBean") private SvbtcBean svbtcBean; + @Override + public List getSndngDetails(SndbQuery req) { + return sndngDtlBean.getSndngDetails(req); + } + @Override public List getSndngDtlList(SndbQuery req) { return sndngDtlBean.getSndngDtlList(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 65092f30..5e1d8818 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -2223,11 +2223,27 @@ public class Sndb01Controller extends ApplicationController { @Task @RequestMapping(name="세외수입 체납상세 세목정보 조회", value=METHOD_URL.getNonTaxReceiptSpecialB01List) public ModelAndView getNonTaxReceiptSpecialB01List(SndbQuery req) { - ModelAndView mav = getNonTaxReceiptIndividualA03List(req); - if (Boolean.TRUE.equals(mav.getModel().get("saved"))) { - List dtlIds = sndngDtlService.getSndngTrgtDtlIds(req); - mav.addObject("tnocs", dtlIds.size()); - } + boolean saved = false; + List sndngDtls = sndngDtlService.getSndngDetails(req.setSndngDtlSttsCds(List.of( + "04", "05", "06", "07", "08" + ))); + String rtnMsg = sndngDtls.isEmpty() ? "[F] 자료를 찾지못했습니다." : ""; + boolean lntris = "lntris".equals(TaskProcessor.get().getNtrisInterface(req.getTaskSeCd())); + + for (SndngDtl sndngDtl: sndngDtls) { + rtnMsg = lntris ? sndngDtlService.getNxrpIndivA03List(sndngDtl) : sndngDtlService.updatePreNotice(sndngDtl); + saved = rtnMsg.contains("[S]"); + } + + ModelAndView mav = new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + if (saved) { + sndngDtls = sndngDtlService.getSndngDetails(req); + mav.addObject("tnocs", sndngDtls.size()) + .addObject("gramt", sndngDtls.stream().mapToInt(SndngDtl::getLastAmt).sum()); + } + return mav; /* boolean saved = false; diff --git a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml index 69d2d32c..6289ad0c 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -108,7 +108,14 @@ SELECT * AND SNDNG_DTL_ID IN (#{sndngDtlId}) AND CRDN_ID IN (#{crdnId}) - +AND LEVY_YMD = #{schLevyYmd} + AND DUDT_YMD = #{schFrstDudtYmd} + AND FYR = #{schFyr} + AND SNDNG_DTL_STTS_CD IN (#{sttsCd}) + AND DEL_YN = 'N' + + ORDER BY SNDNG_DTL_ID +