From cf8e2041c7a824e61f26682676eda23935848b2c Mon Sep 17 00:00:00 2001 From: jjh Date: Tue, 30 Apr 2024 13:08:00 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B0=A8=EC=84=B8=EB=8C=80=20=EC=84=B8?= =?UTF-8?q?=EC=99=B8=EC=88=98=EC=9E=85=20=EA=B3=BC=ED=83=9C=EB=A3=8C=20?= =?UTF-8?q?=EC=97=B0=EA=B3=84=20(A03)=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cokr/xit/fims/nxrp/A03Rqst.java | 40 +++ .../fims/nxrp/service/NisIndivService.java | 4 +- .../fims/nxrp/service/bean/NisIndivBean.java | 338 ++++++++++++++++-- .../service/bean/NisIndivServiceBean.java | 8 +- .../xit/fims/nxrp/web/Nxrp01Controller.java | 19 +- .../xit/fims/sndb/dao/SndngDtlMapper.java | 26 ++ .../xit/fims/sndb/service/bean/SndngBean.java | 4 +- .../sql/mapper/fims/sndb/sndngDtl-mapper.xml | 71 ++++ .../WEB-INF/jsp/fims/sndb/sndb01080-info.jsp | 42 ++- 9 files changed, 510 insertions(+), 42 deletions(-) create mode 100644 src/main/java/cokr/xit/fims/nxrp/A03Rqst.java diff --git a/src/main/java/cokr/xit/fims/nxrp/A03Rqst.java b/src/main/java/cokr/xit/fims/nxrp/A03Rqst.java new file mode 100644 index 00000000..d5ee5b83 --- /dev/null +++ b/src/main/java/cokr/xit/fims/nxrp/A03Rqst.java @@ -0,0 +1,40 @@ +package cokr.xit.fims.nxrp; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/** + * 과태료 대장 등록 자료 상세 조회 + * @author JoJH + */ +@Getter +@Setter +public class A03Rqst extends AbstractEntity { + + /** + * 업무 구분 코드 + */ + private String taskSeCd; + + /** + * 자치단체코드 + */ + private String sgbCd; + + /** + * 연계대상코드 + */ + private String linkTrgtCd; + + /** + * 연계관리키 + */ + private String linkMngKey; + + /** + * 과태료과징금대장키 + */ + private String finScrgAcbKey; + +} diff --git a/src/main/java/cokr/xit/fims/nxrp/service/NisIndivService.java b/src/main/java/cokr/xit/fims/nxrp/service/NisIndivService.java index 2618557a..b699688c 100644 --- a/src/main/java/cokr/xit/fims/nxrp/service/NisIndivService.java +++ b/src/main/java/cokr/xit/fims/nxrp/service/NisIndivService.java @@ -58,7 +58,7 @@ public interface NisIndivService { *
  • 그렇지 않으면 false
  • * */ - String updateNisIndivA02TaskAplcn(NisIndivQuery req); + String updateNisIndivA02(NisIndivQuery req); /**지정한 조건에 따라 과태료 대장 등록 자료 상세 조회 목록을 조회하여 반환한다. * @param req 과태료 대장 등록 자료 상세 조회 조회 조건 @@ -79,6 +79,6 @@ public interface NisIndivService { *
  • 그렇지 않으면 false
  • * */ - String updateNisIndivA03TaskAplcn(NisIndivQuery req); + String updateNisIndivA03(NisIndivQuery req); } diff --git a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java index 4fd713b2..cb990dbe 100644 --- a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java +++ b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java @@ -9,6 +9,8 @@ import java.net.URL; import java.nio.charset.Charset; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.List; import javax.annotation.Resource; @@ -21,6 +23,7 @@ import javax.net.ssl.X509TrustManager; import org.springframework.stereotype.Component; +import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -31,6 +34,7 @@ import cokr.xit.fims.mngt.service.bean.FactionBean; import cokr.xit.fims.nxrp.A01; import cokr.xit.fims.nxrp.A02; import cokr.xit.fims.nxrp.A03; +import cokr.xit.fims.nxrp.A03Rqst; import cokr.xit.fims.nxrp.NisIndivQuery; import cokr.xit.fims.nxrp.dao.NisA01Mapper; import cokr.xit.fims.nxrp.dao.NisA02Mapper; @@ -140,25 +144,25 @@ public class NisIndivBean extends AbstractComponent { // 세외수입 과태료대장에 연계할 단속 정보를 조회 DataObject selectCrdnInfo = nisA01Mapper.selectCrdnInfo(sndngDtlIds.get(iLoop).string("CRDN_ID")); - - String linkMngKey = selectCrdnInfo.string("SGG_CD") + selectCrdnInfo.string("CRDN_ID"); /* // 변경이 필요할까? + String linkMngKey = selectCrdnInfo.string("SGG_CD") + selectCrdnInfo.string("CRDN_ID"); +*/ LocalDateTime now = LocalDateTime.now(); // 현재 날짜/시간 String linkMngKey = selectCrdnInfo.string("SGG_CD") + selectCrdnInfo.string("CRDN_ID") + '_' + now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); -*/ + A01 a01 = new A01(); - a01.setTaskSeCd(selectCrdnInfo.string("TASK_SE_CD")); // 업무 구분 코드 - a01.setSgbCd(userInfo.string("NSTT_CD")); // 자치단체코드 - a01.setLinkTrgtCd(userInfo.string("NSTT_CD") + userInfo.string("TASK_SE_CD") + "01001"); // 연계대상코드 - a01.setLinkMngKey(linkMngKey); // 연계관리키 시군구코드 + 단속 ID + 년월일시분초 - a01.setDptCd(userInfo.string("DEPT_CD")); // 부서코드 - a01.setRcptYr(req.getSndngYmd().substring(0, 4)); // 접수연도 - a01.setSpacBizCd(selectCrdnInfo.string("SPCL_BIZ_CD")); // 특별회계사업코드 (밤샘주차 0159:주차장특별회계) - a01.setActSeCd(selectCrdnInfo.string("ACNTG_SE_CD")); // 회계구분코드 - a01.setRprsTxmCd(selectCrdnInfo.string("TXITM_CD")); // 대표세입과목코드 - a01.setOperItemCd(selectCrdnInfo.string("OPER_ITEM_CD")); // 운영항목코드 + a01.setTaskSeCd(selectCrdnInfo.string("TASK_SE_CD")); // 업무 구분 코드 + a01.setSgbCd(userInfo.string("NSTT_CD")); // 자치단체코드 + a01.setLinkTrgtCd(userInfo.string("NSTT_CD") + selectCrdnInfo.string("TASK_SE_CD") + "01001"); // 연계대상코드 + a01.setLinkMngKey(linkMngKey); // 연계관리키 시군구코드 + 단속 ID + 년월일시분초 + a01.setDptCd(userInfo.string("DEPT_CD")); // 부서코드 + a01.setRcptYr(req.getSndngYmd().substring(0, 4)); // 접수연도 + a01.setSpacBizCd(selectCrdnInfo.string("SPCL_BIZ_CD")); // 특별회계사업코드 (밤샘주차 0159:주차장특별회계) + a01.setActSeCd(selectCrdnInfo.string("ACNTG_SE_CD")); // 회계구분코드 + a01.setRprsTxmCd(selectCrdnInfo.string("TXITM_CD")); // 대표세입과목코드 + a01.setOperItemCd(selectCrdnInfo.string("OPER_ITEM_CD")); // 운영항목코드 // 과태료과징금구분코드 01:과태료 02:과징금 if (selectCrdnInfo.string("TASK_SE_CD").equals("PES")) { // 밤샘주차는 과징금(02) a01.setFinScrgSeCd("02"); @@ -264,7 +268,7 @@ public class NisIndivBean extends AbstractComponent { a01.setMngItemCn4(""); // 관리항목4 a01.setMngItemCn5("위반항목 : " + selectCrdnInfo.string("VLTN_ARTCL")); // 관리항목5 } else { - throw new RuntimeException("지정되지 않은 업무 구분코드가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback + throw new RuntimeException("지정되지 않은 업무 구분코드가 입력되었습니다."); // 예외를 발생시켜서 DB Rollback } a01.setMngItemCn6(selectCrdnInfo.string("SGG_CD") + selectCrdnInfo.string("CRDN_ID")); // 관리6항목 @@ -273,10 +277,9 @@ public class NisIndivBean extends AbstractComponent { a01.setModifiedBy(userInfo.string("USER_ID")); // 차세대 세외수입 연계 서비스 호출 - A01 과태료 대장 단속 정보 등록 - String sUrl = deptInfo.string("NXRP_LINK_SRVC_URL") + "/intf/lntris/a01/register"; - String sJsonData = ""; - ObjectMapper mapper = new ObjectMapper(); + String sUrl = deptInfo.string("NXRP_LINK_SRVC_URL") + "/intf/lntris/a01/register"; // create + String sJsonData = ""; // Json 파라미터 설정 try { @@ -343,7 +346,7 @@ public class NisIndivBean extends AbstractComponent { *
  • 그렇지 않으면 false
  • * */ - public String updateNisIndivA02TaskAplcn(NisIndivQuery req) { + public String updateNisIndivA02(NisIndivQuery req) { // 변수 선언 boolean rtnScs = false; // DB 처리 결과 String rtnMsg = "[F] "; // 처리 결과 메시지 @@ -378,14 +381,307 @@ public class NisIndivBean extends AbstractComponent { *
  • 그렇지 않으면 false
  • * */ - public String updateNisIndivA03TaskAplcn(NisIndivQuery req) { + public String updateNisIndivA03(NisIndivQuery req) { // 변수 선언 boolean rtnScs = false; // DB 처리 결과 String rtnMsg = "[F] "; // 처리 결과 메시지 - A03 nisIndivA03 = new A03(); + // 1. 검색 조건을 확인하여 발송상세 대상를 조회 + SndbQuery sndbQuery = new SndbQuery(); - rtnScs = nisA03Mapper.update(nisIndivA03); + if (req.getSndngDtlIds() != null) { + sndbQuery.setSndngDtlIds(req.getSndngDtlIds()); + } else if (req.getSndngId() != null) { + sndbQuery.setSndngId(req.getSndngId()); + } else { + rtnMsg = "[F] 작업 중 세외수입 대장 조회할 자료의 조회조건이 없습니다."; + return rtnMsg; + } + sndbQuery.setDelYN("N"); + + List sndngDtlIds = sndngDtlMapper.selectSndngTrgtDtlIds(sndbQuery); + + // 2. 사용자 정보 + DataObject userInfo = userBean.getUserInfo(currentUser().getId()); + + // 3. 부서 정보 + DataObject deptInfo = factionBean.getDeptInfo(new CmmnQuery().setDeptCd(userInfo.string("DEPT_CD"))); + + // 4. 단속 자료를 조회하여 세외수입 단속 연계 여부를 확인하여 "N"인 자료는 세외수입 연계 테이블에 등록한다. + for (int iLoop = 0; iLoop < sndngDtlIds.size(); iLoop++) { + // 발송 상세 상태 코드(SNDNG_DTL_STTS_CD) 가 세외수입부과(01)가 아니라면 다음 자료로.. + if (!sndngDtlIds.get(iLoop).string("SNDNG_DTL_STTS_CD").equals("01")) { + continue; + } + + // 세외수입 과태료대장에 연계할 단속 정보를 조회 + DataObject selectCrdnInfo = nisA01Mapper.selectCrdnInfo(sndngDtlIds.get(iLoop).string("CRDN_ID")); + + A03Rqst a03Rqst = new A03Rqst(); + + a03Rqst.setTaskSeCd(selectCrdnInfo.string("TASK_SE_CD")); // 업무 구분 코드 + a03Rqst.setSgbCd(userInfo.string("NSTT_CD")); // 자치단체코드 + a03Rqst.setLinkTrgtCd(userInfo.string("NSTT_CD") + selectCrdnInfo.string("TASK_SE_CD") + "01001"); // 연계대상코드 + a03Rqst.setLinkMngKey(sndngDtlIds.get(iLoop).string("LINK_MNG_KEY")); // 연계관리키 시군구코드 + 단속 ID + 년월일시분초 + + // 차세대 세외수입 연계 서비스 호출 - A01 과태료 대장 단속 정보 등록 + ObjectMapper mapper = new ObjectMapper(); + String sUrl = deptInfo.string("NXRP_LINK_SRVC_URL") + "/intf/lntris/a03/info"; // create + String sJsonData = ""; + + // Json 파라미터 설정 + try { + sJsonData = "{ " + + " \"taskSeCd\":" + "\"" + a03Rqst.getTaskSeCd() + "\"" + + ", \"msg\":" + mapper.writeValueAsString(a03Rqst) + + " }"; + } catch (IOException e) { + throw new RuntimeException("세외수입 과태료대장에 전송할 자료 생성중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 연계 서비스 호출 + String resultMsg = callHttpsJson(sUrl, "POST", sJsonData); +/* + String resultMsg = "{ " + + " \"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 { + JsonNode linkRst = mapper.readTree(resultMsg); + + // 개별시스템 연계결과코드(linkRstCd) - 000:정상, 100:검증오류(연계관리키 중복), 101:검증오류(등록 시 자료 null, 길이체크), 900:필수값누락 + if (linkRst.get("linkRstCd").asText().equals("000")) { + // resVo1 + JsonNode resVo1 = linkRst.findValue("resVo1"); +/* + // 이 설정을 통해 JSON의 모든 데이터를 파싱하는 것이 아닌 내가 필요로 하는 데이터, 즉 내가 필드로 선언한 데이터들만 파싱할 수 있다. + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + A03 a03 = mapper.readValue(resVo1.toString(), A03.class); +*/ + // 발송 대장(TB_SNDNG) - 발송 상세 수정 + SndngDtl sndngDtl = new SndngDtl(); + + sndngDtl.setSndngDtlId(sndngDtlIds.get(iLoop).string("SNDNG_DTL_ID")); // 발송 상세 ID + if (sndngDtlIds.get(iLoop).number("SNDNG_DTL_STTS_CD").intValue() > 3) { + sndngDtl.setSndngDtlSttsCd(sndngDtlIds.get(iLoop).string("SNDNG_DTL_STTS_CD")); // 발송 상태 코드 + } else { + sndngDtl.setSndngDtlSttsCd("02"); // 발송 상태 코드(FIM050) 02:가상계좌취득 + } + sndngDtl.setFyr(resVo1.get("rsveItem1").asText().substring(11, 15)); // 회계연도 + sndngDtl.setLevyNo(resVo1.get("rsveItem1").asText().substring(23, 29)); // 부과 번호 + sndngDtl.setFfnlgAmt(resVo1.get("finScrgAmt").asInt()); // 과태료 금액 + sndngDtl.setPcptax(resVo1.get("finScrgAmt").asInt() - resVo1.get("bfRdtAmt").asInt()); // 본세 + sndngDtl.setAdamt(0); // 가산금 + sndngDtl.setSumAmt(resVo1.get("finScrgAmt").asInt() - resVo1.get("bfRdtAmt").asInt()); // 합계 금액 + sndngDtl.setDudtAftrAmt(0); // 납기 후 금액 + sndngDtl.setTaxNo(resVo1.get("rsveItem1").asText()); // 납세 번호 + sndngDtl.setEpayno(resVo1.get("epayNo").asText()); // 전자납부번호 + sndngDtl.setBankNm(resVo1.get("vtlacBankNm1").asText()); // 은행 명 + sndngDtl.setVrActno(resVo1.get("vrActno1").asText()); // 가상 계좌번호 + sndngDtl.setBankNm2(resVo1.get("vtlacBankNm2").asText()); // 은행 명2 + sndngDtl.setVrActno2(resVo1.get("vrActno2").asText()); // 가상 계좌번호2 + sndngDtl.setBankNm3(resVo1.get("vtlacBankNm3").asText()); // 은행 명3 + sndngDtl.setVrActno3(resVo1.get("vrActno3").asText()); // 가상 계좌번호3 + sndngDtl.setBankNm4(resVo1.get("vtlacBankNm4").asText()); // 은행 명4 + sndngDtl.setVrActno4(resVo1.get("vrActno4").asText()); // 가상 계좌번호4 + sndngDtl.setBankNm5(resVo1.get("vtlacBankNm5").asText()); // 은행 명5 + sndngDtl.setVrActno5(resVo1.get("vrActno5").asText()); // 가상 계좌번호5 + sndngDtl.setBankNm6(resVo1.get("vtlacBankNm6").asText()); // 은행 명6 + sndngDtl.setVrActno6(resVo1.get("vrActno6").asText()); // 가상 계좌번호6 + sndngDtl.setBankNm7(resVo1.get("vtlacBankNm7").asText()); // 은행 명7 + sndngDtl.setVrActno7(resVo1.get("vrActno7").asText()); // 가상 계좌번호7 + sndngDtl.setBankNm8(resVo1.get("vtlacBankNm8").asText()); // 은행 명8 + sndngDtl.setVrActno8(resVo1.get("vrActno8").asText()); // 가상 계좌번호8 + sndngDtl.setBankNm9(resVo1.get("vtlacBankNm9").asText()); // 은행 명9 + sndngDtl.setVrActno9(resVo1.get("vrActno9").asText()); // 가상 계좌번호9 + sndngDtl.setBankNm10(resVo1.get("vtlacBankNm10").asText()); // 은행 명10 + sndngDtl.setVrActno10(resVo1.get("vrActno10").asText()); // 가상 계좌번호10 + sndngDtl.setBankNm(resVo1.get("vtlacBankNm11").asText()); // 은행 명11 + sndngDtl.setVrActno(resVo1.get("vrActno11").asText()); // 가상 계좌번호11 + sndngDtl.setBankNm2(resVo1.get("vtlacBankNm12").asText()); // 은행 명12 + sndngDtl.setVrActno2(resVo1.get("vrActno12").asText()); // 가상 계좌번호12 + sndngDtl.setBankNm3(resVo1.get("vtlacBankNm13").asText()); // 은행 명13 + sndngDtl.setVrActno3(resVo1.get("vrActno13").asText()); // 가상 계좌번호13 + sndngDtl.setBankNm4(resVo1.get("vtlacBankNm14").asText()); // 은행 명14 + sndngDtl.setVrActno4(resVo1.get("vrActno14").asText()); // 가상 계좌번호14 + sndngDtl.setBankNm5(resVo1.get("vtlacBankNm15").asText()); // 은행 명15 + sndngDtl.setVrActno5(resVo1.get("vrActno15").asText()); // 가상 계좌번호15 + sndngDtl.setBankNm6(resVo1.get("vtlacBankNm16").asText()); // 은행 명16 + sndngDtl.setVrActno6(resVo1.get("vrActno16").asText()); // 가상 계좌번호16 + sndngDtl.setBankNm7(resVo1.get("vtlacBankNm17").asText()); // 은행 명17 + sndngDtl.setVrActno7(resVo1.get("vrActno17").asText()); // 가상 계좌번호17 + sndngDtl.setBankNm8(resVo1.get("vtlacBankNm18").asText()); // 은행 명18 + sndngDtl.setVrActno8(resVo1.get("vrActno18").asText()); // 가상 계좌번호18 + sndngDtl.setBankNm9(resVo1.get("vtlacBankNm19").asText()); // 은행 명19 + sndngDtl.setVrActno9(resVo1.get("vrActno19").asText()); // 가상 계좌번호19 + sndngDtl.setBankNm10(resVo1.get("vtlacBankNm20").asText()); // 은행 명20 + sndngDtl.setVrActno10(resVo1.get("vrActno20").asText()); // 가상 계좌번호20 + + rtnScs = sndngDtlMapper.updateSndngDtlNxrpA03(sndngDtl); + if (!rtnScs) { + throw new RuntimeException("세외수입 연계 정보를 발송 상세에 수정하지 못했습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 수납 확인 + if (resVo1.get("rcvmtSeNm").asText().equals("수납")) { + sndngDtl.setSndngDtlSttsCd("09"); // 발송 상세 상태 코드(FIM050) 09:수납 + sndngDtl.setSndngRcvmtCd("1"); // 발송 수납 코드(FIM051) 1:수납 + rtnScs = sndngDtlMapper.updateSndngDtlNxrpA03(sndngDtl); + if (!rtnScs) { + throw new RuntimeException("세외수입 연계 정보를 발송 상세에 수정하지 못했습니다.");// 예외를 발생시켜서 DB Rollback + } + } + + // 부과테이블에 등록 +/* + fData.qryMatch_SetAll.ParamByName('MC_LVY_KEY' ).AsString := TaxElse_Parsing_A03.finScrgAcbKey; //과태료과징금대장키 + fData.qryMatch_SetAll.ParamByName('MC_ACC_YEAR' ).AsString := TaxElse_Parsing_A03.rcptYr; //접수연도 + fData.qryMatch_SetAll.ParamByName('MC_LVY_NO' ).AsString := copy(TaxElse_Parsing_A03.rsveItem1,24,6); //고지번호-예비항목1에서 추출 + + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO' ).AsString := TaxElse_Parsing_A03.vrActno1; + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO2' ).AsString := TaxElse_Parsing_A03.vrActno2; + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO3' ).AsString := TaxElse_Parsing_A03.vrActno3; + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO4' ).AsString := TaxElse_Parsing_A03.vrActno4; + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO5' ).AsString := TaxElse_Parsing_A03.vrActno5; + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO6' ).AsString := TaxElse_Parsing_A03.vrActno6; + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO7' ).AsString := TaxElse_Parsing_A03.vrActno7; + fData.qryMatch_SetAll.ParamByName('MC_ACCOUNT_NO8' ).AsString := TaxElse_Parsing_A03.vrActno8; + + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM' ).AsString := TaxElse_Parsing_A03.vtlacBankNm1; + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM2' ).AsString := TaxElse_Parsing_A03.vtlacBankNm2; + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM3' ).AsString := TaxElse_Parsing_A03.vtlacBankNm3; + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM4' ).AsString := TaxElse_Parsing_A03.vtlacBankNm4; + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM5' ).AsString := TaxElse_Parsing_A03.vtlacBankNm5; + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM6' ).AsString := TaxElse_Parsing_A03.vtlacBankNm6; + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM7' ).AsString := TaxElse_Parsing_A03.vtlacBankNm7; + fData.qryMatch_SetAll.ParamByName('MC_BANK_NM8' ).AsString := TaxElse_Parsing_A03.vtlacBankNm8; + + fData.qryMatch_SetAll.ParamByName('MC_ERC_NO').AsString := TaxElse_Parsing_A03.epayNo; //전자납부번호 + + fData.qryMatch_SetAll.ParamByName('MC_KEUM_T').AsString := IntToStr(StrToInt(TaxElse_Parsing_A03.finScrgAmt) - StrToInt(TaxElse_Parsing_A03.bfRdtAmt)); + fData.qryMatch_SetAll.ParamByName('MC_KEUM_A').AsString := '0'; + fData.qryMatch_SetAll.ParamByName('MC_KEUM_B').AsString := IntToStr(StrToInt(TaxElse_Parsing_A03.finScrgAmt) - StrToInt(TaxElse_Parsing_A03.bfRdtAmt)); + + fData.qryMatch_SetAll.ParamByName('MC_EDITDT').AsString := FormatDateTime('yyyymmddhhnnss', now); + fData.qryMatch_SetAll.ParamByName('MC_STATE' ).AsString := '2'; //정보등록 완료 + fData.qryMatch_SetAll.ParamByName('MC_MMCODE').AsString := FieldByName('MM_CODE').AsString; + fData.qryMatch_SetAll.ExecSQL; +*/ + + + } + } catch (IOException e) { + throw new RuntimeException("오류."); // 예외를 발생시켜서 DB Rollback + } + } + + rtnMsg = "[S] 작업이 정상 처리 되었습니다."; return rtnMsg; } diff --git a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivServiceBean.java b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivServiceBean.java index 0e045df7..b993be3f 100644 --- a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivServiceBean.java +++ b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivServiceBean.java @@ -55,8 +55,8 @@ public class NisIndivServiceBean extends AbstractServiceBean implements NisIndiv } @Override - public String updateNisIndivA02TaskAplcn(NisIndivQuery req) { - return nisIndivBean.updateNisIndivA02TaskAplcn(req); + public String updateNisIndivA02(NisIndivQuery req) { + return nisIndivBean.updateNisIndivA02(req); } @Override @@ -70,8 +70,8 @@ public class NisIndivServiceBean extends AbstractServiceBean implements NisIndiv } @Override - public String updateNisIndivA03TaskAplcn(NisIndivQuery req) { - return nisIndivBean.updateNisIndivA03TaskAplcn(req); + public String updateNisIndivA03(NisIndivQuery req) { + return nisIndivBean.updateNisIndivA03(req); } } diff --git a/src/main/java/cokr/xit/fims/nxrp/web/Nxrp01Controller.java b/src/main/java/cokr/xit/fims/nxrp/web/Nxrp01Controller.java index 3212eeae..48cc10d7 100644 --- a/src/main/java/cokr/xit/fims/nxrp/web/Nxrp01Controller.java +++ b/src/main/java/cokr/xit/fims/nxrp/web/Nxrp01Controller.java @@ -29,13 +29,12 @@ public class Nxrp01Controller extends AbstractController { public class METHOD_URL { public static final String - createIndividualA01 = "/010/createIndivA01.do" // 세외수입 과태료 대장 단속 정보 등록 - , updateIndividualA02TaskApplication = "/010/updateIndivA02TaskAplcn.do" // 세외수입 과태료 대장 등록 자료 상세 조회 - , updateIndividualA03TaskApplication = "/010/updateIndivA03TaskAplcn.do" // 세외수입 과태료 대장 등록 자료 상세 조회 + createIndividualA01 = "/010/createIndivA01.do" // 과태료 대장 단속 정보 등록(실시간) + , updateIndividualA02 = "/010/updateIndivA02.do" // 과태료 대장 등록 자료 일괄 조회(전일자 변동자료) + , updateIndividualA03 = "/010/updateIndivA03.do" // 과태료 대장 등록 자료 상세 조회(실시간) ; } - /**세외수입 매칭 내역 서비스*/ @Resource(name = "nisIndivService") private NisIndivService nisIndivService; @@ -72,10 +71,10 @@ public class Nxrp01Controller extends AbstractController { * } */ @Task - @RequestMapping(name="차세대 세외수입 과태료 대장 등록 자료 일괄 조회", value=METHOD_URL.updateIndividualA02TaskApplication) - public ModelAndView updateIndividualA02TaskApplication(NisIndivQuery req) { + @RequestMapping(name="차세대 세외수입 과태료 대장 등록 자료 일괄 조회", value=METHOD_URL.updateIndividualA02) + public ModelAndView updateIndividualA02(NisIndivQuery req) { boolean saved = false; - String rtnMsg = nisIndivService.updateNisIndivA02TaskAplcn(req); + String rtnMsg = nisIndivService.updateNisIndivA02(req); if (rtnMsg.contains("[S]")) { saved = true; @@ -96,10 +95,10 @@ public class Nxrp01Controller extends AbstractController { * } */ @Task - @RequestMapping(name="차세대 세외수입 과태료 대장 등록 자료 상세 조회", value=METHOD_URL.updateIndividualA03TaskApplication) - public ModelAndView updateIndividualA03TaskApplication(NisIndivQuery req) { + @RequestMapping(name="차세대 세외수입 과태료 대장 등록 자료 상세 조회", value=METHOD_URL.updateIndividualA03) + public ModelAndView updateIndividualA03(NisIndivQuery req) { boolean saved = false; - String rtnMsg = nisIndivService.updateNisIndivA03TaskAplcn(req); + String rtnMsg = nisIndivService.updateNisIndivA03(req); if (rtnMsg.contains("[S]")) { saved = true; diff --git a/src/main/java/cokr/xit/fims/sndb/dao/SndngDtlMapper.java b/src/main/java/cokr/xit/fims/sndb/dao/SndngDtlMapper.java index 058716b4..84510e0a 100644 --- a/src/main/java/cokr/xit/fims/sndb/dao/SndngDtlMapper.java +++ b/src/main/java/cokr/xit/fims/sndb/dao/SndngDtlMapper.java @@ -115,6 +115,32 @@ public interface SndngDtlMapper extends AbstractMapper { return sndngDtl != null && updateSndngDtlSttsCd(params().set("sndngDtl", sndngDtl)) == 1; } + /**차세대 세외수입 연계(A03)를 통해 발송 상세 정보를 수정한다. + * @param params 파라미터 + * + * @return 저장된 정보수 + */ + int updateSndngDtlNxrpA03(Map params); + + default boolean updateSndngDtlNxrpA03(SndngDtl sndngDtl) { + return sndngDtl != null && updateSndngDtlNxrpA03(params().set("sndngDtl", sndngDtl)) == 1; + } + + /**발송 상세 정보의 발송 수납 코드를 수정한다. + * @param params 파라미터 + *
    • "sndngDtl" - 발송 상세
    • + *
    • "currentUser" - 현재 접속한 사용자
    • + *
    + * @return 저장된 정보수 + */ + int updateSndngDtlRcvmtCd(Map params); + + default boolean updateSndngDtlRcvmtCd(SndngDtl sndngDtl) { + return sndngDtl != null && updateSndngDtlRcvmtCd(params().set("sndngDtl", sndngDtl)) == 1; + } + /**전자우편 발송상세 내역을 수정한다. * @param params 파라미터 *
    • "sndngDtl" - 발송 상세
    • diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index b7fe0d6a..f4486e62 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -530,8 +530,8 @@ public class SndngBean extends AbstractComponent { sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소 sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도 sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호 - sndngDtl.setLevyYmd(crdnPayerInfo.string("LEVY_YMD")); // 부과 일자 - sndngDtl.setDudtYmd(crdnPayerInfo.string("DUDT_YMD")); // 납기 일자 + sndngDtl.setLevyYmd(sndng.getSndngYmd()); // 부과 일자 + sndngDtl.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자 sndngDtl.setFfnlgAmt(crdnPayerInfo.number("FFNLG_AMT").intValue()); // 과태료 금액 sndngDtl.setPcptax(crdnPayerInfo.number("PCPTAX").intValue()); // 본세 : 부과본세 - 수납본세 - 감액본세 sndngDtl.setAdamt(crdnPayerInfo.number("ADAMT").intValue()); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금 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 54fa2723..4da0232c 100644 --- a/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/sndb/sndngDtl-mapper.xml @@ -281,6 +281,7 @@