납부자 테이블 변경으로 인한 납부자 등록, 수정 기능 수정.

main
jjh 6 months ago
parent 61d383af4c
commit 4b54070e97

@ -11,6 +11,7 @@ import lombok.Setter;
@Getter
@Setter
public class CrdnPayerHstry extends AbstractEntity {
/**
* ID
*/
@ -26,4 +27,9 @@ public class CrdnPayerHstry extends AbstractEntity {
*/
private String rtpyrId;
/**
*
*/
private String addrSn;
}

@ -14,19 +14,9 @@ public class CrdnPayerHstryQuery extends CmmnQuery {
private static final long serialVersionUID = 1L;
private String chgHstryId; // 상태 이력 ID
private String crdnId; // 단속 ID
private String rtpyrId; // 납부자 ID
public String getChgHstryId() {
return ifEmpty(chgHstryId, () -> null);
}
public <T extends CrdnPayerHstryQuery> T setChgHstryId(String chgHstryId) {
this.chgHstryId = chgHstryId;
return self();
}
private String addrSn; // 주소 일련번호
public String getCrdnId() {
return ifEmpty(crdnId, () -> null);
@ -34,7 +24,6 @@ public class CrdnPayerHstryQuery extends CmmnQuery {
public <T extends CrdnPayerHstryQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
@ -44,7 +33,15 @@ public class CrdnPayerHstryQuery extends CmmnQuery {
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();
}

@ -51,10 +51,30 @@ public interface CrdnPayerHstryMapper extends AbstractMapper {
* <li> false</li>
* </ul>
*/
default boolean insert(CrdnPayerHstry crdnPayerHstry) {
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>

@ -24,6 +24,7 @@ import cokr.xit.foundation.data.DataObject;
*/
@Component("crdnPayerHstryBean")
public class CrdnPayerHstryBean extends AbstractComponent {
/** 단속 납부자 이력 정보 DAO */
@Resource(name = "crdnPayerHstryMapper")
private CrdnPayerHstryMapper crdnPayerHstryMapper;
@ -51,8 +52,30 @@ public class CrdnPayerHstryBean extends AbstractComponent {
* <li> false</li>
* </ul>
*/
public boolean create(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstryMapper.insert(crdnPayerHstry);
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);
}
/** , .
@ -66,19 +89,18 @@ public class CrdnPayerHstryBean extends AbstractComponent {
boolean rtnScs = false; // DB 처리 결과
// 단속 납부자 이력 정보를 등록한다.
rtnScs = crdnPayerHstryMapper.insert(crdnPayerHstry);
rtnScs = createCrdnPayerHstry(crdnPayerHstry);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 Database 롤백..
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다.");
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 대장 납부자ID를 변경한다.
rtnScs = crdnPayerHstryMapper.updateCrdnPayer(crdnPayerHstry);
rtnScs = updateCrdnPayer(crdnPayerHstry);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 Database 롤백..
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다.");
throw new RuntimeException("단속 납부자 이력 정보를 등록 중 오류가 발생하였습니다."); // 예외를 발생시켜서 DB Rollback
}
return rtnScs;
}
}

@ -40,7 +40,7 @@ public class CrdnPayerHstryServiceBean extends AbstractServiceBean implements Cr
@Override
public boolean create(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstryBean.create(crdnPayerHstry);
return crdnPayerHstryBean.createCrdnPayerHstry(crdnPayerHstry);
}
@Override

@ -52,6 +52,11 @@ public class Crdn extends AbstractEntity {
*/
private String rtpyrId;
/**
*
*/
private String addrSn;
/**
*
*/

@ -165,10 +165,17 @@ public class CrdnBean extends AbstractComponent {
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
crdnPayerHstry.setCrdnId(crdn.getCrdnId());
crdnPayerHstry.setRtpyrId(crdn.getRtpyrId());
result = crdnPayerHstryBean.create(crdnPayerHstry);
crdnPayerHstry.setAddrSn(crdn.getAddrSn());
result = crdnPayerHstryBean.createCrdnPayerHstry(crdnPayerHstry);
if (!result) {
throw new RuntimeException("단속자료 등록 중 단속 납부자 이력 등록에 실패하였습니다.");
}
// 단속 대장의 납부자ID 수정 및 단속 납부자 이력(TB_CRDN_PAYER_HSTRY) 대장에 등록한다.
result = crdnPayerHstryBean.createCrdnPayerAddrHstry(crdnPayerHstry);
if (!result) {
throw new RuntimeException("단속자료 등록 중 단속 납부자주소 이력 등록에 실패하였습니다.");
}
}
//파일 등록

@ -244,7 +244,7 @@ public class CrdnCvlcptSubBean extends AbstractComponent {
crdnPayerHstry.setCrdnId(crdn.getCrdnId());
crdnPayerHstry.setRtpyrId(crdn.getRtpyrId());
boolean retSuccess = crdnPayerHstryMapper.insert(crdnPayerHstry);
boolean retSuccess = crdnPayerHstryMapper.insertCrdnPayerHstry(crdnPayerHstry);
if(!retSuccess) {
throw new RuntimeException("단속민원답변 수정 중 단속납부자변경 이력 등록에 실패하였습니다.");
}

@ -12,6 +12,7 @@ import lombok.Setter;
@Getter
@Setter
public class Payer extends AbstractEntity {
/**
* ID
*/
@ -72,6 +73,21 @@ public class Payer extends AbstractEntity {
*/
private String rtpyrSttsCd;
/**
*
*/
private String addrSn;
/**
*
*/
private String addrInptSeCd;
/**
*
*/
private String addrInqYmd;
/**
*
*/
@ -82,6 +98,16 @@ public class Payer extends AbstractEntity {
*/
private String zip;
/**
*
*/
private String addr;
/**
*
*/
private String dtlAddr;
/**
*
*/
@ -147,16 +173,6 @@ public class Payer extends AbstractEntity {
*/
private String spclAddr;
/**
*
*/
private String addr;
/**
*
*/
private String dtlAddr;
/**
*
*/

@ -21,10 +21,14 @@ public class PayerQuery extends QueryRequest {
private String[] rtpyrIds;
/** 차량번호 */
private String vhrno;
/** 납부자 구분 코드 */
private String rtpyrSeCd;
/** 납부자번호 */
private String rtpyrNo;
/** 납부자 ID */
private String rtpyrId;
/** 주소 일련번호 */
private String addrSn;
/** 이력 일련번호 */
private String hstrySn;
/** 단속 ID */
@ -34,15 +38,15 @@ public class PayerQuery extends QueryRequest {
/** 호출 용도 */
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
/** ID .
* @return ID
/** IDs .
* @return IDs
*/
public String[] getRtpyrIds() {
return ifEmpty(rtpyrIds, () -> null);
}
/** ID .
* @param rtpyrIds ID
/** IDs .
* @param rtpyrIds IDs
* @return PayerQuery
*/
public PayerQuery setRtpyrIds(String... rtpyrIds) {
@ -58,11 +62,28 @@ public class PayerQuery extends QueryRequest {
}
/** ID .
* @param rtpyrIds ID
* @param rtpyrId ID
* @return PayerQuery
*/
public PayerQuery setRtpyrId(String rtpyrId) {
return setRtpyrIds(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();
}
/** .
@ -97,6 +118,21 @@ public class PayerQuery extends QueryRequest {
return this;
}
/** .
* @return
*/
public String getRtpyrSeCd() {
return rtpyrSeCd;
}
/** .
* @param rtpyrSeCd
* @return PayerQuery
*/
public void setRtpyrSeCd(String rtpyrSeCd) {
this.rtpyrSeCd = rtpyrSeCd;
}
/** .
* @return
*/
@ -123,7 +159,6 @@ public class PayerQuery extends QueryRequest {
public <T extends PayerQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
@ -133,7 +168,6 @@ public class PayerQuery extends QueryRequest {
public <T extends PayerQuery> T setDelYn(String delYn) {
this.delYn = delYn;
return self();
}
@ -143,7 +177,6 @@ public class PayerQuery extends QueryRequest {
public <T extends PayerQuery> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}

@ -0,0 +1,89 @@
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.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<DataObject> selectPayerAddrs(PayerQuery req);
default DataObject selectPayerAddrsInfo(PayerQuery req) {
// 기본 정렬
if (req.getOrderBy() == null) {
req.setOrderBy("PA.ADDR_SN DESC");
}
List<DataObject> payerAddrs = selectPayerAddrs(req);
return !payerAddrs.isEmpty() ? payerAddrs.get(0) : null;
}
/** .
* @param params
* <ul><li>"payerAddr" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertPayerAddr(Map<String, Object> params);
/** .
* @param payerAddr
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(Payer payer) {
return payer != null && insertPayerAddr(params().set("payerAddr", payer)) == 1;
}
/** .
* @param params
* <ul><li>"payerAddr" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updatePayerAddr(Map<String, Object> params);
/** .
* @param payerAddr
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(Payer payer) {
return payer != null && updatePayerAddr(params().set("payerAddr", payer)) == 1;
}
}

@ -38,15 +38,7 @@ public interface PayerMapper extends AbstractMapper {
* @param payer
* @return
*/
int insertPayer(Payer payer);
/** .
* @param params
* <ul><li>"payer" - </li>
* </ul>
* @return
*/
int insertHistory(Map<String, Object> params);
int insertPayer(Map<String, Object> params);
/** .
* @param payer
@ -56,12 +48,7 @@ public interface PayerMapper extends AbstractMapper {
* </ul>
*/
default boolean insert(Payer payer) {
boolean saved = insertPayer(payer) > 0;
if (saved) {
DataObject params = params().set("payer", payer);
insertHistory(params);
}
return saved;
return payer != null && insertPayer(params().set("payer", payer)) == 1;
}
/** .
@ -71,7 +58,7 @@ public interface PayerMapper extends AbstractMapper {
* </ul>
* @return
*/
int updatePayer(Payer payer);
int updatePayer(Map<String, Object> params);
/** .
* @param payer
@ -81,28 +68,7 @@ public interface PayerMapper extends AbstractMapper {
* </ul>
*/
default boolean update(Payer payer) {
boolean saved = updatePayer(payer) == 1;
if (saved) {
DataObject params = params().set("payer", payer);
insertHistory(params);
}
return saved;
}
/** .
* @param params
* <ul><li>"rtpyrIds" - </li>
* </ul>
* @return
*/
int deletePayer(Map<String, ?> params);
/** .
* @param rtpyrIds
* @return
*/
default int delete(String... rtpyrIds) {
return !isEmpty(rtpyrIds) ? deletePayer(params().set("rtpyrIds", rtpyrIds)) : 0;
return payer != null && updatePayer(params().set("payer", payer)) == 1;
}
/** , .

@ -48,11 +48,23 @@ public interface PayerService {
*/
boolean update(Payer payer);
/** .
* @param rtpyrIds
* @return
/** .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean createPayerAddr(Payer payer);
/** .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
int remove(String... rtpyrIds);
boolean updatePayerAddr(Payer payer);
/** () .
* @param req

@ -14,6 +14,7 @@ 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.AbstractComponent;
import cokr.xit.foundation.data.DataObject;
@ -33,9 +34,16 @@ import cokr.xit.interfaces.lvis.service.reg.BasicInfoResponse;
*/
@Component("payerBean")
public class PayerBean extends AbstractComponent {
/** 납부자 정보 DAO */
@Resource(name = "payerMapper")
private PayerMapper payerMapper;
/** 납부자 주소 정보 DAO */
@Resource(name = "payerAddrMapper")
private PayerAddrMapper payerAddrMapper;
/** 자동차 정보 DAO */
@Resource(name = "vehicleInfoBean")
private VehicleInfoBean vehicleInfoBean;
@ -63,10 +71,11 @@ public class PayerBean extends AbstractComponent {
return payerMapper.selectPayers(req);
}
public Payer getPayer(String vhrno, String rtpyrNo) {
PayerQuery req = new PayerQuery().setVhrno(vhrno);
req.setRtpyrNo(rtpyrNo);
public Payer getPayer(PayerQuery req) {
req.setOrderBy("P.RTPYR_ID DESC, PA.ADDR_SN DESC");
List<Payer> payers = getPayers(req);
return !payers.isEmpty() ? payers.get(0) : null;
}
@ -78,20 +87,14 @@ public class PayerBean extends AbstractComponent {
* </ul>
*/
public boolean create(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"));
// 납부자 등록
boolean rtnScs = payerMapper.insert(payer);
// 납부자 주소 등록
if (rtnScs) {
createPayerAddr(payer);
}
return payerMapper.insert(payer);
return rtnScs;
}
/** .
@ -102,6 +105,18 @@ public class PayerBean extends AbstractComponent {
* </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())
@ -115,15 +130,19 @@ public class PayerBean extends AbstractComponent {
payer.setStdgCd(info.string("STDG_CD"));
payer.setDongCd(info.string("DONG_CD"));
}
return payerMapper.update(payer);
return payerAddrMapper.insert(payer);
}
/** .
* @param rtpyrIds
* @return
/** .
* @param payer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public int remove(String... rtpyrIds) {
return payerMapper.delete(rtpyrIds);
public boolean updatePayerAddr(Payer payer) {
return payerAddrMapper.update(payer);
}
public List<Payer> getVehicleOwners(List<BasicInfoRequest> reqs) {
@ -143,9 +162,9 @@ public class PayerBean extends AbstractComponent {
Payer payer = new Payer();
payer.setSggCd(basicInfo.getSggCd());
String vhrno = basicInfo.getVhrno();
payer.setVhrno(vhrno);
payer.setVhrno(basicInfo.getVhrno());
payer.setRtpyrInptSeCd("02");
payer.setAddrInptSeCd("02");
payer.setRtpyrSeCd(
Map.of(
@ -185,7 +204,26 @@ public class PayerBean extends AbstractComponent {
payer.setDtlAddr(basicInfo.getUse_strnghld_adres_nm());
payer.setWholAddr(basicInfo.getRoad_nm_adres() + ", " + basicInfo.getUse_strnghld_adres_nm());
Payer result = create(payer) ? payer : getPayer(vhrno, rtpyrNo);
// 납부자 조회
PayerQuery req = new PayerQuery();
req.setRtpyrSeCd(payer.getRtpyrSeCd());
req.setRtpyrNo(payer.getRtpyrNo());
req.setRtpyrId(payer.getRtpyrId());
Payer result = create(payer) ? payer : getPayer(req);
// 등록된 최종 주소를 확인하여 주소+상세주소가 다르다면 주소를 신규 등록한다.
if (result.getAddr().equals(basicInfo.getRoad_nm_adres()) && result.getDtlAddr().equals(basicInfo.getUse_strnghld_adres_nm())) {
payer.setRtpyrId(result.getRtpyrId()); // 납부자 ID
// 납부자 주소의 최중 수정일자를 수정
updatePayerAddr(payer);
} else {
payer.setRtpyrId(result.getRtpyrId()); // 납부자 ID
// 납부자 주소를 신규 등록
createPayerAddr(payer);
result.setAddrSn(payer.getAddrSn()); // 주소 일련번호
}
if (result != null)
result.setVehicleInfo(basicInfo);
@ -233,26 +271,62 @@ public class PayerBean extends AbstractComponent {
payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr());
}
// 단속 ID로 단속 정보 조회
DataObject crdnInfo = payerMapper.selectCrdnInfo(payer.getCrdnId());
// 납부자 ID로 납부자 정보 조회
Payer payerInfo = getPayer(new PayerQuery().setRtpyrId(payer.getRtpyrId())
.setAddrSn(payer.getAddrSn()));
if (payer.getRtpyrNo().equals(payerInfo.getRtpyrNo())) { // 주민등록번호가 동일하다면..
// 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다.
rtnScs = payerMapper.update(payer);
rtnScs = update(payer);
if (!rtnScs) {
throw new RuntimeException("납부자 수정에 실패하였습니다."); // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("납부자 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 ID로 단속 정보 조회
DataObject crdnInfo = payerMapper.selectCrdnInfo(payer.getCrdnId());
// 주소가 변경되었는지 확인
if (payerInfo.getZip().equals(payer.getZip())
&& payerInfo.getAddr().equals(payer.getAddr())
&& payerInfo.getDtlAddr().equals(payer.getDtlAddr())) {
rtnScs = updatePayerAddr(payer); // 납부자 주소 수정일자만 수정
} else {
rtnScs = createPayerAddr(payer); // 납부자 주소 등록
CrdnPayerHstry crdnPayerAddrHstry = new CrdnPayerHstry();
crdnPayerAddrHstry.setCrdnId(payer.getCrdnId());
crdnPayerAddrHstry.setRtpyrId(payer.getRtpyrId());
crdnPayerAddrHstry.setAddrSn(payer.getAddrSn());
crdnPayerHstryBean.createCrdnPayerAddrHstry(crdnPayerAddrHstry);
}
// 단속 대장의 납부자 ID와 납부자 대장의 납부자 ID가 다르다면..
if (!crdnInfo.string("RTPYR_ID").equals(payer.getRtpyrId())) {
// 단속 대장의 납부자 ID 및 주소 일련번호를 수정한다.
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
crdnPayerHstry.setCrdnId(payer.getCrdnId());
crdnPayerHstry.setRtpyrId(payer.getRtpyrId());
crdnPayerHstry.setAddrSn(payer.getAddrSn());
rtnScs = crdnPayerHstryBean.updateCrdnPayer(crdnPayerHstry);
if (!rtnScs) {
throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자ID 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
// 납부자 대장(TB_PAYER)에 납부자 정보를 신규 등록한다.
rtnScs = create(payer);
if (!rtnScs) {
throw new RuntimeException("납부자 정보 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 대장의 납부자ID 수정 및 단속 납부자 이력(TB_CRDN_PAYER_HSTRY) 대장에 등록한다.
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
crdnPayerHstry.setCrdnId(payer.getCrdnId());
crdnPayerHstry.setRtpyrId(payer.getRtpyrId());
crdnPayerHstry.setAddrSn(payer.getAddrSn());
rtnScs = crdnPayerHstryBean.createHstryUpdateCrdnPayer(crdnPayerHstry);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자ID 등록에 실패하였습니다.");
throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자ID 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
@ -266,8 +340,7 @@ public class PayerBean extends AbstractComponent {
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다.");
throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}

@ -25,6 +25,7 @@ import cokr.xit.interfaces.lvis.service.reg.BasicInfoRequest;
*/
@Service("payerService")
public class PayerServiceBean extends AbstractServiceBean implements PayerService {
/** 납부자 대장 정보 Bean */
@Resource(name = "payerBean")
private PayerBean payerBean;
@ -50,8 +51,13 @@ public class PayerServiceBean extends AbstractServiceBean implements PayerServic
}
@Override
public int remove(String... rtpyrIds) {
return payerBean.remove(rtpyrIds);
public boolean createPayerAddr(Payer payer) {
return payerBean.createPayerAddr(payer);
}
@Override
public boolean updatePayerAddr(Payer payer) {
return payerBean.updatePayerAddr(payer);
}
@Override

@ -109,23 +109,6 @@ public class PayerController extends ApplicationController {
.addObject("saved", saved);
}
/** .
* @param payerIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@Task("CMN")
@PostMapping(name = "납부자 제거", value = "/remove.do")
public ModelAndView remove(String... rtpyrIds) {
int affected = payerService.remove(rtpyrIds);
return new ModelAndView("jsonView")
.addObject("affected", affected)
.addObject("saved", affected > 0);
}
@Task("CMN")
@PostMapping(name = "차량/납부자 조회", value = "/vehicle.do")
public ModelAndView getVehicleOwner(BasicInfoRequest req) {
@ -134,6 +117,7 @@ public class PayerController extends ApplicationController {
return new ModelAndView("jsonView")
.addObject("found", found)
.addObject("rtpyrId", found ? payer.getRtpyrId() : null)
.addObject("addrSn", found ? payer.getAddrSn() : null)
.addObject("vehicle", found ? payer.getVehicleInfo() : null);
}

@ -11,12 +11,13 @@
<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 */
SELECT CPH.CHG_HSTRY_ID <!-- 변경 이력 ID -->
, CPH.CRDN_ID /* 단속 ID */
, CPH.RTPYR_ID /* 납부자 ID */
, CPH.REG_DT /* 등록 일시 */
@ -45,9 +46,6 @@
<select id="selectCrdnPayerHstrys" parameterType="map" resultType="dataobject">/* 단속 납부자 이력 객체 가져오기(crdnPayerHstryMapper.selectCrdnPayerHstrys) */
<include refid="select" />
<where>
<if test="chgHstryId != null">
AND CPH.CHG_HSTRY_ID = #{chgHstryId} /* 변경 이력 ID */
</if>
<if test="crdnId != null">
AND CPH.CRDN_ID = #{crdnId} /* 단속 ID */
</if>
@ -60,33 +58,54 @@
<insert id="insertCrdnPayerHstry" parameterType="map">/* 단속 납부자 이력 등록(crdnPayerHstryMapper.insertCrdnPayerHstry) */
<selectKey resultType="string" keyProperty="crdnPayerHstry.chgHstryId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(CHG_HSTRY_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID
FROM TB_CRDN_PAYER_HSTRY
WHERE CHG_HSTRY_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
<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 /* 등록자 */
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 (
#{crdnPayerHstry.chgHstryId} /* 변경 이력 ID */
, #{crdnPayerHstry.crdnId} /* 단속 ID */
, #{crdnPayerHstry.rtpyrId} /* 납부자 ID */
, #{crdnPayerHstry.createdAt} /* 등록 일시 */
, #{crdnPayerHstry.createdBy} /* 등록자 */
#{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 */
, MDFCN_DT = #{crdnPayerHstry.lastModified} /* 수정 일시 */
, MDFR = #{crdnPayerHstry.modifiedBy} /* 수정자 */
WHERE CRDN_ID = #{crdnPayerHstry.crdnId} /* 단속 ID */
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>

@ -21,6 +21,7 @@ INSERT INTO TB_CRDN (
, LINK_TBL_NM <!-- 연계 테이블 명 -->
, LINK_ID <!-- 연계 ID -->
, RTPYR_ID <!-- 납부자 ID -->
, ADDR_SN <!-- 주소 일련번호 -->
, CRDN_YMD <!-- 단속 일자 -->
, CRDN_TM <!-- 단속 시각 -->
, VHRNO <!-- 차량번호 -->
@ -66,6 +67,7 @@ INSERT INTO TB_CRDN (
, #{linkTblNm} <!-- 연계 테이블 명 -->
, #{linkId} <!-- 연계 ID -->
, #{rtpyrId} <!-- 납부자 ID -->
, #{addrSn} <!-- 주소 일련번호 -->
, #{crdnYmd} <!-- 단속 일자 -->
, #{crdnTm} <!-- 단속 시각 -->
, #{vhrno} <!-- 차량번호 -->

@ -95,8 +95,8 @@ SELECT C.CRDN_ID <!-- 단속 ID -->
, LE.ETC_CN AS LEVY_EXCL_ETC_CN <!-- 부과 제외 기타 내용 -->
, P.RTPYR_NM <!-- 납부자명 -->
, P.RTPYR_NO <!-- 납부자번호 -->
, CONCAT(P.ADDR, ' ', P.DTL_ADDR) AS RTPYR_FULL_ADDR <!-- 납부자주소 -->
, P.ZIP AS RTPYR_ZIP <!-- 납부자우편번호 -->
, CONCAT(PA.ADDR, ' ', PA.DTL_ADDR) AS RTPYR_FULL_ADDR <!-- 납부자주소 -->
, PA.ZIP AS RTPYR_ZIP <!-- 납부자우편번호 -->
, C.DEL_YN
, C.RGTR
, C.REG_DT
@ -111,6 +111,7 @@ LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.CVLCPT_LINK_YN = 'Y' AND C.LINK_ID =
LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N')
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID)
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.DEL_YN = 'N'
<if test="sggCd != null">
AND C.SGG_CD = #{sggCd}

@ -606,9 +606,11 @@
<insert id="insertLevy" parameterType="map">/* 부과 대장 등록(levyMapper.insertLevy) */
<selectKey resultType="string" keyProperty="levy.levyId" keyColumn="NEW_ID" order="BEFORE">
SELECT CONCAT(#{levy.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(LEVY_ID, 10)) + 1, 1) AS INT), 11, '0')) AS NEW_ID
FROM TB_LEVY
WHERE LEVY_ID LIKE CONCAT(#{levy.sggCd}, DATE_FORMAT(CURRENT_DATE, '%Y'), '%')
<include refid="numbering.keyByYear">
<property name="TABLE_NAME" value="TB_LEVY" />
<property name="TABLE_KEY" value="LEVY_ID" />
<property name="pad" value="20" />
</include>
</selectKey>
INSERT
INTO TB_LEVY (

@ -4,6 +4,7 @@
<!-- 납부자 대장 정보 매퍼
========== 변경 이력 ==========
2024-05-23 JoJH 납부자, 주소 테이블 분리
2023-08-18 mjkhan 최초 작성
============================ -->
@ -14,9 +15,13 @@
<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" /> <!-- 도로 명 코드 -->
@ -39,73 +44,93 @@
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
<result property="vhrno" column="VHRNO" /> <!-- 차량번호 -->
<result property="rtpyrTelno" column="RTPYR_TELNO" /> <!-- 납부자 전화번호 -->
<result property="rtpyrMblTelno" column="RTPYR_MBL_TELNO" /> <!-- 납부자 휴대 전화번호 -->
</resultMap>
<sql id="select">SELECT RTPYR_ID <!-- 납부자 ID -->
, SGG_CD <!-- 시군구 코드 -->
, RTPYR_INPT_SE_CD <!-- 납부자 입력 구분 코드 -->
, RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, RTPYR_NO <!-- 납부자 번호 -->
, RTPYR_NM <!-- 납부자 명 -->
, RTPYR_EML <!-- 납부자 이메일 -->
, RTPYR_BRDT <!-- 납부자 생년월일 -->
, RTPYR_STTS_CD <!-- 납부자 상태 코드 -->
, ADDR_SE_CD <!-- 주소 구분 코드 -->
, ZIP <!-- 우편번호 -->
, 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 <!-- 특수 주소 -->
, ADDR <!-- 주소 -->
, DTL_ADDR <!-- 상세 주소 -->
, WHOL_ADDR <!-- 전체 주소 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
, VHRNO <!-- 차량번호 -->
, RTPYR_TELNO <!-- 납부자 전화번호 -->
, RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 -->
FROM TB_PAYER</sql>
<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 <!-- 수정자 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ADDR_INPT_SE_CD <!-- 주소 입력 구분 코드 -->
, PA.ADDR_INQ_YMD <!-- 주소 조회 일자 -->
, 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
INNER JOIN TB_PAYER_ADDR PA ON (P.RTPYR_ID = PA.RTPYR_ID)
</sql>
<select id="selectPayerList" parameterType="map" resultType="dataobject">/* 납부자 대장 목록 조회(payerMapper.selectPayerList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where>AND RTPYR_ID IN (<foreach collection="rtpyrIds" item="rtpyrId" separator=",">#{rtpyrId}</foreach>)</where>
<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>
<include refid="utility.paging-suffix" />
</select>
<select id="selectPayers" parameterType="map" resultMap="payerRow">/* 납부자 대장 객체 가져오기(payerMapper.selectPayers) */
<include refid="select" />
<where>
<if test="rtpyrIds != null">AND RTPYR_ID IN (<foreach collection="rtpyrIds" item="rtpyrId" separator=",">#{rtpyrId}</foreach>)</if>
<if test="rtpyrIds == null"> AND VHRNO = #{vhrno}
AND RTPYR_NO = #{rtpyrNo}</if></where>
<include refid="utility.orderBy" /></select>
<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>
<if test="addrSn != null">
AND PA.ADDR_SN = #{addrSn} <!-- 주소 일련번호 -->
</if>
</where>
<include refid="utility.orderBy" />
</select>
<insert id="insertPayer" parameterType="cokr.xit.fims.payer.Payer">/* 납부자 대장 등록(payerMapper.insertPayer) */
<selectKey keyProperty="rtpyrId,sggCd" keyColumn="NEW_ID,SGG_CD" resultType="map" order="BEFORE">
SELECT CONCAT(THIS_YEAR, LPAD(IFNULL(SUBSTR(MAX(RTPYR_ID), 5) + 1, 1), 16, '0')) NEW_ID
, IFNULL(#{sggCd}, '41480') SGG_CD
FROM TB_PAYER A
, (SELECT DATE_FORMAT(CURRENT_DATE, '%Y') THIS_YEAR) B
WHERE RTPYR_ID LIKE CONCAT(THIS_YEAR, '%')</selectKey>
INSERT INTO TB_PAYER (
<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 <!-- 시군구 코드 -->
, VHRNO <!-- 차량번호 -->
, RTPYR_INPT_SE_CD <!-- 납부자 입력 구분 코드 -->
, RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, RTPYR_NO <!-- 납부자 번호 -->
@ -115,116 +140,13 @@ INSERT INTO TB_PAYER (
, RTPYR_EML <!-- 납부자 이메일 -->
, RTPYR_BRDT <!-- 납부자 생년월일 -->
, RTPYR_STTS_CD <!-- 납부자 상태 코드 -->
, ADDR_SE_CD <!-- 주소 구분 코드 -->
, ZIP <!-- 우편번호 -->
, 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 <!-- 특수 주소 -->
, ADDR <!-- 주소 -->
, DTL_ADDR <!-- 상세 주소 -->
, WHOL_ADDR <!-- 전체 주소 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
)
SELECT #{rtpyrId} <!-- 납부자 ID -->
, #{sggCd} <!-- 시군구 코드 -->
, #{vhrno} <!-- 차량번호 -->
, #{rtpyrInptSeCd} <!-- 납부자 입력 구분 코드 -->
, #{rtpyrSeCd} <!-- 납부자 구분 코드 -->
, #{rtpyrNo} <!-- 납부자 번호 -->
, #{rtpyrNm} <!-- 납부자 명 -->
, #{rtpyrTelno} <!-- 납부자 전화번호 -->
, #{rtpyrMblTelno} <!-- 납부자 휴대 전화번호 -->
, #{rtpyrEml} <!-- 납부자 이메일 -->
, #{rtpyrBrdt} <!-- 납부자 생년월일 -->
, #{rtpyrSttsCd} <!-- 납부자 상태 코드 -->
, #{addrSeCd} <!-- 주소 구분 코드 -->
, #{zip} <!-- 우편번호 -->
, #{roadNmCd} <!-- 도로 명 코드 -->
, #{udgdSeCd} <!-- 지하 구분 코드 -->
, #{bmno} <!-- 건물본번 -->
, #{bsno} <!-- 건물부번 -->
, #{bldgMngNo} <!-- 건물 관리 번호 -->
, #{stdgCd} <!-- 법정동 코드 -->
, #{dongCd} <!-- 행정동 코드 -->
, #{mtnSeCd} <!-- 산 구분 코드 -->
, #{mno} <!-- 본번 -->
, #{sno} <!-- 부번 -->
, #{spclDong} <!-- 특수 동 -->
, #{spclHo} <!-- 특수 호 -->
, #{spclAddr} <!-- 특수 주소 -->
, #{addr} <!-- 주소 -->
, #{dtlAddr} <!-- 상세 주소 -->
, #{wholAddr} <!-- 전체 주소 -->
, #{createdAt} <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, #{lastModified} <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
FROM DUAL
WHERE NOT EXISTS (
SELECT *
FROM TB_PAYER B
WHERE VHRNO = #{vhrno}
AND RTPYR_NO = #{rtpyrNo}
AND SGG_CD = #{sggCd}
)</insert>
<insert id="insertHistory" parameterType="map">/* 납부자 대장 등록(payerMapper.insertHistory) */
<selectKey keyProperty="historySeq" keyColumn="NEW_ID" resultType="int" order="BEFORE">
SELECT IFNULL(MAX(HSTRY_SN) + 1, 1) NEW_ID
FROM TB_PAYER_HSTRY
WHERE RTPYR_ID = #{payer.rtpyrId}</selectKey>
INSERT INTO TB_PAYER_HSTRY (
RTPYR_ID <!-- 납부자 ID -->
, HSTRY_SN <!-- 이력 일련번호 -->
, SGG_CD <!-- 시군구 코드 -->
, VHRNO <!-- 차량번호 -->
, RTPYR_INPT_SE_CD <!-- 납부자 입력 구분 코드 -->
, RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, RTPYR_NO <!-- 납부자 번호 -->
, RTPYR_NM <!-- 납부자 명 -->
, RTPYR_TELNO <!-- 납부자 전화번호 -->
, RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 -->
, RTPYR_EML <!-- 납부자 이메일 -->
, RTPYR_BRDT <!-- 납부자 생년월일 -->
, RTPYR_STTS_CD <!-- 납부자 상태 코드 -->
, ADDR_SE_CD <!-- 주소 구분 코드 -->
, ZIP <!-- 우편번호 -->
, 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 <!-- 특수 주소 -->
, ADDR <!-- 주소 -->
, DTL_ADDR <!-- 상세 주소 -->
, WHOL_ADDR <!-- 전체 주소 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
) VALUES (
#{payer.rtpyrId} <!-- 납부자 ID -->
, #{historySeq} <!-- 이력 일련번호 -->
SELECT #{payer.rtpyrId} <!-- 납부자 ID -->
, #{payer.sggCd} <!-- 시군구 코드 -->
, #{payer.vhrno} <!-- 차량번호 -->
, #{payer.rtpyrInptSeCd} <!-- 납부자 입력 구분 코드 -->
, #{payer.rtpyrSeCd} <!-- 납부자 구분 코드 -->
, #{payer.rtpyrNo} <!-- 납부자 번호 -->
@ -234,62 +156,34 @@ INSERT INTO TB_PAYER_HSTRY (
, #{payer.rtpyrEml} <!-- 납부자 이메일 -->
, #{payer.rtpyrBrdt} <!-- 납부자 생년월일 -->
, #{payer.rtpyrSttsCd} <!-- 납부자 상태 코드 -->
, #{payer.addrSeCd} <!-- 주소 구분 코드 -->
, #{payer.zip} <!-- 우편번호 -->
, #{payer.roadNmCd} <!-- 도로 명 코드 -->
, #{payer.udgdSeCd} <!-- 지하 구분 코드 -->
, #{payer.bmno} <!-- 건물본번 -->
, #{payer.bsno} <!-- 건물부번 -->
, #{payer.bldgMngNo} <!-- 건물 관리 번호 -->
, #{payer.stdgCd} <!-- 법정동 코드 -->
, #{payer.dongCd} <!-- 행정동 코드 -->
, #{payer.mtnSeCd} <!-- 산 구분 코드 -->
, #{payer.mno} <!-- 본번 -->
, #{payer.sno} <!-- 부번 -->
, #{payer.spclDong} <!-- 특수 동 -->
, #{payer.spclHo} <!-- 특수 호 -->
, #{payer.spclAddr} <!-- 특수 주소 -->
, #{payer.addr} <!-- 주소 -->
, #{payer.dtlAddr} <!-- 상세 주소 -->
, #{payer.wholAddr} <!-- 전체 주소 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{currentUser.id} <!-- 등록자 -->
)</insert>
, #{payer.createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{payer.modifiedBy} <!-- 수정자 -->
FROM DUAL
WHERE NOT EXISTS (
SELECT *
FROM TB_PAYER B
WHERE RTPYR_NO = #{payer.rtpyrNo}
AND SGG_CD = #{payer.sggCd}
)
</insert>
<update id="updatePayer" parameterType="cokr.xit.fims.payer.Payer">/* 납부자 대장 수정(payerMapper.updatePayer) */
UPDATE TB_PAYER SET
SGG_CD = #{sggCd} <!-- 시군구 코드 -->
, RTPYR_INPT_SE_CD = #{rtpyrInptSeCd} <!-- 납부자 입력 구분 코드 -->
, RTPYR_SE_CD = #{rtpyrSeCd} <!-- 납부자 구분 코드 -->
, RTPYR_NO = #{rtpyrNo} <!-- 납부자 번호 -->
, RTPYR_NM = #{rtpyrNm} <!-- 납부자 명 -->
, RTPYR_TELNO = #{rtpyrTelno} <!-- 납부자 전화번호 -->
, RTPYR_MBL_TELNO = #{rtpyrMblTelno} <!-- 납부자 휴대 전화번호 -->
, RTPYR_EML = #{rtpyrEml} <!-- 납부자 이메일 -->
, RTPYR_BRDT = #{rtpyrBrdt} <!-- 납부자 생년월일 -->
, RTPYR_STTS_CD = #{rtpyrSttsCd} <!-- 납부자 상태 코드 -->
, ADDR_SE_CD = #{addrSeCd} <!-- 주소 구분 코드 -->
, ZIP = #{zip} <!-- 우편번호 -->
, ROAD_NM_CD = #{roadNmCd} <!-- 도로 명 코드 -->
, UDGD_SE_CD = #{udgdSeCd} <!-- 지하 구분 코드 -->
, BMNO = #{bmno} <!-- 건물본번 -->
, BSNO = #{bsno} <!-- 건물부번 -->
, BLDG_MNG_NO = #{bldgMngNo} <!-- 건물 관리 번호 -->
, STDG_CD = #{stdgCd} <!-- 법정동 코드 -->
, DONG_CD = #{dongCd} <!-- 행정동 코드 -->
, MTN_SE_CD = #{mtnSeCd} <!-- 산 구분 코드 -->
, MNO = #{mno} <!-- 본번 -->
, SNO = #{sno} <!-- 부번 -->
, SPCL_DONG = #{spclDong} <!-- 특수 동 -->
, SPCL_HO = #{spclHo} <!-- 특수 호 -->
, SPCL_ADDR = #{spclAddr} <!-- 특수 주소 -->
, ADDR = #{addr} <!-- 주소 -->
, DTL_ADDR = #{dtlAddr} <!-- 상세 주소 -->
, WHOL_ADDR = #{wholAddr} <!-- 전체 주소 -->
, VHRNO = #{vhrno} <!-- 차량번호 -->
, MDFCN_DT = #{lastModified} <!-- 수정 일시 -->
, MDFR = #{modifiedBy} <!-- 수정자 -->
WHERE RTPYR_ID = #{rtpyrId}</update>
UPDATE TB_PAYER
SET RTPYR_INPT_SE_CD = #{payer.rtpyrInptSeCd} <!-- 납부자 입력 구분 코드 -->
, RTPYR_SE_CD = #{payer.rtpyrSeCd} <!-- 납부자 구분 코드 -->
, RTPYR_NO = #{payer.rtpyrNo} <!-- 납부자 번호 -->
, RTPYR_NM = #{payer.rtpyrNm} <!-- 납부자 명 -->
, RTPYR_TELNO = #{payer.rtpyrTelno} <!-- 납부자 전화번호 -->
, RTPYR_MBL_TELNO = #{payer.rtpyrMblTelno} <!-- 납부자 휴대 전화번호 -->
, RTPYR_EML = #{payer.rtpyrEml} <!-- 납부자 이메일 -->
, RTPYR_BRDT = #{payer.rtpyrBrdt} <!-- 납부자 생년월일 -->
, 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
@ -309,19 +203,20 @@ UPDATE TB_PAYER SET
LIMIT 1
</select>
<update id="deletePayer" parameterType="map">/* 납부자 대장 삭제(payerMapper.deletePayer) */
UPDATE TB_PAYER
SET USE_YN = 'N'
, MDFCN_DT =<include refid="utility.now" />
, MDFR = #{currentUser.id}
WHERE RTPYR_ID IN (<foreach collection="rtpyrIds" item="rtpyrId" separator=",">#{rtpyrId}</foreach>)
</update>
<sql id="selectCrdnPayer">
SELECT P.RTPYR_ID <!-- 납부자 ID -->
, P.SGG_CD <!-- 시군구 코드 -->
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 <!-- 납부자 전화번호 -->
@ -329,41 +224,34 @@ UPDATE TB_PAYER SET
, P.RTPYR_EML <!-- 납부자 이메일 -->
, P.RTPYR_BRDT <!-- 납부자 생년월일 -->
, P.RTPYR_STTS_CD <!-- 납부자 상태 코드 -->
, P.ADDR_SE_CD <!-- 주소 구분 코드 -->
, P.ZIP <!-- 우편번호 -->
, P.ROAD_NM_CD <!-- 도로 명 코드 -->
, P.UDGD_SE_CD <!-- 지하 구분 코드 -->
, P.BMNO <!-- 건물본번 -->
, P.BSNO <!-- 건물부번 -->
, P.BLDG_MNG_NO <!-- 건물 관리 번호 -->
, P.STDG_CD <!-- 법정동 코드 -->
, P.DONG_CD <!-- 행정동 코드 -->
, P.MTN_SE_CD <!-- 산 구분 코드 -->
, P.MNO <!-- 본번 -->
, P.SNO <!-- 부번 -->
, P.SPCL_DONG <!-- 특수 동 -->
, P.SPCL_HO <!-- 특수 호 -->
, P.SPCL_ADDR <!-- 특수 주소 -->
, P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 -->
, P.WHOL_ADDR <!-- 전체 주소 -->
, (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 <!-- 수정자 -->
, (CASE WHEN (P.VHRNO IS NULL OR P.VHRNO='') THEN C.VHRNO ELSE P.VHRNO END) AS VHRNO <!-- 차량번호 -->
, (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 <!-- 납부자 구분 명 -->
, (SELECT GET_CODE_NM('FIM014', P.RTPYR_STTS_CD) FROM DUAL) AS RTPYR_STTS_NM <!-- 납부자 상태 명 -->
, C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
FROM TB_PAYER P
LEFT OUTER JOIN TB_CRDN C ON (P.RTPYR_ID = C.RTPYR_ID)
, 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) */

@ -0,0 +1,162 @@
<?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="addrInqYmd" column="ADDR_INQ_YMD" /> <!-- 주소 조회 일자 -->
<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_INQ_YMD <!-- 주소 조회 일자 -->
, 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 <!-- 전체 주소 -->
, PA.REG_DT <!-- 등록 일시 -->
, PA.RGTR <!-- 등록자 -->
, PA.MDFCN_DT <!-- 수정 일시 -->
, PA.MDFR <!-- 수정자 -->
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" resultType="dataobject">/* 납부자 주소 객체 가져오기(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>
<insert id="insertPayerAddr" parameterType="map">/* 납부자 주소 등록(payerAddrMapper.insertPayerAddr) */
<selectKey resultType="string" keyProperty="payerAddr.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 = #{payerAddr.rtpyrId}
</selectKey>
INSERT
INTO TB_PAYER_ADDR (
RTPYR_ID <!-- 납부자 ID -->
, ADDR_SN <!-- 주소 일련번호 -->
, ADDR_INPT_SE_CD <!-- 주소 입력 구분 코드 -->
, ADDR_INQ_YMD <!-- 주소 조회 일자 -->
, 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 (
#{payerAddr.rtpyrId} <!-- 납부자 ID -->
, #{payerAddr.addrSn} <!-- 주소 일련번호 -->
, #{payerAddr.addrInptSeCd} <!-- 주소 입력 구분 코드 -->
, #{payerAddr.addrInqYmd} <!-- 주소 조회 일자 -->
, #{payerAddr.addrSeCd} <!-- 주소 구분 코드 -->
, #{payerAddr.zip} <!-- 우편번호 -->
, #{payerAddr.addr} <!-- 주소 -->
, #{payerAddr.dtlAddr} <!-- 상세 주소 -->
, #{payerAddr.roadNmCd} <!-- 도로 명 코드 -->
, #{payerAddr.udgdSeCd} <!-- 지하 구분 코드 -->
, #{payerAddr.bmno} <!-- 건물본번 -->
, #{payerAddr.bsno} <!-- 건물부번 -->
, #{payerAddr.bldgMngNo} <!-- 건물 관리 번호 -->
, #{payerAddr.stdgCd} <!-- 법정동 코드 -->
, #{payerAddr.dongCd} <!-- 행정동 코드 -->
, #{payerAddr.mtnSeCd} <!-- 산 구분 코드 -->
, #{payerAddr.mno} <!-- 본번 -->
, #{payerAddr.sno} <!-- 부번 -->
, #{payerAddr.spclDong} <!-- 특수 동 -->
, #{payerAddr.spclHo} <!-- 특수 호 -->
, #{payerAddr.spclAddr} <!-- 특수 주소 -->
, #{payerAddr.wholAddr} <!-- 전체 주소 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{payerAddr.createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{payerAddr.modifiedBy} <!-- 수정자 -->
)
</insert>
<update id="updatePayerAddr" parameterType="map">/* 납부자 주소 수정(payerAddrMapper.updatePayerAddr) */
UPDATE TB_PAYER_ADDR
SET MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{payerAddr.modifiedBy} <!-- 수정자 -->
WHERE RTPYR_ID = #{payerAddr.rtpyrId}
AND ADDR_SN = #{payerAddr.addrSn}
</update>
</mapper>

@ -104,22 +104,23 @@
, V.OPER_ITEM_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_STTS_CD <!-- 납부자 상태 코드 -->
, P.ADDR_SE_CD <!-- 주소 구분 코드 -->
, P.ZIP <!-- 우편번호 -->
, P.ADDR <!-- 주소 -->
, P.DTL_ADDR <!-- 상세 주소 -->
, P.WHOL_ADDR <!-- 전체 주소 -->
, (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 <!-- 납부자 구분 명 -->
, (SELECT GET_CODE_NM('FIM014', P.RTPYR_STTS_CD) FROM DUAL) AS RTPYR_STTS_NM <!-- 납부자 상태 명 -->
, (SELECT GET_CODE_NM('FIM013', P.ADDR_SE_CD) FROM DUAL) AS ADDR_SE_NM <!-- 주소 구분 명 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ADDR_SE_CD <!-- 주소 구분 코드 -->
, (SELECT GET_CODE_NM('FIM013', PA.ADDR_SE_CD) FROM DUAL) AS ADDR_SE_NM <!-- 주소 구분 명 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, PA.WHOL_ADDR <!-- 전체 주소 -->
, P.MDFCN_DT AS P_MDFCN_DT <!-- 수정 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = P.MDFR) AS P_MDFR_NM <!-- 수정자 명 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID -->
@ -166,6 +167,7 @@
INNER JOIN TB_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID)
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)
LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') <!-- 단속 민원 대장 대장 -->
LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
</sql>

@ -6,6 +6,7 @@
<form id="frmEdit--${pageName}">
<input type="hidden" id="crdnId-${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="rtpyrId--${pageName}" name="rtpyrId" data-map="RTPYR_ID"/>
<input type="hidden" id="addrSn--${pageName}" name="addrSn" data-map="ADDR_SN"/>
<input type="hidden" id="sggCd--${pageName}" name="sggCd" value="${sggCd}" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" value="${taskSeCd}" />
<div class="row g-1">
@ -615,6 +616,7 @@ $(document).ready(function(){
}
});
$("#rtpyrId--${pageName}").val("");
$("#addrSn--${pageName}").val("");
$("#rtpyrNm--${pageName}").val("");
$("#rtpyrSeCd--${pageName}").val("");
$("#rtpyrNo--${pageName}").val("");
@ -630,6 +632,7 @@ $(document).ready(function(){
}
$("#rtpyrId--${pageName}").val(resp.rtpyrId);
$("#addrSn--${pageName}").val(resp.addrSn);
var vehicle = resp.vehicle;

@ -17,7 +17,9 @@
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" data-map="TASK_SE_CD" />
<input type="hidden" id="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="rtpyrId--${pageName}" name="rtpyrId" data-map="RTPYR_ID" />
<input type="hidden" id="addrSn--${pageName}" name="addrSn" data-map="ADDR_SN" />
<input type="hidden" id="rtpyrInptSeCd--${pageName}" name="rtpyrInptSeCd" data-map="RTPYR_INPT_SE_CD" />
<input type="hidden" id="addrInptSeCd--${pageName}" name="addrInptSeCd" data-map="ADDR_INPT_SE_CD" />
<div class="row g-1">
<!-- 단속일시 -->
@ -198,12 +200,14 @@
if (!info) return;
if ($("#rtpyrInptSeCd--${pageName}").val() == "") {
info.rtpyrInptSeCd = "01"; // 납부자 입력 구분 코드
info.rtpyrInptSeCd = "01"; // 납부자 입력 구분 코드(FIM015) 01:수기입력
}
if ($("#addrInptSeCd--${pageName}").val() == "") {
info.addrInptSeCd = "01"; // 주소 입력 구분 코드(FIM087) 01:수기입력
}
if (info.rtpyrSeCd == "01") {
info.rtpyrBrdt = info.rtpyrNo.substr(0, 6); // 생년월일
}
info.wholAddr = info.addr + ", " + info.dtlAddr // 전체 주소
ajax.post({
@ -265,6 +269,9 @@
$("#mno--${pageName}").val(obj.MNO); // 번지
$("#sno--${pageName}").val(obj.SNO); // 호
$("#dongCd--${pageName}").val(obj.DONG_CD); // 행정동
$("#rtpyrInptSeCd--${pageName}").val("01"); // 납부자 입력 구분 코드(FIM015) 01:수기입력
$("#addrInptSeCd--${pageName}").val("01"); // 주소 입력 구분 코드(FIM087) 01:수기입력
}
/**************************************************************************
@ -328,6 +335,7 @@
} else {
$("#rtpyrId--${pageName}").val(resp.rtpyrId); // 납부자 ID
$("#rtpyrInptSeCd--${pageName}").val("02"); // 납부자 입력 구분 코드
$("#addrInptSeCd--${pageName}").val("02"); // 주소 입력 구분 코드
$("#addr--${pageName}").attr("readonly", true); // 주소
$("#zip--${pageName}").attr("readonly", true); // 우편번호
@ -351,7 +359,6 @@
, content: template
, init: () => {
$("#searchAddrCallback").val("pageObject['${pageName}'].callbackSearchAddr");
setDialogZindex();
}
});
@ -360,9 +367,24 @@
// 화면에서 보여주는 주소입력 부분 수정
$P.fnEditAddr = () => {
$("#rtpyrInptSeCd--${pageName}").val("01"); // 입력 구분
$("#addrInptSeCd--${pageName}").val("01"); // 입력 구분
$("#addr--${pageName}").prop("readonly", false); // 주소
$("#zip--${pageName}").prop("readonly", false); // 우편번호
$("#dtlAddr--${pageName}").prop("readonly", false); // 상세 주소
// 도로명 주소
$("#roadNmCd--${pageName}").val(""); // 도로명 코드
$("#udgdSeCd--${pageName}").val(""); //
$("#bmno--${pageName}").val(""); //
$("#bsno--${pageName}").val(""); //
$("#bldgMngNo--${pageName}").val(""); //
// 법정동
$("#stdgCd--${pageName}").val(""); //
$("#mtnSeCd--${pageName}").val(""); //
$("#mno--${pageName}").val(""); //
$("#sno--${pageName}").val(""); //
// 행정동
$("#dongCd--${pageName}").val(""); //
}
// 저장 버튼 클릭 이벤트

Loading…
Cancel
Save