납부자 관련 소스 이동

main
이범준 2 months ago
parent 4c6603f750
commit 87df5e184f

@ -1,35 +0,0 @@
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;
}

@ -1,48 +0,0 @@
package cokr.xit.fims.cmmn;
/**
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-16 leebj
* ================================
* </pre>
*/
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 extends CrdnPayerHstryQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String getRtpyrId() {
return ifEmpty(rtpyrId, () -> null);
}
public <T extends CrdnPayerHstryQuery> T setRtpyrId(String rtpyrId) {
this.rtpyrId = rtpyrId;
return self();
}
public String getAddrSn() {
return ifEmpty(addrSn, () -> null);
}
public <T extends CrdnPayerHstryQuery> T setAddrSn(String addrSn) {
this.rtpyrId = addrSn;
return self();
}
}

@ -1,87 +0,0 @@
package cokr.xit.fims.cmmn;
import cokr.xit.foundation.AbstractEntity;
import lombok.Getter;
import lombok.Setter;
/**
*
* <p> : .
*
* <pre>
* ============ ============
* 2023-07-19 JoJH
* ================================
* </pre>
*/
@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;
}

@ -1,62 +0,0 @@
package cokr.xit.fims.cmmn;
/**
*
* <p> :
*
* <pre>
* ============ ============
* 2023-07-19 JoJH
* ================================
* </pre>
*/
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 extends CrdnSttsHstryQuery> T setSttsHstryId(String sttsHstryId) {
this.sttsHstryId = sttsHstryId;
return self();
}
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
}
public <T extends CrdnSttsHstryQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String getCrdnSttsCd() {
return ifEmpty(crdnSttsCd, () -> null);
}
public <T extends CrdnSttsHstryQuery> T setCrdnSttsCd(String crdnSttsCd) {
this.crdnSttsCd = crdnSttsCd;
return self();
}
public String getTaskDtlId() {
return ifEmpty(taskDtlId, () -> null);
}
public <T extends CrdnSttsHstryQuery> T setTaskDtlId(String taskDtlId) {
this.taskDtlId = taskDtlId;
return self();
}
}

@ -1,98 +0,0 @@
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
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-16 leebj
* ================================
* </pre>
*/
@Mapper("crdnPayerHstryMapper")
public interface CrdnPayerHstryMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
*/
List<DataObject> selectCrdnPayerHstryList(CrdnPayerHstryQuery req);
/** .
* @param req
* @return
*/
List<CrdnPayerHstry> selectCrdnPayerHstrys(CrdnPayerHstryQuery req);
/** .
* @param params
* <ul><li>"crdnPayerHstry" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertCrdnPayerHstry(Map<String, Object> params);
/** .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insertCrdnPayerHstry(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstry != null && insertCrdnPayerHstry(params().set("crdnPayerHstry", crdnPayerHstry)) == 1;
}
/** .
* @param params
* <ul><li>"crdnPayerHstry" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertCrdnPayerAddrHstry(Map<String, Object> params);
/** .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insertCrdnPayerAddrHstry(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstry != null && insertCrdnPayerAddrHstry(params().set("crdnPayerAddrHstry", crdnPayerHstry)) == 1;
}
/**(TB_CRDN) ID .
* @param params
* <ul><li>"crdnPayerHstry" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateCrdnRtpyrId(Map<String, Object> params);
/**(TB_CRDN) ID .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean updateCrdnPayer(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstry != null && updateCrdnRtpyrId(params().set("crdnPayerHstry", crdnPayerHstry)) == 1;
}
}

@ -1,89 +0,0 @@
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
*
* <p> :
*
* <pre>
* ============ ============
* 2023-07-19 JoJH
* ================================
* </pre>
*/
@Mapper("crdnSttsHstryMapper")
public interface CrdnSttsHstryMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
*/
List<DataObject> selectCrdnSttsHstryList(CrdnSttsHstryQuery req);
/** .
* @param req
* @return
*/
List<DataObject> 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<DataObject> crdnSttsHstrys = selectCrdnSttsHstrys(req);
return !crdnSttsHstrys.isEmpty() ? crdnSttsHstrys.get(0) : null;
}
/** .
* @param params
* <ul><li>"crdnSttsHstry" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry);
/** .
* @param params
* <ul><li>"crdnSttsHstry" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry);
/** .
* @param params
* <ul><li>"crdnSttsHstry" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int deleteCrdnSttsHstry(CrdnSttsHstry crdnSttsHstry);
/**(TB_CRDN) .
* @param params
* <ul><li>"excl01" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateCrdnSttsCd(CrdnSttsHstry crdnSttsHstry);
}

@ -1,137 +0,0 @@
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
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-16 leebj
* ================================
* </pre>
*/
@Component("crdnPayerHstryBean")
public class CrdnPayerHstryBean extends AbstractBean {
/** 단속 납부자 이력 정보 DAO */
@Resource(name = "crdnPayerHstryMapper")
private CrdnPayerHstryMapper crdnPayerHstryMapper;
/** .
* @param req
* @return
*/
public List<DataObject> getCrdnPayerHstryList(CrdnPayerHstryQuery req) {
return crdnPayerHstryMapper.selectCrdnPayerHstryList(req);
}
/** .
* @param req
* @return
*/
public List<CrdnPayerHstry> getCrdnPayerHstrys(CrdnPayerHstryQuery req) {
return crdnPayerHstryMapper.selectCrdnPayerHstrys(req);
}
/** .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean createCrdnPayerHstry(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstryMapper.insertCrdnPayerHstry(crdnPayerHstry);
}
/** .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean createCrdnPayerAddrHstry(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstryMapper.insertCrdnPayerAddrHstry(crdnPayerHstry);
}
/** , .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateCrdnPayer(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstryMapper.updateCrdnPayer(crdnPayerHstry);
}
/** , .
* @param crdnPayerHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
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
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
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;
}
}

@ -1,224 +0,0 @@
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
*
* <p> :
*
* <pre>
* ============ ============
* 2023-07-19 JoJH
* ================================
* </pre>
*/
@Component("crdnSttsHstryBean")
public class CrdnSttsHstryBean extends AbstractBean {
/** 단속 상태 이력 정보 DAO */
@Resource(name = "crdnSttsHstryMapper")
private CrdnSttsHstryMapper crdnSttsHstryMapper;
/** .
* @param req
* @return
*/
public List<DataObject> getCrdnSttsHstryList(CrdnSttsHstryQuery req) {
return crdnSttsHstryMapper.selectCrdnSttsHstryList(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> 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
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(CrdnSttsHstry crdnSttsHstry) {
if (crdnSttsHstry.getUseYn() == null) {
crdnSttsHstry.setUseYn("Y");
}
return crdnSttsHstryMapper.insertCrdnSttsHstry(crdnSttsHstry) == 1;
}
/** .
* @param crdnSttsHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(CrdnSttsHstry crdnSttsHstry) {
return crdnSttsHstryMapper.updateCrdnSttsHstry(crdnSttsHstry) == 1;
}
/** . ID .
* @param crdnSttsHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean remove(CrdnSttsHstry crdnSttsHstry) {
return crdnSttsHstryMapper.deleteCrdnSttsHstry(crdnSttsHstry) >= 1;
}
/** .
* @param excl
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updateCrdn(CrdnSttsHstry crdnSttsHstry) {
return crdnSttsHstryMapper.updateCrdnSttsCd(crdnSttsHstry) == 1;
}
/** , .
* @param crdnSttsHstry
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
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
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
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;
}
}

@ -1,191 +0,0 @@
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;
}

@ -1,233 +0,0 @@
package cokr.xit.fims.payer;
import cokr.xit.foundation.component.QueryRequest;
/**
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-18 mjkhan
* ================================
* </pre>
*/
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 extends PayerQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String getCallPurpose() {
return ifEmpty(callPurpose, () -> null);
}
public <T extends PayerQuery> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}
}

@ -1,67 +0,0 @@
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
*
* <p> :
*
* <pre>
* ============ ============
* 2024-05-23 JoJH
* ================================
* </pre>
*/
@Mapper("payerAddrMapper")
public interface PayerAddrMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
*/
List<DataObject> selectPayerAddrList(PayerQuery req);
/** .
* @param req
* @return
*/
List<Payer> selectPayerAddrs(PayerQuery req);
/** .
* @param req
* @return
*/
List<Payer> selectPayerAddrInfo(PayerQuery req);
/** .
* @param params
* <ul><li>"payerAddr" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertPayerAddr(Payer payer);
/** .
* @param params
* <ul><li>"payerAddr" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updatePayerAddr(Payer payer);
/** .
* @param req
* @return
*/
List<DataObject> selectPayerAddrHstrys(PayerQuery req);
}

@ -1,117 +0,0 @@
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
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-18 mjkhan
* ================================
* </pre>
*/
@Mapper("payerMapper")
public interface PayerMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
*/
List<DataObject> selectPayerList(PayerQuery req);
/** .
* @param req
* @return
*/
List<Payer> selectPayers(PayerQuery req);
/** .
* @param payer
* @return
*/
int insertPayer(Map<String, Object> params);
/** .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(Payer payer) {
return payer != null && insertPayer(params().set("payer", payer)) == 1;
}
/** .
* @param params
* <ul><li>"payer" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updatePayer(Map<String, Object> params);
/** .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(Payer payer) {
return payer != null && updatePayer(params().set("payer", payer)) == 1;
}
/** , .
* @param params
* <ul><li>roadNmCd - </li>
* <li>udgdSeCd - </li>
* <li>bmno - </li>
* <li>bsno - </li>
* </ul>
* @return ,
*/
DataObject selectAddrInfo(Map<String, Object> params);
/** 1 .
* @param levyExclId ID
* @return
*/
List<DataObject> selectCrdnPayers(PayerQuery req);
default DataObject selectPayerInfo(PayerQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("P.RTPYR_ID DESC");
}
List<DataObject> 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<DataObject> selectPayerHstrys(PayerQuery req);
}

@ -1,409 +0,0 @@
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
*
* <p> :
*
* <pre>
* ============ ============
* 2023-08-18 mjkhan
* ================================
* </pre>
*/
@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<DataObject> getPayerList(PayerQuery req) {
return payerMapper.selectPayerList(req);
}
/** .
* @param req
* @return
*/
public List<Payer> 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<Payer> payers = getPayers(req);
return !payers.isEmpty() ? payers.get(0) : null;
}
/** .
* @param req
* @return
*/
public List<Payer> 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<Payer> 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<Payer> 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
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(Payer payer) {
// 납부자 등록
boolean rtnScs = payerMapper.insert(payer);
// 납부자 주소 등록
if (rtnScs) {
createPayerAddr(payer);
}
return rtnScs;
}
/** .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(Payer payer) {
return payerMapper.update(payer);
}
/** .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
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
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean updatePayerAddr(Payer payer) {
return payerAddrMapper.updatePayerAddr(payer) == 1 ? true : false;
}
public List<Payer> getVehicleOwners(List<BasicInfoRequest> reqs) {
Map<String, BasicInfoResponse> 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 .<br />
* @param req
* @return
*/
public DataObject getPayerInfo(PayerQuery req) {
return payerMapper.selectPayerInfo(req);
}
/** ID .<br />
* @param req
* @return
*/
public DataObject getCrdnInfo(PayerQuery req) {
return payerMapper.selectCrdn(req); // 단속 조회
}
/** , ID .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
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<DataObject> getPayerHstrys(PayerQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("CPH.REG_DT DESC");
}
return payerMapper.selectPayerHstrys(req);
}
/** .
* @param req
* @return
*/
public List<DataObject> getPayerAddrHstrys(PayerQuery req) {
if (req.getOrderBy() == null) {
req.setOrderBy("CPAH.REG_DT DESC");
}
return payerAddrMapper.selectPayerAddrHstrys(req);
}
}

@ -1,111 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.cmmn.dao.CrdnPayerHstryMapper">
<!-- 단속 납부자 이력 정보 매퍼
========== 변경 이력 ==========
2023-08-16 leebj 최초 작성
============================ -->
<resultMap id="crdnPayerHstryRow" type="cokr.xit.fims.cmmn.CrdnPayerHstry"> <!-- 단속 납부자 이력 -->
<result property="chgHstryId" column="CHG_HSTRY_ID" /><!-- 변경 이력 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID -->
<result property="addrSn" column="ADDR_SN" /> <!-- 주소 일련번호 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
</resultMap>
<sql id="select">
SELECT CPH.CHG_HSTRY_ID <!-- 변경 이력 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)
</sql>
<select id="selectCrdnPayerHstryList" parameterType="map" resultType="dataobject">/* 단속 납부자 이력 목록 조회(crdnPayerHstryMapper.selectCrdnPayerHstryList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where>
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<select id="selectCrdnPayerHstrys" parameterType="map" resultType="dataobject">/* 단속 납부자 이력 객체 가져오기(crdnPayerHstryMapper.selectCrdnPayerHstrys) */
<include refid="select" />
<where>
<if test="crdnId != null">
AND CPH.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
<if test="rtpyrId != null">
AND CPH.RTPYR_ID = #{rtpyrId} /* 납부자 ID */
</if>
</where>
<include refid="utility.orderBy" />
</select>
<insert id="insertCrdnPayerHstry" parameterType="map">/* 단속 납부자 이력 등록(crdnPayerHstryMapper.insertCrdnPayerHstry) */
<selectKey resultType="string" keyProperty="crdnPayerHstry.chgHstryId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyByYear">
<property name="TABLE_NAME" value="TB_CRDN_PAYER_HSTRY" />
<property name="TABLE_KEY" value="CHG_HSTRY_ID" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_CRDN_PAYER_HSTRY (
CHG_HSTRY_ID <!-- 변경 이력 ID -->
, CRDN_ID <!-- 단속 ID -->
, RTPYR_ID <!-- 납부자 ID -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
)
VALUES (
#{crdnPayerHstry.chgHstryId} <!-- 변경 이력 ID -->
, #{crdnPayerHstry.crdnId} <!-- 단속 ID -->
, #{crdnPayerHstry.rtpyrId} <!-- 납부자 ID -->
, #{crdnPayerHstry.createdAt} <!-- 등록 일시 -->
, #{crdnPayerHstry.createdBy} <!-- 등록자 -->
)
</insert>
<insert id="insertCrdnPayerAddrHstry" parameterType="map">/* 단속 납부자 주소 이력 등록(crdnPayerHstryMapper.insertCrdnPayerAddrHstry) */
INSERT
INTO TB_CRDN_PAYER_ADDR_HSTRY (
CRDN_ID <!-- 단속 ID -->
, RTPYR_ID <!-- 납부자 ID -->
, ADDR_SN <!-- 주소 일련번호 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
)
VALUES (
#{crdnPayerAddrHstry.crdnId} <!-- 단속 ID -->
, #{crdnPayerAddrHstry.rtpyrId} <!-- 납부자 ID -->
, #{crdnPayerAddrHstry.addrSn} <!-- 주소 일련번호 -->
, #{crdnPayerAddrHstry.createdAt} <!-- 등록 일시 -->
, #{crdnPayerAddrHstry.createdBy} <!-- 등록자 -->
)
</insert>
<update id="updateCrdnRtpyrId" parameterType="map">/* 단속 납부자 수정(crdnPayerHstryMapper.updateCrdnPayer) */
UPDATE TB_CRDN
SET RTPYR_ID = #{crdnPayerHstry.rtpyrId} <!-- 납부자 ID -->
, ADDR_SN = #{crdnPayerHstry.addrSn} <!-- 주소 일련번호 -->
, MDFCN_DT = #{crdnPayerHstry.lastModified} <!-- 수정 일시 -->
, MDFR = #{crdnPayerHstry.modifiedBy} <!-- 수정자 -->
WHERE CRDN_ID = #{crdnPayerHstry.crdnId} <!-- 단속 ID -->
</update>
</mapper>

@ -1,168 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.cmmn.dao.CrdnSttsHstryMapper">
<!-- 단속 상태 이력 정보 매퍼
========== 변경 이력 ==========
2023-07-19 JoJH 최초 작성
============================ -->
<resultMap id="crdnSttsHstryRow" type="cokr.xit.fims.cmmn.CrdnSttsHstry"><!-- 단속 상태 이력 -->
<result property="sttsHstryId" column="STTS_HSTRY_ID" /> <!-- 상태 이력 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="bfrSttsCd" column="BFR_STTS_CD" /> <!-- 이전 상태 코드 -->
<result property="bfrSttsChgDt" column="BFR_STTS_CHG_DT" /> <!-- 이전 상태 변경 일시 -->
<result property="crdnSttsCd" column="CRDN_STTS_CD" /> <!-- 단속 상태 코드 -->
<result property="taskDtlId" column="TASK_DTL_ID" /> <!-- 업무 상세 ID -->
<result property="useYn" column="USE_YN" /> <!-- 사용 여부 -->
<result property="etcCn" column="ETC_CN" /> <!-- 기타 내용 -->
<result property="regDt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="rgtr" column="RGTR" /> <!-- 등록자 -->
<result property="mdfcnDt" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="mdfr" column="MDFR" /> <!-- 수정자 -->
</resultMap>
<sql id="select">
SELECT CSH.STTS_HSTRY_ID <!-- 상태 이력 ID -->
, CSH.CRDN_ID <!-- 단속 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 <!-- 업무 상세 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)
</sql>
<select id="selectCrdnSttsHstryList" parameterType="map" resultType="dataobject">/* 단속 상태 이력 목록 조회(crdnSttsHstryMapper.selectCrdnSttsHstryList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where>
<if test="sggCd != null">
AND C.SGG_CD = #{sggCd}
</if>
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd}
</if>
<if test="crdnId != null">
AND CSH.CRDN_ID = #{crdnId}
</if>
<if test="useYn != null">
AND CSH.USE_YN = #{useYn}
</if>
<if test="schDateOpt == 'regDt'">
<if test="schDateFrom != null">AND SUBSTR(CSH.REG_DT,1,8) <![CDATA[ >= ]]> #{schDateFrom} </if>
<if test="schDateTo != null">AND SUBSTR(CSH.REG_DT,1,8) <![CDATA[ <= ]]> #{schDateTo} </if>
</if>
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<select id="selectCrdnSttsHstrys" parameterType="map" resultType="dataobject">/* 단속 상태 이력 객체 가져오기(crdnSttsHstryMapper.selectCrdnSttsHstrys) */
<include refid="select" />
<where>
<if test="sttsHstryId != null">
AND CSH.STTS_HSTRY_ID = #{sttsHstryId}
</if>
<if test="crdnId != null">
AND CSH.CRDN_ID = #{crdnId}
</if>
<if test="crdnSttsCd != null">
AND CSH.CRDN_STTS_CD = #{crdnSttsCd}
</if>
<if test="useYn != null">
AND CSH.USE_YN = #{useYn}
</if>
</where>
<include refid="utility.sortBy" />
</select>
<insert id="insertCrdnSttsHstry" parameterType="cokr.xit.fims.cmmn.CrdnSttsHstry">/* 단속 상태 이력 등록(crdnSttsHstryMapper.insertCrdnSttsHstry) */
<selectKey resultType="string" keyProperty="sttsHstryId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyByYear">
<property name="TABLE_NAME" value="TB_CRDN_STTS_HSTRY" />
<property name="TABLE_KEY" value="STTS_HSTRY_ID" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_CRDN_STTS_HSTRY (
STTS_HSTRY_ID <!-- 상태 이력 ID -->
, CRDN_ID <!-- 단속 ID -->
, BFR_STTS_CD <!-- 이전 상태 코드 -->
, BFR_STTS_CHG_DT <!-- 이전 상태 변경 일시 -->
, CRDN_STTS_CD <!-- 단속 상태 코드 -->
, TASK_DTL_ID <!-- 업무 상세 ID -->
, ETC_CN <!-- 기타 내용 -->
, USE_YN <!-- 사용 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
)
VALUES (
#{sttsHstryId} <!-- 상태 이력 ID -->
, #{crdnId} <!-- 단속 ID -->
, #{bfrSttsCd} <!-- 이전 상태 코드 -->
, #{bfrSttsChgDt} <!-- 이전 상태 변경 일시 -->
, #{crdnSttsCd} <!-- 단속 상태 코드 -->
, #{taskDtlId} <!-- 업무 상세 ID -->
, #{etcCn} <!-- 기타 내용 -->
, #{useYn} <!-- 사용 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updateCrdnSttsHstry" parameterType="cokr.xit.fims.cmmn.CrdnSttsHstry">/* 단속 상태 이력 수정(crdnSttsHstryMapper.updateCrdnSttsHstry) */
UPDATE TB_CRDN_STTS_HSTRY
SET USE_YN = #{useYn} <!-- 사용 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE STTS_HSTRY_ID = #{sttsHstryId} <!-- 상태 이력 ID -->
</update>
<update id="deleteCrdnSttsHstry" parameterType="cokr.xit.fims.cmmn.CrdnSttsHstry">/* 단속 상태 이력 삭제(crdnSttsHstryMapper.deleteCrdnSttsHstry) */
UPDATE TB_CRDN_STTS_HSTRY
SET USE_YN = 'N' <!-- 사용 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE USE_YN = 'Y' <!-- 사용 여부 -->
<if test="sttsHstryId != null">
AND STTS_HSTRY_ID = #{sttsHstryId}
</if>
<if test="crdnId != null">
AND CRDN_ID = #{crdnId}
</if>
</update>
<update id="updateCrdnSttsCd" parameterType="cokr.xit.fims.cmmn.CrdnSttsHstry">/* 단속 대장 수정(crdnSttsHstryMapper.updateCrdnSttsCd) */
UPDATE TB_CRDN
SET CRDN_STTS_CD = #{crdnSttsCd} <!-- 단속 상태 코드 -->
<choose>
<when test="crdnSttsChgDt != null">
, CRDN_STTS_CHG_DT = #{crdnSttsChgDt} <!-- 단속 상태 변경 일시 -->
</when>
<otherwise>
, CRDN_STTS_CHG_DT = <include refid="utility.now" /> <!-- 단속 상태 변경 일시 -->
</otherwise>
</choose>
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE CRDN_ID = #{crdnId} <!-- 단속 ID -->
</update>
</mapper>

@ -1,294 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.payer.dao.PayerMapper">
<!-- 납부자 대장 정보 매퍼
========== 변경 이력 ==========
2024-05-23 JoJH 납부자, 주소 테이블 분리
2023-08-18 mjkhan 최초 작성
============================ -->
<resultMap id="payerRow" type="cokr.xit.fims.payer.Payer"> <!-- 납부자 대장 -->
<result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID -->
<result property="sggCd" column="SGG_CD" /> <!-- 시군구 코드 -->
<result property="rtpyrInptSeCd" column="RTPYR_INPT_SE_CD" /> <!-- 납부자 입력 구분 코드 -->
<result property="rtpyrSeCd" column="RTPYR_SE_CD" /> <!-- 납부자 구분 코드 -->
<result property="rtpyrNo" column="RTPYR_NO" /> <!-- 납부자 번호 -->
<result property="rtpyrNm" column="RTPYR_NM" /> <!-- 납부자 명 -->
<result property="rtpyrTelno" column="RTPYR_TELNO" /> <!-- 납부자 전화번호 -->
<result property="rtpyrMblTelno" column="RTPYR_MBL_TELNO" /> <!-- 납부자 휴대 전화번호 -->
<result property="rtpyrEml" column="RTPYR_EML" /> <!-- 납부자 이메일 -->
<result property="rtpyrBrdt" column="RTPYR_BRDT" /> <!-- 납부자 생년월일 -->
<result property="rtpyrSttsCd" column="RTPYR_STTS_CD" /> <!-- 납부자 상태 코드 -->
<result property="addrSn" column="ADDR_SN" /> <!-- 주소 일련번호 -->
<result property="addrInptSeCd" column="ADDR_INPT_SE_CD" /> <!-- 주소 입력 구분 코드 -->
<result property="addrSeCd" column="ADDR_SE_CD" /> <!-- 주소 구분 코드 -->
<result property="zip" column="ZIP" /> <!-- 우편번호 -->
<result property="roadNmCd" column="ROAD_NM_CD" /> <!-- 도로 명 코드 -->
<result property="udgdSeCd" column="UDGD_SE_CD" /> <!-- 지하 구분 코드 -->
<result property="bmno" column="BMNO" /> <!-- 건물본번 -->
<result property="bsno" column="BSNO" /> <!-- 건물부번 -->
<result property="bldgMngNo" column="BLDG_MNG_NO" /> <!-- 건물 관리 번호 -->
<result property="stdgCd" column="STDG_CD" /> <!-- 법정동 코드 -->
<result property="dongCd" column="DONG_CD" /> <!-- 행정동 코드 -->
<result property="mtnSeCd" column="MTN_SE_CD" /> <!-- 산 구분 코드 -->
<result property="mno" column="MNO" /> <!-- 본번 -->
<result property="sno" column="SNO" /> <!-- 부번 -->
<result property="spclDong" column="SPCL_DONG" /> <!-- 특수 동 -->
<result property="spclHo" column="SPCL_HO" /> <!-- 특수 호 -->
<result property="spclAddr" column="SPCL_ADDR" /> <!-- 특수 주소 -->
<result property="addr" column="ADDR" /> <!-- 주소 -->
<result property="dtlAddr" column="DTL_ADDR" /> <!-- 상세 주소 -->
<result property="wholAddr" column="WHOL_ADDR" /> <!-- 전체 주소 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
</resultMap>
<sql id="select">
SELECT P.RTPYR_ID <!-- 납부자 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
</sql>
<select id="selectPayerList" parameterType="map" resultType="dataobject">/* 납부자 대장 목록 조회(payerMapper.selectPayerList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where>
AND P.RTPYR_ID IN (<foreach collection="rtpyrIds" item="rtpyrId" separator=",">#{rtpyrId}</foreach>)
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<select id="selectPayers" parameterType="map" resultMap="payerRow">/* 납부자 대장 객체 가져오기(payerMapper.selectPayers) */
<include refid="select" />
<where>
<choose>
<when test="rtpyrIds != null">
AND P.RTPYR_ID IN (<foreach collection="rtpyrIds" item="rtpyrId" separator=",">#{rtpyrId}</foreach>)
</when>
<when test="rtpyrId != null">
AND P.RTPYR_ID = #{rtpyrId} <!-- 납부자 ID -->
</when>
<otherwise>
AND P.RTPYR_SE_CD = #{rtpyrSeCd} <!-- 납부자 구분 코드 -->
AND P.RTPYR_NO = #{rtpyrNo} <!-- 납부자 번호 -->
</otherwise>
</choose>
</where>
<include refid="utility.orderBy" />
</select>
<insert id="insertPayer" parameterType="map">/* 납부자 대장 등록(payerMapper.insertPayer) */
<selectKey resultType="string" keyProperty="payer.rtpyrId" keyColumn="NEW_ID" order="BEFORE">
<include refid="numbering.keyByYear">
<property name="TABLE_NAME" value="TB_PAYER" />
<property name="TABLE_KEY" value="RTPYR_ID" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_PAYER (
RTPYR_ID <!-- 납부자 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} <!-- 납부자 ID -->
, #{payer.sggCd} <!-- 시군구 코드 -->
, #{payer.rtpyrInptSeCd} <!-- 납부자 입력 구분 코드 -->
, #{payer.rtpyrSeCd} <!-- 납부자 구분 코드 -->
, #{payer.rtpyrNo} <!-- 납부자 번호 -->
, #{payer.rtpyrNm} <!-- 납부자 명 -->
, #{payer.rtpyrTelno} <!-- 납부자 전화번호 -->
, #{payer.rtpyrMblTelno} <!-- 납부자 휴대 전화번호 -->
, #{payer.rtpyrEml} <!-- 납부자 이메일 -->
, #{payer.rtpyrBrdt} <!-- 납부자 생년월일 -->
, #{payer.rtpyrSttsCd} <!-- 납부자 상태 코드 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{payer.createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{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}
)
</insert>
<update id="updatePayer" parameterType="cokr.xit.fims.payer.Payer">/* 납부자 대장 수정(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 = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{payer.modifiedBy} <!-- 수정자 -->
WHERE RTPYR_ID = #{payer.rtpyrId}
</update>
<select id="selectAddrInfo" parameterType="map" resultType="dataobject">/* 우편번호, 건물관리번호 조회(payerMapper.selectAddrInfo) */
SELECT ZIP
, BLDG_MNG_NO
, STDG_CD
, DONG_CD
, CTPV_NM
, SGG_NM
, STDG_NM
, STDG_LI_NM
, ROAD_NM
FROM TB_ROAD_ADDR
WHERE ROAD_NM_CD = #{roadNmCd}
AND UDGD_SE_CD = #{udgdSeCd}
AND BMNO = #{bmno}
AND BSNO = #{bsno}
LIMIT 1
</select>
<sql id="selectCrdnPayer">
SELECT C.CRDN_ID <!-- 단속 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 <!-- 납부자 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)
</sql>
<select id="selectCrdnPayers" parameterType="map" resultType="dataobject">/* 납부자 대장 객체 가져오기(payerMapper.selectCrdnPayers) */
<include refid="selectCrdnPayer" />
<where>
<if test="rtpyrId != null">
AND P.RTPYR_ID = #{rtpyrId} <!-- 납부자 ID -->
</if>
<if test="crdnId != null">
AND C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = 'N'
</if>
</where>
<include refid="utility.orderBy" />
</select>
<select id="selectCrdn" parameterType="map" resultType="dataobject">/* 단속 대장 객체 가져오기(payerMapper.selectCrdn) */
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.RTPYR_ID <!-- 납부자 ID -->
, C.ADDR_SN <!-- 주소 일련번호 -->
, 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_NO <!-- 납부자 번호 -->
, PA.ADDR_INPT_SE_CD <!-- 주소 입력 구분 코드 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, PA.ROAD_NM_CD <!-- 도로 명 코드 -->
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)
WHERE C.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND C.DEL_YN = 'N'
</select>
<sql id="selectPayerHstry">
SELECT CPH.CHG_HSTRY_ID <!-- 변경 이력 ID -->
, CPH.CRDN_ID <!-- 단속 ID -->
, CPH.RTPYR_ID <!-- 납부자 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)
</sql>
<select id="selectPayerHstrys" parameterType="map" resultType="dataobject">/* 납부자 이력 대장 객체 가져오기(payerMapper.selectPayerHstrys) */
<include refid="selectPayerHstry" />
WHERE CPH.CRDN_ID = #{crdnId} <!-- 단속 ID -->
<include refid="utility.orderBy" />
</select>
</mapper>

@ -1,251 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cokr.xit.fims.payer.dao.PayerAddrMapper">
<!-- 납부자 주소 정보 매퍼
========== 변경 이력 ==========
2024-05-23 JoJH 최초 작성
============================ -->
<resultMap id="payerAddrRow" type="cokr.xit.fims.payer.Payer"> <!-- 납부자 주소 -->
<result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID -->
<result property="addrSn" column="ADDR_SN" /> <!-- 주소 일련번호 -->
<result property="addrInptSeCd" column="ADDR_INPT_SE_CD" /> <!-- 주소 입력 구분 코드 -->
<result property="addrSeCd" column="ADDR_SE_CD" /> <!-- 주소 구분 코드 -->
<result property="zip" column="ZIP" /> <!-- 우편번호 -->
<result property="addr" column="ADDR" /> <!-- 주소 -->
<result property="dtlAddr" column="DTL_ADDR" /> <!-- 상세 주소 -->
<result property="roadNmCd" column="ROAD_NM_CD" /> <!-- 도로 명 코드 -->
<result property="udgdSeCd" column="UDGD_SE_CD" /> <!-- 지하 구분 코드 -->
<result property="bmno" column="BMNO" /> <!-- 건물본번 -->
<result property="bsno" column="BSNO" /> <!-- 건물부번 -->
<result property="bldgMngNo" column="BLDG_MNG_NO" /> <!-- 건물 관리 번호 -->
<result property="stdgCd" column="STDG_CD" /> <!-- 법정동 코드 -->
<result property="dongCd" column="DONG_CD" /> <!-- 행정동 코드 -->
<result property="mtnSeCd" column="MTN_SE_CD" /> <!-- 산 구분 코드 -->
<result property="mno" column="MNO" /> <!-- 본번 -->
<result property="sno" column="SNO" /> <!-- 부번 -->
<result property="spclDong" column="SPCL_DONG" /> <!-- 특수 동 -->
<result property="spclHo" column="SPCL_HO" /> <!-- 특수 호 -->
<result property="spclAddr" column="SPCL_ADDR" /> <!-- 특수 주소 -->
<result property="wholAddr" column="WHOL_ADDR" /> <!-- 전체 주소 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
</resultMap>
<sql id="select">
SELECT PA.RTPYR_ID <!-- 납부자 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
</sql>
<select id="selectPayerAddrList" parameterType="map" resultType="dataobject">/* 납부자 주소 목록 조회(payerAddrMapper.selectPayerAddrList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
WHERE PA.RTPYR_ID = #{rtpyrId}
<if test="addrSn != null">
AND PA.ADDR_SN = #{addrSn}
</if>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<select id="selectPayerAddrs" parameterType="map" resultMap="payerAddrRow">/* 납부자 주소 객체 가져오기(payerAddrMapper.selectPayerAddrs) */
<include refid="select" />
WHERE PA.RTPYR_ID = #{rtpyrId}
<if test="addrSn != null">
AND PA.ADDR_SN = #{addrSn}
</if>
<include refid="utility.orderBy" />
</select>
<select id="selectPayerAddrInfo" parameterType="map" resultMap="payerAddrRow">/* 납부자 주소 객체 가져오기(payerAddrMapper.selectPayerAddrInfo) */
SELECT P.RTPYR_ID <!-- 납부자 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 <!-- 수정자 -->
, 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 P
LEFT OUTER JOIN TB_PAYER_ADDR PA ON (P.RTPYR_ID = PA.RTPYR_ID)
WHERE P.RTPYR_ID = #{rtpyrId}
<choose>
<when test="addrSn != null">
AND PA.ADDR_SN = #{addrSn}
</when>
<otherwise>
<if test="addrInptSeCd != null">
AND PA.ADDR_INPT_SE_CD= #{addrInptSeCd}
</if>
<if test="roadNmCd != null">
AND PA.ROAD_NM_CD= #{roadNmCd}
</if>
<if test="addr != null">
AND PA.ADDR = #{addr}
</if>
<if test="dtlAddr != null">
AND PA.DTL_ADDR = #{dtlAddr}
</if>
</otherwise>
</choose>
<include refid="utility.orderBy" />
</select>
<insert id="insertPayerAddr" parameterType="cokr.xit.fims.payer.Payer">/* 납부자 주소 등록(payerAddrMapper.insertPayerAddr) */
<selectKey resultType="string" keyProperty="addrSn" keyColumn="NEW_ID" order="BEFORE">
SELECT LPAD(CAST(IFNULL(MAX(ADDR_SN) + 1, 1) AS INT), 5, '0') AS NEW_ID
FROM TB_PAYER_ADDR
WHERE RTPYR_ID = #{rtpyrId}
</selectKey>
INSERT
INTO TB_PAYER_ADDR (
RTPYR_ID <!-- 납부자 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} <!-- 납부자 ID -->
, #{addrSn} <!-- 주소 일련번호 -->
, #{addrInptSeCd} <!-- 주소 입력 구분 코드 -->
, #{addrSeCd} <!-- 주소 구분 코드 -->
, #{zip} <!-- 우편번호 -->
, #{addr} <!-- 주소 -->
, #{dtlAddr} <!-- 상세 주소 -->
, #{roadNmCd} <!-- 도로 명 코드 -->
, #{udgdSeCd} <!-- 지하 구분 코드 -->
, #{bmno} <!-- 건물본번 -->
, #{bsno} <!-- 건물부번 -->
, #{bldgMngNo} <!-- 건물 관리 번호 -->
, #{stdgCd} <!-- 법정동 코드 -->
, #{dongCd} <!-- 행정동 코드 -->
, #{mtnSeCd} <!-- 산 구분 코드 -->
, #{mno} <!-- 본번 -->
, #{sno} <!-- 부번 -->
, #{spclDong} <!-- 특수 동 -->
, #{spclHo} <!-- 특수 호 -->
, #{spclAddr} <!-- 특수 주소 -->
, #{wholAddr} <!-- 전체 주소 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updatePayerAddr" parameterType="cokr.xit.fims.payer.Payer">/* 납부자 주소 수정(payerAddrMapper.updatePayerAddr) */
UPDATE TB_PAYER_ADDR
SET MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE RTPYR_ID = #{rtpyrId}
AND ADDR_SN = #{addrSn}
</update>
<sql id="selectPayerAddrHstry">
SELECT CPAH.CRDN_ID <!-- 단속 ID -->
, CPAH.RTPYR_ID <!-- 납부자 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)
</sql>
<select id="selectPayerAddrHstrys" parameterType="map" resultType="dataobject">/* 납부자 주소 이력 대장 객체 가져오기(payerMapper.selectCrdnPayerAddrHstrys) */
<include refid="selectPayerAddrHstry" />
WHERE CPAH.CRDN_ID = #{crdnId} <!-- 단속 ID -->
AND CPAH.RTPYR_ID = #{rtpyrId} <!-- 납부자 ID -->
<include refid="utility.orderBy" />
</select>
</mapper>
Loading…
Cancel
Save