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

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,17 +6,18 @@
<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">
<div class="col-md-12" slot="edit"> <div class="col-md-12" slot="edit">
<template class="pvs bpv"> <template class="pvs bpv">
<slot> <slot>
<label for="crdnSeCd--${pageName}" <label for="crdnSeCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속구분 단속구분
</label> </label>
<select id="crdnSeCd--${pageName}" name="crdnSeCd" <select id="crdnSeCd--${pageName}" name="crdnSeCd"
data-map="CRDN_SE_CD" class="form-select"> data-map="CRDN_SE_CD" class="form-select">
<c:forEach items="${FIM002List}" var="item"> <c:forEach items="${FIM002List}" var="item">
<option value="${item.code}">${item.value}</option> <option value="${item.code}">${item.value}</option>
@ -26,7 +27,7 @@
</template> </template>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label for="crdnYmd--${pageName}" <label for="crdnYmd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end required"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end required">
위반일자 위반일자
</label> </label>
@ -35,24 +36,24 @@
<button type="button" class="bx bx-sm bx-calendar bg-white"></button> <button type="button" class="bx bx-sm bx-calendar bg-white"></button>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label for="crdnTm--${pageName}" <label for="crdnTm--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end required"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end required">
위반시간 위반시간
</label> </label>
<input type="text" id="crdnTm--${pageName}" name="crdnTm" data-map="CRDN_TM" <input type="text" id="crdnTm--${pageName}" name="crdnTm" data-map="CRDN_TM"
class="form-control form-time" data-fmt-type="time" maxlength="8" required class="form-control form-time" data-fmt-type="time" maxlength="8" required
placeholder="시:분:초" /> placeholder="시:분:초" />
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label for="vhrno--${pageName}" <label for="vhrno--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end required"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end required">
차량번호 차량번호
</label> </label>
<input type="text" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" class="form-control" <input type="text" id="vhrno--${pageName}" name="vhrno" data-map="VHRNO" class="form-control"
data-maxlengthb="30" required /> data-maxlengthb="30" required />
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label for="vltnCd--${pageName}" <label for="vltnCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
위반내용 위반내용
</label> </label>
@ -63,11 +64,11 @@
</select> </select>
</div> </div>
<div class="col-md-4 select2-primary"> <div class="col-md-4 select2-primary">
<label for="crdnStdgNm--${pageName}" <label for="crdnStdgNm--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
법정동 법정동
</label> </label>
<input type="text" id="crdnStdgNm--${pageName}" name="crdnStdgNm" data-map="CRDN_STDG_NM" <input type="text" id="crdnStdgNm--${pageName}" name="crdnStdgNm" data-map="CRDN_STDG_NM"
class="form-control w-px-150" list="stdgNmList--${pageName}" /> class="form-control w-px-150" list="stdgNmList--${pageName}" />
<datalist id="stdgNmList--${pageName}"> <datalist id="stdgNmList--${pageName}">
<c:forEach items="${stdgNmList}" var="item"> <c:forEach items="${stdgNmList}" var="item">
@ -76,15 +77,15 @@
</datalist> </datalist>
</div> </div>
<div class="col-md-4 select2-primary"> <div class="col-md-4 select2-primary">
<label for="crdnRoadNm--${pageName}" <label for="crdnRoadNm--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
도로명 도로명
</label> </label>
<input type="text" id="crdnRoadNm--${pageName}" name="crdnRoadNm" data-map="CRDN_ROAD_NM" <input type="text" id="crdnRoadNm--${pageName}" name="crdnRoadNm" data-map="CRDN_ROAD_NM"
class="form-control" /> class="form-control" />
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<label for="crdnPlc--${pageName}" <label for="crdnPlc--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속장소 단속장소
</label> </label>
@ -94,22 +95,22 @@
<div class="col-md-6" slot="edit"> <div class="col-md-6" slot="edit">
<template class="bpv"> <template class="bpv">
<slot> <slot>
<label for="dtlCrdnPlc--${pageName}" <label for="dtlCrdnPlc--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
상세단속장소 상세단속장소
</label> </label>
<input type="text" id="dtlCrdnPlc--${pageName}" name="dtlCrdnPlc" <input type="text" id="dtlCrdnPlc--${pageName}" name="dtlCrdnPlc"
data-map="DTL_CRDN_PLC" class="form-control" data-map="DTL_CRDN_PLC" class="form-control"
data-maxlenghb="200" /> data-maxlenghb="200" />
</slot> </slot>
</template> </template>
<template class="pvs"> <template class="pvs">
<slot> <slot>
<label for="crdnSpareaCd--${pageName}" <label for="crdnSpareaCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
특별구역 특별구역
</label> </label>
<select id="crdnSpareaCd--${pageName}" name="crdnSpareaCd" <select id="crdnSpareaCd--${pageName}" name="crdnSpareaCd"
data-map="CRDN_SPAREA_CD" class="form-select"> data-map="CRDN_SPAREA_CD" class="form-select">
<c:forEach items="${FIM007List}" var="item"> <c:forEach items="${FIM007List}" var="item">
<option value="${item.code}">${item.value}</option> <option value="${item.code}">${item.value}</option>
@ -119,27 +120,27 @@
</template> </template>
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<label for="etcCn--${pageName}" <label for="etcCn--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
특기사항 특기사항
</label> </label>
<input type="text" id="etcCn--${pageName}" name="etcCn" <input type="text" id="etcCn--${pageName}" name="etcCn"
data-map="ETC_CN" class="form-control" data-map="ETC_CN" class="form-control"
data-maxlengthb="1000" /> data-maxlengthb="1000" />
</div> </div>
</div> </div>
<div class="row my-1 mx-4 g-1 border-card rounded-3"> <div class="row my-1 mx-4 g-1 border-card rounded-3">
<div class="col-md-4"> <div class="col-md-4">
<label for="rtpyrNm--${pageName}" <label for="rtpyrNm--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">납부자명</label> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">납부자명</label>
<input type="text" id="rtpyrNm--${pageName}" name="rtpyrNm" data-map="RTPYR_NM" <input type="text" id="rtpyrNm--${pageName}" name="rtpyrNm" data-map="RTPYR_NM"
class="form-control" readonly class="form-control" readonly
/> />
</div> </div>
<div class="col-md-3"> <div class="col-md-3">
<label for="rtpyrSeCd--${pageName}" <label for="rtpyrSeCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">납부자구분</label> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">납부자구분</label>
<select id="rtpyrSeCd--${pageName}" name="rtpyrSeCd" data-map="RTPYR_SE_CD" <select id="rtpyrSeCd--${pageName}" name="rtpyrSeCd" data-map="RTPYR_SE_CD"
class="form-select" disabled> class="form-select" disabled>
<option value=""></option> <option value=""></option>
<c:forEach items="${FIM011List}" var="item"> <c:forEach items="${FIM011List}" var="item">
@ -148,72 +149,72 @@
</select> </select>
</div> </div>
<div class="col-md-5"> <div class="col-md-5">
<label for="rtpyrNo--${pageName}" <label for="rtpyrNo--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">납부자번호</label> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">납부자번호</label>
<input type="text" id="rtpyrNo--${pageName}" name="rtpyrNo" data-map="RTPYR_NO" <input type="text" id="rtpyrNo--${pageName}" name="rtpyrNo" data-map="RTPYR_NO"
class="form-control privacy" readonly /> class="form-control privacy" readonly />
<input type="text" id="mask-rtpyrNo--${pageName}" <input type="text" id="mask-rtpyrNo--${pageName}"
class="form-control privacy-mask" disabled value="******"/> class="form-control privacy-mask" disabled value="******"/>
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<label for="zip--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> <label for="zip--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
우편번호 우편번호
</label> </label>
<input type="text" id="zip--${pageName}" name="zip" data-map="ZIP" class="form-control w-px-100" <input type="text" id="zip--${pageName}" name="zip" data-map="ZIP" class="form-control w-px-100"
readonly maxlength="7" pattern="(\d{3}-\d{3}|\d{6}|\d{5})" /> readonly maxlength="7" pattern="(\d{3}-\d{3}|\d{6}|\d{5})" />
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<label for="addr--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> <label for="addr--${pageName}" class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
주소 주소
</label> </label>
<input type="text" id="addr--${pageName}" name="addr" data-map="ADDR" <input type="text" id="addr--${pageName}" name="addr" data-map="ADDR"
class="form-control w-px-700" readonly data-maxlengthb="320" /> class="form-control w-px-700" readonly data-maxlengthb="320" />
</div> </div>
<div class="col-md-12"> <div class="col-md-12">
<label for="dtlAddr--${pageName}" <label for="dtlAddr--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
상세주소 상세주소
</label> </label>
<input type="text" id="dtlAddr--${pageName}" name="dtlAddr" data-map="DTL_ADDR" <input type="text" id="dtlAddr--${pageName}" name="dtlAddr" data-map="DTL_ADDR"
class="form-control w-px-700" readonly data-maxlengthb="200" /> class="form-control w-px-700" readonly data-maxlengthb="200" />
</div> </div>
</div> </div>
<div class="row g-1"> <div class="row g-1">
<div class="col-md-4"> <div class="col-md-4">
<label for="vin--${pageName}" <label for="vin--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
차대번호 차대번호
</label> </label>
<input type="text" id="vin--${pageName}" name="vin" <input type="text" id="vin--${pageName}" name="vin"
data-map="VIN" class="form-control" readonly data-map="VIN" class="form-control" readonly
placeholder="입력항목이 아닙니다." /> placeholder="입력항목이 아닙니다." />
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label for="vhclNm--${pageName}" <label for="vhclNm--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
차량명칭 차량명칭
</label> </label>
<input type="text" id="vhclNm--${pageName}" name="vhclNm" <input type="text" id="vhclNm--${pageName}" name="vhclNm"
data-map="VHCL_NM" class="form-control" readonly data-map="VHCL_NM" class="form-control" readonly
placeholder="입력항목이 아닙니다." /> placeholder="입력항목이 아닙니다." />
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
<label for="vhclColor--${pageName}" <label for="vhclColor--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
차량색상 차량색상
</label> </label>
<input type="text" id="vhclColor--${pageName}" name="vhclColor" <input type="text" id="vhclColor--${pageName}" name="vhclColor"
data-map="VHCL_COLOR" class="form-control" readonly data-map="VHCL_COLOR" class="form-control" readonly
placeholder="입력항목이 아닙니다." /> placeholder="입력항목이 아닙니다." />
</div> </div>
<div class="col-md-12" slot="edit"> <div class="col-md-12" slot="edit">
<template class="pvs bpv"> <template class="pvs bpv">
<slot> <slot>
<label for="ffnlgCarmdlCd--${pageName}" <label for="ffnlgCarmdlCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
차종 차종
</label> </label>
<select id="ffnlgCarmdlCd--${pageName}" name ="ffnlgCarmdlCd" <select id="ffnlgCarmdlCd--${pageName}" name ="ffnlgCarmdlCd"
data-map="FFNLG_CARMDL_CD" class="form-select"> data-map="FFNLG_CARMDL_CD" class="form-select">
<option value=""></option> <option value=""></option>
<c:forEach items="${FIM009List}" var="item"> <c:forEach items="${FIM009List}" var="item">
@ -226,11 +227,11 @@
<div class="col-md-12" slot="edit"> <div class="col-md-12" slot="edit">
<template class="eca"> <template class="eca">
<slot> <slot>
<label for="useFuelCd--${pageName}" <label for="useFuelCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
연료구분 연료구분
</label> </label>
<select id="useFuelCd--${pageName}" name="useFuelCd" <select id="useFuelCd--${pageName}" name="useFuelCd"
data-map="USE_FUEL_CD" class="form-select" disabled> data-map="USE_FUEL_CD" class="form-select" disabled>
<option value=""></option> <option value=""></option>
<c:forEach items="${LVS005List}" var="item"> <c:forEach items="${LVS005List}" var="item">
@ -243,7 +244,7 @@
<div class="col-md-4" slot="edit"> <div class="col-md-4" slot="edit">
<template class="dpv eca pvs"> <template class="dpv eca pvs">
<slot> <slot>
<label for="towngYn--${pageName}" <label for="towngYn--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
견인지시 견인지시
</label> </label>
@ -258,12 +259,12 @@
<div class="col-md-4" slot="edit"> <div class="col-md-4" slot="edit">
<template class="dpv eca pvs"> <template class="dpv eca pvs">
<slot> <slot>
<label for="crdnSn--${pageName}" <label for="crdnSn--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
스티커번호 스티커번호
</label> </label>
<input type="text" id="crdnSn--${pageName}" name="crdnSn" <input type="text" id="crdnSn--${pageName}" name="crdnSn"
data-map="CRDN_SN" class="form-control" data-map="CRDN_SN" class="form-control"
maxlength="20" data-maxlengthb="20" /> maxlength="20" data-maxlengthb="20" />
</slot> </slot>
</template> </template>
@ -271,11 +272,11 @@
<div class="col-md-4" slot="edit"> <div class="col-md-4" slot="edit">
<template class="dpv"> <template class="dpv">
<slot> <slot>
<label for="parkngPsbltyRsltCd--${pageName}" <label for="parkngPsbltyRsltCd--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
장애차량확인 장애차량확인
</label> </label>
<select id="parkngPsbltyRsltCd--${pageName}" name="parkngPsbltyRsltCd" <select id="parkngPsbltyRsltCd--${pageName}" name="parkngPsbltyRsltCd"
data-map="PARKNG_PSBLTY_RSLT_CD" class="form-select"> data-map="PARKNG_PSBLTY_RSLT_CD" class="form-select">
<c:forEach items="${FIM034List}" var="item"> <c:forEach items="${FIM034List}" var="item">
<c:if test="${item.code == '0' or item.code == '1'}"> <c:if test="${item.code == '0' or item.code == '1'}">
@ -289,7 +290,7 @@
<div class="col-md-12" slot="edit"> <div class="col-md-12" slot="edit">
<template class="pvs bpv"> <template class="pvs bpv">
<slot> <slot>
<label for="teamId--${pageName}" <label for="teamId--${pageName}"
class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end"> class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">
단속조 단속조
</label> </label>
@ -306,20 +307,20 @@
<template class="pvs bpv"> <template class="pvs bpv">
<slot> <slot>
<label class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">단속원</label> <label class="w-px-130 bg-lighter pe-2 col-form-label text-sm-end">단속원</label>
<input type="text" id="teamer1--${pageName}" name="teamer1" <input type="text" id="teamer1--${pageName}" name="teamer1"
data-map="TEAMER_1" class="form-control" /> data-map="TEAMER_1" class="form-control" />
<input type="text" id="teamer2--${pageName}" name="teamer2" <input type="text" id="teamer2--${pageName}" name="teamer2"
data-map="TEAMER_2" class="form-control" /> data-map="TEAMER_2" class="form-control" />
<input type="text" id="teamer3--${pageName}" name="teamer3" <input type="text" id="teamer3--${pageName}" name="teamer3"
data-map="TEAMER_3" class="form-control" /> data-map="TEAMER_3" class="form-control" />
<input type="text" id="teamer4--${pageName}" name="teamer4" <input type="text" id="teamer4--${pageName}" name="teamer4"
data-map="TEAMER_4" class="form-control" /> data-map="TEAMER_4" class="form-control" />
</slot> </slot>
</template> </template>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<label for="doWarning--${pageName}"> <label for="doWarning--${pageName}">
<input type="checkbox" id="doWarning--${pageName}" name="doWarning" <input type="checkbox" id="doWarning--${pageName}" name="doWarning"
class="form-check-input" /> class="form-check-input" />
계고처리 계고처리
</label> </label>
@ -335,17 +336,17 @@
</div> </div>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
<div class="card w-px-400 min-w-px-400"> <div class="card w-px-400 min-w-px-400">
<form id="frmFile--${pageName}" method="post" enctype="multipart/form-data"> <form id="frmFile--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="newFileList--${pageName}" name="newFileList" <input type="file" id="newFileList--${pageName}" name="newFileList"
multiple accept="image/*" hidden /> multiple accept="image/*" hidden />
</form> </form>
<form id="frmUploadSet--${pageName}" method="post" enctype="multipart/form-data"> <form id="frmUploadSet--${pageName}" method="post" enctype="multipart/form-data">
<input type="file" id="inputUploadSet--${pageName}" name="inputUploadSet" <input type="file" id="inputUploadSet--${pageName}" name="inputUploadSet"
multiple accept="image/*" hidden /> multiple accept="image/*" hidden />
</form> </form>
<div class="col-md-12"> <div class="col-md-12">
@ -354,7 +355,7 @@
<button type="button" id="btnCancelAddFile--${pageName}" class="btn btn-primary">선택 사진 삭제</button> <button type="button" id="btnCancelAddFile--${pageName}" class="btn btn-primary">선택 사진 삭제</button>
</div> </div>
<div id="display--${pageName}" class="oy-scroll h-px-600 border-default"> <div id="display--${pageName}" class="oy-scroll h-px-600 border-default">
</div> </div>
</div> </div>
@ -370,10 +371,10 @@ pageObject["${pageName}"] = {};
$(document).ready(function(){ $(document).ready(function(){
var $P = pageObject["${pageName}"]; var $P = pageObject["${pageName}"];
$P.captureFileArr = []; $P.captureFileArr = [];
$P.localUploadArr = []; $P.localUploadArr = [];
/************************************************************************** /**************************************************************************
* DatasetControl, Dataset, FormFields * DatasetControl, Dataset, FormFields
**************************************************************************/ **************************************************************************/
@ -385,7 +386,7 @@ $(document).ready(function(){
dataGetter : obj => obj["List"], appendData : true, dataGetter : obj => obj["List"], appendData : true,
keymapper : info => info ? info.CRDN_ID : "", keymapper : info => info ? info.CRDN_ID : "",
urls : { urls : {
create : wctx.url("/${taskSeCd}/crdn/crdn05/030/create.do") create : wctx.url("/${taskSeCd}/crdn/crdn05/030/create.do")
}, },
formats: { formats: {
@ -395,11 +396,11 @@ $(document).ready(function(){
/************************************************************************** /**************************************************************************
* Dataset.on * Dataset.on
**************************************************************************/ **************************************************************************/
$P.uploadSet.onDatasetChange = () => { $P.uploadSet.onDatasetChange = () => {
var files = $P.uploadSet.getDataset(); var files = $P.uploadSet.getDataset();
files.forEach(item => $P.localUploadArr.push(item)); files.forEach(item => $P.localUploadArr.push(item));
$P.fnDisplay(); $P.fnDisplay();
}; };
$P.uploadSet.onRemove = () => { }; $P.uploadSet.onRemove = () => { };
@ -408,16 +409,16 @@ $(document).ready(function(){
**************************************************************************/ **************************************************************************/
$P.fnMakeImgForNewFile = (fileArr) => { $P.fnMakeImgForNewFile = (fileArr) => {
var tagsText = ""; var tagsText = "";
for(var index = 0; index < fileArr.length; index++){ for(var index = 0; index < fileArr.length; index++){
var item = fileArr[index]; var item = fileArr[index];
tagsText += "<label class='mx-2'>"; tagsText += "<label class='mx-2'>";
tagsText += "<input type='checkbox' name='newPhoto' class='form-check-input' value='"+item.id +"' "; tagsText += "<input type='checkbox' name='newPhoto' class='form-check-input' value='"+item.id +"' ";
tagsText += " />"; tagsText += " />";
tagsText += "<img src='"+ item.url +"' width='200' height='200' />"; tagsText += "<img src='"+ item.url +"' width='200' height='200' />";
tagsText += "</label>"; tagsText += "</label>";
if(index % 2 == 1){ if(index % 2 == 1){
tagsText += "<br />"; tagsText += "<br />";
} }
@ -425,7 +426,7 @@ $(document).ready(function(){
return tagsText; return tagsText;
} }
$P.fnDisplay = () => { $P.fnDisplay = () => {
var displayArea = document.querySelector("#display--${pageName}"); var displayArea = document.querySelector("#display--${pageName}");
@ -444,19 +445,19 @@ $(document).ready(function(){
if(rtpyrNm.value == ""){ if(rtpyrNm.value == ""){
dialog.alert({ dialog.alert({
content:"계고 처리를 하기 위해선 소유주정보가 입력되어야 합니다.", content:"계고 처리를 하기 위해선 소유주정보가 입력되어야 합니다.",
init : function(){ init : function(){
setDialogZindex(); setDialogZindex();
focusClose(); focusClose();
}, },
onClose:function(){rtpyrNm.focus();} onClose:function(){rtpyrNm.focus();}
}); });
return; return;
} }
} }
if(await confirm2("현재 단속 정보를 저장하시겠습니까?")){ if(await confirm2("현재 단속 정보를 저장하시겠습니까?")){
var info = $P.formFields.get(); var info = $P.formFields.get();
if (!info) { if (!info) {
return; return;
} }
@ -466,17 +467,17 @@ $(document).ready(function(){
var value = info[key]; var value = info[key];
formData.append(key,value); formData.append(key,value);
} }
formData.delete("newFileList"); formData.delete("newFileList");
if($P.localUploadArr.length > 0){ if($P.localUploadArr.length > 0){
$P.localUploadArr.forEach(item => formData.append("newFileList",item)); $P.localUploadArr.forEach(item => formData.append("newFileList",item));
} }
if($P.captureFileArr.length > 0){ if($P.captureFileArr.length > 0){
$P.captureFileArr.forEach(item => formData.append("newFileList",item)); $P.captureFileArr.forEach(item => formData.append("newFileList",item));
} }
ajax.post({ ajax.post({
url : $P.crdnControl.urls.create, url : $P.crdnControl.urls.create,
data : formData, contentType : false, processData : false, data : formData, contentType : false, processData : false,
@ -485,22 +486,22 @@ $(document).ready(function(){
} }
}); });
} }
}; };
$P.saveCallback = (resp) => { $P.saveCallback = (resp) => {
if (resp.saved) { if (resp.saved) {
dialog.alert({ dialog.alert({
content : "저장됐습니다.", content : "저장됐습니다.",
init : function(){ init : function(){
setDialogZindex(); setDialogZindex();
focusClose(); focusClose();
} }
}); });
dialog.close("manualDialog"); dialog.close("manualDialog");
} }
} }
$P.videoCallback = (snapshots) => { $P.videoCallback = (snapshots) => {
snapshots.forEach(function(canvas, index, array){ snapshots.forEach(function(canvas, index, array){
canvas.toBlob(function(blob){ canvas.toBlob(function(blob){
@ -509,67 +510,67 @@ $(document).ready(function(){
file.id = "file-" + identify; file.id = "file-" + identify;
file.url = (window.URL || window.webkitURL).createObjectURL(file); file.url = (window.URL || window.webkitURL).createObjectURL(file);
$P.captureFileArr.push(file); $P.captureFileArr.push(file);
if(index === array.length - 1){ if(index === array.length - 1){
$P.fnDisplay(); $P.fnDisplay();
} }
}); });
}); });
} }
/************************************************************************** /**************************************************************************
* 초기화(업무별 입력항목) * 초기화(업무별 입력항목)
**************************************************************************/ **************************************************************************/
var clsForTask = $("#taskSeCd--${pageName}").val().toLowerCase(); var clsForTask = $("#taskSeCd--${pageName}").val().toLowerCase();
//업무별 입력 항목 //업무별 입력 항목
renderForTask('frmEdit--${pageName}', clsForTask); renderForTask('frmEdit--${pageName}', clsForTask);
/************************************************************************** /**************************************************************************
* element.on * element.on
**************************************************************************/ **************************************************************************/
$("#btnInst--${pageName}").on('click', () => $P.fnSave()); $("#btnInst--${pageName}").on('click', () => $P.fnSave());
$("#btnAddFile--${pageName}").on('click', () => { $("#inputUploadSet--${pageName}").trigger("click"); }); $("#btnAddFile--${pageName}").on('click', () => { $("#inputUploadSet--${pageName}").trigger("click"); });
$("#btnOpenVideoCapture--${pageName}").on('click', () => { $("#btnOpenVideoCapture--${pageName}").on('click', () => {
var popupWidth = 1800; var popupWidth = 1800;
var popupHeight = 950; var popupHeight = 950;
var popupX = (window.screen.width / 2) - (popupWidth / 2); var popupX = (window.screen.width / 2) - (popupWidth / 2);
var popupY= (window.screen.height / 2) - (popupHeight / 2); var popupY= (window.screen.height / 2) - (popupHeight / 2);
var popup = window.open(wctx.url("/sprt/sprt03/010/main.do?openerPageName=${pageName}") var popup = window.open(wctx.url("/sprt/sprt03/010/main.do?openerPageName=${pageName}")
,"newVideoCapture" ,"newVideoCapture"
,"width="+popupWidth+", height="+popupHeight+", left="+popupX+", top="+popupY ,"width="+popupWidth+", height="+popupHeight+", left="+popupX+", top="+popupY
); );
popup.onload = () => { popup.onload = () => {
popup.addEventListener('beforeunload', function() { popup.addEventListener('beforeunload', function() {
$.unblockUI(); $.unblockUI();
}); });
}; };
}); });
$("#btnCancelAddFile--${pageName}").on('click', () => { $("#btnCancelAddFile--${pageName}").on('click', () => {
var checked = $("#display--${pageName}").find("[name='newPhoto']:checked"); var checked = $("#display--${pageName}").find("[name='newPhoto']:checked");
if(checked.length < 1){ if(checked.length < 1){
alert("선택된 사진이 없습니다."); alert("선택된 사진이 없습니다.");
return; return;
} }
var checkedArr = []; var checkedArr = [];
for(var i=0; i < checked.length; i++){ for(var i=0; i < checked.length; i++){
checkedArr.push(checked[i].value); checkedArr.push(checked[i].value);
} }
$P.captureFileArr = $P.captureFileArr.filter(item => checkedArr.indexOf(item.id) == -1); $P.captureFileArr = $P.captureFileArr.filter(item => checkedArr.indexOf(item.id) == -1);
$P.localUploadArr = $P.localUploadArr.filter(item => checkedArr.indexOf(item.id) == -1); $P.localUploadArr = $P.localUploadArr.filter(item => checkedArr.indexOf(item.id) == -1);
$P.fnDisplay(); $P.fnDisplay();
}); });
$("#vhrno--${pageName}").onEnterPress(function(){ $("#vhrno--${pageName}").onEnterPress(function(){
var alertDialogId = "alertDialog"; var alertDialogId = "alertDialog";
var crdnYmd = $("#crdnYmd--${pageName}").val().replaceAll("-", ""); var crdnYmd = $("#crdnYmd--${pageName}").val().replaceAll("-", "");
var vhrnoEl = event.target; var vhrnoEl = event.target;
@ -577,27 +578,27 @@ $(document).ready(function(){
if(crdnYmd == ""){ if(crdnYmd == ""){
dialog.alert({ dialog.alert({
content : "단속일자를 입력하세요.", content : "단속일자를 입력하세요.",
init : function(){ init : function(){
setDialogZindex(); setDialogZindex();
focusClose(); focusClose();
}, },
onClose : function(){ $("#crdnYmd--${pageName}").focus(); } onClose : function(){ $("#crdnYmd--${pageName}").focus(); }
}); });
return; return;
} }
if(vhrno == ""){ if(vhrno == ""){
dialog.alert({ dialog.alert({
content:"차량번호를 입력하세요.", content:"차량번호를 입력하세요.",
init : function(){ init : function(){
setDialogZindex(); setDialogZindex();
focusClose(); focusClose();
}, },
onClose:function(){ $(vhrnoEl).focus(); } onClose:function(){ $(vhrnoEl).focus(); }
}); });
return; return;
} }
json.post({ json.post({
url: wctx.url("/payer/vehicle.do"), url: wctx.url("/payer/vehicle.do"),
data: { data: {
@ -609,12 +610,13 @@ $(document).ready(function(){
if(!resp.found){ if(!resp.found){
dialog.alert({ dialog.alert({
content : "차량정보가 없습니다.", content : "차량정보가 없습니다.",
init : function(){ init : function(){
setDialogZindex(); setDialogZindex();
focusClose(); focusClose();
} }
}); });
$("#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("");
@ -628,13 +630,14 @@ $(document).ready(function(){
$("#dtlAddr--${pageName}").val(""); $("#dtlAddr--${pageName}").val("");
return; return;
} }
$("#rtpyrId--${pageName}").val(resp.rtpyrId); $("#rtpyrId--${pageName}").val(resp.rtpyrId);
$("#addrSn--${pageName}").val(resp.addrSn);
var vehicle = resp.vehicle; var vehicle = resp.vehicle;
$("#rtpyrNm--${pageName}").val(vehicle.mber_nm); $("#rtpyrNm--${pageName}").val(vehicle.mber_nm);
var pyrSeCd = ""; var pyrSeCd = "";
switch(vehicle.mber_se_code){ switch(vehicle.mber_se_code){
case "11" : pyrSeCd = "01"; break; case "11" : pyrSeCd = "01"; break;
@ -646,12 +649,12 @@ $(document).ready(function(){
$("#rtpyrSeCd--${pageName}").val(pyrSeCd); $("#rtpyrSeCd--${pageName}").val(pyrSeCd);
$("#rtpyrNo--${pageName}").val(vehicle.mber_se_no); $("#rtpyrNo--${pageName}").val(vehicle.mber_se_no);
$("#vin--${pageName}").val(vehicle.vin); $("#vin--${pageName}").val(vehicle.vin);
$("#vhclNm--${pageName}").val(vehicle.cnm); $("#vhclNm--${pageName}").val(vehicle.cnm);
$("#vhclColor--${pageName}").val(vehicle.color_nm); $("#vhclColor--${pageName}").val(vehicle.color_nm);
$("#useFuelCd--${pageName}").val(vehicle.use_fuel_code); $("#useFuelCd--${pageName}").val(vehicle.use_fuel_code);
if(vehicle.vhcty_asort_code == "1"){ //승용 if(vehicle.vhcty_asort_code == "1"){ //승용
$("#ffnlgCarmdlCd--${pageName}").val("11"); $("#ffnlgCarmdlCd--${pageName}").val("11");
} else if(vehicle.vhcty_asort_code == "2"){ //승합 } else if(vehicle.vhcty_asort_code == "2"){ //승합
@ -667,21 +670,21 @@ $(document).ready(function(){
} else { } else {
$("#ffnlgCarmdlCd--${pageName}").val(""); $("#ffnlgCarmdlCd--${pageName}").val("");
} }
$("#zip--${pageName}").val(vehicle.zip_code); //우편번호 $("#zip--${pageName}").val(vehicle.zip_code); //우편번호
$("#addr--${pageName}").val(vehicle.road_nm_adres); //주소 $("#addr--${pageName}").val(vehicle.road_nm_adres); //주소
$("#dtlAddr--${pageName}").val(vehicle.use_strnghld_adres_nm); //상세주소 $("#dtlAddr--${pageName}").val(vehicle.use_strnghld_adres_nm); //상세주소
} }
}); });
}); });
$("#teamId--${pageName}").on("change",function(){ $("#teamId--${pageName}").on("change",function(){
$("#teamer1--${pageName}").val(""); $("#teamer1--${pageName}").val("");
$("#teamer2--${pageName}").val(""); $("#teamer2--${pageName}").val("");
$("#teamer3--${pageName}").val(""); $("#teamer3--${pageName}").val("");
$("#teamer4--${pageName}").val(""); $("#teamer4--${pageName}").val("");
if(this.value != ""){ if(this.value != ""){
ajax.get({ ajax.get({
url: wctx.url("/${taskSeCd}/crdn/crdn07/010/info.do"), url: wctx.url("/${taskSeCd}/crdn/crdn07/010/info.do"),
@ -698,7 +701,7 @@ $(document).ready(function(){
}); });
} }
}); });
/************************************************************************** /**************************************************************************
* 초기화 * 초기화
**************************************************************************/ **************************************************************************/
@ -707,28 +710,28 @@ $(document).ready(function(){
$("#frmEdit--${pageName}").find(".form-date").each(function(){ $("#frmEdit--${pageName}").find(".form-date").each(function(){
$(this).on("input",function(){ $(this).on("input",function(){
var value = this.value.replaceAll("-",""); var value = this.value.replaceAll("-","");
if(value.length > 7){ if(value.length > 7){
this.value = value.substring(0,4)+"-"+value.substring(4,6)+"-"+value.substring(6); this.value = value.substring(0,4)+"-"+value.substring(4,6)+"-"+value.substring(6);
} else if(value.length > 5){ } else if(value.length > 5){
this.value = value.substring(0,4)+"-"+value.substring(4); this.value = value.substring(0,4)+"-"+value.substring(4);
} }
}); });
}); });
$("#frmEdit--${pageName}").find(".form-time").each(function(){ $("#frmEdit--${pageName}").find(".form-time").each(function(){
$(this).on("input",function(){ $(this).on("input",function(){
var value = this.value.replaceAll(":",""); var value = this.value.replaceAll(":","");
if(value.length > 5){ if(value.length > 5){
this.value = value.substring(0,2)+":"+value.substring(2,4)+":"+value.substring(4); this.value = value.substring(0,2)+":"+value.substring(2,4)+":"+value.substring(4);
} else if(value.length > 3){ } else if(value.length > 3){
this.value = value.substring(0,2)+":"+value.substring(2); this.value = value.substring(0,2)+":"+value.substring(2);
} }
}); });
}); });
//보안모드 //보안모드
fn_securityModeToggle($("#securityMode--top").is(":checked")); fn_securityModeToggle($("#securityMode--top").is(":checked"));

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