From 4815cfa15b883ef906bdd9c553ef0c7b08b3aef4 Mon Sep 17 00:00:00 2001
From: mjkhan21
Date: Thu, 8 May 2025 16:42:00 +0900
Subject: [PATCH] =?UTF-8?q?=EB=82=A9=EB=B6=80=EC=9E=90=20=EC=A3=BC?=
=?UTF-8?q?=EC=86=8C=20=EC=84=A4=EC=A0=95=20=EC=88=98=EC=A0=95,=20?=
=?UTF-8?q?=EB=B0=9C=EC=86=A1=ED=98=84=ED=99=A9=20=EC=88=98=EC=A0=95,=20?=
=?UTF-8?q?=EC=84=9C=EC=9A=B8=20=EC=84=B8=EC=99=B8=EC=88=98=EC=9E=85=20?=
=?UTF-8?q?=EC=97=B0=EA=B3=84(=EC=A7=84=ED=96=89=20=EC=A4=91)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../service/bean/CrdnPayerAddrHstryBean.java | 21 +-
.../xit/fims/nxrp/service/bean/SnisBean.java | 217 ++++++++---------
.../fims/payer/service/bean/PayerBean.java | 54 ++---
.../java/cokr/xit/fims/sndb/SndngDtl.java | 79 ++++++
.../xit/fims/sndb/service/bean/SndngBean.java | 226 +++---------------
.../xit/fims/sndb/web/Sndb01Controller.java | 7 +-
.../sql/mapper/fims/payerAddr-mapper.xml | 36 +--
7 files changed, 251 insertions(+), 389 deletions(-)
diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java
index 79ef729d..a96c398d 100644
--- a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java
+++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerAddrHstryBean.java
@@ -25,7 +25,6 @@ import cokr.xit.foundation.data.DataObject;
*/
@Component("crdnPayerAddrHstryBean")
public class CrdnPayerAddrHstryBean extends AbstractBean {
-
/** 단속 납부자 이력 정보 DAO */
@Resource(name = "crdnPayerAddrHstryMapper")
private CrdnPayerAddrHstryMapper crdnPayerAddrHstryMapper;
@@ -54,12 +53,7 @@ public class CrdnPayerAddrHstryBean extends AbstractBean {
*
*/
public boolean create(CrdnPayerAddrHstry crdnPayerAddrHstry) {
- int rtnNocs = crdnPayerAddrHstryMapper.insertCrdnPayerAddrHstry(crdnPayerAddrHstry);
- if (rtnNocs != 1) {
- return false;
- }
-
- return true;
+ return crdnPayerAddrHstryMapper.insertCrdnPayerAddrHstry(crdnPayerAddrHstry) == 1;
}
public int createCrdnPayerAddrHstry(CrdnPayerAddrHstry crdnPayerAddrHstry) {
@@ -85,21 +79,16 @@ public class CrdnPayerAddrHstryBean extends AbstractBean {
*
*/
public boolean createHstryUpdateCrdnPayerAddr(CrdnPayerAddrHstry crdnPayerAddrHstry) {
- int rtnNocs = -1; // 처리 결과 건수
-
// 단속 납부자 주소 이력(TB_CRDN_PAYER_ADDR_HSTRY) 대장을 등록한다.
- rtnNocs = crdnPayerAddrHstryMapper.insertCrdnPayerAddrHstry(crdnPayerAddrHstry);
- if (rtnNocs != 1) {
+ int rtnNocs = crdnPayerAddrHstryMapper.insertCrdnPayerAddrHstry(crdnPayerAddrHstry);
+ if (rtnNocs != 1)
throw new RuntimeException("납부자주소 이력 대장 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
// 단속 대장(TB_CRDN)을 수정한다.
rtnNocs = updateCrdnPayerAddr(crdnPayerAddrHstry);
- if (rtnNocs != 1) {
+ if (rtnNocs != 1)
throw new RuntimeException("단속 대장에 납부자, 주소 정보 수정 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
- }
return true;
}
-
-}
+}
\ 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 99d82418..4540ebe4 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
@@ -1,7 +1,5 @@
package cokr.xit.fims.nxrp.service.bean;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -14,24 +12,15 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Component;
-import cokr.xit.base.code.service.bean.CodeBean;
-import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.base.user.service.bean.UserBean;
-import cokr.xit.fims.base.service.bean.OgdpBean;
-import cokr.xit.fims.cmmn.service.bean.StngBean;
import cokr.xit.fims.crdn.Crdn;
-import cokr.xit.fims.crdn.dao.CrdnInfoMapper;
-import cokr.xit.fims.crdn.dao.CrdnStngMapper;
import cokr.xit.fims.crdn.dao.CrdnUpdtMapper;
import cokr.xit.fims.levy.Levy;
import cokr.xit.fims.levy.LevyQuery;
import cokr.xit.fims.levy.dao.LevyMapper;
import cokr.xit.fims.mngt.Vltn;
-import cokr.xit.fims.mngt.dao.TaskMapper;
import cokr.xit.fims.nxrp.NisIndivQuery;
import cokr.xit.fims.nxrp.dao.NisA01Mapper;
-import cokr.xit.fims.nxrp.dao.NisA02Mapper;
-import cokr.xit.fims.nxrp.dao.NisA03Mapper;
import cokr.xit.fims.sndb.SndbQuery;
import cokr.xit.fims.sndb.SndngDtl;
import cokr.xit.fims.sndb.dao.SndngDtlMapper;
@@ -39,7 +28,6 @@ import cokr.xit.foundation.Downloadable;
import cokr.xit.foundation.UserInfo;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
-import cokr.xit.foundation.data.JSON;
import cokr.xit.interfaces.sntris.buga.Bu04BugaWSDTO;
import cokr.xit.interfaces.sntris.fileoffer.Ye22InputDTO;
import cokr.xit.interfaces.sntris.fileoffer.Ye22NoticeInfoDTO;
@@ -59,136 +47,71 @@ import cokr.xit.interfaces.sntris.service.bean.SntrisBean;
*/
@Component("snisBean")
public class SnisBean extends AbstractBean {
- private JSON json = new JSON();
@Resource(name = "sntrisBean")
private SntrisBean sntrisBean;
/** 발송 상세 정보 DAO */
@Resource(name = "sndngDtlMapper")
private SndngDtlMapper sndngDtlMapper;
-
/** 과태료 대장 단속 정보 등록 정보 DAO */
@Resource(name = "nisA01Mapper")
private NisA01Mapper nisA01Mapper;
-
- /** 과태료 대장 등록 자료 일괄 조회 정보 DAO */
- @Resource(name = "nisA02Mapper")
- private NisA02Mapper nisA02Mapper;
-
- /** 과태료 대장 등록 자료 상세 조회 정보 DAO */
- @Resource(name = "nisA03Mapper")
- private NisA03Mapper nisA03Mapper;
-
/** 단속 대장 수정 정보 DAO */
@Resource(name = "crdnUpdtMapper")
private CrdnUpdtMapper crdnUpdtMapper;
-
- @Resource(name="crdnInfoMapper")
- private CrdnInfoMapper crdnInfoMapper;
-
- @Resource(name="crdnStngMapper")
- private CrdnStngMapper crdnStngMapper;
-
- @Resource(name="taskMapper")
- private TaskMapper taskMapper;
-
- @Resource(name="fileBean")
- private FileBean fileBean;
-
/** 사용자 정보 DAO */
@Resource(name="userBean")
- protected UserBean userBean;
-
- /** 코드 정보 DAO */
- @Resource(name="codeBean")
- protected CodeBean codeBean;
-
- /** 설정 정보 DAO */
- @Resource(name="stngBean")
- protected StngBean stngBean;
-
- /** 부서 정보 DAO */
- @Resource(name = "ogdpBean")
- private OgdpBean ogdpBean;
+ private UserBean userBean;
@Resource(name = "levyMapper")
private LevyMapper levyMapper;
- /**지정한 조건에 따라 과태료 대장 단속 정보 등록 목록을 조회하여 반환한다.
- * @param req 과태료 대장 단속 정보 등록 조회 조건
- * @return 과태료 대장 단속 정보 등록 목록
- */
- public List getNisIndivA01List(NisIndivQuery req) {
- return nisA01Mapper.selectNisIndivA01List(req);
- }
-
- /**지정한 조건에 따라 과태료 대장 단속 정보 등록 객체들을 반환한다.
- * @param req 과태료 대장 단속 정보 등록 조회 조건
- * @return 과태료 대장 단속 정보 등록 객체 목록
- */
- public List getNisIndivA01s(NisIndivQuery req) {
- return nisA01Mapper.selectNisIndivA01s(req);
- }
-
/**발송대상 사전통보를 서울 세외수입 시스템의 과태료대장에 등록한다.
* @param req 발송대상 사전통보 조회조건
*/
public void registerPreNotices(SndbQuery req) {
// 과태료대장 등록을 위한 사전통보 추출
Map prenotices = getPreNotices(req);
-
// 발송대상 사전통보를 과태료대장에 등록
- Ye22InputDTO input = new Ye22InputDTO();
- input.setSystemGubun(req.getTaskSeCd());
- Map notices = sntrisBean.registerPreNotices(input, prenotices); // 발송대상 ID별 과태료 등록 응답
+ Map results = sntrisBean.registerPreNotices(prenotices); // 발송대상 ID별 과태료 등록 응답
// 로컬 발송대상 상세 업데이트
- Set ids = notices.keySet(); // 발송대상 ID
+ Set ids = results.keySet(); // 발송대상 상세ID
List details = sndngDtlMapper.selectSndngDetails(req.setSndngDtlIds(ids.toArray(new String[ids.size()]))).stream()
.map(detail -> {
- Ye22NoticeInfoDTO notice = notices.get(detail.getSndngDtlId());
- return update(notice, detail);
+ Bu18WebReturnInfoDTO returned = results.get(detail.getSndngDtlId());
+ return update(returned, detail);
})
.filter(detail -> detail != null)
.toList();
sndngDtlMapper.updateSndngDtls(details);
// 부과정보 업데이트
- Map byCrdnIds = details.stream().collect(Collectors.toMap( // 단속 ID별 과태료 등록 응답
+ Map byCrdnIds = details.stream().collect(Collectors.toMap( // 단속 ID별 과태료 등록 응답
detail -> detail.getCrdnId(),
detail -> {
String sndngDtlId = detail.getSndngDtlId();
- return notices.get(sndngDtlId);
+ return results.get(sndngDtlId);
}
));
// 업데이트를 위한 부과정보 가져오기
ids = details.stream().map(SndngDtl::getCrdnId).collect(Collectors.toSet()); // 발송대상의 단속 ID
List levies = levyMapper.selectLevys(new LevyQuery().setCrdnIds(ids.toArray(new String[ids.size()]))).stream()
.map(levy -> {
- Ye22NoticeInfoDTO notice = byCrdnIds.get(levy.getCrdnId());
- return update(notice, levy);
+ Bu18WebReturnInfoDTO returned = byCrdnIds.get(levy.getCrdnId());
+ return update(returned, levy);
})
.filter(levy -> levy != null)
.toList();
levyMapper.updateLevies(levies);
-
}
- private SndngDtl update(Ye22NoticeInfoDTO notice, SndngDtl sndngDtl) {
- if (notice == null) return null;
-
- sndngDtl.setLinkMngKey(Long.toString(notice.getBuAk())); // 과태료 키
- sndngDtl.setTaxNo(notice.getTaxNo()); // 과세번호
- sndngDtl.setLevyYmd(notice.getTaxYmd()); // 과세일자
-
- sndngDtl.setEpayno(notice.getEnapbuNo()); // 전자납부번호
-
- sndngDtl.setPcptax((int)notice.getTaxAmt()); // 본세
- sndngDtl.setAdamt((int)notice.getGasanAmt()); // 가산금
- sndngDtl.setDudtYmd(notice.getNapgiYmd()); // 납기일자
- sndngDtl.setDudtAftrYmd(notice.getNapgiAftYmd()); // 납기후 일자
-
- setBankAccounts(notice.accountGetters(), sndngDtl.bankAccountSetters()); // 은행 / 계좌번호
+ private SndngDtl update(Bu18WebReturnInfoDTO returned, SndngDtl sndngDtl) {
+ if (returned == null) return null;
+ sndngDtl.setLinkMngKey(returned.getNoticeAk()); // 연계 키 <- 과태료대장 키
+ sndngDtl.setEpayno(returned.getEnapbuNo()); // 전자납부번호
+ setBankAccounts(returned.accountGetters(), sndngDtl.bankAccountSetters()); // 은행 / 계좌번호
sndngDtl.setSndngDtlSttsCd("01");
+
return sndngDtl;
}
@@ -200,28 +123,17 @@ public class SnisBean extends AbstractBean {
});
}
- private Levy update(Ye22NoticeInfoDTO notice, Levy levy) {
- if (notice == null) return null;
+ private Levy update(Bu18WebReturnInfoDTO returned, Levy levy) {
+ if (returned == null) return null;
- levy.setNxrpLevyKey(Long.toString(notice.getBuAk())); // 과태료대장 키
- levy.setEpayno(notice.getEnapbuNo()); // 전자납부번호
-
- levy.setLevyYmd(notice.getTaxYmd()); //부과일자
- levy.setTxitmCd(notice.getSemokCd()); // 세목코드
- String napgiYmd = notice.getNapgiYmd();
- levy.setFrstDudtYmd(napgiYmd); // 최초 납기일자
- levy.setDudtYmd(napgiYmd); // 납기일자
- levy.setDudtAftrYmd(notice.getNapgiAftYmd()); // 납기후일자
-
- levy.setLevyPcptax((int)notice.getTaxAmt()); // 부과본세
- levy.setLevyAdamt((int)notice.getGasanAmt()); //부과가산금
-
- setBankAccounts(notice.accountGetters(), levy.bankAccountSetters()); // 은행 / 계좌번호
+ levy.setNxrpLevyKey(returned.getNoticeAk()); // 세외수입부과 키 <- 과태료대장 키
+ levy.setEpayno(returned.getEnapbuNo()); // 전자납부번호
+ setBankAccounts(returned.accountGetters(), levy.bankAccountSetters()); // 은행 / 계좌번호
return levy;
}
- /**발송대상 ID별 사전통지를 반환한다.
+ /**발송대상 상세ID별 사전통지를 반환한다.
* @param req 발송대상 사전통지 조회조건
* @return 발송대상 ID별 사전통지
*/
@@ -247,7 +159,7 @@ public class SnisBean extends AbstractBean {
});
// 발송대상 ID별 사전통지 생성
- String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+ String now = dateFormats.format("yyyyMMddHHmmss", System.currentTimeMillis());
UserInfo currentUser = currentUser();
DataObject userInfo = userBean.getUserInfo(currentUser.getId());
return targets.stream().collect(Collectors.toMap(
@@ -270,17 +182,16 @@ public class SnisBean extends AbstractBean {
// 2. 세외수입 과태료대장에 연계할 단속 정보를 조회
DataObject crdnInfo = nisA01Mapper.selectCrdnInfo(sndngDtl.getCrdnId());
- String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+ 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
-// uptSndngDtl.setLinkTrgtCd(resVo1.get("linkTrgtCd").asText()); // 연계 대상 코드
- uptSndngDtl.setLinkMngKey(result.getNoticeAk()); // 연계 관리 키
+ uptSndngDtl.setSndngDtlSttsCd("01"); // 발송 상태 코드(FIM050) 01:세외수입부과
+ uptSndngDtl.setSndngDtlId(sndngDtl.getSndngDtlId()); // 발송 상세 ID
+ update(result, uptSndngDtl);
return uptSndngDtl;
} else
return null;
@@ -291,7 +202,6 @@ public class SnisBean extends AbstractBean {
private Bu18WebPreNoticeDTO createPreNotice(UserInfo currentUser, String now, DataObject userInfo, DataObject crdnInfo) {
String sggCd = crdnInfo.string("SGG_CD");
- String taskSeCd = crdnInfo.string("TASK_SE_CD");
String linkMngKey = sggCd + crdnInfo.string("CRDN_ID") + '_' + now;
Bu18WebPreNoticeDTO prenotice = new Bu18WebPreNoticeDTO();
@@ -335,7 +245,7 @@ public class SnisBean extends AbstractBean {
prenotice.setSendYmd(crdnInfo.string("ADVNTCE_BGNG_YMD")); // 사전통지일
prenotice.setSubmitYmd(crdnInfo.string("ADVNTCE_DUDT_YMD")); // 의견제출기한
- prenotice.setSysGubun(taskSeCd); // 시스템 구분
+ prenotice.setSysGubun("PZMS"); // 시스템 구분
prenotice.setLastWorkId(currentUser.getAccount()); // 작업자 ID
prenotice.setLastWorkNm(currentUser.getName()); // 작업자 이름
prenotice.setWorkYmd(now); // 작업일자
@@ -343,6 +253,79 @@ public class SnisBean extends AbstractBean {
return prenotice;
}
+ /**주어진 조건으로 서울 세외수입에 연계하여 과태료대장을 조회한다.
+ * @param input 조회조건
+ * @return 과태료대장 조회결과
+ */
+ public List getPreNoticeList(Ye22InputDTO input) {
+ List prenotices = sntrisBean.getPreNoticeList(input);
+ update(prenotices);
+ return prenotices;
+ }
+
+ public void update(List notices) {
+ if (isEmpty(notices)) return;
+
+ Map noticeMap = notices.stream().collect(Collectors.toMap(
+ notice -> Long.toString(notice.getBuAk()),
+ notice -> notice
+ ));
+ List nxrpLevyKeys = noticeMap.keySet().stream().toList();
+ List levies = levyMapper.selectLevys(new LevyQuery());
+ levies.forEach(levy -> {
+ Ye22NoticeInfoDTO notice = noticeMap.get(levy.getNxrpLevyKey());
+ if (notice == null) return;
+
+ levy.setSggCd(notice.getSiguCd()); // 시군구 코드
+ levy.setDeptCd(notice.getBuseoCd()); // 부서코드
+
+ levy.setTxitmCd(notice.getSemokCd()); // 세목코드
+ levy.setLevyNo(notice.getTaxNo()); // 부과번호
+ levy.setLevyYmd(notice.getTaxYmd()); // 부과일자
+ levy.setDudtYmd(notice.getNapgiYmd()); // 납기일자
+
+ levy.setLevyPcptax((int)notice.getTaxAmt()); // 부과본세 <- 과세금액
+ levy.setLevyAdamt((int)notice.getGasanAmt()); // 부과가산금
+ levy.setLastAmt((int)notice.getFinalAmt()); // 최종금액
+ levy.setDudtAftrAmt(null);
+
+ levy.setDudtAftrYmd(notice.getNapgiAftYmd()); // 납기후일자
+ levy.setTxtnThing(notice.getMulNm()); // 물건이름
+
+ levy.setSzrYmd(notice.getApYmd()); // 압류일자
+ levy.setEpayno(notice.getEnapbuNo()); // 전자납부번호
+
+ setBankAccounts(notice.accountGetters(), levy.bankAccountSetters()); // 은행 / 계좌번호
+ });
+ int affected = levyMapper.updateLevies(levies);
+
+ List details = sndngDtlMapper.selectSndngDetails(new SndbQuery());
+ details.forEach(detail -> {
+ Ye22NoticeInfoDTO notice = noticeMap.get(detail.getLinkMngKey());
+ if (notice == null) return;
+
+ detail.setSggCd(notice.getSiguCd()); // 시군구 코드
+ detail.setEpayno(notice.getEnapbuNo()); // 전자납부번호
+ detail.setVhrno(notice.getMulNm()); // 차량번호
+
+ detail.setLevyNo(notice.getTaxNo()); // 부과번호
+ detail.setLevyYmd(notice.getTaxYmd()); // 부과일자
+
+ detail.setDudtYmd(notice.getNapgiYmd()); // 납기일자
+ detail.setDudtAftrYmd(notice.getNapgiAftYmd()); // 납기후일자
+
+ detail.setPcptax((int)notice.getTaxAmt()); // 본세
+ detail.setAdamt((int)notice.getGasanAmt()); // 가산금
+ detail.setLastAmt((int)notice.getFinalAmt()); // 최종금액
+ detail.setDudtAftrAmt(null); // 납기후 금액
+
+ setBankAccounts(notice.accountGetters(), detail.bankAccountSetters()); // 은행 / 계좌번호
+ });
+ for (SndngDtl detail: details) {
+ affected += sndngDtlMapper.updateSndngDtl(detail);
+ }
+ }
+
/**과태료 대장 단속 정보 등록 정보를 등록한다.
* @param nisIndivA01 과태료 대장 단속 정보 등록
* @return 저장 여부
diff --git a/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java b/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java
index 9d485994..df8085e8 100644
--- a/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java
+++ b/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java
@@ -106,36 +106,29 @@ public class PayerBean extends AbstractBean {
}
public Payer getPayerAddrInfo(Payer payer) {
- // PayerQuery
+ // 최근 납부자 ID 설정
PayerQuery req = new PayerQuery();
- req.setRtpyrSeCd(payer.getRtpyrSeCd()); // 납부자 구분 코드
- req.setRtpyrNo(payer.getRtpyrNo()); // 납부자 번호
- req.setAddrInptSeCd(payer.getAddrInptSeCd()); // 주소 입력 구분 코드
- req.setRoadNmCd(payer.getRoadNmCd()); // 도로명 코드
- req.setAddr(payer.getAddr()); // 주소
- req.setDtlAddr(payer.getDtlAddr()); // 상세 주소
-
- // 납부자 정보 조회
+ req.setRtpyrSeCd(payer.getRtpyrSeCd()); // 납부자 구분 코드
+ req.setRtpyrNo(payer.getRtpyrNo()); // 납부자 번호
+ req.setAddrInptSeCd(payer.getAddrInptSeCd()); // 주소 입력 구분 코드
+ req.setRoadNmCd(payer.getRoadNmCd()); // 도로명 코드
+ req.setAddr(payer.getAddr()); // 주소
+ req.setDtlAddr(payer.getDtlAddr()); // 상세 주소
req.setOrderBy("P.RTPYR_ID DESC");
- List payers = getPayers(req);
- Payer loaded = payers.get(0);
+ Payer last = getPayer(req);
+ payer.setRtpyrId(last.getRtpyrId());
- // 납부자 ID 설정
- payer.setRtpyrId(loaded.getRtpyrId());
-
- // 납부자 주소 정보를 조회
- req.setRtpyrId(payer.getRtpyrId());
- req.setOrderBy("PA.ADDR_SN DESC");
- payers = payerAddrMapper.selectPayerAddrInfo(req);
-
- // 주소 일련번호 설정
- if (payers.isEmpty()) {
- // 주소 등록
- createPayerAddr(payer);
+ // 최근 납부자 주소 일련번호 설정
+ List addrs = payerAddrMapper.selectPayerAddrInfo(
+ req.setRtpyrId(payer.getRtpyrId())
+ .setOrderBy("PA.ADDR_SN DESC")
+ );
+ if (addrs.isEmpty()) {
+ createPayerAddr(payer); // 주소 등록
} else {
- payer.setAddrSn(loaded.getAddrSn()); // 주소 일련번호
- // 주소 수정
- updatePayerAddr(payer);
+ last = addrs.get(0); // 최근 주소
+ payer.setAddrSn(last.getAddrSn()); // 주소 일련번호
+ updatePayerAddr(payer); // 주소 수정
}
return payer;
@@ -149,13 +142,8 @@ public class PayerBean extends AbstractBean {
*
*/
public boolean create(Payer payer) {
- // 납부자 등록
- boolean rtnScs = payerMapper.insert(payer);
- // 납부자 주소 등록
- if (rtnScs)
- createPayerAddr(payer);
-
- return rtnScs;
+ return payerMapper.insert(payer) // 납부자 등록
+ && createPayerAddr(payer); // 납부자 주소 등록
}
/**납부자 정보를 수정한다.
diff --git a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java
index fdee3355..833dc3d6 100644
--- a/src/main/java/cokr/xit/fims/sndb/SndngDtl.java
+++ b/src/main/java/cokr/xit/fims/sndb/SndngDtl.java
@@ -5,6 +5,8 @@ import java.util.List;
import java.util.function.BiConsumer;
import cokr.xit.foundation.AbstractEntity;
+import cokr.xit.foundation.data.Convert;
+import cokr.xit.foundation.data.DataObject;
import lombok.Getter;
import lombok.Setter;
@@ -194,6 +196,83 @@ public class SndngDtl extends AbstractEntity {
/** 업무구분 코드 */
private String taskSeCd;
+ public SndngDtl() {}
+
+ public SndngDtl(Sndng sndng) {
+ setSggCd(sndng.getSggCd()); // 시군구 코드
+ setSndngId(sndng.getSndngId()); // 발송 ID
+ setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
+ setSndngYmd(sndng.getSndngYmd()); // 발송 일자
+ setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
+ setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
+ setDelYn("N"); // 삭제 여부
+ }
+
+ public SndngDtl setPayerInfo(DataObject payerInfo) {
+ setCrdnId(payerInfo.string("CRDN_ID")); // 단속 ID
+ setRcpnNm(payerInfo.string("RTPYR_NM")); // 수령인 명
+ setRcpnBrdt(payerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
+ setRcpnAddr(payerInfo.string("ADDR")); // 수령인 주소
+ setRcpnDtlAddr(payerInfo.string("DTL_ADDR")); // 수령인 상세 주소
+ setRcpnZip(payerInfo.string("ZIP")); // 수령인 우편번호
+ setVhrno(payerInfo.string("VHRNO")); // 차량번호
+ setCrdnDt(payerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
+ setCrdnStdgNm(payerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
+ setCrdnPlc(payerInfo.string("CRDN_PLC")); // 단속 장소
+ setFyr(payerInfo.string("FYR")); // 회계연도
+ setLevyNo(payerInfo.string("LEVY_NO")); // 부과 번호
+ setLevyYmd(payerInfo.string("LEVY_YMD")); // 부과 일자
+ setDudtYmd(payerInfo.string("DUDT_YMD")); // 납기 일자
+ setFfnlgAmt(Convert.toInt(payerInfo.get("FFNLG_AMT"))); // 과태료 금액
+ setPcptax(Convert.toInt(payerInfo.get("PCPTAX"))); // 본세 : 부과본세 - 수납본세 - 감액본세
+ setAdamt(Convert.toInt(payerInfo.get("ADAMT"))); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금
+ setLastAmt(Convert.toInt(payerInfo.get("LAST_AMT"))); // 최종 금액
+ setDudtAftrAmt(Convert.toInt(payerInfo.get("DUDT_AFTR_AMT"))); // 납기 후 금액
+ setEpayno(payerInfo.string("TAX_NO")); // 납세 번호
+ setEpayno(payerInfo.string("EPAYNO")); // 전자납부번호
+ setBankNm(payerInfo.string("BANK_NM")); // 은행 명
+ setVrActno(payerInfo.string("VR_ACTNO")); // 가상 계좌번호
+ setBankNm2(payerInfo.string("BANK_NM2")); // 은행 명2
+ setVrActno2(payerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
+ setBankNm3(payerInfo.string("BANK_NM3")); // 은행 명3
+ setVrActno3(payerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
+ setBankNm4(payerInfo.string("BANK_NM4")); // 은행 명4
+ setVrActno4(payerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
+ setBankNm5(payerInfo.string("BANK_NM5")); // 은행 명5
+ setVrActno5(payerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
+ setBankNm6(payerInfo.string("BANK_NM6")); // 은행 명6
+ setVrActno6(payerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
+ setBankNm7(payerInfo.string("BANK_NM7")); // 은행 명7
+ setVrActno7(payerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
+ setBankNm8(payerInfo.string("BANK_NM8")); // 은행 명8
+ setVrActno8(payerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
+ setBankNm9(payerInfo.string("BANK_NM9")); // 은행 명9
+ setVrActno9(payerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
+ setBankNm10(payerInfo.string("BANK_NM10")); // 은행 명10
+ setVrActno10(payerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
+ setBankNm11(payerInfo.string("BANK_NM11")); // 은행 명11
+ setVrActno11(payerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
+ setBankNm12(payerInfo.string("BANK_NM12")); // 은행 명12
+ setVrActno12(payerInfo.string("VR_ACTNO12")); // 가상 계좌번호12
+ setBankNm13(payerInfo.string("BANK_NM13")); // 은행 명13
+ setVrActno13(payerInfo.string("VR_ACTNO13")); // 가상 계좌번호13
+ setBankNm14(payerInfo.string("BANK_NM14")); // 은행 명14
+ setVrActno14(payerInfo.string("VR_ACTNO14")); // 가상 계좌번호14
+ setBankNm15(payerInfo.string("BANK_NM15")); // 은행 명15
+ setVrActno15(payerInfo.string("VR_ACTNO15")); // 가상 계좌번호15
+ setBankNm16(payerInfo.string("BANK_NM16")); // 은행 명16
+ setVrActno16(payerInfo.string("VR_ACTNO16")); // 가상 계좌번호16
+ setBankNm17(payerInfo.string("BANK_NM17")); // 은행 명17
+ setVrActno17(payerInfo.string("VR_ACTNO17")); // 가상 계좌번호17
+ setBankNm18(payerInfo.string("BANK_NM18")); // 은행 명18
+ setVrActno18(payerInfo.string("VR_ACTNO18")); // 가상 계좌번호18
+ setBankNm19(payerInfo.string("BANK_NM19")); // 은행 명19
+ setVrActno19(payerInfo.string("VR_ACTNO19")); // 가상 계좌번호19
+ setBankNm20(payerInfo.string("BANK_NM20")); // 은행 명20
+ setVrActno20(payerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
+ return this;
+ }
+
public List> bankAccountSetters() {
ArrayList> setters = new ArrayList<>();
setters.add((bankNm, accountNo) -> {setBankNm(bankNm); setVrActno(accountNo);});
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 fd40b3ac..848dda8d 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
@@ -137,31 +137,7 @@ public class SndngBean extends AbstractBean {
+ "
";
// 발송 상세(TB_SNDNG_DTL)
- SndngDtl sndngDtl = new SndngDtl();
- sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드
- sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
- sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
- sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
- sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
- sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
- sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
- sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
- sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
- sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
- sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
- sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
- sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
- sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
- sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
- sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
- sndngDtl.setFfnlgAmt(toInt(crdnPayerInfo.get("FFNLG_CRDN_AMT")));// 과태료 금액
- sndngDtl.setPcptax(toInt(crdnPayerInfo.get("FFNLG_CRDN_AMT"))); // 본세
- sndngDtl.setAdamt(0); // 가산금
- sndngDtl.setLastAmt(0); // 최종 금액
- sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
- sndngDtl.setDelYn("N"); // 삭제 여부
-
- // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
+ SndngDtl sndngDtl = new SndngDtl(sndng).setPayerInfo(crdnPayerInfo);
int rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl);
if (rtnNocs != 1)
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
@@ -178,7 +154,7 @@ public class SndngBean extends AbstractBean {
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
boolean rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs)
- throw new RuntimeException("발송상세 등록 작업중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
+ throw new RuntimeException("발송상세 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
return "[S] 작업이 정상 처리 되었습니다.";
@@ -460,28 +436,9 @@ public class SndngBean extends AbstractBean {
}
// 발송 상세(TB_SNDNG_DTL)
- SndngDtl sndngDtl = new SndngDtl();
- sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드
- sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
- sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
- sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
- sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
- sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
- sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
- sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
- sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
- sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
- sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
- sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
- sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
- sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
- sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
- sndngDtl.setCrdnPlc(crdnPayerInfo.string("CRDN_PLC")); // 단속 장소
- sndngDtl.setFyr(crdnPayerInfo.string("FYR")); // 회계연도
- sndngDtl.setLevyNo(crdnPayerInfo.string("LEVY_NO")); // 부과 번호
+ SndngDtl sndngDtl = new SndngDtl(sndng).setPayerInfo(crdnPayerInfo);
sndngDtl.setLevyYmd(sndng.getSndngYmd()); // 부과 일자
sndngDtl.setDudtYmd(sndng.getSndngEndYmd()); // 납기 일자
- sndngDtl.setFfnlgAmt(toInt(crdnPayerInfo.get("FFNLG_AMT"))); // 과태료 금액
if (isEmpty(crdnPayerInfo.string("PCPTAX"))) {
sndngDtl.setPcptax(toInt(crdnPayerInfo.get("ADVNTCE_AMT"))); // 본세 = 사전통지 금액
} else {
@@ -494,49 +451,6 @@ public class SndngBean extends AbstractBean {
sndngDtl.setLastAmt(toInt(crdnPayerInfo.get("LAST_AMT"))); // 최종 금액
}
sndngDtl.setDudtAftrAmt(0); // 납기 후 금액
- sndngDtl.setTaxNo(crdnPayerInfo.string("TAX_NO")); // 납세 번호
- sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
- sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
- sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
- sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
- sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
- sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
- sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
- sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
- sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
- sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
- sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
- sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
- sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
- sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
- sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
- sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
- sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
- sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
- sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
- sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
- sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
- sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
- sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
- sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12
- sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12
- sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13
- sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13
- sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14
- sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14
- sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15
- sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15
- sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16
- sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16
- sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17
- sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17
- sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18
- sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18
- sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19
- sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19
- sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20
- sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
- sndngDtl.setDelYn("N"); // 삭제 여부
// 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
int rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl);
@@ -733,77 +647,7 @@ public class SndngBean extends AbstractBean {
+ "";
// 발송 상세(TB_SNDNG_DTL)
- SndngDtl sndngDtl = new SndngDtl();
- sndngDtl.setSggCd(sndng.getSggCd()); // 시군구 코드
- sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
- sndngDtl.setCrdnId(crdnPayerInfo.string("CRDN_ID")); // 단속 ID
- sndngDtl.setSndngSeCd(sndng.getSndngSeCd()); // 발송 구분 코드
- sndngDtl.setSndngYmd(sndng.getSndngYmd()); // 발송 일자
- sndngDtl.setSndngEndYmd(sndng.getSndngEndYmd()); // 발송 종료 일자
- sndngDtl.setRcpnNm(crdnPayerInfo.string("RTPYR_NM")); // 수령인 명
- sndngDtl.setRcpnBrdt(crdnPayerInfo.string("RTPYR_BRDT")); // 수령인 생년월일
- sndngDtl.setRcpnAddr(crdnPayerInfo.string("ADDR")); // 수령인 주소
- sndngDtl.setRcpnDtlAddr(crdnPayerInfo.string("DTL_ADDR")); // 수령인 상세 주소
- sndngDtl.setRcpnZip(crdnPayerInfo.string("ZIP")); // 수령인 우편번호
- sndngDtl.setSndngDtlSttsCd("00"); // 발송 상세 상태 코드 - 00 처리전
- sndngDtl.setVhrno(crdnPayerInfo.string("VHRNO")); // 차량번호
- sndngDtl.setCrdnDt(crdnPayerInfo.string("CRDN_YMD_TM_MASK")); // 단속 일시
- sndngDtl.setCrdnStdgNm(crdnPayerInfo.string("CRDN_STDG_NM")); // 단속 법정동 명
- 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.setFfnlgAmt(toInt(crdnPayerInfo.get("FFNLG_AMT"))); // 과태료 금액
- sndngDtl.setPcptax(toInt(crdnPayerInfo.get("PCPTAX"))); // 본세 : 부과본세 - 수납본세 - 감액본세
- sndngDtl.setAdamt(toInt(crdnPayerInfo.get("ADAMT"))); // 가산금 : 부과가산금 - 수납가산금 - 감액가산금
- sndngDtl.setLastAmt(toInt(crdnPayerInfo.get("LAST_AMT"))); // 최종 금액
- sndngDtl.setDudtAftrAmt(toInt(crdnPayerInfo.get("DUDT_AFTR_AMT"))); // 납기 후 금액
- sndngDtl.setEpayno(crdnPayerInfo.string("TAX_NO")); // 납세 번호
- sndngDtl.setEpayno(crdnPayerInfo.string("EPAYNO")); // 전자납부번호
- sndngDtl.setBankNm(crdnPayerInfo.string("BANK_NM")); // 은행 명
- sndngDtl.setVrActno(crdnPayerInfo.string("VR_ACTNO")); // 가상 계좌번호
- sndngDtl.setBankNm2(crdnPayerInfo.string("BANK_NM2")); // 은행 명2
- sndngDtl.setVrActno2(crdnPayerInfo.string("VR_ACTNO2")); // 가상 계좌번호2
- sndngDtl.setBankNm3(crdnPayerInfo.string("BANK_NM3")); // 은행 명3
- sndngDtl.setVrActno3(crdnPayerInfo.string("VR_ACTNO3")); // 가상 계좌번호3
- sndngDtl.setBankNm4(crdnPayerInfo.string("BANK_NM4")); // 은행 명4
- sndngDtl.setVrActno4(crdnPayerInfo.string("VR_ACTNO4")); // 가상 계좌번호4
- sndngDtl.setBankNm5(crdnPayerInfo.string("BANK_NM5")); // 은행 명5
- sndngDtl.setVrActno5(crdnPayerInfo.string("VR_ACTNO5")); // 가상 계좌번호5
- sndngDtl.setBankNm6(crdnPayerInfo.string("BANK_NM6")); // 은행 명6
- sndngDtl.setVrActno6(crdnPayerInfo.string("VR_ACTNO6")); // 가상 계좌번호6
- sndngDtl.setBankNm7(crdnPayerInfo.string("BANK_NM7")); // 은행 명7
- sndngDtl.setVrActno7(crdnPayerInfo.string("VR_ACTNO7")); // 가상 계좌번호7
- sndngDtl.setBankNm8(crdnPayerInfo.string("BANK_NM8")); // 은행 명8
- sndngDtl.setVrActno8(crdnPayerInfo.string("VR_ACTNO8")); // 가상 계좌번호8
- sndngDtl.setBankNm9(crdnPayerInfo.string("BANK_NM9")); // 은행 명9
- sndngDtl.setVrActno9(crdnPayerInfo.string("VR_ACTNO9")); // 가상 계좌번호9
- sndngDtl.setBankNm10(crdnPayerInfo.string("BANK_NM10")); // 은행 명10
- sndngDtl.setVrActno10(crdnPayerInfo.string("VR_ACTNO10")); // 가상 계좌번호10
- sndngDtl.setBankNm11(crdnPayerInfo.string("BANK_NM11")); // 은행 명11
- sndngDtl.setVrActno11(crdnPayerInfo.string("VR_ACTNO11")); // 가상 계좌번호11
- sndngDtl.setBankNm12(crdnPayerInfo.string("BANK_NM12")); // 은행 명12
- sndngDtl.setVrActno12(crdnPayerInfo.string("VR_ACTNO12")); // 가상 계좌번호12
- sndngDtl.setBankNm13(crdnPayerInfo.string("BANK_NM13")); // 은행 명13
- sndngDtl.setVrActno13(crdnPayerInfo.string("VR_ACTNO13")); // 가상 계좌번호13
- sndngDtl.setBankNm14(crdnPayerInfo.string("BANK_NM14")); // 은행 명14
- sndngDtl.setVrActno14(crdnPayerInfo.string("VR_ACTNO14")); // 가상 계좌번호14
- sndngDtl.setBankNm15(crdnPayerInfo.string("BANK_NM15")); // 은행 명15
- sndngDtl.setVrActno15(crdnPayerInfo.string("VR_ACTNO15")); // 가상 계좌번호15
- sndngDtl.setBankNm16(crdnPayerInfo.string("BANK_NM16")); // 은행 명16
- sndngDtl.setVrActno16(crdnPayerInfo.string("VR_ACTNO16")); // 가상 계좌번호16
- sndngDtl.setBankNm17(crdnPayerInfo.string("BANK_NM17")); // 은행 명17
- sndngDtl.setVrActno17(crdnPayerInfo.string("VR_ACTNO17")); // 가상 계좌번호17
- sndngDtl.setBankNm18(crdnPayerInfo.string("BANK_NM18")); // 은행 명18
- sndngDtl.setVrActno18(crdnPayerInfo.string("VR_ACTNO18")); // 가상 계좌번호18
- sndngDtl.setBankNm19(crdnPayerInfo.string("BANK_NM19")); // 은행 명19
- sndngDtl.setVrActno19(crdnPayerInfo.string("VR_ACTNO19")); // 가상 계좌번호19
- sndngDtl.setBankNm20(crdnPayerInfo.string("BANK_NM20")); // 은행 명20
- sndngDtl.setVrActno20(crdnPayerInfo.string("VR_ACTNO20")); // 가상 계좌번호20
- sndngDtl.setDelYn("N"); // 삭제 여부
-
- // 발송 상세(TB_SNDNG_DTL) 대장을 등록한다.
+ SndngDtl sndngDtl = new SndngDtl(sndng).setPayerInfo(crdnPayerInfo);
int rtnNocs = sndngDtlMapper.insertSndngDtl(sndngDtl);
if (rtnNocs != 1)
throw new RuntimeException("발송상세 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
@@ -861,12 +705,9 @@ public class SndngBean extends AbstractBean {
*
*/
public String removeSndng(Sndng sndng) {
- // 발송 상세(TB_SNDNG_DTL)
- SndngDtl sndngDtl = new SndngDtl();
- sndngDtl.setSndngId(sndng.getSndngId()); // 발송 ID
- sndngDtl.setDelRsn(sndng.getDelRsn()); // 삭제 사유
-
// 발송 상세(TB_SNDNG_DTL) 대장을 삭제한다.
+ SndngDtl sndngDtl = new SndngDtl(sndng);
+ sndngDtl.setDelRsn(sndng.getDelRsn()); // 삭제 사유
int rtnNocs = sndngDtlMapper.deleteSndngDtl(sndngDtl);
if (rtnNocs < 1)
throw new RuntimeException("발송상세 정보 삭제에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
@@ -1060,7 +901,8 @@ public class SndngBean extends AbstractBean {
String epostSenderRegSeq = epostRcptRegBean.getEpostSenderRegSeq(sndngInfo.string("TODAY"), sndngInfo.string("DEPT_CD"));
int seqNo = 0;
- if ("0".equals(sndng.getPostSndngSeCd())) {
+ String postSndngSeCd = sndng.getPostSndngSeCd();
+ if ("0".equals(postSndngSeCd)) {
seqNo = epostRcptDtlBean.getEpostSenderDetailSeq(sndngInfo.string("TODAY"));
}
// 포맷: 등록일(REG_YMD)-발송기관코드(RECEV_SENDER_ORG_CODE)-업무코드(WORK_ID)-우편물구분(POST_SE)일련번호(RECEV_SEQ_NO)
@@ -1075,17 +917,17 @@ public class SndngBean extends AbstractBean {
epostRcptReg.setDataCd("00"); // 접수코드
// 취급구분(DIV_KB) 000=일반 001=등기 201=선택등기
- if (sndng.getPostSndngSeCd().equals("1")) {
+ if ("1".equals(postSndngSeCd)) {
if (sggCd.equals("11500")) {
- epostRcptReg.setDivKb("00" + sndng.getPostSndngSeCd());
+ epostRcptReg.setDivKb("00" + postSndngSeCd);
epostRcptReg.setSealCd("1" + "2" + sealCd3);
} else {
- epostRcptReg.setDivKb("20" + sndng.getPostSndngSeCd());
+ epostRcptReg.setDivKb("20" + postSndngSeCd);
epostRcptReg.setSealCd("E" + "2" + sealCd3);
}
} else {
- epostRcptReg.setDivKb("00" + sndng.getPostSndngSeCd());
- epostRcptReg.setSealCd(sndng.getPostSndngSeCd() + "2" + sealCd3);
+ epostRcptReg.setDivKb("00" + postSndngSeCd);
+ epostRcptReg.setSealCd(postSndngSeCd + "2" + sealCd3);
}
epostRcptReg.setDfpayyn("001"); // 결재방법(DFPAYYN)
@@ -1138,7 +980,7 @@ public class SndngBean extends AbstractBean {
epostRcptReg.setRecevSenderDetailaddr(deptSggInfo.string("INST_DADDR")); // 상세주소(SENDER_DTAILADDR)
epostRcptReg.setRecevSenderDepartTel(deptSggInfo.string("DEPT_TELNO")); // 부과부서 전화번호(RECEV_SENDER_DEPART_TEL)
epostRcptReg.setRecevSenderDepartNm(deptSggInfo.string("DEPT_NM")); // 부과부서(RECEV_SENDER_DEPART_NM)
- epostRcptReg.setRecevDivCd(sndng.getPostSndngSeCd()); // 등기구분(RECEV_DIV_CD)
+ epostRcptReg.setRecevDivCd(postSndngSeCd); // 등기구분(RECEV_DIV_CD)
epostRcptReg.setRecevPrintDt(sndngInfo.string("TODAY_MASK")); // 출력일자(RECEV_PRINT_DT)
epostRcptReg.setRecevPrintYear(sndngInfo.string("TODAY").substring(0, 4)); // 출력연도(RECEV_PRINT_YEAR)
epostRcptReg.setRecevPrintMonth(sndngInfo.string("TODAY").substring(4, 6)); // 출력월(RECEV_PRINT_MONTH)
@@ -1221,7 +1063,7 @@ public class SndngBean extends AbstractBean {
String dtlSndngSeCd = sndngDtlInfo.string("SNDNG_SE_CD");
String becevBillNumber = "01,02".contains(dtlSndngSeCd) ? "" : "고지번호:" + sndngDtlInfo.string("FYR") + "-" + sndngDtlInfo.string("LEVY_NO");; // 고지번호
String rgstNmbr = ""; // 등기번호
- if (sndng.getPostSndngSeCd().equals("1")) {
+ if (postSndngSeCd.equals("1")) {
rgstNmbr = epostRcptRegBean.getEpostRgNo(sggCd, taskSeCd);
} else {
seqNo++;
@@ -1332,31 +1174,19 @@ public class SndngBean extends AbstractBean {
epostRcptDtl.setRecevOcr2(ocr2);
epostRcptDtl.setRecevOnlinePayNumber(sndngDtlInfo.string("EPAYNO")); // 전자 납부번호
// 가상계좌
- if (seoul) {
- epostRcptDtl.setVractno(sndngDtlInfo.string("VR_ACTNO"));
- epostRcptDtl.setVractno2(sndngDtlInfo.string("VR_ACTNO2"));
- epostRcptDtl.setVractno3(sndngDtlInfo.string("VR_ACTNO3"));
- epostRcptDtl.setVractno4(sndngDtlInfo.string("VR_ACTNO4"));
- epostRcptDtl.setVractno5(sndngDtlInfo.string("VR_ACTNO5"));
- epostRcptDtl.setVractno6(sndngDtlInfo.string("VR_ACTNO6"));
- epostRcptDtl.setVractno7(sndngDtlInfo.string("VR_ACTNO7"));
- epostRcptDtl.setVractno8(sndngDtlInfo.string("VR_ACTNO8"));
- epostRcptDtl.setVractno9(sndngDtlInfo.string("VR_ACTNO9"));
- epostRcptDtl.setVractno10(sndngDtlInfo.string("VR_ACTNO10"));
- epostRcptDtl.setVractno11(sndngDtlInfo.string("VR_ACTNO11"));
- } else {
- epostRcptDtl.setVractno(sndngDtlInfo.string("BANK_NM") + " " + sndngDtlInfo.string("VR_ACTNO"));
- epostRcptDtl.setVractno2(sndngDtlInfo.string("BANK_NM2") + " " + sndngDtlInfo.string("VR_ACTNO2"));
- epostRcptDtl.setVractno3(sndngDtlInfo.string("BANK_NM3") + " " + sndngDtlInfo.string("VR_ACTNO3"));
- epostRcptDtl.setVractno4(sndngDtlInfo.string("BANK_NM4") + " " + sndngDtlInfo.string("VR_ACTNO4"));
- epostRcptDtl.setVractno5(sndngDtlInfo.string("BANK_NM5") + " " + sndngDtlInfo.string("VR_ACTNO5"));
- epostRcptDtl.setVractno6(sndngDtlInfo.string("BANK_NM6") + " " + sndngDtlInfo.string("VR_ACTNO6"));
- epostRcptDtl.setVractno7(sndngDtlInfo.string("BANK_NM7") + " " + sndngDtlInfo.string("VR_ACTNO7"));
- epostRcptDtl.setVractno8(sndngDtlInfo.string("BANK_NM8") + " " + sndngDtlInfo.string("VR_ACTNO8"));
- epostRcptDtl.setVractno9(sndngDtlInfo.string("BANK_NM9") + " " + sndngDtlInfo.string("VR_ACTNO9"));
- epostRcptDtl.setVractno10(sndngDtlInfo.string("BANK_NM10") + " " + sndngDtlInfo.string("VR_ACTNO10"));
- epostRcptDtl.setVractno11(sndngDtlInfo.string("BANK_NM11") + " " + sndngDtlInfo.string("VR_ACTNO11"));
- }
+
+ epostRcptDtl.setVractno(seoul ? sndngDtlInfo.string("VR_ACTNO") : sndngDtlInfo.string("BANK_NM") + " " + sndngDtlInfo.string("VR_ACTNO"));
+ epostRcptDtl.setVractno2(seoul ? sndngDtlInfo.string("VR_ACTNO2") : sndngDtlInfo.string("BANK_NM2") + " " + sndngDtlInfo.string("VR_ACTNO2"));
+ epostRcptDtl.setVractno3(seoul ? sndngDtlInfo.string("VR_ACTNO3") : sndngDtlInfo.string("BANK_NM3") + " " + sndngDtlInfo.string("VR_ACTNO3"));
+ epostRcptDtl.setVractno4(seoul ? sndngDtlInfo.string("VR_ACTNO4") : sndngDtlInfo.string("BANK_NM4") + " " + sndngDtlInfo.string("VR_ACTNO4"));
+ epostRcptDtl.setVractno5(seoul ? sndngDtlInfo.string("VR_ACTNO5") : sndngDtlInfo.string("BANK_NM5") + " " + sndngDtlInfo.string("VR_ACTNO5"));
+ epostRcptDtl.setVractno6(seoul ? sndngDtlInfo.string("VR_ACTNO6") : sndngDtlInfo.string("BANK_NM6") + " " + sndngDtlInfo.string("VR_ACTNO6"));
+ epostRcptDtl.setVractno7(seoul ? sndngDtlInfo.string("VR_ACTNO7") : sndngDtlInfo.string("BANK_NM7") + " " + sndngDtlInfo.string("VR_ACTNO7"));
+ epostRcptDtl.setVractno8(seoul ? sndngDtlInfo.string("VR_ACTNO8") : sndngDtlInfo.string("BANK_NM8") + " " + sndngDtlInfo.string("VR_ACTNO8"));
+ epostRcptDtl.setVractno9(seoul ? sndngDtlInfo.string("VR_ACTNO9") : sndngDtlInfo.string("BANK_NM9") + " " + sndngDtlInfo.string("VR_ACTNO9"));
+ epostRcptDtl.setVractno10(seoul ? sndngDtlInfo.string("VR_ACTNO10") : sndngDtlInfo.string("BANK_NM10") + " " + sndngDtlInfo.string("VR_ACTNO10"));
+ epostRcptDtl.setVractno11(seoul ? sndngDtlInfo.string("VR_ACTNO11") : sndngDtlInfo.string("BANK_NM11") + " " + sndngDtlInfo.string("VR_ACTNO11"));
+
epostRcptDtl.setRecevFinePrice(sndngDtlInfo.string("FFNLG_AMT")); // 과태료금액
epostRcptDtl.setRecevPayPrice(String.valueOf(lastAmt)); // 납부금액
epostRcptDtl.setRecevPayDt(sndngDtlInfo.string("DUDT_YMD_MASK_KOR")); // 납부기한
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 95bafa5b..5821c7a7 100644
--- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java
+++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java
@@ -972,9 +972,12 @@ public class Sndb01Controller extends ApplicationController {
@RequestMapping(name="고지서 발송 대상 상세 화면", value=METHOD_URL.getNoticeSheetTargetInfo)
public ModelAndView getNoticeSheetTargetInfo(HttpServletRequest hReq, SndbQuery req) {
// View(jsp)에서 사용할 공통코드를 조회
- Map> commonCodes = getCodesOf("FIM004", "FIM005", "FIM006", "FIM047", "FIM061", "FIM064");
+ List cdGrpList = TaskProcessor.get().getVltnCdGrps();
+ cdGrpList.add("FIM047");
+ String[] cdGrps = cdGrpList.toArray(new String[cdGrpList.size()]);
+ Map> commonCodes = getCodesOf(cdGrps);
- return addCodes(commonCodes, new ModelAndView("fims/sndb/sndb01100-info"), "FIM004", "FIM005", "FIM006", "FIM061", "FIM064", "FIM047")
+ return addCodes(commonCodes, new ModelAndView("fims/sndb/sndb01100-info"), cdGrps)
.addObject("openerPageName", hReq.getParameter("openerPageName")) // 호출한 Jsp PageName
.addObject("callPurpose", req.getCallPurpose()) // 호출 용도
.addObject("pageName", "sndb01100") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
diff --git a/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml b/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml
index 9bc59468..84eb9a9d 100644
--- a/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml
+++ b/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml
@@ -122,26 +122,16 @@
@@ -216,9 +206,9 @@
, #{spclHo}
, #{spclAddr}
, #{wholAddr}
- ,
+ ,
, #{createdBy}
- ,
+ ,
, #{modifiedBy}
)
@@ -276,4 +266,4 @@
-
+
\ No newline at end of file