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 파라미터
+ * "sndngDtl" - 발송 상세
+ * "currentUser" - 현재 접속한 사용자
+ *
+ * @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 @@
/* 발송 ID로 발송상세 ID를 가져오기(sndngDtlMapper.selectSndngTrgtDtlIds) */
SELECT SNDNG_DTL_ID
, CRDN_ID
+ , LINK_MNG_KEY
, SNDNG_DTL_STTS_CD
FROM TB_SNDNG_DTL
@@ -704,6 +705,76 @@
AND DEL_YN = 'N'
+ /* 발송 상세 수정(sndngDtlMapper.updateSndngDtlNxrpA03) */
+ UPDATE TB_SNDNG_DTL
+ SET BFR_SNDNG_DTL_STTS_CD= SNDNG_DTL_STTS_CD
+ , SNDNG_DTL_STTS_CD = #{sndngDtl.sndngDtlSttsCd}
+ , FYR = #{sndngDtl.fyr}
+ , LEVY_NO = #{sndngDtl.levyNo}
+ , FFNLG_AMT = #{sndngDtl.ffnlgAmt}
+ , PCPTAX = #{sndngDtl.pcptax}
+ , ADAMT = #{sndngDtl.adamt}
+ , SUM_AMT = #{sndngDtl.sumAmt}
+ , DUDT_AFTR_AMT = #{sndngDtl.dudtAftrAmt}
+ , TAX_NO = #{sndngDtl.taxNo}
+ , EPAYNO = #{sndngDtl.epayno}
+ , BANK_NM = #{sndngDtl.bankNm}
+ , VR_ACTNO = #{sndngDtl.vrActno}
+ , BANK_NM2 = #{sndngDtl.bankNm2}
+ , VR_ACTNO2 = #{sndngDtl.vrActno2}
+ , BANK_NM3 = #{sndngDtl.bankNm3}
+ , VR_ACTNO3 = #{sndngDtl.vrActno3}
+ , BANK_NM4 = #{sndngDtl.bankNm4}
+ , VR_ACTNO4 = #{sndngDtl.vrActno4}
+ , BANK_NM5 = #{sndngDtl.bankNm5}
+ , VR_ACTNO5 = #{sndngDtl.vrActno5}
+ , BANK_NM6 = #{sndngDtl.bankNm6}
+ , VR_ACTNO6 = #{sndngDtl.vrActno6}
+ , BANK_NM7 = #{sndngDtl.bankNm7}
+ , VR_ACTNO7 = #{sndngDtl.vrActno7}
+ , BANK_NM8 = #{sndngDtl.bankNm8}
+ , VR_ACTNO8 = #{sndngDtl.vrActno8}
+ , BANK_NM9 = #{sndngDtl.bankNm9}
+ , VR_ACTNO9 = #{sndngDtl.vrActno9}
+ , BANK_NM10 = #{sndngDtl.bankNm10}
+ , VR_ACTNO10 = #{sndngDtl.vrActno10}
+ , BANK_NM11 = #{sndngDtl.bankNm11}
+ , VR_ACTNO11 = #{sndngDtl.vrActno11}
+ , BANK_NM12 = #{sndngDtl.bankNm12}
+ , VR_ACTNO12 = #{sndngDtl.vrActno12}
+ , BANK_NM13 = #{sndngDtl.bankNm13}
+ , VR_ACTNO13 = #{sndngDtl.vrActno13}
+ , BANK_NM14 = #{sndngDtl.bankNm14}
+ , VR_ACTNO14 = #{sndngDtl.vrActno14}
+ , BANK_NM15 = #{sndngDtl.bankNm15}
+ , VR_ACTNO15 = #{sndngDtl.vrActno15}
+ , BANK_NM16 = #{sndngDtl.bankNm16}
+ , VR_ACTNO16 = #{sndngDtl.vrActno16}
+ , BANK_NM17 = #{sndngDtl.bankNm17}
+ , VR_ACTNO17 = #{sndngDtl.vrActno17}
+ , BANK_NM18 = #{sndngDtl.bankNm18}
+ , VR_ACTNO18 = #{sndngDtl.vrActno18}
+ , BANK_NM19 = #{sndngDtl.bankNm19}
+ , VR_ACTNO19 = #{sndngDtl.vrActno19}
+ , BANK_NM20 = #{sndngDtl.bankNm20}
+ , VR_ACTNO20 = #{sndngDtl.vrActno20}
+ , MDFCN_DT =
+ , MDFR = #{sndngDtl.modifiedBy}
+ WHERE SNDNG_DTL_ID = #{sndngDtl.sndngDtlId}
+ AND DEL_YN = 'N'
+
+
+ /* 발송 상세 발송 수납 코드 수정(sndngDtlMapper.updateSndngDtlRcvmtCd) */
+ UPDATE TB_SNDNG_DTL
+ SET BFR_SNDNG_DTL_STTS_CD= SNDNG_DTL_STTS_CD
+ , SNDNG_DTL_STTS_CD = #{sndngDtl.sndngDtlSttsCd}
+ , SNDNG_RCVMT_CD = #{sndngDtl.sndngRcvmtCd}
+ , MDFCN_DT =
+ , MDFR = #{sndngDtl.modifiedBy}
+ WHERE SNDNG_DTL_ID = #{sndngDtl.sndngDtlId}
+ AND DEL_YN = 'N'
+
+
/* 전자우편 발송상세 내역 수정(sndngDtlMapper.updateSndngDtlEPost) */
UPDATE TB_SNDNG_DTL
SET CON_KEY = #{sndngDtl.conKey}
diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp
index 73f2a9fe..cf5babbb 100644
--- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp
+++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01080-info.jsp
@@ -298,7 +298,7 @@
});
}
- // 과태료 대장 단속 정보 등록
+ // 세외수입 과태료 대장 단속 정보 등록
$P.createNxrpLinkA01 = (params) => {
if (!params) return;
@@ -317,6 +317,25 @@
});
}
+ // 세외수입 과태료 대장 조회 및 자료 수정
+ $P.updateNxrpLinkA03 = (params) => {
+ if (!params) return;
+
+ ajax.post({
+ url : wctx.url("/" + params.taskSeCd + "/nxrp/nxrp01/010/updateIndivA03.do")
+ , data : params || {}
+ , success : resp => {
+ // S 또는 F 를 버튼 title 로 변경하여 메시지 출력
+ let showMessage = resp.rtnMsg.replace(/[S]|[F]/g, params.title);
+
+ dialog.alert({
+ content : showMessage
+ , onOK : () => { $P.refreshList(); } // 자료 재조회
+ });
+ }
+ });
+ }
+
// 우편통합 발송
$P.callbackDate = (obj) => {
let params = {
@@ -417,7 +436,24 @@
// 세외수입 과태료 대장 등록 자료 상세 조회 버튼 이벤트
$P.fnUpdateNxrpLinkA03 = (title) => {
+ // validate 확인
+ if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return;
+
+ // main에서 받아온 조건(Query)을 파라미터로 넘긴다.
+ dialog.alert({
+ content : "세외수입 과태료 대장을 조회하시겠습니까?"
+ , onOK : () => {
+ let params = {
+ callPurpose : "update"
+ , title : title // 타이틀
+ , taskSeCd : $P.control.dataset.getValue("TASK_SE_CD") // 업무 구분 코드
+ , sndngId : $P.control.dataset.getValue("SNDNG_ID") // 발송 ID
+ , sndngYmd : $P.control.dataset.getValue("SNDNG_YMD") // 발송 일자
+ };
+ $P.updateNxrpLinkA03(params);
+ }
+ });
}
// 우편통합발송 버튼 이벤트
@@ -444,7 +480,7 @@
if (!inputDateComparison($("#sndngYmd").val(), $("#sndngEndYmd").val())) {
return;
}
-
+
$P.callbackDate({
"sndngYmd" : $("#sndngYmd").val(),
"sndngEndYmd" : $("#sndngEndYmd").val(),
@@ -452,7 +488,7 @@
});
}
});
-
+
}
// 사전통지출력 버튼 이벤트