From 23619f8d5792f06f4b282cd2428871019d026f6a Mon Sep 17 00:00:00 2001 From: mjkhan21 Date: Fri, 19 Sep 2025 13:37:56 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=9C=EC=9A=B8=20=EC=84=B8=EC=99=B8?= =?UTF-8?q?=EC=88=98=EC=9E=85=20=EC=97=B0=EA=B3=84=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/fims/cmmn/CrdnSttsHstry.java | 28 ++++++++ .../xit/fims/nxrp/service/bean/SnisBean.java | 64 ++++++++++++------- .../sql/mapper/fims/crdn/crdn-updt-mapper.xml | 1 + 3 files changed, 71 insertions(+), 22 deletions(-) diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java index 4451276a..4858d89e 100644 --- a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java @@ -1,6 +1,8 @@ package cokr.xit.fims.cmmn; +import cokr.xit.fims.crdn.Crdn; import cokr.xit.foundation.AbstractEntity; +import cokr.xit.foundation.data.DataObject; import lombok.Getter; import lombok.Setter; @@ -69,4 +71,30 @@ public class CrdnSttsHstry extends AbstractEntity { * 단속 상태 변경 일시 - TB_CRDN(단속) */ private String crdnSttsChgDt; + + public static final CrdnSttsHstry create(String status, String taskDtlId, String etcCn, DataObject crdnInfo) { + CrdnSttsHstry statusHistory = new CrdnSttsHstry(); + statusHistory.setCrdnId(crdnInfo.string("CRDN_ID")); + statusHistory.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD")); + statusHistory.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT")); + statusHistory.setTaskDtlId(taskDtlId); + statusHistory.setEtcCn(etcCn); + statusHistory.setCrdnSttsCd(status); + + return statusHistory; + } + + public static final CrdnSttsHstry create(String status, String taskDtlId, Crdn crdn) { + CrdnSttsHstry statusHistory = new CrdnSttsHstry(); + statusHistory.setCrdnId(crdn.getCrdnId()); + statusHistory.setBfrSttsCd(crdn.getCrdnSttsCd()); + statusHistory.setBfrSttsChgDt(crdn.getCrdnSttsChgDt()); + statusHistory.setTaskDtlId(taskDtlId); + statusHistory.setEtcCn(crdn.getEtcCn()); + statusHistory.setCrdnSttsCd(status); + + crdn.setCrdnSttsCd(status); + + return statusHistory; + } } \ No newline at end of file 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 86e16764..10e841bf 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,8 @@ 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; import cokr.xit.fims.crdn.dao.CrdnUpdtMapper; @@ -64,6 +66,8 @@ public class SnisBean extends AbstractBean { /** 단속 대장 수정 정보 DAO */ @Resource(name = "crdnUpdtMapper") private CrdnUpdtMapper crdnUpdtMapper; + @Resource(name = "crdnSttsHstryBean") + private CrdnSttsHstryBean crdnSttsHstryBean; /** 사용자 정보 DAO */ @Resource(name="userBean") private UserBean userBean; @@ -259,9 +263,10 @@ public class SnisBean extends AbstractBean { String buAk = sndngDtl.getLinkMngKey(); // 연계관리키 <- 세외수입 과태료대장키 input.setBuAk(buAk); input.setSystemGubun(FimsConf.get().getSystemGubun()); - List prenotices = sntrisBean.getPreNoticeList(input); - update(sndngDtl, prenotices); - return prenotices; + List notices = sntrisBean.getPreNoticeList(input); +// update(sndngDtl, notices); + update(notices); + return notices; } private void update(SndngDtl sndngDtl, List notices) { @@ -307,6 +312,11 @@ public class SnisBean extends AbstractBean { levy.setLastAmt((int)notice.totalAmt()); // 최종금액 levy.setDudtAftrAmt(null); + if ("1".equals(notice.getBuStatusCd())) { // 완납일경우 + levy.setRcvmtPcptax((int)notice.getTaxAmt()); + levy.setRcvmtAdamt((int)notice.gasanAmt()); + } + levy.setDudtAftrYmd(notice.getNapgiAftYmd()); // 납기후일자 levy.setTxtnThing(notice.getMulNm()); // 물건이름 @@ -361,7 +371,9 @@ public class SnisBean extends AbstractBean { .filter(notice -> "0".equals(notice.getBuStatusCd())) .count() > 0; // 세외수입 연계키별 발송상세 정보 - List sndngDtls = bugwa ? sndngDtlMapper.selectSndngDetails(new SndbQuery().setCrdnIds(crdnIDs.toArray(new String[crdnIDs.size()]))) : Collections.emptyList(); + List sndngDtls = !bugwa ? + Collections.emptyList() : + sndngDtlMapper.selectSndngDetails(new SndbQuery().setCrdnIds(crdnIDs.toArray(new String[crdnIDs.size()]))); Map sndngDetails = sndngDtls.stream().collect(Collectors.toMap( SndngDtl::getLinkMngKey, sndngDtl -> sndngDtl @@ -369,7 +381,9 @@ public class SnisBean extends AbstractBean { for (Ye22NoticeInfoDTO notice: notices) { String status = notice.getBuStatusCd(); // 과태료 상태 + boolean paidFull = "1".equals(status); // '완납' 여부 String linkMngKey = Long.toString(notice.getBuAk()); // 세외수입 연계키 + int rcvmtAmt = (int)notice.totalAmt(); log().debug("세외수입 연계키: {}, 상태: {}", linkMngKey, status); if (bugwa) { @@ -381,33 +395,39 @@ public class SnisBean extends AbstractBean { Levy levy = levies.get(linkMngKey); update(notice, levy); // 부과정보에 적용 - if (levy != null) { + if (levy != null) levyMapper.updateLevy(levy); + if (paidFull) { Rcvmt rcvmt = new Rcvmt(); // 수납등록 rcvmt.setLevyId(levy.getLevyId()); + rcvmt.setRcvmtAmt(rcvmtAmt); rcvmtBean.createRcvmt(rcvmt); } Crdn crdn = crdns.get(levy.getCrdnId()); + if (crdn == null) continue; + String crdnStatus = crdn.getCrdnSttsCd(); - if (crdn != null) { // 단속정보에 적용 - if ("0".equals(status)) { // '부과'상태 - - } else if ("1".equals(status)) { // '완납'상태 - crdn.setRcvmtAmt((int)notice.totalAmt()); // 수납금액 - // notice.getNapbuYmd(); // 납부일자 - - crdnStatus = switch (crdn.getCrdnSttsCd()) { - case "23", "31", "42", "43", "44", "45" -> "71"; // 사전부과, 의견제출, 사전통보발송, 사전통보완료 -> 사전통보수납 - case "51" -> "72"; // 부과 -> 부과수납 - case "52" -> "73"; // 독촉 -> 독촉수납 - case "53", "54" -> "74"; // 압류예고, 압류대상 -> 압류예정수납 - case "55" -> "75"; // 압류 -> 압류수납 - default -> null; - }; - if (crdnStatus != null) - crdn.setCrdnSttsCd(crdnStatus); + // 단속정보에 적용 + if ("0".equals(status)) { // '부과'상태 + + } else if (paidFull) { + crdn.setRcvmtAmt(rcvmtAmt); // 수납금액 + // notice.getNapbuYmd(); // 납부일자 + crdnUpdtMapper.updateEditCrdn(crdn); + + crdnStatus = switch (crdn.getCrdnSttsCd()) { + case "23", "31", "42", "43", "44", "45" -> "71"; // 사전부과, 의견제출, 사전통보발송, 사전통보완료 -> 사전통보수납 + case "51" -> "72"; // 부과 -> 부과수납 + case "52" -> "73"; // 독촉 -> 독촉수납 + case "53", "54" -> "74"; // 압류예고, 압류대상 -> 압류예정수납 + case "55" -> "75"; // 압류 -> 압류수납 + default -> null; + }; + if (crdnStatus != null) { + CrdnSttsHstry history = CrdnSttsHstry.create(crdnStatus, null, crdn); + crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(history); } } } diff --git a/src/main/resources/sql/mapper/fims/crdn/crdn-updt-mapper.xml b/src/main/resources/sql/mapper/fims/crdn/crdn-updt-mapper.xml index d1a70e47..99f7dd03 100644 --- a/src/main/resources/sql/mapper/fims/crdn/crdn-updt-mapper.xml +++ b/src/main/resources/sql/mapper/fims/crdn/crdn-updt-mapper.xml @@ -104,6 +104,7 @@ , FFNLG_CRDN_AMT = #{ffnlgCrdnAmt} , FFNLG_AMT = #{ffnlgAmt} , ADVNTCE_AMT = #{advntceAmt} + , RCVMT_AMT = #{rcvmtAmt} , ETC_CN = #{etcCn} , MDFCN_DT = , MDFR = #{modifiedBy}