diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnPayerHstry.java b/src/main/java/cokr/xit/fims/cmmn/CrdnPayerHstry.java new file mode 100644 index 00000000..c70c13a7 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnPayerHstry.java @@ -0,0 +1,35 @@ +package cokr.xit.fims.cmmn; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/** + * 단속 납부자 이력 + * @author leebj + */ +@Getter +@Setter +public class CrdnPayerHstry extends AbstractEntity { + + /** + * 변경 이력 ID + */ + private String chgHstryId; + + /** + * 단속 ID + */ + private String crdnId; + + /** + * 납부자 ID + */ + private String rtpyrId; + + /** + * 주소 일련번호 + */ + private String addrSn; + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnPayerHstryQuery.java b/src/main/java/cokr/xit/fims/cmmn/CrdnPayerHstryQuery.java new file mode 100644 index 00000000..1eebe88b --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnPayerHstryQuery.java @@ -0,0 +1,48 @@ +package cokr.xit.fims.cmmn; + +/**단속 납부자 이력 정보 조회 요청 + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-16	leebj 최초 작성
+ * ================================
+ * 
+ */ +public class CrdnPayerHstryQuery extends CmmnQuery { + + private static final long serialVersionUID = 1L; + + private String crdnId; // 단속 ID + private String rtpyrId; // 납부자 ID + private String addrSn; // 주소 일련번호 + + public String getCrdnId() { + return ifEmpty(crdnId, () -> null); + } + + public T setCrdnId(String crdnId) { + this.crdnId = crdnId; + return self(); + } + + public String getRtpyrId() { + return ifEmpty(rtpyrId, () -> null); + } + + public T setRtpyrId(String rtpyrId) { + this.rtpyrId = rtpyrId; + return self(); + } + + public String getAddrSn() { + return ifEmpty(addrSn, () -> null); + } + + public T setAddrSn(String addrSn) { + this.rtpyrId = addrSn; + return self(); + } + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java new file mode 100644 index 00000000..cfcac2f8 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstry.java @@ -0,0 +1,87 @@ +package cokr.xit.fims.cmmn; + +import cokr.xit.foundation.AbstractEntity; +import lombok.Getter; +import lombok.Setter; + +/**단속 상태 이력 +* +*

상세 설명: 단속 상태 이력 엔티티를 데이터베이스에 저장하는 클래스다. +* +*

+* ============ 변경 이력 ============
+* 2023-07-19	JoJH 최초 작성
+* ================================
+* 
+*/ +@Getter +@Setter +public class CrdnSttsHstry extends AbstractEntity { + + /** + * 상태 이력 ID + */ + private String sttsHstryId; + + /** + * 단속 ID + */ + private String crdnId; + + /** + * 이전 상태 코드 + */ + private String bfrSttsCd; + + /** + * 이전 상태 변경 일시 + */ + private String bfrSttsChgDt; + + /** + * 단속 상태 코드 + */ + private String crdnSttsCd; + + /** + * 업무 상세 ID + */ + private String taskDtlId; + + /** + * 기타 내용 + */ + private String etcCn; + + /** + * 사용 여부 + */ + private String useYn; + + /** + * 등록 일시 + */ + private String regDt; + + /** + * 등록자 + */ + private String rgtr; + + /** + * 수정 일시 + */ + private String mdfcnDt; + + /** + * 수정자 + */ + private String mdfr; + + /** + * 단속 상태 변경 일시 - TB_CRDN(단속) + */ + private String crdnSttsChgDt; + +} + diff --git a/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstryQuery.java b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstryQuery.java new file mode 100644 index 00000000..df662c7e --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/CrdnSttsHstryQuery.java @@ -0,0 +1,62 @@ +package cokr.xit.fims.cmmn; + +/**단속 상태 이력 정보 조회 요청 +* +*

상세 설명: +* +*

+* ============ 변경 이력 ============
+* 2023-07-19	JoJH 최초 작성
+* ================================
+* 
+*/ +public class CrdnSttsHstryQuery extends CmmnQuery { + + private static final long serialVersionUID = 1L; + + private String sttsHstryId; // 상태 이력 ID + private String crdnId; // 단속 ID + private String crdnSttsCd; // 단속 상태 코드 + private String taskDtlId; // 업무 상세 ID + + public String getSttsHstryId() { + return ifEmpty(sttsHstryId, () -> null); + } + + public T setSttsHstryId(String sttsHstryId) { + this.sttsHstryId = sttsHstryId; + + return self(); + } + + public String getCrdnId() { + return ifEmpty(crdnId, () -> null); + } + + public T setCrdnId(String crdnId) { + this.crdnId = crdnId; + + return self(); + } + + public String getCrdnSttsCd() { + return ifEmpty(crdnSttsCd, () -> null); + } + + public T setCrdnSttsCd(String crdnSttsCd) { + this.crdnSttsCd = crdnSttsCd; + + return self(); + } + + public String getTaskDtlId() { + return ifEmpty(taskDtlId, () -> null); + } + + public T setTaskDtlId(String taskDtlId) { + this.taskDtlId = taskDtlId; + + return self(); + } + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/dao/CrdnPayerHstryMapper.java b/src/main/java/cokr/xit/fims/cmmn/dao/CrdnPayerHstryMapper.java new file mode 100644 index 00000000..1f2917db --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/dao/CrdnPayerHstryMapper.java @@ -0,0 +1,98 @@ +package cokr.xit.fims.cmmn.dao; + +import java.util.List; +import java.util.Map; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.cmmn.CrdnPayerHstry; +import cokr.xit.fims.cmmn.CrdnPayerHstryQuery; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +/** 단속 납부자 이력 정보 DAO + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-16	leebj 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("crdnPayerHstryMapper") +public interface CrdnPayerHstryMapper extends AbstractMapper { + + /**지정한 조건에 따라 단속 납부자 이력 목록을 조회하여 반환한다.
+ * @param req 단속 납부자 이력 조회 조건 + * @return 단속 납부자 이력 목록 + */ + List selectCrdnPayerHstryList(CrdnPayerHstryQuery req); + + /**지정한 조건에 따라 단속 납부자 이력 객체들을 반환한다. + * @param req 단속 납부자 이력 조회 조건 + * @return 단속 납부자 이력 객체 목록 + */ + List selectCrdnPayerHstrys(CrdnPayerHstryQuery req); + + /**단속 납부자 이력 정보를 등록한다. + * @param params 파라미터 + *
  • "crdnPayerHstry" - 단속 납부자 이력
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertCrdnPayerHstry(Map params); + + /**단속 납부자 이력 정보를 등록한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean insertCrdnPayerHstry(CrdnPayerHstry crdnPayerHstry) { + return crdnPayerHstry != null && insertCrdnPayerHstry(params().set("crdnPayerHstry", crdnPayerHstry)) == 1; + } + + /**단속 납부자 주소 이력 정보를 등록한다. + * @param params 파라미터 + *
  • "crdnPayerHstry" - 단속 납부자 이력
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertCrdnPayerAddrHstry(Map params); + + /**단속 납부자 주소 이력 정보를 등록한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean insertCrdnPayerAddrHstry(CrdnPayerHstry crdnPayerHstry) { + return crdnPayerHstry != null && insertCrdnPayerAddrHstry(params().set("crdnPayerAddrHstry", crdnPayerHstry)) == 1; + } + + /**단속(TB_CRDN) 대장의 납부자 ID를 수정한다. + * @param params 파라미터 + *
  • "crdnPayerHstry" - 단속 납부자 이력
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateCrdnRtpyrId(Map params); + + /**단속(TB_CRDN) 대장의 납부자 ID를 수정한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean updateCrdnPayer(CrdnPayerHstry crdnPayerHstry) { + return crdnPayerHstry != null && updateCrdnRtpyrId(params().set("crdnPayerHstry", crdnPayerHstry)) == 1; + } + +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java b/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java new file mode 100644 index 00000000..3d4e7d84 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/dao/CrdnSttsHstryMapper.java @@ -0,0 +1,89 @@ +package cokr.xit.fims.cmmn.dao; + +import java.util.List; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; +import cokr.xit.fims.cmmn.CrdnSttsHstry; +import cokr.xit.fims.cmmn.CrdnSttsHstryQuery; + +/** 단속 상태 이력 정보 DAO + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-07-19	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("crdnSttsHstryMapper") +public interface CrdnSttsHstryMapper extends AbstractMapper { + /**지정한 조건에 따라 단속 상태 이력 목록을 조회하여 반환한다.
+ * @param req 단속 상태 이력 조회 조건 + * @return 단속 상태 이력 목록 + */ + List selectCrdnSttsHstryList(CrdnSttsHstryQuery req); + + /**지정한 조건에 따라 단속 상태 이력 객체들을 반환한다. + * @param req 단속 상태 이력 조회 조건 + * @return 단속 상태 이력 객체 목록 + */ + List selectCrdnSttsHstrys(CrdnSttsHstryQuery req); + + /**지정한 조건에 따라 단속 상태 이력 객체의 마지막 1개를 반환한다. + * @param crdnId 단속 ID + * @return 지정한 단속 ID의 단속 상태 이력 객체 + */ + default DataObject selectCrdnSttsHstryInfo(String crdnId, String crdnSttsCd, String useYn) { + CrdnSttsHstryQuery req = new CrdnSttsHstryQuery(); + + req.setCrdnId(crdnId); + req.setCrdnSttsCd(crdnSttsCd); + req.setUseYn(useYn); + req.setOrderBy("STTS_HSTRY_ID DESC"); + + List crdnSttsHstrys = selectCrdnSttsHstrys(req); + + return !crdnSttsHstrys.isEmpty() ? crdnSttsHstrys.get(0) : null; + } + + /**단속 상태 이력 정보를 등록한다. + * @param params 파라미터 + *
  • "crdnSttsHstry" - 단속 상태 이력
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry); + + /**단속 상태 이력 정보를 수정한다. + * @param params 파라미터 + *
  • "crdnSttsHstry" - 단속 상태 이력
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry); + + /**지정한 단속 상태 이력을 삭제한다. + * @param params 파라미터 + *
  • "crdnSttsHstry" - 단속 상태 이력
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int deleteCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry); + + /**단속(TB_CRDN) 대장의 단속 상태 코드를 수정한다. + * @param params 파라미터 + *
  • "excl01" - 부과 제외 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry); + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerHstryBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerHstryBean.java new file mode 100644 index 00000000..dcb255ca --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnPayerHstryBean.java @@ -0,0 +1,137 @@ +package cokr.xit.fims.cmmn.service.bean; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.fims.cmmn.CrdnPayerHstry; +import cokr.xit.fims.cmmn.CrdnPayerHstryQuery; +import cokr.xit.fims.cmmn.dao.CrdnPayerHstryMapper; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; + +/**단속 납부자 이력 정보 관리 Bean + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-16	leebj 최초 작성
+ * ================================
+ * 
+ */ +@Component("crdnPayerHstryBean") +public class CrdnPayerHstryBean extends AbstractBean { + + /** 단속 납부자 이력 정보 DAO */ + @Resource(name = "crdnPayerHstryMapper") + private CrdnPayerHstryMapper crdnPayerHstryMapper; + + /**지정한 조건에 따라 단속 납부자 이력 목록을 조회하여 반환한다. + * @param req 단속 납부자 이력 조회 조건 + * @return 단속 납부자 이력 목록 + */ + public List getCrdnPayerHstryList(CrdnPayerHstryQuery req) { + return crdnPayerHstryMapper.selectCrdnPayerHstryList(req); + } + + /**지정한 조건에 따라 단속 납부자 이력 객체들을 반환한다. + * @param req 단속 납부자 이력 조회 조건 + * @return 단속 납부자 이력 객체 목록 + */ + public List getCrdnPayerHstrys(CrdnPayerHstryQuery req) { + return crdnPayerHstryMapper.selectCrdnPayerHstrys(req); + } + + /**단속 납부자 이력 정보를 등록한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createCrdnPayerHstry(CrdnPayerHstry crdnPayerHstry) { + return crdnPayerHstryMapper.insertCrdnPayerHstry(crdnPayerHstry); + } + + /**단속 납부자 주소 이력 정보를 등록한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createCrdnPayerAddrHstry(CrdnPayerHstry crdnPayerHstry) { + return crdnPayerHstryMapper.insertCrdnPayerAddrHstry(crdnPayerHstry); + } + + /**단속 납부자 이력 정보를 등록하고, 단속 대장의 납부자 정보를 수정한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean updateCrdnPayer(CrdnPayerHstry crdnPayerHstry) { + return crdnPayerHstryMapper.updateCrdnPayer(crdnPayerHstry); + } + + /**단속 납부자 이력 및 주소 이력 정보를 등록하고, 단속 대장의 납부자 정보를 수정한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createHstryUpdateCrdnPayer(CrdnPayerHstry crdnPayerHstry) { + boolean rtnScs = false; // DB 처리 결과 + + // 단속 납부자 이력 정보를 등록한다. + rtnScs = createCrdnPayerHstry(crdnPayerHstry); + if (!rtnScs) { + throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속 납부자 주소 이력 정보를 등록한다. + rtnScs = createCrdnPayerAddrHstry(crdnPayerHstry); + if (!rtnScs) { + throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속 대장의 납부자 ID, 주소 일련번호를 변경한다. + rtnScs = updateCrdnPayer(crdnPayerHstry); + if (!rtnScs) { + throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return rtnScs; + } + + /**단속 납부자 주소 이력 정보를 등록하고, 단속 대장의 납부자 정보를 수정한다. + * @param crdnPayerHstry 단속 납부자 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createHstryUpdateCrdnPayerAddr(CrdnPayerHstry crdnPayerHstry) { + boolean rtnScs = false; // DB 처리 결과 + + // 단속 납부자 주소 이력 정보를 등록한다. + rtnScs = createCrdnPayerAddrHstry(crdnPayerHstry); + if (!rtnScs) { + throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 단속 대장의 납부자 ID, 주소 일련번호를 변경한다. + rtnScs = updateCrdnPayer(crdnPayerHstry); + if (!rtnScs) { + throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return rtnScs; + } + +} diff --git a/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryBean.java b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryBean.java new file mode 100644 index 00000000..01c7e8f0 --- /dev/null +++ b/src/main/java/cokr/xit/fims/cmmn/service/bean/CrdnSttsHstryBean.java @@ -0,0 +1,224 @@ +package cokr.xit.fims.cmmn.service.bean; + +import java.text.SimpleDateFormat; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.fims.cmmn.CrdnSttsHstry; +import cokr.xit.fims.cmmn.CrdnSttsHstryQuery; +import cokr.xit.fims.cmmn.dao.CrdnSttsHstryMapper; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; + +/**단속 상태 이력 정보 관리 Bean + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-07-19	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Component("crdnSttsHstryBean") +public class CrdnSttsHstryBean extends AbstractBean { + + /** 단속 상태 이력 정보 DAO */ + @Resource(name = "crdnSttsHstryMapper") + private CrdnSttsHstryMapper crdnSttsHstryMapper; + + /**지정한 조건에 따라 단속 상태 이력 목록을 조회하여 반환한다. + * @param req 단속 상태 이력 조회 조건 + * @return 단속 상태 이력 목록 + */ + public List getCrdnSttsHstryList(CrdnSttsHstryQuery req) { + return crdnSttsHstryMapper.selectCrdnSttsHstryList(req); + } + + /**지정한 조건에 따라 단속 상태 이력 객체들을 반환한다. + * @param req 단속 상태 이력 조회 조건 + * @return 단속 상태 이력 객체 목록 + */ + public List getCrdnSttsHstrys(CrdnSttsHstryQuery req) { + return crdnSttsHstryMapper.selectCrdnSttsHstrys(req); + } + + /**단속 ID에 따라 마지막 단속 상태 이력 객체를 반환한다. + * @param crdnId 단속 ID + * @return 단속 상태 이력 객체 목록 + */ + public DataObject getCrdnSttsHstryInfo(String crdnId, String crdnSttsCd, String useYn) { + return crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, useYn); + } + + /**단속 상태 이력 정보를 등록한다. + * @param crdnSttsHstry 단속 상태 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean create(CrdnSttsHstry crdnSttsHstry) { + if (crdnSttsHstry.getUseYn() == null) { + crdnSttsHstry.setUseYn("Y"); + } + + return crdnSttsHstryMapper.insertCrdnSttsHstry(crdnSttsHstry) == 1; + } + + /**단속 상태 이력 정보를 수정한다. + * @param crdnSttsHstry 단속 상태 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean update(CrdnSttsHstry crdnSttsHstry) { + return crdnSttsHstryMapper.updateCrdnSttsHstry(crdnSttsHstry) == 1; + } + + /**단속 상태 이력 정보를 삭제한다. 단속ID로 입력되면 여러건이 삭제가 가능하다. + * @param crdnSttsHstry 단속 상태 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean remove(CrdnSttsHstry crdnSttsHstry) { + return crdnSttsHstryMapper.deleteCrdnSttsHstry(crdnSttsHstry) >= 1; + } + + /**단속 대장의 상태 정보를 수정한다. + * @param excl 부과제외 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean updateCrdn(CrdnSttsHstry crdnSttsHstry) { + return crdnSttsHstryMapper.updateCrdnSttsCd(crdnSttsHstry) == 1; + } + + /**단속 상태 이력 정보를 등록하고, 단속 대장의 단속상태 정보를 수정한다. + * @param crdnSttsHstry 단속 상태 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createHstryUpdateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry) { + // 변수 선언 + int rtnNocs = -1; + + // 사용 여부 + if (crdnSttsHstry.getUseYn() == null) { + crdnSttsHstry.setUseYn("Y"); + } + // 단속 상태 변경 일시 + if (crdnSttsHstry.getCrdnSttsChgDt() == null || crdnSttsHstry.getCrdnSttsChgDt().equals("")) { + // 현재 날짜 구하기 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + crdnSttsHstry.setCrdnSttsChgDt(dateFormat.format(System.currentTimeMillis())); + } + + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록한다. + rtnNocs = crdnSttsHstryMapper.insertCrdnSttsHstry(crdnSttsHstry); + if (rtnNocs != 1) { + throw new RuntimeException("단속상태이력 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + // 단속(TB_CRDN) 대장을 수정한다. + rtnNocs = crdnSttsHstryMapper.updateCrdnSttsCd(crdnSttsHstry); + if (rtnNocs != 1) { + throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + return true; + } + + /**단속 상태 이력 정보를 삭제하고, 하고 단속 대장의 단속상태 정보를 수정한다. + * @param crdnSttsHstry 단속 상태 이력 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean removeHstryUpdateCrdnSttsCd(String crdnId, String crdnSttsCd, String deltSttsCd, String deltEtcCn, boolean insertBfrSttsYn) { + // 변수 선언 + int rtnNocs = -1; + + // 단속 ID에 해당하는 단속상태코드의 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 조회 한다. + DataObject crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, crdnSttsCd, "Y"); + + if (crdnSttsHstryInfo == null) { + throw new RuntimeException("단속상태이력 자료가 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback + } + + if (!crdnSttsCd.equals("")) { + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID")); + crdnSttsHstry.setUseYn("N"); + + rtnNocs = crdnSttsHstryMapper.updateCrdnSttsHstry(crdnSttsHstry); + if (rtnNocs != 1) { + throw new RuntimeException("단속상태이력 대장에 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + // 삭제 단속상태코드가 있다면.. 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록한다. + if (!deltSttsCd.equals("")) { + // 단속상태가 의견제출접수(31)가 아니면서, 삭제상태코드가 의견제출삭제(92)나 경찰서이첩삭제(97) 일 경우 + if (!crdnSttsCd.equals("31") && "92,97".contains(deltSttsCd)) { + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장에서 의견제출접수(31) 이력을 조회후 사용여부를 미사용("N")으로 수정. + crdnSttsHstryInfo = crdnSttsHstryMapper.selectCrdnSttsHstryInfo(crdnId, "31", "Y"); + + if (crdnSttsHstryInfo == null) { + throw new RuntimeException("단속상태이력에 의견제출 접수 이력이 존재하지 않습니다."); // 예외를 발생시켜서 DB Rollback + } + + CrdnSttsHstry opnnSttsHstry = new CrdnSttsHstry(); + opnnSttsHstry.setSttsHstryId(crdnSttsHstryInfo.string("STTS_HSTRY_ID")); + opnnSttsHstry.setUseYn("N"); + + rtnNocs = crdnSttsHstryMapper.updateCrdnSttsHstry(opnnSttsHstry); + if (rtnNocs != 1) { + throw new RuntimeException("단속상태이력 대장에 의견제출접수 이력 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + CrdnSttsHstry deleteSttsHstry = new CrdnSttsHstry(); + deleteSttsHstry.setCrdnId(crdnSttsHstryInfo.string("CRDN_ID")); + deleteSttsHstry.setBfrSttsCd(crdnSttsHstryInfo.string("CRDN_STTS_CD")); + deleteSttsHstry.setBfrSttsChgDt(crdnSttsHstryInfo.string("REG_DT")); + deleteSttsHstry.setCrdnSttsCd(deltSttsCd); + deleteSttsHstry.setEtcCn(deltEtcCn); + deleteSttsHstry.setUseYn("N"); + + rtnNocs = crdnSttsHstryMapper.insertCrdnSttsHstry(deleteSttsHstry); + if (rtnNocs != 1) { + throw new RuntimeException("삭제 단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + if (insertBfrSttsYn) { + // 단속상태이력(TB_CRDN_STTS_HSTRY) 대장을 등록한다. + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(crdnSttsHstryInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(deltSttsCd); + crdnSttsHstry.setBfrSttsChgDt(crdnSttsHstry.getCreatedAt()); + crdnSttsHstry.setCrdnSttsCd(crdnSttsHstryInfo.string("BFR_STTS_CD")); + crdnSttsHstry.setCrdnSttsChgDt(crdnSttsHstryInfo.string("BFR_STTS_CHG_DT")); + crdnSttsHstry.setUseYn("Y"); + + boolean rtnScs = createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("단속상태이력 정보 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + return true; + } + +} diff --git a/src/main/java/cokr/xit/fims/payer/Payer.java b/src/main/java/cokr/xit/fims/payer/Payer.java new file mode 100644 index 00000000..97302d2f --- /dev/null +++ b/src/main/java/cokr/xit/fims/payer/Payer.java @@ -0,0 +1,191 @@ +package cokr.xit.fims.payer; + +import cokr.xit.foundation.AbstractEntity; +import cokr.xit.interfaces.lvis.service.reg.BasicInfoResponse; +import lombok.Getter; +import lombok.Setter; + +/** + * 납부자 대장 + * @author mjkhan + */ +@Getter +@Setter +public class Payer extends AbstractEntity { + + /** + * 납부자 ID + */ + private String rtpyrId; + + /** + * 시군구 코드 + */ + private String sggCd; + + /** + * 차량번호 + */ + private String vhrno; + + /** + * 납부자 입력 구분 코드 + */ + private String rtpyrInptSeCd; + + /** + * 납부자 구분 코드 + */ + private String rtpyrSeCd; + + /** + * 납부자 번호 + */ + private String rtpyrNo; + + /** + * 납부자 명 + */ + private String rtpyrNm; + + /** + * 납부자 전화번호 + */ + private String rtpyrTelno; + + /** + * 납부자 휴대 전화번호 + */ + private String rtpyrMblTelno; + + /** + * 납부자 이메일 + */ + private String rtpyrEml; + + /** + * 납부자 생년월일 + */ + private String rtpyrBrdt; + + /** + * 납부자 상태 코드 + */ + private String rtpyrSttsCd; + + /** + * 주소 일련번호 + */ + private String addrSn; + + /** + * 주소 입력 구분 코드 + */ + private String addrInptSeCd; + + /** + * 주소 구분 코드 + */ + private String addrSeCd; + + /** + * 우편번호 + */ + private String zip; + + /** + * 주소 + */ + private String addr; + + /** + * 상세 주소 + */ + private String dtlAddr; + + /** + * 도로 명 코드 + */ + private String roadNmCd; + + /** + * 지하 구분 코드 + */ + private String udgdSeCd; + + /** + * 건물본번 + */ + private Integer bmno; + + /** + * 건물부번 + */ + private Integer bsno; + + /** + * 건물 관리 번호 + */ + private String bldgMngNo; + + /** + * 법정동 코드 + */ + private String stdgCd; + + /** + * 행정동 코드 + */ + private String dongCd; + + /** + * 산 구분 코드 + */ + private String mtnSeCd; + + /** + * 본번 + */ + private Integer mno; + + /** + * 부번 + */ + private Integer sno; + + /** + * 특수 동 + */ + private String spclDong; + + /** + * 특수 호 + */ + private String spclHo; + + /** + * 특수 주소 + */ + private String spclAddr; + + /** + * 전체 주소 + */ + private String wholAddr; + + /** 차량 기본정보 */ + private BasicInfoResponse.BasicInfo vehicleInfo; + + /**"차량번호-납부자번호"를 반환한다. + * @return "차량번호-납부자번호" + */ + public String getKey() { + return String.format("%s-%s", vhrno, rtpyrNo); + } + + /** + * 단속 ID + */ + private String crdnId; + +} \ No newline at end of file diff --git a/src/main/java/cokr/xit/fims/payer/PayerQuery.java b/src/main/java/cokr/xit/fims/payer/PayerQuery.java new file mode 100644 index 00000000..ff4322e5 --- /dev/null +++ b/src/main/java/cokr/xit/fims/payer/PayerQuery.java @@ -0,0 +1,233 @@ +package cokr.xit.fims.payer; + +import cokr.xit.foundation.component.QueryRequest; + +/**납부자 대장 정보 조회 요청 + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-18	mjkhan 최초 작성
+ * ================================
+ * 
+ */ +public class PayerQuery extends QueryRequest { + private static final long serialVersionUID = 1L; + + /** 납부자 Ids */ + private String[] rtpyrIds; + /** 차량번호 */ + private String vhrno; + /** 납부자 구분 코드 */ + private String rtpyrSeCd; + /** 납부자번호 */ + private String rtpyrNo; + /** 납부자 ID */ + private String rtpyrId; + /** 주소 일련번호 */ + private String addrSn; + /** 이력 일련번호 */ + private String hstrySn; + /** 주소 입력 구분 코드 */ + private String addrInptSeCd; + /** 도로명 코드 */ + private String roadNmCd; + /** 주소 */ + private String addr; + /** 상세 주소 */ + private String dtlAddr; + /** 단속 ID */ + private String crdnId; + /** 호출 용도 */ + private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). + + /**납부자 Ids를 반환한다. + * @return 납부자 Ids + */ + public String[] getRtpyrIds() { + return ifEmpty(rtpyrIds, () -> null); + } + + /**납부자 Ids를 설정한다. + * @param rtpyrIds 납부자 Ids + * @return 현재 PayerQuery + */ + public PayerQuery setRtpyrIds(String... rtpyrIds) { + this.rtpyrIds = rtpyrIds; + return this; + } + + /**납부자 ID를 반환한다. + * @return 납부자 ID + */ + public String getRtpyrId() { + return !isEmpty(rtpyrIds) ? rtpyrIds[0] : rtpyrId; + } + + /**납부자 ID를 설정한다. + * @param rtpyrId 납부자 ID + * @return 현재 PayerQuery + */ + public PayerQuery setRtpyrId(String rtpyrId) { + this.rtpyrId = rtpyrId; + return this; + } + + /**주소 일련번호를 반환한다. + * @return 주소 일련번호 + */ + public String getAddrSn() { + return ifEmpty(addrSn, () -> null); + } + + /**주소 일련번호를 설정한다. + * @param addrSn 주소 일련번호 + * @return 현재 PayerQuery + */ + public PayerQuery setAddrSn(String addrSn) { + this.addrSn = addrSn; + return self(); + } + + /**이력 일련번호를 반환한다. + * @return 이력 일련번호 + */ + public String getHstrySn() { + return hstrySn; + } + + /**이력 일련번호를 설정한다. + * @param hstrySn 이력 일련번호 + * @return 현재 PayerQuery + */ + public PayerQuery setHstrySn(String hstrySn) { + this.hstrySn = hstrySn; + return this; + } + + /**차량번호를 반환한다. + * @return 차량번호 + */ + public String getVhrno() { + return vhrno; + } + + /**차량번호를 설정한다. + * @param vhrno 차량번호 + * @return 현재 PayerQuery + */ + public PayerQuery setVhrno(String vhrno) { + this.vhrno = vhrno; + return this; + } + + /**납부자 구분 코드를 반환한다. + * @return 납부자 구분 코드 + */ + public String getRtpyrSeCd() { + return rtpyrSeCd; + } + + /**납부자 구분 코드를 설정한다. + * @param rtpyrSeCd 납부자 구분 코드 + * @return 현재 PayerQuery + */ + public void setRtpyrSeCd(String rtpyrSeCd) { + this.rtpyrSeCd = rtpyrSeCd; + } + + /**납부자 번호를 반환한다. + * @return 납부자 번호 + */ + public String getRtpyrNo() { + return rtpyrNo; + } + + /**납부자 번호를 설정한다. + * @param rtpyrNo 납부자 번호 + * @return 현재 PayerQuery + */ + public void setRtpyrNo(String rtpyrNo) { + this.rtpyrNo = rtpyrNo; + } + + /**주소 입력 구분 코드를 반환한다. + * @return 주소 입력 구분 코드 + */ + public String getAddrInptSeCd() { + return addrInptSeCd; + } + + /**주소 입력 구분 코드를 설정한다. + * @param addrInptSeCd 주소 입력 구분 코드 + * @return 현재 PayerQuery + */ + public void setAddrInptSeCd(String addrInptSeCd) { + this.addrInptSeCd = addrInptSeCd; + } + + /**도로명 코드를 반환한다. + * @return 도로명 코드 + */ + public String getRoadNmCd() { + return roadNmCd; + } + + /**도로명 코드를 설정한다. + * @param roadNmCd 도로명 코드 + * @return 현재 PayerQuery + */ + public void setRoadNmCd(String roadNmCd) { + this.roadNmCd = roadNmCd; + } + + /**주소를 반환한다. + * @return 주소 + */ + public String getAddr() { + return addr; + } + + /**주소를 설정한다. + * @param addr 주소 + * @return 현재 PayerQuery + */ + public void setAddr(String addr) { + this.addr = addr; + } + + /**상세 주소를 반환한다. + * @return 상세 주소 + */ + public String getDtlAddr() { + return dtlAddr; + } + + /**상세 주소를 설정한다. + * @param dtlAddr 상세 주소 + * @return 현재 PayerQuery + */ + public void setDtlAddr(String dtlAddr) { + this.dtlAddr = dtlAddr; + } + + public String getCrdnId() { + return ifEmpty(crdnId, () -> null); + } + + public T setCrdnId(String crdnId) { + this.crdnId = crdnId; + return self(); + } + + public String getCallPurpose() { + return ifEmpty(callPurpose, () -> null); + } + + public T setCallPurpose(String callPurpose) { + this.callPurpose = callPurpose; + return self(); + } + +} diff --git a/src/main/java/cokr/xit/fims/payer/dao/PayerAddrMapper.java b/src/main/java/cokr/xit/fims/payer/dao/PayerAddrMapper.java new file mode 100644 index 00000000..26170fd0 --- /dev/null +++ b/src/main/java/cokr/xit/fims/payer/dao/PayerAddrMapper.java @@ -0,0 +1,67 @@ +package cokr.xit.fims.payer.dao; + +import java.util.List; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; +import cokr.xit.fims.payer.Payer; +import cokr.xit.fims.payer.PayerQuery; + +/** 납부자 주소 정보 DAO + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2024-05-23	JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("payerAddrMapper") +public interface PayerAddrMapper extends AbstractMapper { + + /**지정한 조건에 따라 납부자 주소 목록을 조회하여 반환한다.
+ * @param req 납부자 주소 조회 조건 + * @return 납부자 주소 목록 + */ + List selectPayerAddrList(PayerQuery req); + + /**지정한 조건에 따라 납부자 주소 객체들을 반환한다. + * @param req 납부자 주소 조회 조건 + * @return 납부자 주소 객체 목록 + */ + List selectPayerAddrs(PayerQuery req); + + /**지정한 조건에 따라 납부자 주소 정보를 반환한다. + * @param req 부과제외 조회 조건 + * @return 납부자 주소 정보 + */ + List selectPayerAddrInfo(PayerQuery req); + + /**납부자 주소 정보를 등록한다. + * @param params 파라미터 + *
  • "payerAddr" - 납부자 주소
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int insertPayerAddr(Payer payer); + + /**납부자 주소 정보를 수정한다. + * @param params 파라미터 + *
  • "payerAddr" - 납부자 주소
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updatePayerAddr(Payer payer); + + /**지정한 조건에 따라 납부자 주소 변경 이력 객체들을 반환한다. + * @param req 납부자 대장 조회 조건 + * @return 납부자 대장 객체 목록 + */ + List selectPayerAddrHstrys(PayerQuery req); + +} diff --git a/src/main/java/cokr/xit/fims/payer/dao/PayerMapper.java b/src/main/java/cokr/xit/fims/payer/dao/PayerMapper.java new file mode 100644 index 00000000..ef5f113a --- /dev/null +++ b/src/main/java/cokr/xit/fims/payer/dao/PayerMapper.java @@ -0,0 +1,117 @@ +package cokr.xit.fims.payer.dao; + +import java.util.List; +import java.util.Map; + +import org.egovframe.rte.psl.dataaccess.mapper.Mapper; + +import cokr.xit.fims.payer.Payer; +import cokr.xit.fims.payer.PayerQuery; +import cokr.xit.foundation.component.AbstractMapper; +import cokr.xit.foundation.data.DataObject; + +/** 납부자 대장 정보 DAO + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-18	mjkhan 최초 작성
+ * ================================
+ * 
+ */ +@Mapper("payerMapper") +public interface PayerMapper extends AbstractMapper { + /**지정한 조건에 따라 납부자 대장 목록을 조회하여 반환한다.
+ * @param req 납부자 대장 조회 조건 + * @return 납부자 대장 목록 + */ + List selectPayerList(PayerQuery req); + + /**지정한 조건에 따라 납부자 대장 객체들을 반환한다. + * @param req 납부자 대장 조회 조건 + * @return 납부자 대장 객체 목록 + */ + List selectPayers(PayerQuery req); + + /**납부자 대장 정보를 등록한다. + * @param payer 납부자 대장 + * @return 저장된 정보수 + */ + int insertPayer(Map params); + + /**납부자 대장 정보를 등록한다. + * @param payer 납부자 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean insert(Payer payer) { + return payer != null && insertPayer(params().set("payer", payer)) == 1; + } + + /**납부자 대장 정보를 수정한다. + * @param params 파라미터 + *
  • "payer" - 납부자 대장
  • + *
  • "currentUser" - 현재 접속한 사용자
  • + *
+ * @return 저장된 정보수 + */ + int updatePayer(Map params); + + /**납부자 대장 정보를 수정한다. + * @param payer 납부자 대장 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + default boolean update(Payer payer) { + return payer != null && updatePayer(params().set("payer", payer)) == 1; + } + + /**납부자 도로명 주소의 우편번호, 건물관리번호를 조회한다. 도로망 주소 연계 구현 시 이동 + * @param params 파라미터 + *
  • roadNmCd - 도로명 코드
  • + *
  • udgdSeCd - 지하 구분코드
  • + *
  • bmno - 건물본번
  • + *
  • bsno - 건물부번
  • + *
+ * @return 납부자 도로명 주소의 우편번호, 건물관리번호 + */ + DataObject selectAddrInfo(Map params); + + /**지정한 조건에 따라 납부자 대장 객체의 마지막 1개를 반환한다. + * @param levyExclId 부과제외 ID + * @return 부과제외 대장 객체 + */ + List selectCrdnPayers(PayerQuery req); + + default DataObject selectPayerInfo(PayerQuery req) { + if (req.getOrderBy() == null) { + req.setOrderBy("P.RTPYR_ID DESC"); + } + + List crdnPayers = selectCrdnPayers(req); + + return !crdnPayers.isEmpty() ? crdnPayers.get(0) : null; + } + + /**지정한 조건에 따라 단속 정보를 반환한다. + * @param crdnId 단속 ID + * @return 단속, 부과제외 정보 + */ + DataObject selectCrdn(PayerQuery req); + + default DataObject selectCrdnInfo(String crdnId) { + return selectCrdn(new PayerQuery().setCrdnId(crdnId)); + } + + /**지정한 조건에 따라 납부자 변경 이력 객체들을 반환한다. + * @param req 납부자 대장 조회 조건 + * @return 납부자 대장 객체 목록 + */ + List selectPayerHstrys(PayerQuery req); + +} \ No newline at end of file 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 new file mode 100644 index 00000000..7ea5cb17 --- /dev/null +++ b/src/main/java/cokr/xit/fims/payer/service/bean/PayerBean.java @@ -0,0 +1,409 @@ +package cokr.xit.fims.payer.service.bean; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import cokr.xit.fims.cmmn.CrdnPayerHstry; +import cokr.xit.fims.cmmn.CrdnSttsHstry; +import cokr.xit.fims.cmmn.service.bean.CrdnPayerHstryBean; +import cokr.xit.fims.cmmn.service.bean.CrdnSttsHstryBean; +import cokr.xit.fims.payer.Payer; +import cokr.xit.fims.payer.PayerQuery; +import cokr.xit.fims.payer.dao.PayerAddrMapper; +import cokr.xit.fims.payer.dao.PayerMapper; +import cokr.xit.foundation.component.AbstractBean; +import cokr.xit.foundation.data.DataObject; +import cokr.xit.interfaces.lvis.service.bean.VehicleInfoBean; +import cokr.xit.interfaces.lvis.service.reg.BasicInfoRequest; +import cokr.xit.interfaces.lvis.service.reg.BasicInfoResponse; + +/**납부자 정보 관리 Bean + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2023-08-18	mjkhan 최초 작성
+ * ================================
+ * 
+ */ +@Component("payerBean") +public class PayerBean extends AbstractBean { + + /** 납부자 정보 DAO */ + @Resource(name = "payerMapper") + private PayerMapper payerMapper; + + /** 납부자 주소 정보 DAO */ + @Resource(name = "payerAddrMapper") + private PayerAddrMapper payerAddrMapper; + + /** 자동차 정보 DAO */ + @Resource(name = "vehicleInfoBean") + private VehicleInfoBean vehicleInfoBean; + + /** 단속 상태 이력 정보 Bean */ + @Resource(name = "crdnSttsHstryBean") + private CrdnSttsHstryBean crdnSttsHstryBean; + + /** 단속 납부자 이력 정보 Bean */ + @Resource(name = "crdnPayerHstryBean") + private CrdnPayerHstryBean crdnPayerHstryBean; + + /**지정한 조건에 따라 납부자 목록을 조회하여 반환한다. + * @param req 납부자 조회 조건 + * @return 납부자 목록 + */ + public List getPayerList(PayerQuery req) { + return payerMapper.selectPayerList(req); + } + + /**지정한 조건에 따라 납부자 객체들을 반환한다. + * @param req 납부자 조회 조건 + * @return 납부자 객체 목록 + */ + public List getPayers(PayerQuery req) { + return payerMapper.selectPayers(req); + } + + /**지정한 조건에 따라 납부자 객체를 반환한다. + * @param req 납부자 조회 조건 + * @return 납부자 객체 + */ + public Payer getPayer(PayerQuery req) { + if (req.getOrderBy() == null) { + req.setOrderBy("P.RTPYR_ID DESC"); + } + + List payers = getPayers(req); + + return !payers.isEmpty() ? payers.get(0) : null; + } + + /**지정한 조건에 따라 납부자 주소 객체들을 반환한다. + * @param req 납부자 조회 조건 + * @return 납부자 주소 객체 목록 + */ + public List getPayerAddrs(PayerQuery req) { + return payerAddrMapper.selectPayerAddrs(req); + } + + /**지정한 조건에 따라 납부자 주소 객체를 반환한다. + * @param req 납부자 조회 조건 + * @return 납부자 주소 객체 + */ + public Payer getPayerAddr(PayerQuery req) { + if (req.getOrderBy() == null) { + req.setOrderBy("PA.ADDR_SN DESC"); + } + + List payers = getPayerAddrs(req); + + return !payers.isEmpty() ? payers.get(0) : null; + } + + public Payer getPayerAddrInfo(Payer payer) { + // PayerQuery + 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.setOrderBy("P.RTPYR_ID DESC"); + List payers = getPayers(req); + + // 납부자 ID 설정 + payer.setRtpyrId(payers.get(0).getRtpyrId()); + + // 납부자 정보 및 주소 정보를 조회 + req.setRtpyrId(payer.getRtpyrId()); + req.setOrderBy("PA.ADDR_SN DESC"); + payers = payerAddrMapper.selectPayerAddrInfo(req); + + if (payers.isEmpty()) { + createPayerAddr(payer); // 주소 신규 등록 + } else { + payer.setAddrSn(payers.get(0).getAddrSn()); // 주소 일련번호 설정 + + updatePayerAddr(payer); // 주소 수정 + } + + return payer; + } + + /**납부자 정보를 등록한다. + * @param payer 납부자 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean create(Payer payer) { + // 납부자 등록 + boolean rtnScs = payerMapper.insert(payer); + // 납부자 주소 등록 + if (rtnScs) { + createPayerAddr(payer); + } + + return rtnScs; + } + + /**납부자 정보를 수정한다. + * @param payer 납부자 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean update(Payer payer) { + return payerMapper.update(payer); + } + + /**납부자 주소 정보를 등록한다. + * @param payer 납부자 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean createPayerAddr(Payer payer) { + // 납부자 주소 등록 + DataObject params = new DataObject() + .set("roadNmCd", payer.getRoadNmCd()) + .set("udgdSeCd", payer.getUdgdSeCd()) + .set("bmno", payer.getBmno()) + .set("bsno", payer.getBsno()); + DataObject info = payerMapper.selectAddrInfo(params); + if (info != null) { + payer.setAddrSeCd("02"); + payer.setZip(info.string("ZIP")); + payer.setBldgMngNo(info.string("BLDG_MNG_NO")); + payer.setStdgCd(info.string("STDG_CD")); + payer.setDongCd(info.string("DONG_CD")); + } + + return payerAddrMapper.insertPayerAddr(payer) == 1 ? true : false; + } + + /**납부자 주소 정보를 수정한다. + * @param payer 납부자 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public boolean updatePayerAddr(Payer payer) { + return payerAddrMapper.updatePayerAddr(payer) == 1 ? true : false; + } + + public List getVehicleOwners(List reqs) { + Map vehicleMap = vehicleInfoBean.getBasicInfo(reqs).stream() + .collect(Collectors.toMap(resp -> resp.getBasicInfo().getKey(), resp -> resp)); + + return vehicleMap.values().stream() + .map(resp -> getPayer(resp.getBasicInfo())) + .toList(); + } + + /**시군구 코드와 차량 기본정보에서 납부자 정보를 생성하거나, 등록정보에서 조회하여 반환한다.(차량번호 / 납부자 번호 / 시군구 기준) + * @param basicInfo 차량 기본정보 + * @return 납부자 정보 + */ + private Payer getPayer(BasicInfoResponse.BasicInfo basicInfo) { + Payer payer = new Payer(); + + payer.setSggCd(basicInfo.getSggCd()); + payer.setVhrno(basicInfo.getVhrno()); + payer.setRtpyrInptSeCd("02"); + payer.setAddrInptSeCd("02"); + payer.setRtpyrSeCd( + Map.of( + "11", "01", + "12", "02", + "13", "03", + "14", "04", + "15", "05" + ).getOrDefault(basicInfo.getMber_se_code(), "05") + ); + String rtpyrNo = basicInfo.getMber_se_no(); + payer.setRtpyrNo(rtpyrNo); + payer.setRtpyrNm(basicInfo.getMber_nm()); + payer.setRtpyrTelno(basicInfo.getTelno()); + payer.setRoadNmCd(basicInfo.getUse_strnghld_road_nm_code()); + String str = basicInfo.getUsgsrhld_undgrnd_buld_se_code(); + if (str.equals("")) + payer.setUdgdSeCd("0"); + else + payer.setUdgdSeCd(basicInfo.getUsgsrhld_undgrnd_buld_se_code()); + str = basicInfo.getUse_strnghld_buld_main_no(); + if (!isEmpty(str)) + payer.setBmno(toInt(str)); + str = basicInfo.getUse_strnghld_buld_sub_no(); + if (!isEmpty(str)) + payer.setBsno(toInt(str)); + payer.setStdgCd(basicInfo.getUse_strnghld_legaldong_code()); + payer.setDongCd(basicInfo.getUse_strnghld_adstrd_code()); + payer.setMtnSeCd(basicInfo.getUse_strnghld_mntn()); + str = basicInfo.getUse_strnghld_lnbr(); + if (!isEmpty(str)) + payer.setMno(toInt(str)); + str = basicInfo.getUse_strnghld_ho(); + if (!isEmpty(str)) + payer.setSno(toInt(str)); + payer.setAddr(basicInfo.getRoad_nm_adres()); + payer.setDtlAddr(basicInfo.getUse_strnghld_adres_nm()); + // 전체 주소 + str = basicInfo.getUse_strnghld_adres_nm(); + if (!isEmpty(str)) + payer.setWholAddr(basicInfo.getRoad_nm_adres() + ", " + basicInfo.getUse_strnghld_adres_nm()); + else + payer.setWholAddr(basicInfo.getRoad_nm_adres()); + + Payer result = create(payer) ? payer : getPayerAddrInfo(payer); + + if (result != null) + result.setVehicleInfo(basicInfo); + + return result; + } + + /**지정한 부과제외 ID의 부과제외 정보를 반환한다.
+ * @param req 납부자 조회 조건 + * @return 납부자 정보 + */ + public DataObject getPayerInfo(PayerQuery req) { + return payerMapper.selectPayerInfo(req); + } + + /**지정한 단속 ID의 단속 정보를 반환한다.
+ * @param req 납부자 조회 조건 + * @return 단속 정보 + */ + public DataObject getCrdnInfo(PayerQuery req) { + return payerMapper.selectCrdn(req); // 단속 조회 + } + + /**납부자 정보를 등록하고, 단속 정보에 납부자 ID를 변경한다. + * @param payer 납부자 + * @return 저장 여부 + *
  • 저장됐으면 true
  • + *
  • 그렇지 않으면 false
  • + *
+ */ + public String createCrdnPayer(Payer payer) { + // 변수 선언 + boolean rtnScs = false; // DB 처리 결과 + String strTemp = ""; + + // 지하 구분 코드 + strTemp = payer.getUdgdSeCd(); + if (strTemp.equals("")) { + payer.setUdgdSeCd("0"); + } + // 전체 주소 + strTemp = payer.getWholAddr(); + if (strTemp.equals("")) { + payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr()); + } + + // 단속 ID로 단속, 납부자, 주소 정보 조회 + DataObject crdnPayerAddrInfo = payerMapper.selectCrdnInfo(payer.getCrdnId()); + + // 주민등록번호가 동일하다면.. + if (crdnPayerAddrInfo.string("RTPYR_NO").equals(payer.getRtpyrNo())) { + // 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다. + rtnScs = update(payer); + if (!rtnScs) { + throw new RuntimeException("납부자 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + // 주소가 변경되었는지 확인 + if (crdnPayerAddrInfo.string("ADDR_INPT_SE_CD").equals(payer.getAddrInptSeCd()) + && crdnPayerAddrInfo.string("ZIP").equals(payer.getZip()) + && crdnPayerAddrInfo.string("ADDR").equals(payer.getAddr()) + && crdnPayerAddrInfo.string("DTL_ADDR").equals(payer.getDtlAddr()) + && crdnPayerAddrInfo.string("ROAD_NM_CD").equals(payer.getRoadNmCd())) { + // 주소 일련번호 설정 + payer.setAddrSn(crdnPayerAddrInfo.string("ADDR_SN")); + } else { + Payer result = getPayerAddrInfo(payer); + + CrdnPayerHstry crdnPayerAddrHstry = new CrdnPayerHstry(); + crdnPayerAddrHstry.setCrdnId(payer.getCrdnId()); + crdnPayerAddrHstry.setRtpyrId(result.getRtpyrId()); + crdnPayerAddrHstry.setAddrSn(result.getAddrSn()); + + // 납부자 주소 변경 이력 생성 + rtnScs = crdnPayerHstryBean.createHstryUpdateCrdnPayerAddr(crdnPayerAddrHstry); + if (!rtnScs) { + throw new RuntimeException("납부자 등록 실행중 단속 대장에 주소 일련번호 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + + } + } else { + Payer result = create(payer) ? payer : getPayerAddrInfo(payer); + + // 단속 대장의 납부자ID 수정 및 단속 납부자 이력(TB_CRDN_PAYER_HSTRY) 대장에 등록한다. + CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry(); + crdnPayerHstry.setCrdnId(payer.getCrdnId()); + crdnPayerHstry.setRtpyrId(result.getRtpyrId()); + crdnPayerHstry.setAddrSn(result.getAddrSn()); + + rtnScs = crdnPayerHstryBean.createHstryUpdateCrdnPayer(crdnPayerHstry); + if (!rtnScs) { + throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자 ID 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. + if (crdnPayerAddrInfo.number("CRDN_STTS_CD").intValue() < 21) { // 납부자 등록 완료 + CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); + crdnSttsHstry.setCrdnId(crdnPayerAddrInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(crdnPayerAddrInfo.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(crdnPayerAddrInfo.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setCrdnSttsCd("21"); + + rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); + if (!rtnScs) { + throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + } + + return "[S] 작업이 정상 처리 되었습니다."; + } + + /**지정한 조건에 따라 납부자 이력 목록을 조회하여 반환한다. + * @param req 납부자 조회 조건 + * @return 납부자 변경 이력 목록 + */ + public List getPayerHstrys(PayerQuery req) { + if (req.getOrderBy() == null) { + req.setOrderBy("CPH.REG_DT DESC"); + } + + return payerMapper.selectPayerHstrys(req); + } + + /**지정한 조건에 따라 납부자 주소 이력 목록을 조회하여 반환한다. + * @param req 납부자 조회 조건 + * @return 납부자 변경 이력 목록 + */ + public List getPayerAddrHstrys(PayerQuery req) { + if (req.getOrderBy() == null) { + req.setOrderBy("CPAH.REG_DT DESC"); + } + + return payerAddrMapper.selectPayerAddrHstrys(req); + } + +} diff --git a/src/main/resources/sql/mapper/fims/cmmn/crdnPayerHstry-mapper.xml b/src/main/resources/sql/mapper/fims/cmmn/crdnPayerHstry-mapper.xml new file mode 100644 index 00000000..b2449a17 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/cmmn/crdnPayerHstry-mapper.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + SELECT CPH.CHG_HSTRY_ID + , CPH.CRDN_ID /* 단속 ID */ + , CPH.RTPYR_ID /* 납부자 ID */ + , CPH.REG_DT /* 등록 일시 */ + , CPH.RGTR /* 등록자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CPH.RGTR) AS RGTR_NM /* 등록자 명 */ + , PH.RTPYR_NO /* 납부자 번호 */ + , PH.RTPYR_NM /* 납부자 명 */ + , PH.ZIP /* 우편번호 */ + , PH.WHOL_ADDR /* 전체 주소 */ + , PH.REG_DT AS PH_REG_DT /* 등록 일시 */ + , PH.RGTR AS PH_RGTR /* 등록자 */ + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = PH.RGTR) AS PH_RGTR_NM /* 등록자 명 */ + FROM TB_CRDN_PAYER_HSTRY CPH + INNER JOIN TB_PAYER_HSTRY PH ON (CPH.RTPYR_ID = PH.RTPYR_ID) + + + + + + + /* 단속 납부자 이력 등록(crdnPayerHstryMapper.insertCrdnPayerHstry) */ + + + + + + + + INSERT + INTO TB_CRDN_PAYER_HSTRY ( + CHG_HSTRY_ID + , CRDN_ID + , RTPYR_ID + , REG_DT + , RGTR + ) + VALUES ( + #{crdnPayerHstry.chgHstryId} + , #{crdnPayerHstry.crdnId} + , #{crdnPayerHstry.rtpyrId} + , #{crdnPayerHstry.createdAt} + , #{crdnPayerHstry.createdBy} + ) + + + /* 단속 납부자 주소 이력 등록(crdnPayerHstryMapper.insertCrdnPayerAddrHstry) */ + INSERT + INTO TB_CRDN_PAYER_ADDR_HSTRY ( + CRDN_ID + , RTPYR_ID + , ADDR_SN + , REG_DT + , RGTR + ) + VALUES ( + #{crdnPayerAddrHstry.crdnId} + , #{crdnPayerAddrHstry.rtpyrId} + , #{crdnPayerAddrHstry.addrSn} + , #{crdnPayerAddrHstry.createdAt} + , #{crdnPayerAddrHstry.createdBy} + ) + + + /* 단속 납부자 수정(crdnPayerHstryMapper.updateCrdnPayer) */ + UPDATE TB_CRDN + SET RTPYR_ID = #{crdnPayerHstry.rtpyrId} + , ADDR_SN = #{crdnPayerHstry.addrSn} + , MDFCN_DT = #{crdnPayerHstry.lastModified} + , MDFR = #{crdnPayerHstry.modifiedBy} + WHERE CRDN_ID = #{crdnPayerHstry.crdnId} + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml b/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml new file mode 100644 index 00000000..9c1f67ce --- /dev/null +++ b/src/main/resources/sql/mapper/fims/cmmn/crdnSttsHstry-mapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + SELECT CSH.STTS_HSTRY_ID + , CSH.CRDN_ID + , CSH.BFR_STTS_CD + , (SELECT GET_CODE_NM('FIM010', CSH.BFR_STTS_CD) FROM DUAL) AS BFR_STTS_NM + , CSH.BFR_STTS_CHG_DT + , CSH.CRDN_STTS_CD + , (SELECT GET_CODE_NM('FIM010', CSH.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , CSH.TASK_DTL_ID + , CSH.USE_YN + , (SELECT GET_CODE_NM('CMN003', CSH.USE_YN) FROM DUAL) AS USE_YN_NM + , CSH.ETC_CN + , CSH.REG_DT + , CSH.RGTR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CSH.RGTR) AS RGTR_NM + , CSH.MDFCN_DT + , CSH.MDFR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CSH.MDFR) AS MDFR_NM + FROM TB_CRDN_STTS_HSTRY CSH + LEFT OUTER JOIN TB_CRDN C ON (CSH.CRDN_ID = C.CRDN_ID) + + + + + + + /* 단속 상태 이력 등록(crdnSttsHstryMapper.insertCrdnSttsHstry) */ + + + + + + + + INSERT + INTO TB_CRDN_STTS_HSTRY ( + STTS_HSTRY_ID + , CRDN_ID + , BFR_STTS_CD + , BFR_STTS_CHG_DT + , CRDN_STTS_CD + , TASK_DTL_ID + , ETC_CN + , USE_YN + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) + VALUES ( + #{sttsHstryId} + , #{crdnId} + , #{bfrSttsCd} + , #{bfrSttsChgDt} + , #{crdnSttsCd} + , #{taskDtlId} + , #{etcCn} + , #{useYn} + , + , #{createdBy} + , + , #{modifiedBy} + ) + + + /* 단속 상태 이력 수정(crdnSttsHstryMapper.updateCrdnSttsHstry) */ + UPDATE TB_CRDN_STTS_HSTRY + SET USE_YN = #{useYn} + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE STTS_HSTRY_ID = #{sttsHstryId} + + + /* 단속 상태 이력 삭제(crdnSttsHstryMapper.deleteCrdnSttsHstry) */ + UPDATE TB_CRDN_STTS_HSTRY + SET USE_YN = 'N' + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE USE_YN = 'Y' + + AND STTS_HSTRY_ID = #{sttsHstryId} + + + AND CRDN_ID = #{crdnId} + + + + /* 단속 대장 수정(crdnSttsHstryMapper.updateCrdnSttsCd) */ + UPDATE TB_CRDN + SET CRDN_STTS_CD = #{crdnSttsCd} + + + , CRDN_STTS_CHG_DT = #{crdnSttsChgDt} + + + , CRDN_STTS_CHG_DT = + + + , MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE CRDN_ID = #{crdnId} + + + diff --git a/src/main/resources/sql/mapper/fims/payer-mapper.xml b/src/main/resources/sql/mapper/fims/payer-mapper.xml new file mode 100644 index 00000000..93efaf87 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/payer-mapper.xml @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT P.RTPYR_ID + , P.SGG_CD + , P.RTPYR_INPT_SE_CD + , P.RTPYR_SE_CD + , P.RTPYR_NO + , P.RTPYR_NM + , P.RTPYR_TELNO + , P.RTPYR_MBL_TELNO + , P.RTPYR_EML + , P.RTPYR_BRDT + , P.RTPYR_STTS_CD + , P.REG_DT + , P.RGTR + , P.MDFCN_DT + , P.MDFR + FROM TB_PAYER P + + + + + + + /* 납부자 대장 등록(payerMapper.insertPayer) */ + + + + + + + + INSERT + INTO TB_PAYER ( + RTPYR_ID + , SGG_CD + , RTPYR_INPT_SE_CD + , RTPYR_SE_CD + , RTPYR_NO + , RTPYR_NM + , RTPYR_TELNO + , RTPYR_MBL_TELNO + , RTPYR_EML + , RTPYR_BRDT + , RTPYR_STTS_CD + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) + SELECT #{payer.rtpyrId} + , #{payer.sggCd} + , #{payer.rtpyrInptSeCd} + , #{payer.rtpyrSeCd} + , #{payer.rtpyrNo} + , #{payer.rtpyrNm} + , #{payer.rtpyrTelno} + , #{payer.rtpyrMblTelno} + , #{payer.rtpyrEml} + , #{payer.rtpyrBrdt} + , #{payer.rtpyrSttsCd} + , + , #{payer.createdBy} + , + , #{payer.modifiedBy} + FROM DUAL + WHERE NOT EXISTS ( + SELECT * + FROM TB_PAYER B + WHERE RTPYR_NO = #{payer.rtpyrNo} + AND RTPYR_SE_CD = #{payer.rtpyrSeCd} + AND SGG_CD = #{payer.sggCd} + ) + + + /* 납부자 대장 수정(payerMapper.updatePayer) */ + UPDATE TB_PAYER + SET RTPYR_INPT_SE_CD = #{payer.rtpyrInptSeCd} + , RTPYR_SE_CD = #{payer.rtpyrSeCd} + , RTPYR_NM = #{payer.rtpyrNm} + , RTPYR_TELNO = #{payer.rtpyrTelno} + , RTPYR_MBL_TELNO = #{payer.rtpyrMblTelno} + , RTPYR_EML = #{payer.rtpyrEml} + , RTPYR_STTS_CD = #{payer.rtpyrSttsCd} + , MDFCN_DT = + , MDFR = #{payer.modifiedBy} + WHERE RTPYR_ID = #{payer.rtpyrId} + + + + + + SELECT C.CRDN_ID + , C.SGG_CD + , C.TASK_SE_CD + , C.CRDN_YMD + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , C.VHRNO + , C.CRDN_STTS_CD + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , P.RTPYR_ID + , P.RTPYR_INPT_SE_CD + , (SELECT GET_CODE_NM('FIM015', P.RTPYR_INPT_SE_CD) FROM DUAL) AS RTPYR_INPT_SE_NM + , P.RTPYR_SE_CD + , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , P.RTPYR_NO + , P.RTPYR_NM + , P.RTPYR_TELNO + , P.RTPYR_MBL_TELNO + , P.RTPYR_EML + , P.RTPYR_BRDT + , P.RTPYR_STTS_CD + , (SELECT GET_CODE_NM('FIM014', P.RTPYR_STTS_CD) FROM DUAL) AS RTPYR_STTS_NM + , P.REG_DT + , P.RGTR + , P.MDFCN_DT + , P.MDFR + , PA.ADDR_SN + , PA.ADDR_SE_CD + , PA.ADDR_INPT_SE_CD + , PA.ZIP + , PA.ROAD_NM_CD + , PA.UDGD_SE_CD + , PA.BMNO + , PA.BSNO + , PA.BLDG_MNG_NO + , PA.STDG_CD + , PA.DONG_CD + , PA.MTN_SE_CD + , PA.MNO + , PA.SNO + , PA.SPCL_DONG + , PA.SPCL_HO + , PA.SPCL_ADDR + , PA.ADDR + , PA.DTL_ADDR + , PA.WHOL_ADDR + FROM TB_CRDN C + LEFT OUTER JOIN TB_PAYER P ON (C.RTPYR_ID = P.RTPYR_ID) + LEFT OUTER JOIN TB_PAYER_ADDR PA ON (C.RTPYR_ID = PA.RTPYR_ID AND C.ADDR_SN = PA.ADDR_SN) + + + + + + + + SELECT CPH.CHG_HSTRY_ID + , CPH.CRDN_ID + , CPH.RTPYR_ID + , CPH.REG_DT + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CPH.RGTR) AS RGTR_NM + , (SELECT GET_CODE_NM('FIM015', P.RTPYR_INPT_SE_CD) FROM DUAL) AS RTPYR_INPT_SE_NM + , (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM + , P.RTPYR_NO + , P.RTPYR_NM + , P.RTPYR_TELNO + , P.RTPYR_MBL_TELNO + , P.RTPYR_EML + , P.RTPYR_BRDT + , P.RTPYR_STTS_CD + FROM TB_CRDN_PAYER_HSTRY CPH + INNER JOIN TB_PAYER P ON (CPH.RTPYR_ID = P.RTPYR_ID) + + + + + diff --git a/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml b/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml new file mode 100644 index 00000000..f5179260 --- /dev/null +++ b/src/main/resources/sql/mapper/fims/payerAddr-mapper.xml @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT PA.RTPYR_ID + , PA.ADDR_SN + , PA.ADDR_INPT_SE_CD + , PA.ADDR_SE_CD + , PA.ZIP + , PA.ADDR + , PA.DTL_ADDR + , PA.ROAD_NM_CD + , PA.UDGD_SE_CD + , PA.BMNO + , PA.BSNO + , PA.BLDG_MNG_NO + , PA.STDG_CD + , PA.DONG_CD + , PA.MTN_SE_CD + , PA.MNO + , PA.SNO + , PA.SPCL_DONG + , PA.SPCL_HO + , PA.SPCL_ADDR + , PA.WHOL_ADDR + FROM TB_PAYER_ADDR PA + + + + + + + + + /* 납부자 주소 등록(payerAddrMapper.insertPayerAddr) */ + + SELECT LPAD(CAST(IFNULL(MAX(ADDR_SN) + 1, 1) AS INT), 5, '0') AS NEW_ID + FROM TB_PAYER_ADDR + WHERE RTPYR_ID = #{rtpyrId} + + INSERT + INTO TB_PAYER_ADDR ( + RTPYR_ID + , ADDR_SN + , ADDR_INPT_SE_CD + , ADDR_SE_CD + , ZIP + , ADDR + , DTL_ADDR + , ROAD_NM_CD + , UDGD_SE_CD + , BMNO + , BSNO + , BLDG_MNG_NO + , STDG_CD + , DONG_CD + , MTN_SE_CD + , MNO + , SNO + , SPCL_DONG + , SPCL_HO + , SPCL_ADDR + , WHOL_ADDR + , REG_DT + , RGTR + , MDFCN_DT + , MDFR + ) + VALUES ( + #{rtpyrId} + , #{addrSn} + , #{addrInptSeCd} + , #{addrSeCd} + , #{zip} + , #{addr} + , #{dtlAddr} + , #{roadNmCd} + , #{udgdSeCd} + , #{bmno} + , #{bsno} + , #{bldgMngNo} + , #{stdgCd} + , #{dongCd} + , #{mtnSeCd} + , #{mno} + , #{sno} + , #{spclDong} + , #{spclHo} + , #{spclAddr} + , #{wholAddr} + , + , #{createdBy} + , + , #{modifiedBy} + ) + + + /* 납부자 주소 수정(payerAddrMapper.updatePayerAddr) */ + UPDATE TB_PAYER_ADDR + SET MDFCN_DT = + , MDFR = #{modifiedBy} + WHERE RTPYR_ID = #{rtpyrId} + AND ADDR_SN = #{addrSn} + + + + SELECT CPAH.CRDN_ID + , CPAH.RTPYR_ID + , CPAH.ADDR_SN + , CPAH.REG_DT + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = CPAH.RGTR) AS RGTR_NM + , (SELECT GET_CODE_NM('FIM087', PA.ADDR_INPT_SE_CD) FROM DUAL) AS ADDR_INPT_SE_NM + , (SELECT GET_CODE_NM('FIM013', PA.ADDR_SE_CD) FROM DUAL) AS ADDR_SE_NM + , PA.ZIP + , PA.ADDR + , PA.DTL_ADDR + , PA.ROAD_NM_CD + , PA.UDGD_SE_CD + , PA.BMNO + , PA.BSNO + , PA.BLDG_MNG_NO + , PA.STDG_CD + , PA.DONG_CD + , PA.MTN_SE_CD + , PA.MNO + , PA.SNO + , PA.SPCL_DONG + , PA.SPCL_HO + , PA.SPCL_ADDR + , PA.WHOL_ADDR + FROM TB_CRDN_PAYER_ADDR_HSTRY CPAH + INNER JOIN TB_PAYER_ADDR PA ON (CPAH.RTPYR_ID = PA.RTPYR_ID AND CPAH.ADDR_SN = PA.ADDR_SN) + + + + +