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

main
jjh 6 months ago
parent 61d383af4c
commit 4b54070e97

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

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

@ -51,10 +51,30 @@ public interface CrdnPayerHstryMapper extends AbstractMapper {
* <li> false</li> * <li> false</li>
* </ul> * </ul>
*/ */
default boolean insert(CrdnPayerHstry crdnPayerHstry) { default boolean insertCrdnPayerHstry(CrdnPayerHstry crdnPayerHstry) {
return crdnPayerHstry != null && insertCrdnPayerHstry(params().set("crdnPayerHstry", crdnPayerHstry)) == 1; 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 . /**(TB_CRDN) ID .
* @param params * @param params
* <ul><li>"crdnPayerHstry" - </li> * <ul><li>"crdnPayerHstry" - </li>

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

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

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

@ -165,9 +165,16 @@ public class CrdnBean extends AbstractComponent {
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry(); CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
crdnPayerHstry.setCrdnId(crdn.getCrdnId()); crdnPayerHstry.setCrdnId(crdn.getCrdnId());
crdnPayerHstry.setRtpyrId(crdn.getRtpyrId()); crdnPayerHstry.setRtpyrId(crdn.getRtpyrId());
result = crdnPayerHstryBean.create(crdnPayerHstry); crdnPayerHstry.setAddrSn(crdn.getAddrSn());
result = crdnPayerHstryBean.createCrdnPayerHstry(crdnPayerHstry);
if (!result) { if (!result) {
throw new RuntimeException("단속자료 등록 중 단속납부자 이력 등록에 실패하였습니다."); 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.setCrdnId(crdn.getCrdnId());
crdnPayerHstry.setRtpyrId(crdn.getRtpyrId()); crdnPayerHstry.setRtpyrId(crdn.getRtpyrId());
boolean retSuccess = crdnPayerHstryMapper.insert(crdnPayerHstry); boolean retSuccess = crdnPayerHstryMapper.insertCrdnPayerHstry(crdnPayerHstry);
if(!retSuccess) { if(!retSuccess) {
throw new RuntimeException("단속민원답변 수정 중 단속납부자변경 이력 등록에 실패하였습니다."); throw new RuntimeException("단속민원답변 수정 중 단속납부자변경 이력 등록에 실패하였습니다.");
} }

@ -12,6 +12,7 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class Payer extends AbstractEntity { public class Payer extends AbstractEntity {
/** /**
* ID * ID
*/ */
@ -72,6 +73,21 @@ public class Payer extends AbstractEntity {
*/ */
private String rtpyrSttsCd; 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 zip;
/**
*
*/
private String addr;
/**
*
*/
private String dtlAddr;
/** /**
* *
*/ */
@ -147,16 +173,6 @@ public class Payer extends AbstractEntity {
*/ */
private String spclAddr; private String spclAddr;
/**
*
*/
private String addr;
/**
*
*/
private String dtlAddr;
/** /**
* *
*/ */

@ -21,10 +21,14 @@ public class PayerQuery extends QueryRequest {
private String[] rtpyrIds; private String[] rtpyrIds;
/** 차량번호 */ /** 차량번호 */
private String vhrno; private String vhrno;
/** 납부자 구분 코드 */
private String rtpyrSeCd;
/** 납부자번호 */ /** 납부자번호 */
private String rtpyrNo; private String rtpyrNo;
/** 납부자 ID */ /** 납부자 ID */
private String rtpyrId; private String rtpyrId;
/** 주소 일련번호 */
private String addrSn;
/** 이력 일련번호 */ /** 이력 일련번호 */
private String hstrySn; private String hstrySn;
/** 단속 ID */ /** 단속 ID */
@ -34,15 +38,15 @@ public class PayerQuery extends QueryRequest {
/** 호출 용도 */ /** 호출 용도 */
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
/** ID . /** IDs .
* @return ID * @return IDs
*/ */
public String[] getRtpyrIds() { public String[] getRtpyrIds() {
return ifEmpty(rtpyrIds, () -> null); return ifEmpty(rtpyrIds, () -> null);
} }
/** ID . /** IDs .
* @param rtpyrIds ID * @param rtpyrIds IDs
* @return PayerQuery * @return PayerQuery
*/ */
public PayerQuery setRtpyrIds(String... rtpyrIds) { public PayerQuery setRtpyrIds(String... rtpyrIds) {
@ -54,15 +58,32 @@ public class PayerQuery extends QueryRequest {
* @return ID * @return ID
*/ */
public String getRtpyrId() { public String getRtpyrId() {
return !isEmpty(rtpyrIds) ? rtpyrIds[0] : rtpyrId; return !isEmpty(rtpyrIds) ? rtpyrIds[0] : rtpyrId;
} }
/** ID . /** ID .
* @param rtpyrIds ID * @param rtpyrId ID
* @return PayerQuery * @return PayerQuery
*/ */
public PayerQuery setRtpyrId(String rtpyrId) { 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 this;
} }
/** .
* @return
*/
public String getRtpyrSeCd() {
return rtpyrSeCd;
}
/** .
* @param rtpyrSeCd
* @return PayerQuery
*/
public void setRtpyrSeCd(String rtpyrSeCd) {
this.rtpyrSeCd = rtpyrSeCd;
}
/** . /** .
* @return * @return
*/ */
@ -123,7 +159,6 @@ public class PayerQuery extends QueryRequest {
public <T extends PayerQuery> T setCrdnId(String crdnId) { public <T extends PayerQuery> T setCrdnId(String crdnId) {
this.crdnId = crdnId; this.crdnId = crdnId;
return self(); return self();
} }
@ -133,7 +168,6 @@ public class PayerQuery extends QueryRequest {
public <T extends PayerQuery> T setDelYn(String delYn) { public <T extends PayerQuery> T setDelYn(String delYn) {
this.delYn = delYn; this.delYn = delYn;
return self(); return self();
} }
@ -143,7 +177,6 @@ public class PayerQuery extends QueryRequest {
public <T extends PayerQuery> T setCallPurpose(String callPurpose) { public <T extends PayerQuery> T setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose; this.callPurpose = callPurpose;
return self(); 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 * @param payer
* @return * @return
*/ */
int insertPayer(Payer payer); int insertPayer(Map<String, Object> params);
/** .
* @param params
* <ul><li>"payer" - </li>
* </ul>
* @return
*/
int insertHistory(Map<String, Object> params);
/** . /** .
* @param payer * @param payer
@ -56,12 +48,7 @@ public interface PayerMapper extends AbstractMapper {
* </ul> * </ul>
*/ */
default boolean insert(Payer payer) { default boolean insert(Payer payer) {
boolean saved = insertPayer(payer) > 0; return payer != null && insertPayer(params().set("payer", payer)) == 1;
if (saved) {
DataObject params = params().set("payer", payer);
insertHistory(params);
}
return saved;
} }
/** . /** .
@ -71,7 +58,7 @@ public interface PayerMapper extends AbstractMapper {
* </ul> * </ul>
* @return * @return
*/ */
int updatePayer(Payer payer); int updatePayer(Map<String, Object> params);
/** . /** .
* @param payer * @param payer
@ -81,28 +68,7 @@ public interface PayerMapper extends AbstractMapper {
* </ul> * </ul>
*/ */
default boolean update(Payer payer) { default boolean update(Payer payer) {
boolean saved = updatePayer(payer) == 1; return payer != null && updatePayer(params().set("payer", 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;
} }
/** , . /** , .

@ -48,11 +48,23 @@ public interface PayerService {
*/ */
boolean update(Payer payer); boolean update(Payer payer);
/** . /** .
* @param rtpyrIds * @param payer
* @return * @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 * @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.cmmn.service.bean.CrdnSttsHstryBean;
import cokr.xit.fims.payer.Payer; import cokr.xit.fims.payer.Payer;
import cokr.xit.fims.payer.PayerQuery; import cokr.xit.fims.payer.PayerQuery;
import cokr.xit.fims.payer.dao.PayerAddrMapper;
import cokr.xit.fims.payer.dao.PayerMapper; import cokr.xit.fims.payer.dao.PayerMapper;
import cokr.xit.foundation.AbstractComponent; import cokr.xit.foundation.AbstractComponent;
import cokr.xit.foundation.data.DataObject; import cokr.xit.foundation.data.DataObject;
@ -33,9 +34,16 @@ import cokr.xit.interfaces.lvis.service.reg.BasicInfoResponse;
*/ */
@Component("payerBean") @Component("payerBean")
public class PayerBean extends AbstractComponent { public class PayerBean extends AbstractComponent {
/** 납부자 정보 DAO */ /** 납부자 정보 DAO */
@Resource(name = "payerMapper") @Resource(name = "payerMapper")
private PayerMapper payerMapper; private PayerMapper payerMapper;
/** 납부자 주소 정보 DAO */
@Resource(name = "payerAddrMapper")
private PayerAddrMapper payerAddrMapper;
/** 자동차 정보 DAO */
@Resource(name = "vehicleInfoBean") @Resource(name = "vehicleInfoBean")
private VehicleInfoBean vehicleInfoBean; private VehicleInfoBean vehicleInfoBean;
@ -63,10 +71,11 @@ public class PayerBean extends AbstractComponent {
return payerMapper.selectPayers(req); return payerMapper.selectPayers(req);
} }
public Payer getPayer(String vhrno, String rtpyrNo) { public Payer getPayer(PayerQuery req) {
PayerQuery req = new PayerQuery().setVhrno(vhrno); req.setOrderBy("P.RTPYR_ID DESC, PA.ADDR_SN DESC");
req.setRtpyrNo(rtpyrNo);
List<Payer> payers = getPayers(req); List<Payer> payers = getPayers(req);
return !payers.isEmpty() ? payers.get(0) : null; return !payers.isEmpty() ? payers.get(0) : null;
} }
@ -78,20 +87,14 @@ public class PayerBean extends AbstractComponent {
* </ul> * </ul>
*/ */
public boolean create(Payer payer) { public boolean create(Payer payer) {
DataObject params = new DataObject() // 납부자 등록
.set("roadNmCd", payer.getRoadNmCd()) boolean rtnScs = payerMapper.insert(payer);
.set("udgdSeCd", payer.getUdgdSeCd()) // 납부자 주소 등록
.set("bmno", payer.getBmno()) if (rtnScs) {
.set("bsno", payer.getBsno()); createPayerAddr(payer);
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 payerMapper.insert(payer);
return rtnScs;
} }
/** . /** .
@ -102,11 +105,23 @@ public class PayerBean extends AbstractComponent {
* </ul> * </ul>
*/ */
public boolean update(Payer payer) { 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() DataObject params = new DataObject()
.set("roadNmCd", payer.getRoadNmCd()) .set("roadNmCd", payer.getRoadNmCd())
.set("udgdSeCd", payer.getUdgdSeCd()) .set("udgdSeCd", payer.getUdgdSeCd())
.set("bmno", payer.getBmno()) .set("bmno", payer.getBmno())
.set("bsno", payer.getBsno()); .set("bsno", payer.getBsno());
DataObject info = payerMapper.selectAddrInfo(params); DataObject info = payerMapper.selectAddrInfo(params);
if (info != null) { if (info != null) {
payer.setAddrSeCd("02"); payer.setAddrSeCd("02");
@ -115,15 +130,19 @@ public class PayerBean extends AbstractComponent {
payer.setStdgCd(info.string("STDG_CD")); payer.setStdgCd(info.string("STDG_CD"));
payer.setDongCd(info.string("DONG_CD")); payer.setDongCd(info.string("DONG_CD"));
} }
return payerMapper.update(payer);
return payerAddrMapper.insert(payer);
} }
/** . /** .
* @param rtpyrIds * @param payer
* @return * @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/ */
public int remove(String... rtpyrIds) { public boolean updatePayerAddr(Payer payer) {
return payerMapper.delete(rtpyrIds); return payerAddrMapper.update(payer);
} }
public List<Payer> getVehicleOwners(List<BasicInfoRequest> reqs) { public List<Payer> getVehicleOwners(List<BasicInfoRequest> reqs) {
@ -143,9 +162,9 @@ public class PayerBean extends AbstractComponent {
Payer payer = new Payer(); Payer payer = new Payer();
payer.setSggCd(basicInfo.getSggCd()); payer.setSggCd(basicInfo.getSggCd());
String vhrno = basicInfo.getVhrno(); payer.setVhrno(basicInfo.getVhrno());
payer.setVhrno(vhrno);
payer.setRtpyrInptSeCd("02"); payer.setRtpyrInptSeCd("02");
payer.setAddrInptSeCd("02");
payer.setRtpyrSeCd( payer.setRtpyrSeCd(
Map.of( Map.of(
@ -185,7 +204,26 @@ public class PayerBean extends AbstractComponent {
payer.setDtlAddr(basicInfo.getUse_strnghld_adres_nm()); payer.setDtlAddr(basicInfo.getUse_strnghld_adres_nm());
payer.setWholAddr(basicInfo.getRoad_nm_adres() + ", " + 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) if (result != null)
result.setVehicleInfo(basicInfo); result.setVehicleInfo(basicInfo);
@ -206,7 +244,7 @@ public class PayerBean extends AbstractComponent {
* @return * @return
*/ */
public DataObject getCrdnInfo(PayerQuery req) { public DataObject getCrdnInfo(PayerQuery req) {
return payerMapper.selectCrdn(req); // 단속 조회 return payerMapper.selectCrdn(req); // 단속 조회
} }
/** , ID . /** , ID .
@ -218,8 +256,8 @@ public class PayerBean extends AbstractComponent {
*/ */
public String createCrdnPayer(Payer payer) { public String createCrdnPayer(Payer payer) {
// 변수 선언 // 변수 선언
boolean rtnScs = false; // DB 처리 결과 boolean rtnScs = false; // DB 처리 결과
String rtnMsg = ""; // 처리 결과 메시지 String rtnMsg = ""; // 처리 결과 메시지
String strTemp = ""; String strTemp = "";
// 지하 구분 코드 // 지하 구분 코드
@ -233,28 +271,64 @@ public class PayerBean extends AbstractComponent {
payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr()); payer.setWholAddr(payer.getAddr() + ", " + payer.getDtlAddr());
} }
// 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다.
rtnScs = payerMapper.update(payer);
if (!rtnScs) {
throw new RuntimeException("납부자 수정에 실패하였습니다."); // 예외를 발생시켜서 오류메세지를 보내고 DB Rollback
}
// 단속 ID로 단속 정보 조회 // 단속 ID로 단속 정보 조회
DataObject crdnInfo = payerMapper.selectCrdnInfo(payer.getCrdnId()); DataObject crdnInfo = payerMapper.selectCrdnInfo(payer.getCrdnId());
// 단속 대장의 납부자 ID와 납부자 대장의 납부자 ID가 다르다면.. // 납부자 ID로 납부자 정보 조회
if (!crdnInfo.string("RTPYR_ID").equals(payer.getRtpyrId())) { Payer payerInfo = getPayer(new PayerQuery().setRtpyrId(payer.getRtpyrId())
.setAddrSn(payer.getAddrSn()));
if (payer.getRtpyrNo().equals(payerInfo.getRtpyrNo())) { // 주민등록번호가 동일하다면..
// 납부자 대장(TB_PAYER)에 납부자 정보를 수정한다.
rtnScs = update(payer);
if (!rtnScs) {
throw new RuntimeException("납부자 정보 수정에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 주소가 변경되었는지 확인
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 및 주소 일련번호를 수정한다.
CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry(); CrdnPayerHstry crdnPayerHstry = new CrdnPayerHstry();
crdnPayerHstry.setCrdnId(payer.getCrdnId()); crdnPayerHstry.setCrdnId(payer.getCrdnId());
crdnPayerHstry.setRtpyrId(payer.getRtpyrId()); 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) 대장에 등록한다. // 단속 대장의 납부자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); rtnScs = crdnPayerHstryBean.createHstryUpdateCrdnPayer(crdnPayerHstry);
if (!rtnScs) { if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자ID 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("납부자 등록 실행중 단속 대장에 납부자ID 등록에 실패하였습니다.");
} }
} }
// 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다. // 단속 상태 이력(TB_CRDN_STTS_HSTRY) 대장에 등록하고, 단속(TB_CRDN) 대장을 수정한다.
if (crdnInfo.number("CRDN_STTS_CD").intValue() < 21) { // 납부자 등록 완료 if (crdnInfo.number("CRDN_STTS_CD").intValue() < 21) { // 납부자 등록 완료
@ -266,8 +340,7 @@ public class PayerBean extends AbstractComponent {
rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry); rtnScs = crdnSttsHstryBean.createHstryUpdateCrdnSttsCd(crdnSttsHstry);
if (!rtnScs) { if (!rtnScs) {
// 예외를 발생시켜서 오류메세지를 보내고 DB Rollback throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
throw new RuntimeException("납부자 등록 중 단속 대장의 단속상태 변경에 실패하였습니다.");
} }
} }

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

@ -109,23 +109,6 @@ public class PayerController extends ApplicationController {
.addObject("saved", saved); .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") @Task("CMN")
@PostMapping(name = "차량/납부자 조회", value = "/vehicle.do") @PostMapping(name = "차량/납부자 조회", value = "/vehicle.do")
public ModelAndView getVehicleOwner(BasicInfoRequest req) { public ModelAndView getVehicleOwner(BasicInfoRequest req) {
@ -134,6 +117,7 @@ public class PayerController extends ApplicationController {
return new ModelAndView("jsonView") return new ModelAndView("jsonView")
.addObject("found", found) .addObject("found", found)
.addObject("rtpyrId", found ? payer.getRtpyrId() : null) .addObject("rtpyrId", found ? payer.getRtpyrId() : null)
.addObject("addrSn", found ? payer.getAddrSn() : null)
.addObject("vehicle", found ? payer.getVehicleInfo() : null); .addObject("vehicle", found ? payer.getVehicleInfo() : null);
} }

@ -8,15 +8,16 @@
============================ --> ============================ -->
<resultMap id="crdnPayerHstryRow" type="cokr.xit.fims.cmmn.CrdnPayerHstry"> <!-- 단속 납부자 이력 --> <resultMap id="crdnPayerHstryRow" type="cokr.xit.fims.cmmn.CrdnPayerHstry"> <!-- 단속 납부자 이력 -->
<result property="chgHstryId" column="CHG_HSTRY_ID" /> <!-- 변경 이력 ID --> <result property="chgHstryId" column="CHG_HSTRY_ID" /><!-- 변경 이력 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID --> <result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID --> <result property="rtpyrId" column="RTPYR_ID" /> <!-- 납부자 ID -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 --> <result property="addrSn" column="ADDR_SN" /> <!-- 주소 일련번호 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 --> <result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
</resultMap> </resultMap>
<sql id="select"> <sql id="select">
SELECT CPH.CHG_HSTRY_ID /* 변경 이력 ID */ SELECT CPH.CHG_HSTRY_ID <!-- 변경 이력 ID -->
, CPH.CRDN_ID /* 단속 ID */ , CPH.CRDN_ID /* 단속 ID */
, CPH.RTPYR_ID /* 납부자 ID */ , CPH.RTPYR_ID /* 납부자 ID */
, CPH.REG_DT /* 등록 일시 */ , CPH.REG_DT /* 등록 일시 */
@ -45,9 +46,6 @@
<select id="selectCrdnPayerHstrys" parameterType="map" resultType="dataobject">/* 단속 납부자 이력 객체 가져오기(crdnPayerHstryMapper.selectCrdnPayerHstrys) */ <select id="selectCrdnPayerHstrys" parameterType="map" resultType="dataobject">/* 단속 납부자 이력 객체 가져오기(crdnPayerHstryMapper.selectCrdnPayerHstrys) */
<include refid="select" /> <include refid="select" />
<where> <where>
<if test="chgHstryId != null">
AND CPH.CHG_HSTRY_ID = #{chgHstryId} /* 변경 이력 ID */
</if>
<if test="crdnId != null"> <if test="crdnId != null">
AND CPH.CRDN_ID = #{crdnId} /* 단속 ID */ AND CPH.CRDN_ID = #{crdnId} /* 단속 ID */
</if> </if>
@ -60,33 +58,54 @@
<insert id="insertCrdnPayerHstry" parameterType="map">/* 단속 납부자 이력 등록(crdnPayerHstryMapper.insertCrdnPayerHstry) */ <insert id="insertCrdnPayerHstry" parameterType="map">/* 단속 납부자 이력 등록(crdnPayerHstryMapper.insertCrdnPayerHstry) */
<selectKey resultType="string" keyProperty="crdnPayerHstry.chgHstryId" keyColumn="NEW_ID" order="BEFORE"> <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 <include refid="numbering.keyByYear">
FROM TB_CRDN_PAYER_HSTRY <property name="TABLE_NAME" value="TB_CRDN_PAYER_HSTRY" />
WHERE CHG_HSTRY_ID LIKE CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), '%') <property name="TABLE_KEY" value="CHG_HSTRY_ID" />
<property name="pad" value="20" />
</include>
</selectKey> </selectKey>
INSERT INSERT
INTO TB_CRDN_PAYER_HSTRY ( INTO TB_CRDN_PAYER_HSTRY (
CHG_HSTRY_ID /* 변경 이력 ID */ CHG_HSTRY_ID <!-- 변경 이력 ID -->
, CRDN_ID /* 단속 ID */ , CRDN_ID <!-- 단속 ID -->
, RTPYR_ID /* 납부자 ID */ , RTPYR_ID <!-- 납부자 ID -->
, REG_DT /* 등록 일시 */ , REG_DT <!-- 등록 일시 -->
, RGTR /* 등록자 */ , 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 ( VALUES (
#{crdnPayerHstry.chgHstryId} /* 변경 이력 ID */ #{crdnPayerAddrHstry.crdnId} <!-- 단속 ID -->
, #{crdnPayerHstry.crdnId} /* 단속 ID */ , #{crdnPayerAddrHstry.rtpyrId} <!-- 납부자 ID -->
, #{crdnPayerHstry.rtpyrId} /* 납부자 ID */ , #{crdnPayerAddrHstry.addrSn} <!-- 주소 일련번호 -->
, #{crdnPayerHstry.createdAt} /* 등록 일시 */ , #{crdnPayerAddrHstry.createdAt} <!-- 등록 일시 -->
, #{crdnPayerHstry.createdBy} /* 등록자 */ , #{crdnPayerAddrHstry.createdBy} <!-- 등록자 -->
) )
</insert> </insert>
<update id="updateCrdnRtpyrId" parameterType="map">/* 단속 납부자 수정(crdnPayerHstryMapper.updateCrdnPayer) */ <update id="updateCrdnRtpyrId" parameterType="map">/* 단속 납부자 수정(crdnPayerHstryMapper.updateCrdnPayer) */
UPDATE TB_CRDN UPDATE TB_CRDN
SET RTPYR_ID = #{crdnPayerHstry.rtpyrId} /* 납부자 ID */ SET RTPYR_ID = #{crdnPayerHstry.rtpyrId} <!-- 납부자 ID -->
, MDFCN_DT = #{crdnPayerHstry.lastModified} /* 수정 일시 */ , ADDR_SN = #{crdnPayerHstry.addrSn} <!-- 주소 일련번호 -->
, MDFR = #{crdnPayerHstry.modifiedBy} /* 수정자 */ , MDFCN_DT = #{crdnPayerHstry.lastModified} <!-- 수정 일시 -->
WHERE CRDN_ID = #{crdnPayerHstry.crdnId} /* 단속 ID */ , MDFR = #{crdnPayerHstry.modifiedBy} <!-- 수정자 -->
WHERE CRDN_ID = #{crdnPayerHstry.crdnId} <!-- 단속 ID -->
</update> </update>
</mapper> </mapper>

@ -18,9 +18,10 @@ INSERT INTO TB_CRDN (
, CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 --> , CRDN_INPT_SE_CD <!-- 단속 입력 구분 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 --> , TASK_SE_CD <!-- 업무 구분 코드 -->
, CVLCPT_LINK_YN <!-- 민원연계여부 --> , CVLCPT_LINK_YN <!-- 민원연계여부 -->
, LINK_TBL_NM <!-- 연계 테이블 명 --> , LINK_TBL_NM <!-- 연계 테이블 명 -->
, LINK_ID <!-- 연계 ID --> , LINK_ID <!-- 연계 ID -->
, RTPYR_ID <!-- 납부자 ID --> , RTPYR_ID <!-- 납부자 ID -->
, ADDR_SN <!-- 주소 일련번호 -->
, CRDN_YMD <!-- 단속 일자 --> , CRDN_YMD <!-- 단속 일자 -->
, CRDN_TM <!-- 단속 시각 --> , CRDN_TM <!-- 단속 시각 -->
, VHRNO <!-- 차량번호 --> , VHRNO <!-- 차량번호 -->
@ -66,6 +67,7 @@ INSERT INTO TB_CRDN (
, #{linkTblNm} <!-- 연계 테이블 명 --> , #{linkTblNm} <!-- 연계 테이블 명 -->
, #{linkId} <!-- 연계 ID --> , #{linkId} <!-- 연계 ID -->
, #{rtpyrId} <!-- 납부자 ID --> , #{rtpyrId} <!-- 납부자 ID -->
, #{addrSn} <!-- 주소 일련번호 -->
, #{crdnYmd} <!-- 단속 일자 --> , #{crdnYmd} <!-- 단속 일자 -->
, #{crdnTm} <!-- 단속 시각 --> , #{crdnTm} <!-- 단속 시각 -->
, #{vhrno} <!-- 차량번호 --> , #{vhrno} <!-- 차량번호 -->

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

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

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

@ -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>

@ -92,34 +92,35 @@
, CA.VLTN_NMTM <!-- 위반 횟수 --> , CA.VLTN_NMTM <!-- 위반 횟수 -->
, CA.OVTIME_YN <!-- 시간외 여부 --> , CA.OVTIME_YN <!-- 시간외 여부 -->
, CA.OVTIME_PRTTN_YN <!-- 시간외 분할 여부 --> , CA.OVTIME_PRTTN_YN <!-- 시간외 분할 여부 -->
, (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 --> , (SELECT GET_CODE_NM('FIM002', CA.CRDN_SE_CD) FROM DUAL) AS CRDN_SE_NM <!-- 단속 구분 명 -->
, (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 --> , (SELECT GET_CODE_NM('FIM007', CA.CRDN_SPAREA_CD) FROM DUAL) AS CRDN_SPAREA_NM <!-- 단속 특별구역 명 -->
, (SELECT GET_CODE_NM('FIM006', CA.TOWNG_YN) FROM DUAL) AS TOWNG_YN_NM <!-- 견인 여부 명 --> , (SELECT GET_CODE_NM('FIM006', CA.TOWNG_YN) FROM DUAL) AS TOWNG_YN_NM <!-- 견인 여부 명 -->
, (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM <!-- 사용 연료 명 --> , (SELECT GET_CODE_NM('LVS005', CA.USE_FUEL_CD) FROM DUAL) AS USE_FUEL_NM <!-- 사용 연료 명 -->
, (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM <!-- 과태료 차종 명 --> , (SELECT GET_CODE_NM('FIM009', CA.FFNLG_CARMDL_CD) FROM DUAL) AS FFNLG_CARMDL_NM <!-- 과태료 차종 명 -->
, (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 --> , (SELECT GET_CODE_NM('FIM034', CA.PARKNG_PSBLTY_RSLT_CD) FROM DUAL) AS PARKNG_PSBLTY_RSLT_NM <!-- 주차 가능 결과 명 -->
, (SELECT GET_CODE_NM('FIM006', CA.OVTIME_YN) FROM DUAL) AS OVTIME_YN_NM <!-- 시간외 여부 명 --> , (SELECT GET_CODE_NM('FIM006', CA.OVTIME_YN) FROM DUAL) AS OVTIME_YN_NM <!-- 시간외 여부 명 -->
, (SELECT GET_CODE_NM('FIM006', CA.OVTIME_PRTTN_YN) FROM DUAL) AS OVTIME_PRTTN_YN_NM <!-- 시간외 분할 여부 명 --> , (SELECT GET_CODE_NM('FIM006', CA.OVTIME_PRTTN_YN) FROM DUAL) AS OVTIME_PRTTN_YN_NM <!-- 시간외 분할 여부 명 -->
, V.TXITM_NM <!-- 세목 명 --> , V.TXITM_NM <!-- 세목 명 -->
, V.OPER_ITEM_NM <!-- 운영 항목 명 --> , V.OPER_ITEM_NM <!-- 운영 항목 명 -->
, P.RTPYR_ID <!-- 납부자 ID --> , P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_INPT_SE_CD <!-- 납부자 입력 구분 코드 --> , 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 <!-- 납부자 구분 코드 --> , P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, P.RTPYR_NO <!-- 납부자 번호 --> , P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 --> , P.RTPYR_NM <!-- 납부자 명 -->
, P.RTPYR_TELNO <!-- 납부자 전화번호 --> , P.RTPYR_TELNO <!-- 납부자 전화번호 -->
, P.RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 --> , P.RTPYR_MBL_TELNO <!-- 납부자 휴대 전화번호 -->
, P.RTPYR_EML <!-- 납부자 이메일 --> , P.RTPYR_EML <!-- 납부자 이메일 -->
, P.RTPYR_STTS_CD <!-- 납부자 상태 코드 --> , 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('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 <!-- 수정 일시 --> , P.MDFCN_DT AS P_MDFCN_DT <!-- 수정 일시 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = P.MDFR) AS P_MDFR_NM <!-- 수정자 명 --> , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = P.MDFR) AS P_MDFR_NM <!-- 수정자 명 -->
, CC.CVLCPT_LINK_ID <!-- 민원 연계 ID --> , 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_CRDN_ADI CA ON (C.CRDN_ID = CA.CRDN_ID)
INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_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 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_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') LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
</sql> </sql>

@ -6,6 +6,7 @@
<form id="frmEdit--${pageName}"> <form id="frmEdit--${pageName}">
<input type="hidden" id="crdnId-${pageName}" name="crdnId" data-map="CRDN_ID" /> <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="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="sggCd--${pageName}" name="sggCd" value="${sggCd}" />
<input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" value="${taskSeCd}" /> <input type="hidden" id="taskSeCd--${pageName}" name="taskSeCd" value="${taskSeCd}" />
<div class="row g-1"> <div class="row g-1">
@ -615,6 +616,7 @@ $(document).ready(function(){
} }
}); });
$("#rtpyrId--${pageName}").val(""); $("#rtpyrId--${pageName}").val("");
$("#addrSn--${pageName}").val("");
$("#rtpyrNm--${pageName}").val(""); $("#rtpyrNm--${pageName}").val("");
$("#rtpyrSeCd--${pageName}").val(""); $("#rtpyrSeCd--${pageName}").val("");
$("#rtpyrNo--${pageName}").val(""); $("#rtpyrNo--${pageName}").val("");
@ -630,6 +632,7 @@ $(document).ready(function(){
} }
$("#rtpyrId--${pageName}").val(resp.rtpyrId); $("#rtpyrId--${pageName}").val(resp.rtpyrId);
$("#addrSn--${pageName}").val(resp.addrSn);
var vehicle = resp.vehicle; 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="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="crdnId--${pageName}" name="crdnId" data-map="CRDN_ID" />
<input type="hidden" id="rtpyrId--${pageName}" name="rtpyrId" data-map="RTPYR_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="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"> <div class="row g-1">
<!-- 단속일시 --> <!-- 단속일시 -->
@ -198,12 +200,14 @@
if (!info) return; if (!info) return;
if ($("#rtpyrInptSeCd--${pageName}").val() == "") { 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") { if (info.rtpyrSeCd == "01") {
info.rtpyrBrdt = info.rtpyrNo.substr(0, 6); // 생년월일 info.rtpyrBrdt = info.rtpyrNo.substr(0, 6); // 생년월일
} }
info.wholAddr = info.addr + ", " + info.dtlAddr // 전체 주소 info.wholAddr = info.addr + ", " + info.dtlAddr // 전체 주소
ajax.post({ ajax.post({
@ -265,6 +269,9 @@
$("#mno--${pageName}").val(obj.MNO); // 번지 $("#mno--${pageName}").val(obj.MNO); // 번지
$("#sno--${pageName}").val(obj.SNO); // 호 $("#sno--${pageName}").val(obj.SNO); // 호
$("#dongCd--${pageName}").val(obj.DONG_CD); // 행정동 $("#dongCd--${pageName}").val(obj.DONG_CD); // 행정동
$("#rtpyrInptSeCd--${pageName}").val("01"); // 납부자 입력 구분 코드(FIM015) 01:수기입력
$("#addrInptSeCd--${pageName}").val("01"); // 주소 입력 구분 코드(FIM087) 01:수기입력
} }
/************************************************************************** /**************************************************************************
@ -328,6 +335,7 @@
} else { } else {
$("#rtpyrId--${pageName}").val(resp.rtpyrId); // 납부자 ID $("#rtpyrId--${pageName}").val(resp.rtpyrId); // 납부자 ID
$("#rtpyrInptSeCd--${pageName}").val("02"); // 납부자 입력 구분 코드 $("#rtpyrInptSeCd--${pageName}").val("02"); // 납부자 입력 구분 코드
$("#addrInptSeCd--${pageName}").val("02"); // 주소 입력 구분 코드
$("#addr--${pageName}").attr("readonly", true); // 주소 $("#addr--${pageName}").attr("readonly", true); // 주소
$("#zip--${pageName}").attr("readonly", true); // 우편번호 $("#zip--${pageName}").attr("readonly", true); // 우편번호
@ -351,7 +359,6 @@
, content: template , content: template
, init: () => { , init: () => {
$("#searchAddrCallback").val("pageObject['${pageName}'].callbackSearchAddr"); $("#searchAddrCallback").val("pageObject['${pageName}'].callbackSearchAddr");
setDialogZindex(); setDialogZindex();
} }
}); });
@ -360,9 +367,24 @@
// 화면에서 보여주는 주소입력 부분 수정 // 화면에서 보여주는 주소입력 부분 수정
$P.fnEditAddr = () => { $P.fnEditAddr = () => {
$("#rtpyrInptSeCd--${pageName}").val("01"); // 입력 구분 $("#rtpyrInptSeCd--${pageName}").val("01"); // 입력 구분
$("#addrInptSeCd--${pageName}").val("01"); // 입력 구분
$("#addr--${pageName}").prop("readonly", false); // 주소 $("#addr--${pageName}").prop("readonly", false); // 주소
$("#zip--${pageName}").prop("readonly", false); // 우편번호 $("#zip--${pageName}").prop("readonly", false); // 우편번호
$("#dtlAddr--${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