임대계약서 관리 추가.

main
jjh 3 months ago
parent 39ea4e6d1a
commit 2e7455527f

@ -41,22 +41,17 @@ public class LevyExclQuery extends CmmnQuery {
private String schSttrNm; // 의견제출_진술자 명
private String schReRegYmdFrom; // 단속재등록_재등록 일자 시작
private String schReRegYmdTo; // 단속재등록_재등록 일자 종료
// 상세 검색 조건
private String schCrdnYmdFrom; // 단속(TB_CRDN)_단속 일자 시작
private String schCrdnYmdTo; // 단속(TB_CRDN)_단속 일자 종료
private String schVhrno; // 단속(TB_CRDN)_차량번호
private String schRtpyrNo; // 납부자(TB_PAYER)_납부자 번호
private String schRtpyrNm; // 납부자(TB_PAYER)_납부자 명
// 상세 검색 조건
// 동적 검색 조건
private String levyExclSeCd; // 부과제외_부과 제외 구분 코드
private String levyExclSeNm; // 부과제외_부과 제외 구분 명
private String vhrno; // 단속(TB_CRDN)_차량번호
private String rtpyrNm; // 납부자(TB_PAYER)_납부자 명
private String rtpyrNo; // 납부자(TB_PAYER)_납부자 번호
// ETC
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
private String delRsn; // 삭제 사유
private String levyExclSeCd; // 부과제외_부과 제외 구분 코드
private String ansRsnCd; // 민원 답변 문구(TB_CVLCPT_ANS_WORDS) - 답변 사유 코드
private String sndngRcvmtCd; // 발송 수납 코드
@ -258,101 +253,47 @@ public class LevyExclQuery extends CmmnQuery {
return self();
}
public String getSchVhrno() {
return ifEmpty(schVhrno, () -> null);
}
public <T extends LevyExclQuery> T setSchVhrno(String schVhrno) {
this.schVhrno = schVhrno;
return self();
}
public String getSchRtpyrNo() {
return ifEmpty(schRtpyrNo, () -> null);
}
public <T extends LevyExclQuery> T setSchRtpyrNo(String schRtpyrNo) {
this.schRtpyrNo = schRtpyrNo;
return self();
}
public String getSchRtpyrNm() {
return ifEmpty(schRtpyrNm, () -> null);
}
public <T extends LevyExclQuery> T setSchRtpyrNm(String schRtpyrNm) {
this.schRtpyrNm = schRtpyrNm;
return self();
}
// 상세 검색 조건 ///////////////////////////////////////////////////////////////
public String getSchCrdnYmdFrom() {
return ifEmpty(schCrdnYmdFrom, () -> null);
}
public <T extends LevyExclQuery> T setSchCrdnYmdFrom(String schCrdnYmdFrom) {
public void setSchCrdnYmdFrom(String schCrdnYmdFrom) {
this.schCrdnYmdFrom = schCrdnYmdFrom;
return self();
}
public String getSchCrdnYmdTo() {
return ifEmpty(schCrdnYmdTo, () -> null);
}
public <T extends LevyExclQuery> T setSchCrdnYmdTo(String schCrdnYmdTo) {
public void setSchCrdnYmdTo(String schCrdnYmdTo) {
this.schCrdnYmdTo = schCrdnYmdTo;
return self();
}
// 상세 검색 조건 ///////////////////////////////////////////////////////////////
// 상세 검색 조건 ///////////////////////////////////////////////////////////////
// 동적 검색 조건 ///////////////////////////////////////////////////////////////
public String getLevyExclSeNm() {
return ifEmpty(levyExclSeNm, () -> null);
}
public <T extends LevyExclQuery> T setLevyExclSeNm(String levyExclSeNm) {
this.levyExclSeNm = levyExclSeNm;
return self();
}
public String getVhrno() {
return ifEmpty(vhrno, () -> null);
}
public <T extends LevyExclQuery> T setVhrno(String vhrno) {
this.vhrno = vhrno;
return self();
}
public String getRtpyrNm() {
return ifEmpty(rtpyrNm, () -> null);
public String getSchVhrno() {
return ifEmpty(schVhrno, () -> null);
}
public <T extends LevyExclQuery> T setRtpyrNm(String rtpyrNm) {
this.rtpyrNm = rtpyrNm;
return self();
public void setSchVhrno(String schVhrno) {
this.schVhrno = schVhrno;
}
public String getRtpyrNo() {
return ifEmpty(rtpyrNo, () -> null);
public String getSchRtpyrNo() {
return ifEmpty(schRtpyrNo, () -> null);
}
public <T extends LevyExclQuery> T setRtpyrNo(String rtpyrNo) {
this.rtpyrNo = rtpyrNo;
return self();
public void setSchRtpyrNo(String schRtpyrNo) {
this.schRtpyrNo = schRtpyrNo;
}
public String getLevyExclSeCd() {
return ifEmpty(levyExclSeCd, () -> null);
public String getSchRtpyrNm() {
return ifEmpty(schRtpyrNm, () -> null);
}
public <T extends LevyExclQuery> T setLevyExclSeCd(String levyExclSeCd) {
this.levyExclSeCd = levyExclSeCd;
return self();
public void setSchRtpyrNm(String schRtpyrNm) {
this.schRtpyrNm = schRtpyrNm;
}
// 동적 검색 조건 ///////////////////////////////////////////////////////////////
// 상세 검색 조건 ///////////////////////////////////////////////////////////////
// ETC /////////////////////////////////////////////////////////////////////
public String getCallPurpose() {
@ -373,6 +314,15 @@ public class LevyExclQuery extends CmmnQuery {
return self();
}
public String getLevyExclSeCd() {
return ifEmpty(levyExclSeCd, () -> null);
}
public <T extends LevyExclQuery> T setLevyExclSeCd(String levyExclSeCd) {
this.levyExclSeCd = levyExclSeCd;
return self();
}
public String getAnsRsnCd() {
return ifEmpty(ansRsnCd, () -> null);
}

@ -0,0 +1,130 @@
package cokr.xit.fims.rent;
import cokr.xit.foundation.AbstractEntity;
import lombok.Getter;
import lombok.Setter;
/**
*
* @author JoJH
*/
@Getter
@Setter
public class Hirer extends AbstractEntity {
/**
* ID
*/
private String hirerId;
/**
*
*/
private String vhrno;
/**
*
*/
private String hireBgngDt;
/**
*
*/
private String hireEndDt;
/**
*
*/
private String hirerSeCd;
/**
*
*/
private String corpBzmnNo;
/**
*
*/
private String lcnsNo;
/**
*
*/
private String hirerNm;
/**
*
*/
private String hirerMblTelno;
/**
*
*/
private String hirerEml;
/**
*
*/
private String hirerZip;
/**
*
*/
private String hirerAddr;
/**
*
*/
private String hirerDtlAddr;
/**
*
*/
private Integer atchFileCnt;
/**
*
*/
private String atchFileDelYn;
/**
*
*/
private String atchFileRegDt;
/**
*
*/
private String atchFileRgtr;
/**
* IP
*/
private String atchFileRegIp;
/**
*
*/
private String atchFileDelDt;
/**
*
*/
private String atchFileDltr;
/**
* IP
*/
private String atchFileDelIp;
/**
*
*/
private String delYn;
/**
*
*/
private String delRsn;
}

@ -0,0 +1,200 @@
package cokr.xit.fims.rent;
import cokr.xit.foundation.AbstractEntity;
import lombok.Getter;
import lombok.Setter;
/**
*
* @author JoJH
*/
@Getter
@Setter
public class Lsct extends AbstractEntity {
/**
* ID
*/
private String lsctId;
/**
* ID
*/
private String crdnId;
/**
* ID
*/
private String levyId;
/**
*
*/
private String sggCd;
/**
*
*/
private String taskSeCd;
/**
*
*/
private String crdnDt;
/**
*
*/
private String vhrno;
/**
*
*/
private String crdnStdgNm;
/**
*
*/
private String crdnPlc;
/**
*
*/
private String vltnArtcl;
/**
*
*/
private String rtpyrNo;
/**
*
*/
private String rtpyrNm;
/**
* ID
*/
private String entId;
/**
* ID
*/
private String hirerId;
/**
*
*/
private String hirerSeCd;
/**
*
*/
private String hirerNm;
/**
*
*/
private String hirerNo;
/**
*
*/
private String hirerMblTelno;
/**
*
*/
private String hirerEmlAddr;
/**
*
*/
private String hirerZip;
/**
*
*/
private String hirerAddr;
/**
*
*/
private String hirerDtlAddr;
/**
*
*/
private Integer atchFileCnt;
/**
*
*/
private String chgDmndYn;
/**
*
*/
private String chgDmndDt;
/**
*
*/
private String chgDmndRgtr;
/**
* IP
*/
private String chgDmndIp;
/**
*
*/
private String chgDmndMdfcnDt;
/**
*
*/
private String chgDmndMdfr;
/**
* IP
*/
private String chgDmndMdfcnIp;
/**
*
*/
private String chgAprvYn;
/**
*
*/
private String chgAprvDt;
/**
*
*/
private String chgAutzr;
/**
*
*/
private String chgAprvRsn;
/**
* IP
*/
private String chgAprvIp;
/**
*
*/
private String delYn;
/**
*
*/
private String delRsn;
}

@ -25,9 +25,18 @@ public class RentQuery extends CmmnQuery {
private String hirerId; // 임차인 ID
private String lsctId; // 임대차계약 ID
private String[] schEntNos; // 기업 번호s
private String schEntNo; // 기업 번호
private String schEntNm; // 기업 명
private String schRprsvNm; // 대표자 명
private String schCrdnYmdFrom; // 단속 일자 시작
private String schCrdnYmdTo; // 단속 일자 종료
private String schVhrno; // 차량번호
private String[] omJnos; // 소유주 번호s
private String omJno; // 소유주 번호
private String[] rtpyrNos; // 납부자 번호s
private String rtpyrNo; // 납부자 번호
// ETC
private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회).
@ -37,91 +46,144 @@ public class RentQuery extends CmmnQuery {
return ifEmpty(crdnId, () -> null);
}
public <T extends RentQuery> T setCrdnId(String crdnId) {
public void setCrdnId(String crdnId) {
this.crdnId = crdnId;
return self();
}
public String getMpngId() {
return ifEmpty(mpngId, () -> null);
}
public <T extends RentQuery> T setMpngId(String mpngId) {
public void setMpngId(String mpngId) {
this.mpngId = mpngId;
return self();
}
public String getUserId() {
return ifEmpty(userId, () -> null);
}
public <T extends RentQuery> T setUserId(String userId) {
public void setUserId(String userId) {
this.userId = userId;
return self();
}
public String[] getEntIds() {
return ifEmpty(entIds, () -> null);
}
public <T extends RentQuery> T setEntIds(String... entIds) {
public void setEntIds(String... entIds) {
this.entIds = entIds;
return self();
}
public String getEntId() {
return ifEmpty(entId, () -> null);
}
public <T extends RentQuery> T setEntId(String entId) {
public void setEntId(String entId) {
this.entId = entId;
return self();
}
public String getHirerId() {
return ifEmpty(hirerId, () -> null);
}
public <T extends RentQuery> T setHirerId(String hirerId) {
public void setHirerId(String hirerId) {
this.hirerId = hirerId;
return self();
}
public String getLsctId() {
return ifEmpty(lsctId, () -> null);
}
public <T extends RentQuery> T setLsctId(String lsctId) {
public void setLsctId(String lsctId) {
this.lsctId = lsctId;
return self();
}
public String[] getSchEntNos() {
return ifEmpty(schEntNos, () -> null);
}
public void setSchEntNos(String... schEntNos) {
this.schEntNos = schEntNos;
}
public String getSchEntNo() {
return ifEmpty(schEntNo, () -> null);
}
public <T extends RentQuery> T setSchEntNo(String schEntNo) {
public void setSchEntNo(String schEntNo) {
this.schEntNo = schEntNo;
return self();
}
public String getSchEntNm() {
return ifEmpty(schEntNm, () -> null);
}
public <T extends RentQuery> T setSchEntNm(String schEntNm) {
public void setSchEntNm(String schEntNm) {
this.schEntNm = schEntNm;
return self();
}
public String getSchRprsvNm() {
return ifEmpty(schRprsvNm, () -> null);
}
public <T extends RentQuery> T setSchRprsvNm(String schRprsvNm) {
public void setSchRprsvNm(String schRprsvNm) {
this.schRprsvNm = schRprsvNm;
return self();
}
public String getSchCrdnYmdFrom() {
return ifEmpty(schCrdnYmdFrom, () -> null);
}
public void setSchCrdnYmdFrom(String schCrdnYmdFrom) {
this.schCrdnYmdFrom = schCrdnYmdFrom;
}
public String getSchCrdnYmdTo() {
return ifEmpty(schCrdnYmdTo, () -> null);
}
public void setSchCrdnYmdTo(String schCrdnYmdTo) {
this.schCrdnYmdTo = schCrdnYmdTo;
}
public String getSchVhrno() {
return ifEmpty(schVhrno, () -> null);
}
public void setSchVhrno(String schVhrno) {
this.schVhrno = schVhrno;
}
public String[] getOmJnos() {
return ifEmpty(omJnos, () -> null);
}
public void setOmJnos(String... omJnos) {
this.omJnos = omJnos;
}
public String getOmJno() {
return ifEmpty(omJno, () -> null);
}
public void setOmJno(String omJno) {
this.omJno = omJno;
}
public String[] getRtpyrNos() {
return ifEmpty(rtpyrNos, () -> null);
}
public void setRtpyrNos(String... rtpyrNos) {
this.rtpyrNos = rtpyrNos;
}
public String getRtpyrNo() {
return ifEmpty(rtpyrNo, () -> null);
}
public void setRtpyrNo(String rtpyrNo) {
this.rtpyrNo = rtpyrNo;
}
// ETC /////////////////////////////////////////////////////////////////////
@ -129,18 +191,16 @@ public class RentQuery extends CmmnQuery {
return ifEmpty(callPurpose, () -> null);
}
public <T extends RentQuery> T setCallPurpose(String callPurpose) {
public void setCallPurpose(String callPurpose) {
this.callPurpose = callPurpose;
return self();
}
public String getDelRsn() {
return ifEmpty(delRsn, () -> null);
}
public <T extends RentQuery> T setDelRsn(String delRsn) {
public void setDelRsn(String delRsn) {
this.delRsn = delRsn;
return self();
}
// ETC /////////////////////////////////////////////////////////////////////

@ -0,0 +1,99 @@
package cokr.xit.fims.rent.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.rent.Hirer;
import cokr.xit.fims.rent.RentQuery;
/** DAO
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
@Mapper("hirerMapper")
public interface HirerMapper extends AbstractMapper {
/** .<br />
* @param req
* @return
*/
List<DataObject> selectHirerList(RentQuery req);
/** .
* @param req
* @return
*/
List<Hirer> selectHirers(RentQuery req);
/** .
* @param params
* <ul><li>"hirer" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertHirer(Map<String, Object> params);
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(Hirer hirer) {
return hirer != null && insertHirer(params().set("hirer", hirer)) == 1;
}
/** .
* @param params
* <ul><li>"hirer" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateHirer(Map<String, Object> params);
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(Hirer hirer) {
return hirer != null && updateHirer(params().set("hirer", hirer)) == 1;
}
/** .
* @param params
* <ul><li>"hirer" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int deleteHirer(Map<String, ?> params);
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean delete(Hirer hirer) {
return hirer != null && deleteHirer(params().set("hirer", hirer)) == 1;
}
}

@ -0,0 +1,122 @@
package cokr.xit.fims.rent.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.crdn.Crdn;
import cokr.xit.fims.rent.Lsct;
import cokr.xit.fims.rent.RentQuery;
/** DAO
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
@Mapper("lsctMapper")
public interface LsctMapper extends AbstractMapper {
/**
* @param req
* @return
*/
List<DataObject> selectMainList(RentQuery req);
/**
* @param req
* @return
*/
DataObject selectCrdnInfo(String crndId);
/** .
* @param params
* <ul><li>"lsct" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int copyMainToCrdn(Crdn crdn);
int copyMainToCrdnAdi(Crdn crdn);
/** .<br />
* @param req
* @return
*/
List<DataObject> selectLsctList(RentQuery req);
/** .
* @param req
* @return
*/
List<Lsct> selectLscts(RentQuery req);
/** .
* @param params
* <ul><li>"lsct" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int insertLsct(Map<String, Object> params);
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean insert(Lsct lsct) {
return lsct != null && insertLsct(params().set("lsct", lsct)) == 1;
}
/** .
* @param params
* <ul><li>"lsct" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int updateLsct(Map<String, Object> params);
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean update(Lsct lsct) {
return lsct != null && updateLsct(params().set("lsct", lsct)) == 1;
}
/** .
* @param params
* <ul><li>"lsct" - </li>
* <li>"currentUser" - </li>
* </ul>
* @return
*/
int deleteLsct(Map<String, ?> params);
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
default boolean delete(Lsct lsct) {
return lsct != null && deleteLsct(params().set("lsct", lsct)) == 1;
}
}

@ -0,0 +1,61 @@
package cokr.xit.fims.rent.service;
import java.util.List;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.rent.Hirer;
import cokr.xit.fims.rent.RentQuery;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
public interface HirerService {
/** .
* @param req
* @return
*/
List<DataObject> getHirerList(RentQuery req);
/** .
* @param req
* @return
*/
List<Hirer> getHirers(RentQuery req);
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean create(Hirer hirer);
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean update(Hirer hirer);
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean remove(Hirer hirer);
}

@ -0,0 +1,61 @@
package cokr.xit.fims.rent.service;
import java.util.List;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.rent.Lsct;
import cokr.xit.fims.rent.RentQuery;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
public interface LsctService {
/** .
* @param req
* @return
*/
List<DataObject> getLsctList(RentQuery req);
/** .
* @param req
* @return
*/
List<Lsct> getLscts(RentQuery req);
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean create(Lsct lsct);
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean update(Lsct lsct);
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
boolean remove(Lsct lsct);
}

@ -0,0 +1,82 @@
package cokr.xit.fims.rent.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.rent.Hirer;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.dao.HirerMapper;
/** Bean
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
@Component("hirerBean")
public class HirerBean extends AbstractBean {
/** 임차인 정보 정보 DAO */
@Resource(name = "hirerMapper")
private HirerMapper hirerMapper;
/** .
* @param req
* @return
*/
public List<DataObject> getHirerList(RentQuery req) {
return hirerMapper.selectHirerList(req);
}
/** .
* @param req
* @return
*/
public List<Hirer> getHirers(RentQuery req) {
return hirerMapper.selectHirers(req);
}
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(Hirer hirer) {
return hirerMapper.insert(hirer);
}
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(Hirer hirer) {
return hirerMapper.update(hirer);
}
/** .
* @param hirer
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean remove(Hirer hirer) {
return hirerMapper.delete(hirer);
}
}

@ -0,0 +1,58 @@
package cokr.xit.fims.rent.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.rent.Hirer;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.service.HirerService;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
@Service("hirerService")
public class HirerServiceBean extends AbstractServiceBean implements HirerService {
/** 임차인 정보 정보 Bean */
@Resource(name = "hirerBean")
private HirerBean hirerBean;
@Override
public List<DataObject> getHirerList(RentQuery req) {
return hirerBean.getHirerList(req);
}
@Override
public List<Hirer> getHirers(RentQuery req) {
return hirerBean.getHirers(req);
}
@Override
public boolean create(Hirer hirer) {
return hirerBean.create(hirer);
}
@Override
public boolean update(Hirer hirer) {
return hirerBean.update(hirer);
}
@Override
public boolean remove(Hirer hirer) {
return hirerBean.remove(hirer);
}
}

@ -0,0 +1,268 @@
package cokr.xit.fims.rent.service.bean;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.base.crypto.bean.XitAria;
import cokr.xit.base.file.FileInfo;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.crdn.service.bean.CrdnBean;
import cokr.xit.fims.payer.Payer;
import cokr.xit.fims.payer.service.bean.PayerBean;
import cokr.xit.fims.rent.Lsct;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.dao.LsctMapper;
/** Bean
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
@Component("lsctBean")
public class LsctBean extends AbstractBean {
/** 임대차계약 대장 정보 DAO */
@Resource(name = "lsctMapper")
private LsctMapper lsctMapper;
/** 파일 정보 Bean */
@Resource(name = "fileBean")
private FileBean fileBean;
/** 단속 정보 Bean */
@Resource(name="crdnBean")
private CrdnBean crdnBean;
/** 납부자 대장 정보 Bean */
@Resource(name = "payerBean")
private PayerBean payerBean;
/** .
* @param req
* @return
*/
public List<DataObject> getLsctList(RentQuery req) {
// 기존 과태료 시스템에서 사용하던 암/복호화 함수 사용을 위해서..
XitAria crypto = new XitAria("xit-aria");
// 연계 View 테이블 조회
if (req.getSchEntNo() != null && !req.getSchEntNo().equals("")) {
req.setOmJno(crypto.encrypt(req.getSchEntNo()));
}
List<DataObject> mainList = lsctMapper.selectMainList(req);
if (mainList.size() > 0) {
for (int iLoop = 0; iLoop < mainList.size(); iLoop++) {
// 통합플랫폼 ID에 맞게 20자리로 변경
String mainCode = String.format("%020d", mainList.get(iLoop).number("MM_CODE").longValue());
// 단속 ID로 단속(TB_CRDN) 정보 조회
DataObject crdnInfo = lsctMapper.selectCrdnInfo(mainCode);
// 단속 정보가 존재하지 않는다면..
if (crdnInfo == null ) {
// 납부자 정보
Payer payer = new Payer();
payer.setSggCd(mainList.get(iLoop).string("OM_SGGCODE")); // 시군구 코드
payer.setRtpyrInptSeCd("07"); // 납부자 입력 구분 코드 FIM015
switch (mainList.get(iLoop).string("OM_NOGB")) { // 납부자 구분 코드 FIM011
case "11":
payer.setRtpyrSeCd("01"); break;
case "12":
payer.setRtpyrSeCd("02"); break;
case "13":
payer.setRtpyrSeCd("03"); break;
case "14":
payer.setRtpyrSeCd("04"); break;
case "15":
payer.setRtpyrSeCd("05"); break;
default:
payer.setRtpyrSeCd("05"); break;
}
payer.setRtpyrNo(crypto.decrypt(mainList.get(iLoop).string("OM_JNO"))); // 납부자 번호
payer.setRtpyrNm(mainList.get(iLoop).string("OM_NAME")); // 납부자명
payer.setRtpyrBrdt(mainList.get(iLoop).string("OM_NO1")); // 납부자 생년월일
// 납부자 주소 정보
payer.setAddrInptSeCd("07"); // 주소 입력 구분 코드 FIM087
if (!mainList.get(iLoop).string("OM_DORO_CODE").equals("")) { // 주소 구분 코드
payer.setAddrSeCd("02");
}
payer.setZip(mainList.get(iLoop).string("OM_ZIP")); // 우편번호
payer.setAddr(mainList.get(iLoop).string("OM_JUSO")); // 주소
payer.setDtlAddr(mainList.get(iLoop).string("OM_BUNJI")); // 상세 주소
payer.setRoadNmCd(mainList.get(iLoop).string("OM_DORO_CODE")); // 도로명 코드
payer.setUdgdSeCd(mainList.get(iLoop).string("OM_BLD_POSITION")); // 지하 구분 코드
payer.setBmno(mainList.get(iLoop).number("OM_BLD_NO1").intValue()); // 건물본번
payer.setBsno(mainList.get(iLoop).number("OM_BLD_NO2").intValue()); // 건물부번
payer.setBldgMngNo(mainList.get(iLoop).string("OM_BLD_ADMNO")); // 건물 관리 번호
payer.setStdgCd(mainList.get(iLoop).string("OM_BDCODE")); // 법정동 코드
payer.setWholAddr(mainList.get(iLoop).string("OM_JUSO") + ", " + mainList.get(iLoop).string("OM_BUNJI")); // 전체 주소
// 납부자 주소 정보 등록
Payer result = payerBean.create(payer) ? payer : payerBean.getPayerAddrInfo(payer);
// 단속 정보 Insert
Crdn crdn = new Crdn();
crdn.setCrdnId(mainList.get(iLoop).string("MM_CODE"));
crdn.setSggCd(mainList.get(iLoop).string("MM_SGGCODE"));
crdn.setTaskSeCd(mainList.get(iLoop).string("MM_TASKGB"));
crdn.setCrdnRegSeCd(String.format("%02d", mainList.get(iLoop).number("MM_DLGB").intValue())); // 단속 등록 구분 코드
crdn.setCrdnInptSeCd(String.format("%02d", mainList.get(iLoop).number("MM_INGB").intValue())); // 단속 입력 구분 코드
// 민원 정보는 원본 시스템에서 확인하게끔 null로 입력한다.
crdn.setCvlcptLinkYn("N"); // 민원 연계 여부
crdn.setLinkId(null); // 연계 ID
crdn.setLinkTblNm(null); // 민원 연계 테이블 명
crdn.setRtpyrId(result.getRtpyrId()); // 납부자 ID
crdn.setAddrSn(result.getAddrSn()); // 주소 일련번호
crdn.setCrdnYmd(mainList.get(iLoop).string("MM_DATE")); // 단속 일자
crdn.setCrdnTm(mainList.get(iLoop).string("MM_TIME")); // 단속 시간
crdn.setVhrno(mainList.get(iLoop).string("MM_CARNO")); // 자동차등록번호
crdn.setCrdnStdgNm(mainList.get(iLoop).string("CRDN_STDG_NM")); // 단속 법정동 명
crdn.setCrdnRoadNm(null); // 단속 도로 명
crdn.setCrdnPlc(mainList.get(iLoop).string("MM_SGPOS")); // 단속 장소
crdn.setVltnId(mainList.get(iLoop).string("VLTN_ID")); // 위반 ID
crdn.setGpsX(mainList.get(iLoop).string("MM_GPS_X")); // GPS_X
crdn.setGpsY(mainList.get(iLoop).string("MM_GPS_Y")); // GPS_Y
crdn.setAtchFileCnt(mainList.get(iLoop).number("MM_IMAGECNT").intValue()); // 첨부 파일 수
crdn.setVin(mainList.get(iLoop).string("MM_VHMNO")); // 차대번호
crdn.setVhclNm(mainList.get(iLoop).string("MM_CARNAME")); // 차량 명
crdn.setVhclColr(mainList.get(iLoop).string("MM_CARCOLOR")); // 차량 색상
crdn.setFfnlgCrdnAmt(mainList.get(iLoop).number("MM_KEUM2").intValue()); // 과태료 단속 금액
crdn.setFfnlgRdcrt(null); // 과태료 감면율
crdn.setFfnlgAmt(mainList.get(iLoop).number("MM_KEUM2").intValue()); // 과태료 금액
crdn.setAdvntceBgngYmd(mainList.get(iLoop).string("MM_SDATE")); // 사전통지 시작 일자
crdn.setAdvntceDudtYmd(mainList.get(iLoop).string("MM_EDATE")); // 사전통지 납기 일자
crdn.setAdvntceAmt(mainList.get(iLoop).number("MM_KEUM1").intValue()); // 사전통지 금액
if (mainList.get(iLoop).string("MM_RECALL").equals("1")) { // 의견 제출 여부
crdn.setOpnnSbmsnYn("Y");
} else {
crdn.setOpnnSbmsnYn("N");
}
crdn.setEtcCn(mainList.get(iLoop).string("MM_ETC")); // 기타 내용
crdn.setCrdnSttsCd(mainList.get(iLoop).string("MM_STATE")); // 단속 상태 코드
crdn.setCrdnSttsChgDt(mainList.get(iLoop).string("MM_STATE_DT")); // 단속 상태 변경 일시
crdn.setAdtnAmt(mainList.get(iLoop).number("MM_ADD_KEUM").intValue()); // 가산 금액
crdn.setMinusAmt(mainList.get(iLoop).number("MM_MINUS_KEUM").intValue()); // 감경 금액
crdn.setRcvmtAmt(mainList.get(iLoop).number("MM_SUKEUM").intValue()); // 수납 금액
crdn.setBfrCrdnId(mainList.get(iLoop).string("MM_PRECODE")); // 이전 단속 ID
crdn.setNxrpCrdnLinkYn(null); // 세외수입 단속 연계 여부
crdn.setNxrpCrdnLinkUserId(null); // 세외수입 단속 연계 사용자 ID
crdn.setNxrpCrdnLinkDt(null); // 세외수입 단속 연계 일시
crdn.setNxrpAcbKey(null); // 세외수입 대장 키
crdn.setDelYn("N"); // 삭제 여부
crdn.setCreatedAt(mainList.get(iLoop).string("MM_INDT"));
crdn.setCreatedBy(mainList.get(iLoop).string("MM_INUSER"));
int rtnNocs = lsctMapper.copyMainToCrdn(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 부가 정보 Insert
crdn.setCrdnSeCd(null); // 단속 구분 코드
crdn.setTeamId(null); // 조 ID
if (mainList.get(iLoop).string("MM_PRECODE").equals("1")) { // 단속 특별구역 코드 FIM007
crdn.setCrdnSpareaCd("01");
} else {
crdn.setCrdnSpareaCd("00");
}
crdn.setCrdnBgngTm(mainList.get(iLoop).string("MM_TIME")); // 단속 시작 시각
crdn.setCrdnEndTm(mainList.get(iLoop).string("MM_TIME2")); // 단속 종료 시각
crdn.setCrdnSn(mainList.get(iLoop).string("MM_SNO")); // 단속 일련번호
crdn.setMoscX(null); // 모자이크 X
crdn.setMoscY(null); // 모자이크 Y
if (mainList.get(iLoop).string("MM_TRAC").equals("1")) { // 견인 여부
crdn.setTowngYn("Y");
} else {
crdn.setTowngYn("N");
}
crdn.setUseFuelCd(mainList.get(iLoop).string("MM_CARFUEL")); // 사용 연료 코드 LVS005
crdn.setFfnlgCarmdlCd(String.format("%02d", mainList.get(iLoop).number("MM_CARKIND").intValue())); // 과태료 차종 코드 FIM009
crdn.setPrkPsbltyRsltCd(mainList.get(iLoop).string("MM_CARCHECK")); // 주차 가능 결과 코드
crdn.setVltnNmtm(mainList.get(iLoop).string("MM_VIORCNT")); // 위반 횟수
crdn.setOvtmYn("N"); // 시간외 여부
crdn.setOvtmPrttnYn("N"); // 시간외 분할 여부
rtnNocs = lsctMapper.copyMainToCrdnAdi(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 부가 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속ID로 단속 파일 다운로드
// 단속 파일 등록
List<FileInfo> fileInfoList = new ArrayList<FileInfo>();
//
}
}
}
// 단속(TB_CRDN) 자료 조회
if (req.getSchEntNos() != null) {
req.setRtpyrNos(req.getSchEntNos());
}
if (req.getSchEntNo() != null) {
req.setRtpyrNo(req.getSchEntNo());
}
return lsctMapper.selectLsctList(req);
}
/** .
* @param req
* @return
*/
public List<Lsct> getLscts(RentQuery req) {
return lsctMapper.selectLscts(req);
}
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean create(Lsct lsct) {
return lsctMapper.insert(lsct);
}
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean update(Lsct lsct) {
return lsctMapper.update(lsct);
}
/** .
* @param lsct
* @return
* <ul><li> true</li>
* <li> false</li>
* </ul>
*/
public boolean remove(Lsct lsct) {
return lsctMapper.delete(lsct);
}
}

@ -0,0 +1,58 @@
package cokr.xit.fims.rent.service.bean;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import cokr.xit.foundation.component.AbstractServiceBean;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.fims.rent.Lsct;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.service.LsctService;
/** .
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
@Service("lsctService")
public class LsctServiceBean extends AbstractServiceBean implements LsctService {
/** 임대차계약 대장 정보 Bean */
@Resource(name = "lsctBean")
private LsctBean lsctBean;
@Override
public List<DataObject> getLsctList(RentQuery req) {
return lsctBean.getLsctList(req);
}
@Override
public List<Lsct> getLscts(RentQuery req) {
return lsctBean.getLscts(req);
}
@Override
public boolean create(Lsct lsct) {
return lsctBean.create(lsct);
}
@Override
public boolean update(Lsct lsct) {
return lsctBean.update(lsct);
}
@Override
public boolean remove(Lsct lsct) {
return lsctBean.remove(lsct);
}
}

@ -0,0 +1,189 @@
package cokr.xit.fims.rent.web;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cokr.xit.base.docs.xls.CellDef;
import cokr.xit.base.docs.xls.Format;
import cokr.xit.base.docs.xls.Style;
import cokr.xit.base.docs.xls.XLSWriter;
import cokr.xit.base.web.ApplicationController;
import cokr.xit.fims.base.FimsUser;
import cokr.xit.fims.cmmn.service.bean.StngBean;
import cokr.xit.fims.cmmn.xls.FormatMaker;
import cokr.xit.fims.cmmn.xls.StyleMaker;
import cokr.xit.fims.excl.LevyExclQuery;
import cokr.xit.fims.rent.Lsct;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.service.HirerService;
import cokr.xit.fims.rent.service.LsctService;
import cokr.xit.fims.rent.service.RentEntService;
import cokr.xit.fims.task.Task;
import cokr.xit.foundation.data.DataObject;
/**
*
* <p> :
*
* <pre>
* ============ ============
* 2024-08-27 JoJH
* ================================
* </pre>
*/
@Controller
@RequestMapping(name = "임대차계약 운전자 정보", value=Rent02Controller.CLASS_URL)
public class Rent02Controller extends ApplicationController {
public static final String CLASS_URL = "/rent/rent02";
public class METHOD_URL {
public static final String
leaseContractMain = "/010/main.do" // 임대차계약 메인 화면
, getLeaseContractList = "/010/list.do" // 임대차계약 대장 목록 조회
;
}
/**임대차계약 대장 서비스*/
@Resource(name = "lsctService")
private LsctService lsctService;
/**임차인 정보 서비스*/
@Resource(name = "hirerService")
private HirerService hirerService;
/**임대 기업 대장 서비스*/
@Resource(name = "rentEntService")
private RentEntService rentEntService;
/**설정 정보 Bean */
@Resource(name = "stngBean")
private StngBean stngBean;
/** (lsct/lsct-main) .
* {@link #getLsctList(LsctQuery) } .
* @return /lsct/lsct-main
*/
@RequestMapping(name = "임대차계약 대장 메인", value=METHOD_URL.leaseContractMain)
public ModelAndView leaseContractMain() {
ModelAndView mav = new ModelAndView("fims/rent/rent02010-main");
// 사용자 정보
FimsUser fimsUser = (FimsUser)currentUser().getUser();
// 사용자와 매핑되어있는 임대업체 정보 조회
RentQuery req = new RentQuery();
req.setUserId(fimsUser.getId());
List<DataObject> entNolist = rentEntService.getUserRentEntMpngs(req);
return mav
.addObject("pageName", "rent02010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix
.addObject("prefixUrl", CLASS_URL) // prefixUrl
.addObject("userId", fimsUser.getId()) // 사용자 ID(USER_ID)
.addObject("entNoList", entNolist) // 임대업체 목록
;
}
/** .<br />
* {@link LsctService#getLsctList(LsctQuery)}
* @param req
* @return jsonView
* <pre><code> {
* "lsctList": [ ]
* "lsctStart":
* "lsctFetch":
* "lsctTotal":
* }</code></pre>
*/
@Task("CMN")
@RequestMapping(name = "임대차계약 대장 조회", value=METHOD_URL.getLeaseContractList)
public ModelAndView getLeaseContractList(RentQuery req) {
if (!"xls".equals(req.getDownload())) {
List<?> result = lsctService.getLsctList(setFetchSize(req));
return setCollectionInfo(new ModelAndView("jsonView"), result, "");
} else {
// 현재 날짜 구하기
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
String dateTime = dateFormat.format(System.currentTimeMillis());
List<CellDef> cellDefs = fromJson(req.getCellDefs(), CellDef.listType());
XLSWriter xlsx = new XLSWriter().worksheet(0);
Format format = new Format(xlsx);
CellStyle center = format.cellStyle(Style.CENTER);
CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss();
List<DataObject> list = lsctService.getLsctList(req.setFetchSize(0));
Map<String,Object> valueMap = new HashMap<String,Object>();
valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT));
valueMap.put("등록사용자", format.of("RGTR_NM").style(center));
CellDef.setValues(cellDefs, valueMap);
xlsx.cell(0, 0).value("임대계약서").value(center).merge(0, cellDefs.size() - 1)
.cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx)))
.cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> {if(i.getValue() instanceof Format) {i.setField(null);}; return i;}).toList()));
return new ModelAndView("downloadView")
.addObject("download", xlsx.getDownloadable().setFilename("임대계약서" + "_목록_" + dateTime + ".xlsx"));
}
}
/** .
* @param lsct
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "임대차계약 대장 등록", value = "/create.do")
public ModelAndView create(Lsct lsct) {
boolean saved = lsctService.create(lsct);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param lsct
* @return jsonView
* <pre><code> {
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "임대차계약 대장 수정", value = "/update.do")
public ModelAndView update(Lsct lsct) {
boolean saved = lsctService.update(lsct);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
/** .
* @param lsctIDs
* @return jsonView
* <pre><code> {
* "affected":
* "saved": true, false
* }</code></pre>
*/
@PostMapping(name = "임대차계약 대장 제거", value = "/remove.do")
public ModelAndView remove(Lsct lsct) {
boolean saved = lsctService.remove(lsct);
return new ModelAndView("jsonView")
.addObject("saved", saved);
}
}

@ -0,0 +1,185 @@
<?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.rent.dao.HirerMapper">
<!-- 임차인 정보 정보 매퍼
========== 변경 이력 ==========
2024-08-27 JoJH 최초 작성
============================ -->
<resultMap id="hirerRow" type="cokr.xit.fims.rent.Hirer"> <!-- 임차인 정보 -->
<result property="hirerId" column="HIRER_ID" /> <!-- 임차인 ID -->
<result property="vhrno" column="VHRNO" /> <!-- 자동차등록번호 -->
<result property="hireBgngDt" column="HIRE_BGNG_DT" /> <!-- 임차 시작 일시 -->
<result property="hireEndDt" column="HIRE_END_DT" /> <!-- 임차 종료 일시 -->
<result property="hirerSeCd" column="HIRER_SE_CD" /> <!-- 임차인 구분 코드 -->
<result property="corpBzmnNo" column="CORP_BZMN_NO" /> <!-- 법인 사업자 번호 -->
<result property="lcnsNo" column="LCNS_NO" /> <!-- 면허 번호 -->
<result property="hirerNm" column="HIRER_NM" /> <!-- 임차인 명 -->
<result property="hirerMblTelno" column="HIRER_MBL_TELNO" /> <!-- 임차인 휴대 전화번호 -->
<result property="hirerEml" column="HIRER_EML" /> <!-- 임차인 이메일 -->
<result property="hirerZip" column="HIRER_ZIP" /> <!-- 임차인 우편번호 -->
<result property="hirerAddr" column="HIRER_ADDR" /> <!-- 임차인 주소 -->
<result property="hirerDtlAddr" column="HIRER_DTL_ADDR" /> <!-- 임차인 상세 주소 -->
<result property="atchFileCnt" column="ATCH_FILE_CNT" /> <!-- 첨부 파일 수 -->
<result property="atchFileDelYn" column="ATCH_FILE_DEL_YN" /> <!-- 첨부 파일 삭제 여부 -->
<result property="atchFileRegDt" column="ATCH_FILE_REG_DT" /> <!-- 첨부 파일 등록 일시 -->
<result property="atchFileRgtr" column="ATCH_FILE_RGTR" /> <!-- 첨부 파일 등록자 -->
<result property="atchFileRegIp" column="ATCH_FILE_REG_IP" /> <!-- 첨부 파일 등록 IP -->
<result property="atchFileDelDt" column="ATCH_FILE_DEL_DT" /> <!-- 첨부 파일 삭제 일시 -->
<result property="atchFileDltr" column="ATCH_FILE_DLTR" /> <!-- 첨부 파일 삭제자 -->
<result property="atchFileDelIp" column="ATCH_FILE_DEL_IP" /> <!-- 첨부 파일 삭제 IP -->
<result property="delYn" column="DEL_YN" /> <!-- 삭제 여부 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
<result property="removedAt" column="DEL_DT" /> <!-- 삭제 일시 -->
<result property="removedBy" column="DLTR" /> <!-- 삭제자 -->
<result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 -->
</resultMap>
<sql id="select">SELECT HIRER_ID <!-- 임차인 ID -->
, VHRNO <!-- 자동차등록번호 -->
, HIRE_BGNG_DT <!-- 임차 시작 일시 -->
, HIRE_END_DT <!-- 임차 종료 일시 -->
, HIRER_SE_CD <!-- 임차인 구분 코드 -->
, CORP_BZMN_NO <!-- 법인 사업자 번호 -->
, LCNS_NO <!-- 면허 번호 -->
, HIRER_NM <!-- 임차인 명 -->
, HIRER_MBL_TELNO <!-- 임차인 휴대 전화번호 -->
, HIRER_EML <!-- 임차인 이메일 -->
, HIRER_ZIP <!-- 임차인 우편번호 -->
, HIRER_ADDR <!-- 임차인 주소 -->
, HIRER_DTL_ADDR <!-- 임차인 상세 주소 -->
, ATCH_FILE_CNT <!-- 첨부 파일 수 -->
, ATCH_FILE_DEL_YN <!-- 첨부 파일 삭제 여부 -->
, ATCH_FILE_REG_DT <!-- 첨부 파일 등록 일시 -->
, ATCH_FILE_RGTR <!-- 첨부 파일 등록자 -->
, ATCH_FILE_REG_IP <!-- 첨부 파일 등록 IP -->
, ATCH_FILE_DEL_DT <!-- 첨부 파일 삭제 일시 -->
, ATCH_FILE_DLTR <!-- 첨부 파일 삭제자 -->
, ATCH_FILE_DEL_IP <!-- 첨부 파일 삭제 IP -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
, DEL_DT <!-- 삭제 일시 -->
, DLTR <!-- 삭제자 -->
, DEL_RSN <!-- 삭제 사유 -->
FROM TB_HIRER</sql>
<select id="selectHirerList" parameterType="map" resultType="dataobject">/* 임차인 정보 목록 조회(hirerMapper.selectHirerList) */
<include refid="utility.paging-prefix" />
<include refid="select" />
<where></where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" /></select>
<select id="selectHirers" parameterType="map" resultMap="hirerRow">/* 임차인 정보 객체 가져오기(hirerMapper.selectHirers) */
<include refid="select" />
<where></where>
<include refid="utility.orderBy" /></select>
<insert id="insertHirer" parameterType="map">/* 임차인 정보 등록(hirerMapper.insertHirer) */
INSERT INTO TB_HIRER (
HIRER_ID <!-- 임차인 ID -->
, VHRNO <!-- 자동차등록번호 -->
, HIRE_BGNG_DT <!-- 임차 시작 일시 -->
, HIRE_END_DT <!-- 임차 종료 일시 -->
, HIRER_SE_CD <!-- 임차인 구분 코드 -->
, CORP_BZMN_NO <!-- 법인 사업자 번호 -->
, LCNS_NO <!-- 면허 번호 -->
, HIRER_NM <!-- 임차인 명 -->
, HIRER_MBL_TELNO <!-- 임차인 휴대 전화번호 -->
, HIRER_EML <!-- 임차인 이메일 -->
, HIRER_ZIP <!-- 임차인 우편번호 -->
, HIRER_ADDR <!-- 임차인 주소 -->
, HIRER_DTL_ADDR <!-- 임차인 상세 주소 -->
, ATCH_FILE_CNT <!-- 첨부 파일 수 -->
, ATCH_FILE_DEL_YN <!-- 첨부 파일 삭제 여부 -->
, ATCH_FILE_REG_DT <!-- 첨부 파일 등록 일시 -->
, ATCH_FILE_RGTR <!-- 첨부 파일 등록자 -->
, ATCH_FILE_REG_IP <!-- 첨부 파일 등록 IP -->
, ATCH_FILE_DEL_DT <!-- 첨부 파일 삭제 일시 -->
, ATCH_FILE_DLTR <!-- 첨부 파일 삭제자 -->
, ATCH_FILE_DEL_IP <!-- 첨부 파일 삭제 IP -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
, DEL_DT <!-- 삭제 일시 -->
, DLTR <!-- 삭제자 -->
, DEL_RSN <!-- 삭제 사유 -->
) VALUES (
#{hirer.hirerId} <!-- 임차인 ID -->
, #{hirer.vhrno} <!-- 자동차등록번호 -->
, #{hirer.hireBgngDt} <!-- 임차 시작 일시 -->
, #{hirer.hireEndDt} <!-- 임차 종료 일시 -->
, #{hirer.hirerSeCd} <!-- 임차인 구분 코드 -->
, #{hirer.corpBzmnNo} <!-- 법인 사업자 번호 -->
, #{hirer.lcnsNo} <!-- 면허 번호 -->
, #{hirer.hirerNm} <!-- 임차인 명 -->
, #{hirer.hirerMblTelno} <!-- 임차인 휴대 전화번호 -->
, #{hirer.hirerEml} <!-- 임차인 이메일 -->
, #{hirer.hirerZip} <!-- 임차인 우편번호 -->
, #{hirer.hirerAddr} <!-- 임차인 주소 -->
, #{hirer.hirerDtlAddr} <!-- 임차인 상세 주소 -->
, #{hirer.atchFileCnt} <!-- 첨부 파일 수 -->
, #{hirer.atchFileDelYn} <!-- 첨부 파일 삭제 여부 -->
, #{hirer.atchFileRegDt} <!-- 첨부 파일 등록 일시 -->
, #{hirer.atchFileRgtr} <!-- 첨부 파일 등록자 -->
, #{hirer.atchFileRegIp} <!-- 첨부 파일 등록 IP -->
, #{hirer.atchFileDelDt} <!-- 첨부 파일 삭제 일시 -->
, #{hirer.atchFileDltr} <!-- 첨부 파일 삭제자 -->
, #{hirer.atchFileDelIp} <!-- 첨부 파일 삭제 IP -->
, #{hirer.delYn} <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{currentUser.id} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{currentUser.id} <!-- 수정자 -->
, #{hirer.removedAt} <!-- 삭제 일시 -->
, #{hirer.removedBy} <!-- 삭제자 -->
, #{hirer.delRsn} <!-- 삭제 사유 -->
)</insert>
<update id="updateHirer" parameterType="map">/* 임차인 정보 수정(hirerMapper.updateHirer) */
UPDATE TB_HIRER SET
VHRNO = #{hirer.vhrno} <!-- 자동차등록번호 -->
, HIRE_BGNG_DT = #{hirer.hireBgngDt} <!-- 임차 시작 일시 -->
, HIRE_END_DT = #{hirer.hireEndDt} <!-- 임차 종료 일시 -->
, HIRER_SE_CD = #{hirer.hirerSeCd} <!-- 임차인 구분 코드 -->
, CORP_BZMN_NO = #{hirer.corpBzmnNo} <!-- 법인 사업자 번호 -->
, LCNS_NO = #{hirer.lcnsNo} <!-- 면허 번호 -->
, HIRER_NM = #{hirer.hirerNm} <!-- 임차인 명 -->
, HIRER_MBL_TELNO = #{hirer.hirerMblTelno} <!-- 임차인 휴대 전화번호 -->
, HIRER_EML = #{hirer.hirerEml} <!-- 임차인 이메일 -->
, HIRER_ZIP = #{hirer.hirerZip} <!-- 임차인 우편번호 -->
, HIRER_ADDR = #{hirer.hirerAddr} <!-- 임차인 주소 -->
, HIRER_DTL_ADDR = #{hirer.hirerDtlAddr} <!-- 임차인 상세 주소 -->
, ATCH_FILE_CNT = #{hirer.atchFileCnt} <!-- 첨부 파일 수 -->
, ATCH_FILE_DEL_YN = #{hirer.atchFileDelYn} <!-- 첨부 파일 삭제 여부 -->
, ATCH_FILE_REG_DT = #{hirer.atchFileRegDt} <!-- 첨부 파일 등록 일시 -->
, ATCH_FILE_RGTR = #{hirer.atchFileRgtr} <!-- 첨부 파일 등록자 -->
, ATCH_FILE_REG_IP = #{hirer.atchFileRegIp} <!-- 첨부 파일 등록 IP -->
, ATCH_FILE_DEL_DT = #{hirer.atchFileDelDt} <!-- 첨부 파일 삭제 일시 -->
, ATCH_FILE_DLTR = #{hirer.atchFileDltr} <!-- 첨부 파일 삭제자 -->
, ATCH_FILE_DEL_IP = #{hirer.atchFileDelIp} <!-- 첨부 파일 삭제 IP -->
, DEL_YN = #{hirer.delYn} <!-- 삭제 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{currentUser.id} <!-- 수정자 -->
, DEL_DT = #{hirer.removedAt} <!-- 삭제 일시 -->
, DLTR = #{hirer.removedBy} <!-- 삭제자 -->
, DEL_RSN = #{hirer.delRsn} <!-- 삭제 사유 -->
WHERE HIRER_ID = #{hirer.hirerId}</update>
<update id="deleteHirer" parameterType="map">/* 임차인 정보 삭제(hirerMapper.deleteHirer) */
UPDATE TB_HIRER SET
USE_YN = 'N'
, MDFCN_DT =<include refid="utility.now" />
, MDFR = #{currentUser.id}
WHERE HIRER_ID = #{hirer.hirerId}</update>
</mapper>

@ -0,0 +1,557 @@
<?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.rent.dao.LsctMapper">
<!-- 임대차계약 대장 정보 매퍼
========== 변경 이력 ==========
2024-08-27 JoJH 최초 작성
============================ -->
<resultMap id="lsctRow" type="cokr.xit.fims.rent.Lsct"> <!-- 임대차계약 대장 -->
<result property="lsctId" column="LSCT_ID" /> <!-- 임대차계약 ID -->
<result property="crdnId" column="CRDN_ID" /> <!-- 단속 ID -->
<result property="levyId" column="LEVY_ID" /> <!-- 부과 ID -->
<result property="sggCd" column="SGG_CD" /> <!-- 시군구 코드 -->
<result property="taskSeCd" column="TASK_SE_CD" /> <!-- 업무 구분 코드 -->
<result property="crdnDt" column="CRDN_DT" /> <!-- 단속 일시 -->
<result property="vhrno" column="VHRNO" /> <!-- 자동차등록번호 -->
<result property="crdnStdgNm" column="CRDN_STDG_NM" /> <!-- 단속 법정동 명 -->
<result property="crdnPlc" column="CRDN_PLC" /> <!-- 단속 장소 -->
<result property="vltnArtcl" column="VLTN_ARTCL" /> <!-- 위반 항목 -->
<result property="rtpyrNo" column="RTPYR_NO" /> <!-- 납부자 번호 -->
<result property="rtpyrNm" column="RTPYR_NM" /> <!-- 납부자 명 -->
<result property="entId" column="ENT_ID" /> <!-- 기업 ID -->
<result property="hirerId" column="HIRER_ID" /> <!-- 임차인 ID -->
<result property="chgDmndYn" column="CHG_DMND_YN" /> <!-- 변경 요청 여부 -->
<result property="chgDmndDt" column="CHG_DMND_DT" /> <!-- 변경 요청 일시 -->
<result property="chgDmndRgtr" column="CHG_DMND_RGTR" /> <!-- 변경 요청 등록자 -->
<result property="chgDmndIp" column="CHG_DMND_IP" /> <!-- 변경 요청 IP -->
<result property="chgDmndMdfcnDt" column="CHG_DMND_MDFCN_DT" /> <!-- 변경 요청 수정 일시 -->
<result property="chgDmndMdfr" column="CHG_DMND_MDFR" /> <!-- 변경 요청 수정자 -->
<result property="chgDmndMdfcnIp" column="CHG_DMND_MDFCN_IP" /> <!-- 변경 요청 수정 IP -->
<result property="chgAprvYn" column="CHG_APRV_YN" /> <!-- 변경 승인 여부 -->
<result property="chgAprvDt" column="CHG_APRV_DT" /> <!-- 변경 승인 일시 -->
<result property="chgAutzr" column="CHG_AUTZR" /> <!-- 변경 승인자 -->
<result property="chgAprvRsn" column="CHG_APRV_RSN" /> <!-- 변경 승인 사유 -->
<result property="chgAprvIp" column="CHG_APRV_IP" /> <!-- 변경 승인 IP -->
<result property="delYn" column="DEL_YN" /> <!-- 삭제 여부 -->
<result property="createdAt" column="REG_DT" /> <!-- 등록 일시 -->
<result property="createdBy" column="RGTR" /> <!-- 등록자 -->
<result property="lastModified" column="MDFCN_DT" /> <!-- 수정 일시 -->
<result property="modifiedBy" column="MDFR" /> <!-- 수정자 -->
<result property="removedAt" column="DEL_DT" /> <!-- 삭제 일시 -->
<result property="removedBy" column="DLTR" /> <!-- 삭제자 -->
<result property="delRsn" column="DEL_RSN" /> <!-- 삭제 사유 -->
</resultMap>
<select id="selectMainList" parameterType="map" resultType="dataobject">/* 연계뷰 단속 목록 조회(lsctMapper.selectMainList) */
SELECT MM_CODE
, MM_SGGCODE
, MM_TASKGB
, MM_DLGB
, MM_INGB
, MM_DATE
, (CASE WHEN LENGTH(MM_TIME) = 4 THEN CONCAT(MM_TIME, '00')
ELSE MM_TIME END) AS MM_TIME
, MM_LAWGB
, (SELECT VLTN_ID FROM TB_VLTN X
WHERE X.VLTN_CD = LPAD(MM_LAWGB, 2, '0')
AND X.SGG_CD = MM_SGGCODE AND X.TASK_SE_CD = MM_TASKGB) AS VLTN_ID
, MM_SGNM
, MM_SGTEL
, MM_SGCONT
, MM_SGPOS
, MM_BDCODE
, (SELECT TRIM(CONCAT(X.EMD_NM, ' ', X.LI_NM)) FROM TB_STDG X
WHERE X.STDG_CD = MM_BDCODE) AS CRDN_STDG_NM
, MM_GPS_X
, MM_GPS_Y
, MM_TRAC
, MM_SNO
, MM_IMAGECNT
, MM_IMAGEGB
, MM_CARNO
, MM_VHMNO
, MM_CARGB
, MM_CARKIND
, MM_OMCODE
, MM_SDATE
, MM_EDATE
, MM_KEUM1
, MM_KEUM2
, MM_SUKEUM
, MM_MINUS_KEUM
, MM_ADD_KEUM
, MM_RECALL
, MM_INUSER
, MM_INDT
, MM_STATE
, MM_STATE_DT
, MM_CARCHECK
, MM_PRECODE
, MM_ETC
, MM_VIDEOFILENM
, MM_SAFEZONE
, MM_VIORCNT
, (CASE WHEN LENGTH(MM_TIME2) = 4 THEN CONCAT(MM_TIME2, '00')
ELSE MM_TIME2 END) AS MM_TIME2
, MM_CARNAME
, MM_CARCOLOR
, MM_CARFUEL
, MM_TRANSMIT_SGG
, MM_TRANSMIT_TEAM
, OM_CODE
, OM_SGGCODE
, OM_NAME
, OM_NO1
, OM_JNO
, OM_NOGB
, OM_JUSO
, OM_BUNJI
, OM_ZIP
, OM_DORO_CODE
, OM_BLD_POSITION
, OM_BLD_NO1
, OM_BLD_NO2
, OM_BLD_ADMNO
, OM_INGB
, OM_INDT
, OM_BDCODE
FROM VW_CP_MAIN
<where>
<if test="schCrdnYmdFrom != null">
AND MM_DATE <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if>
<if test="schCrdnYmdTo != null">
AND MM_DATE <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
</if>
<if test="schVhrno != null">
AND MM_CARNO = #{schVhrno} <!-- 차량번호 -->
</if>
<if test="omJnos != null">
AND OM_JNO IN ( <!-- 납부자 번호s -->
<foreach collection="omJnos" item="omJno" separator=","> #{omJno} </foreach>
)
</if>
<if test="omJno != null">
AND OM_JNO = #{omJno} <!-- 납부자 번호 -->
</if>
<if test="schEntNm != null">
AND OM_NAME = #{schEntNm} <!-- 납부자 명 -->
</if>
<if test="sggCd != null">
AND MM_SGGCODE = #{sggCd} <!-- 시군구 코드 -->
</if>
<if test="taskSeCd != null">
AND MM_TASKGB = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
</where>
<include refid="utility.orderBy" />
</select>
<select id="selectCrdnInfo" parameterType="string" resultType="dataobject">/* 단속 객체 가져오기(lsctMapper.selectCrdnInfo) */
SELECT CRDN_ID <!-- 단속 ID -->
, VHRNO <!-- 차량번호 -->
, CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
FROM TB_CRDN
WHERE CRDN_ID = #{crdnId}
</select>
<insert id="copyMainToCrdn" parameterType="cokr.xit.fims.crdn.Crdn">/* 단속 대장 등록(lsctMapper.copyMainToCrdn) */
INSERT
INTO TB_CRDN (
CRDN_ID <!-- 단속 ID -->
, SGG_CD
, TASK_SE_CD
, CRDN_REG_SE_CD
, CRDN_INPT_SE_CD
, CVLCPT_LINK_YN
, LINK_TBL_NM
, LINK_ID
, RTPYR_ID
, ADDR_SN
, CRDN_YMD
, CRDN_TM
, VHRNO
, CRDN_STDG_NM
, CRDN_ROAD_NM
, CRDN_PLC
, VLTN_ID
, GPS_X
, GPS_Y
, ATCH_FILE_CNT
, VIN
, VHCL_NM
, VHCL_COLR
, FFNLG_CRDN_AMT
, FFNLG_RDCRT
, FFNLG_AMT
, ADVNTCE_BGNG_YMD
, ADVNTCE_DUDT_YMD
, ADVNTCE_AMT
, OPNN_SBMSN_YN
, ETC_CN
, CRDN_STTS_CD
, CRDN_STTS_CHG_DT
, ADTN_AMT
, MINUS_AMT
, RCVMT_AMT
, BFR_CRDN_ID
, NXRP_CRDN_LINK_YN
, NXRP_CRDN_LINK_USER_ID
, NXRP_CRDN_LINK_DT
, NXRP_ACB_KEY
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
) VALUES (
LPAD(#{crdnId},20,'0') <!-- 단속 ID -->
, #{sggCd} <!-- 시군구 코드 -->
, #{taskSeCd} <!-- 업무 구분 코드 -->
, #{crdnRegSeCd} <!-- 단속 등록 구분 코드 -->
, #{crdnInptSeCd} <!-- 단속 입력 구분 코드 -->
, #{cvlcptLinkYn} <!-- 민원 연계 여부 -->
, #{linkTblNm} <!-- 연계 테이블 명 -->
, #{linkId} <!-- 연계 ID -->
, #{rtpyrId} <!-- 납부자 ID -->
, #{addrSn} <!-- 주소 일련번호 -->
, #{crdnYmd} <!-- 단속 일자 -->
, #{crdnTm} <!-- 단속 시각 -->
, #{vhrno} <!-- 자동차등록번호 -->
, #{crdnStdgNm} <!-- 단속 법정동 명 -->
, #{crdnRoadNm} <!-- 단속 도로 명 -->
, #{crdnPlc} <!-- 단속 장소 -->
, #{vltnId} <!-- 위반 ID -->
, #{gpsX} <!-- GPS X -->
, #{gpsY} <!-- GPS Y -->
, #{atchFileCnt} <!-- 첨부 파일 수 -->
, #{vin} <!-- 차대번호 -->
, #{vhclNm} <!-- 차량 명 -->
, #{vhclColr} <!-- 차량 색상 -->
, #{ffnlgCrdnAmt} <!-- 과태료 단속 금액 -->
, #{ffnlgRdcrt} <!-- 과태료 감면율 -->
, #{ffnlgAmt} <!-- 과태료 금액 -->
, #{advntceBgngYmd} <!-- 사전통지 시작 일자 -->
, #{advntceDudtYmd} <!-- 사전통지 납기 일자 -->
, #{advntceAmt} <!-- 사전통지 금액 -->
, #{opnnSbmsnYn} <!-- 의견 제출 여부 -->
, #{etcCn} <!-- 기타 내용 -->
, #{crdnSttsCd} <!-- 단속 상태 코드 -->
, #{crdnSttsChgDt} <!-- 단속 상태 변경 일시 -->
, #{adtnAmt} <!-- 가산 금액 -->
, #{minusAmt} <!-- 감경 금액 -->
, #{rcvmtAmt} <!-- 수납 금액 -->
, #{bfrCrdnId} <!-- 이전 단속 ID -->
, #{nxrpCrdnLinkYn} <!-- 세외수입 단속 연계 여부 -->
, #{nxrpCrdnLinkUserId} <!-- 세외수입 단속 연계 사용자 ID -->
, #{nxrpCrdnLinkDt} <!-- 세외수입 단속 연계 일시 -->
, #{nxrpAcbKey} <!-- 세외수입 대장 키 -->
, #{delYn} <!-- 삭제 여부 -->
, #{createdAt} <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<insert id="copyMainToCrdnAdi" parameterType="cokr.xit.fims.crdn.Crdn">/* 단속 부가 대장 등록(lsctMapper.copyMainToCrdnAdi) */
INSERT
INTO TB_CRDN_ADI (
CRDN_ID <!-- 단속 ID -->
, CRDN_SE_CD <!-- 단속 구분 코드 -->
, TEAM_ID <!-- 조 ID -->
, DTL_CRDN_PLC <!-- 상세 단속 장소 -->
, CRDN_SPAREA_CD <!-- 단속 특별구역 코드 -->
, CRDN_BGNG_TM <!-- 단속 시작 시각 -->
, CRDN_END_TM <!-- 단속 종료 시각 -->
, CRDN_SN <!-- 단속 일련번호 -->
, MOSC_X <!-- 모자이크 X -->
, MOSC_Y <!-- 모자이크 Y -->
, TOWNG_YN <!-- 견인 여부 -->
, USE_FUEL_CD <!-- 사용 연료 코드 -->
, FFNLG_CARMDL_CD <!-- 과태료 차종 코드 -->
, PRK_PSBLTY_RSLT_CD <!-- 주차 가능 결과 코드 -->
, VLTN_NMTM <!-- 위반 횟수 -->
, OVTM_YN <!-- 시간외 여부 -->
, OVTM_PRTTN_YN <!-- 시간외 분할 여부 -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
) VALUES (
LPAD(#{crdnId},20,'0') <!-- 단속 ID -->
, #{crdnSeCd} <!-- 단속 구분 코드 -->
, #{teamId} <!-- 조 ID -->
, #{dtlCrdnPlc} <!-- 상세 단속 장소 -->
, #{crdnSpareaCd} <!-- 단속 특별구역 코드 -->
, #{crdnBgngTm} <!-- 단속 시작 시각 -->
, #{crdnEndTm} <!-- 단속 종료 시각 -->
, #{crdnSn} <!-- 단속 일련번호 -->
, #{moscX} <!-- 모자이크 X -->
, #{moscY} <!-- 모자이크 Y -->
, #{towngYn} <!-- 견인 여부 -->
, #{useFuelCd} <!-- 사용 연료 코드 -->
, #{ffnlgCarmdlCd} <!-- 과태료 차종 코드 -->
, #{prkPsbltyRsltCd} <!-- 주차 가능 결과 코드 -->
, #{vltnNmtm} <!-- 위반 횟수 -->
, #{ovtmYn} <!-- 시간외 여부 -->
, #{ovtmPrttnYn} <!-- 시간외 분할 여부 -->
, #{delYn} <!-- 삭제 여부 -->
, #{createdAt} <!-- 등록 일시 -->
, #{createdBy} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{modifiedBy} <!-- 수정자 -->
)
</insert>
<sql id="selectList">
SELECT C.CRDN_ID <!-- 단속 ID -->
, C.SGG_CD <!-- 시군구 코드 -->
, C.TASK_SE_CD <!-- 업무 구분 코드 -->
, (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM <!-- 업무 구분 명 -->
, C.CRDN_YMD <!-- 단속 일자 -->
, (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM <!-- 단속 일시 -->
, C.VHRNO <!-- 차량번호 -->
, C.CRDN_STDG_NM <!-- 단속 법정동 명 -->
, C.CRDN_ROAD_NM <!-- 단속 도로 명 -->
, C.CRDN_PLC <!-- 단속 장소 -->
, C.FFNLG_CRDN_AMT <!-- 과태료 단속 금액 -->
, C.CRDN_STTS_CD <!-- 단속 상태 코드 -->
, (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM <!-- 단속 상태 명 -->
, V.VLTN_ID <!-- 위반 ID -->
, V.VLTN_CD <!-- 위반 코드 -->
, V.VLTN_ARTCL <!-- 위반 항목 -->
, P.RTPYR_ID <!-- 납부자 ID -->
, P.RTPYR_SE_CD <!-- 납부자 구분 코드 -->
, (SELECT GET_CODE_NM('FIM011', P.RTPYR_SE_CD) FROM DUAL) AS RTPYR_SE_NM <!-- 납부자 구분 명 -->
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, PA.ADDR_SN <!-- 주소 일련번호 -->
, PA.ZIP <!-- 우편번호 -->
, PA.ADDR <!-- 주소 -->
, PA.DTL_ADDR <!-- 상세 주소 -->
, L.LSCT_ID <!-- 임대차계약 ID -->
, (CASE WHEN L.LSCT_ID IS NULL THEN 'Y' ELSE 'N' END) AS TRGT_YN <!-- 계약서 등록 대상 -->
, L.ENT_ID <!-- 기업 ID -->
, L.HIRER_ID <!-- 임차인 ID -->
, L.CHG_DMND_YN <!-- 변경 요청 여부 -->
, L.CHG_DMND_DT <!-- 변경 요청 일시 -->
, L.CHG_DMND_RGTR <!-- 변경 요청 등록자 -->
, L.CHG_DMND_IP <!-- 변경 요청 IP -->
, L.CHG_DMND_MDFCN_DT <!-- 변경 요청 수정 일시 -->
, L.CHG_DMND_MDFR <!-- 변경 요청 수정자 -->
, L.CHG_DMND_MDFCN_IP <!-- 변경 요청 수정 IP -->
, L.CHG_APRV_YN <!-- 변경 승인 여부 -->
, L.CHG_APRV_DT <!-- 변경 승인 일시 -->
, L.CHG_AUTZR <!-- 변경 승인자 -->
, L.CHG_APRV_RSN <!-- 변경 승인 사유 -->
, L.CHG_APRV_IP <!-- 변경 승인 IP -->
, L.REG_DT <!-- 등록 일시 -->
, L.RGTR <!-- 등록자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM <!-- 등록자 명 -->
, L.MDFCN_DT <!-- 수정 일시 -->
, L.MDFR <!-- 수정자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM <!-- 수정자 명 -->
FROM TB_CRDN C
INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID)
INNER 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_LSCT L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N')
LEFT OUTER JOIN TB_HIRER H ON (L.HIRER_ID = H.HIRER_ID AND H.DEL_YN = 'N')
</sql>
<select id="selectLsctList" parameterType="map" resultType="dataobject">/* 임대차계약 대장 목록 조회(lsctMapper.selectLsctList) */
<include refid="utility.paging-prefix" />
<include refid="selectList" />
<where>
<if test="schCrdnYmdFrom != null">
AND C.CRDN_YMD <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if>
<if test="schCrdnYmdTo != null">
AND C.CRDN_YMD <![CDATA[<=]]> #{schCrdnYmdTo} <!-- 단속 일자 종료 -->
</if>
<if test="schVhrno != null">
AND C.VHRNO = #{schVhrno} <!-- 차량번호 -->
</if>
<if test="rtpyrNos != null">
AND P.RTPYR_NO IN ( <!-- 납부자 번호s -->
<foreach collection="rtpyrNos" item="rtpyrNo" separator=","> #{rtpyrNo} </foreach>
)
</if>
<if test="rtpyrNo != null">
AND P.RTPYR_NO = #{rtpyrNo} <!-- 납부자 번호 -->
</if>
<if test="sggCd != null">
AND C.SGG_CD = #{sggCd} <!-- 시군구 코드 -->
</if>
<if test="taskSeCd != null">
AND C.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
AND C.DEL_YN = 'N' <!-- 단속 삭제 여부 -->
</where>
<include refid="utility.orderBy" />
<include refid="utility.paging-suffix" />
</select>
<sql id="select">
SELECT LSCT_ID <!-- 임대차계약 ID -->
, CRDN_ID <!-- 단속 ID -->
, LEVY_ID <!-- 부과 ID -->
, SGG_CD <!-- 시군구 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 -->
, CRDN_DT <!-- 단속 일시 -->
, VHRNO <!-- 자동차등록번호 -->
, CRDN_STDG_NM <!-- 단속 법정동 명 -->
, CRDN_PLC <!-- 단속 장소 -->
, VLTN_ARTCL <!-- 위반 항목 -->
, RTPYR_NO <!-- 납부자 번호 -->
, RTPYR_NM <!-- 납부자 명 -->
, ENT_ID <!-- 기업 ID -->
, HIRER_ID <!-- 임차인 ID -->
, CHG_DMND_YN <!-- 변경 요청 여부 -->
, CHG_DMND_DT <!-- 변경 요청 일시 -->
, CHG_DMND_RGTR <!-- 변경 요청 등록자 -->
, CHG_DMND_IP <!-- 변경 요청 IP -->
, CHG_DMND_MDFCN_DT <!-- 변경 요청 수정 일시 -->
, CHG_DMND_MDFR <!-- 변경 요청 수정자 -->
, CHG_DMND_MDFCN_IP <!-- 변경 요청 수정 IP -->
, CHG_APRV_YN <!-- 변경 승인 여부 -->
, CHG_APRV_DT <!-- 변경 승인 일시 -->
, CHG_AUTZR <!-- 변경 승인자 -->
, CHG_APRV_RSN <!-- 변경 승인 사유 -->
, CHG_APRV_IP <!-- 변경 승인 IP -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
FROM TB_LSCT
</sql>
<select id="selectLscts" parameterType="map" resultMap="lsctRow">/* 임대차계약 대장 객체 가져오기(lsctMapper.selectLscts) */
<include refid="select" />
<where></where>
<include refid="utility.orderBy" />
</select>
<insert id="insertLsct" parameterType="map">/* 임대차계약 대장 등록(lsctMapper.insertLsct) */
INSERT INTO TB_LSCT (
LSCT_ID <!-- 임대차계약 ID -->
, CRDN_ID <!-- 단속 ID -->
, LEVY_ID <!-- 부과 ID -->
, SGG_CD <!-- 시군구 코드 -->
, TASK_SE_CD <!-- 업무 구분 코드 -->
, CRDN_DT <!-- 단속 일시 -->
, VHRNO <!-- 자동차등록번호 -->
, CRDN_STDG_NM <!-- 단속 법정동 명 -->
, CRDN_PLC <!-- 단속 장소 -->
, VLTN_ARTCL <!-- 위반 항목 -->
, RTPYR_NO <!-- 납부자 번호 -->
, RTPYR_NM <!-- 납부자 명 -->
, ENT_ID <!-- 기업 ID -->
, HIRER_ID <!-- 임차인 ID -->
, CHG_DMND_YN <!-- 변경 요청 여부 -->
, CHG_DMND_DT <!-- 변경 요청 일시 -->
, CHG_DMND_RGTR <!-- 변경 요청 등록자 -->
, CHG_DMND_IP <!-- 변경 요청 IP -->
, CHG_DMND_MDFCN_DT <!-- 변경 요청 수정 일시 -->
, CHG_DMND_MDFR <!-- 변경 요청 수정자 -->
, CHG_DMND_MDFCN_IP <!-- 변경 요청 수정 IP -->
, CHG_APRV_YN <!-- 변경 승인 여부 -->
, CHG_APRV_DT <!-- 변경 승인 일시 -->
, CHG_AUTZR <!-- 변경 승인자 -->
, CHG_APRV_RSN <!-- 변경 승인 사유 -->
, CHG_APRV_IP <!-- 변경 승인 IP -->
, DEL_YN <!-- 삭제 여부 -->
, REG_DT <!-- 등록 일시 -->
, RGTR <!-- 등록자 -->
, MDFCN_DT <!-- 수정 일시 -->
, MDFR <!-- 수정자 -->
, DEL_DT <!-- 삭제 일시 -->
, DLTR <!-- 삭제자 -->
, DEL_RSN <!-- 삭제 사유 -->
) VALUES (
#{lsct.lsctId} <!-- 임대차계약 ID -->
, #{lsct.crdnId} <!-- 단속 ID -->
, #{lsct.levyId} <!-- 부과 ID -->
, #{lsct.sggCd} <!-- 시군구 코드 -->
, #{lsct.taskSeCd} <!-- 업무 구분 코드 -->
, #{lsct.crdnDt} <!-- 단속 일시 -->
, #{lsct.vhrno} <!-- 자동차등록번호 -->
, #{lsct.crdnStdgNm} <!-- 단속 법정동 명 -->
, #{lsct.crdnPlc} <!-- 단속 장소 -->
, #{lsct.vltnArtcl} <!-- 위반 항목 -->
, #{lsct.rtpyrNo} <!-- 납부자 번호 -->
, #{lsct.rtpyrNm} <!-- 납부자 명 -->
, #{lsct.entId} <!-- 기업 ID -->
, #{lsct.hirerId} <!-- 임차인 ID -->
, #{lsct.chgDmndYn} <!-- 변경 요청 여부 -->
, #{lsct.chgDmndDt} <!-- 변경 요청 일시 -->
, #{lsct.chgDmndRgtr} <!-- 변경 요청 등록자 -->
, #{lsct.chgDmndIp} <!-- 변경 요청 IP -->
, #{lsct.chgDmndMdfcnDt} <!-- 변경 요청 수정 일시 -->
, #{lsct.chgDmndMdfr} <!-- 변경 요청 수정자 -->
, #{lsct.chgDmndMdfcnIp} <!-- 변경 요청 수정 IP -->
, #{lsct.chgAprvYn} <!-- 변경 승인 여부 -->
, #{lsct.chgAprvDt} <!-- 변경 승인 일시 -->
, #{lsct.chgAutzr} <!-- 변경 승인자 -->
, #{lsct.chgAprvRsn} <!-- 변경 승인 사유 -->
, #{lsct.chgAprvIp} <!-- 변경 승인 IP -->
, #{lsct.delYn} <!-- 삭제 여부 -->
, <include refid="utility.now" /> <!-- 등록 일시 -->
, #{currentUser.id} <!-- 등록자 -->
, <include refid="utility.now" /> <!-- 수정 일시 -->
, #{currentUser.id} <!-- 수정자 -->
, #{lsct.removedAt} <!-- 삭제 일시 -->
, #{lsct.removedBy} <!-- 삭제자 -->
, #{lsct.delRsn} <!-- 삭제 사유 -->
)
</insert>
<update id="updateLsct" parameterType="map">/* 임대차계약 대장 수정(lsctMapper.updateLsct) */
UPDATE TB_LSCT
SET CRDN_ID = #{lsct.crdnId} <!-- 단속 ID -->
, LEVY_ID = #{lsct.levyId} <!-- 부과 ID -->
, SGG_CD = #{lsct.sggCd} <!-- 시군구 코드 -->
, TASK_SE_CD = #{lsct.taskSeCd} <!-- 업무 구분 코드 -->
, CRDN_DT = #{lsct.crdnDt} <!-- 단속 일시 -->
, VHRNO = #{lsct.vhrno} <!-- 자동차등록번호 -->
, CRDN_STDG_NM = #{lsct.crdnStdgNm} <!-- 단속 법정동 명 -->
, CRDN_PLC = #{lsct.crdnPlc} <!-- 단속 장소 -->
, VLTN_ARTCL = #{lsct.vltnArtcl} <!-- 위반 항목 -->
, RTPYR_NO = #{lsct.rtpyrNo} <!-- 납부자 번호 -->
, RTPYR_NM = #{lsct.rtpyrNm} <!-- 납부자 명 -->
, ENT_ID = #{lsct.entId} <!-- 기업 ID -->
, HIRER_ID = #{lsct.hirerId} <!-- 임차인 ID -->
, CHG_DMND_YN = #{lsct.chgDmndYn} <!-- 변경 요청 여부 -->
, CHG_DMND_DT = #{lsct.chgDmndDt} <!-- 변경 요청 일시 -->
, CHG_DMND_RGTR = #{lsct.chgDmndRgtr} <!-- 변경 요청 등록자 -->
, CHG_DMND_IP = #{lsct.chgDmndIp} <!-- 변경 요청 IP -->
, CHG_DMND_MDFCN_DT = #{lsct.chgDmndMdfcnDt} <!-- 변경 요청 수정 일시 -->
, CHG_DMND_MDFR = #{lsct.chgDmndMdfr} <!-- 변경 요청 수정자 -->
, CHG_DMND_MDFCN_IP = #{lsct.chgDmndMdfcnIp} <!-- 변경 요청 수정 IP -->
, CHG_APRV_YN = #{lsct.chgAprvYn} <!-- 변경 승인 여부 -->
, CHG_APRV_DT = #{lsct.chgAprvDt} <!-- 변경 승인 일시 -->
, CHG_AUTZR = #{lsct.chgAutzr} <!-- 변경 승인자 -->
, CHG_APRV_RSN = #{lsct.chgAprvRsn} <!-- 변경 승인 사유 -->
, CHG_APRV_IP = #{lsct.chgAprvIp} <!-- 변경 승인 IP -->
, DEL_YN = #{lsct.delYn} <!-- 삭제 여부 -->
, MDFCN_DT = <include refid="utility.now" /> <!-- 수정 일시 -->
, MDFR = #{currentUser.id} <!-- 수정자 -->
, DEL_DT = #{lsct.removedAt} <!-- 삭제 일시 -->
, DLTR = #{lsct.removedBy} <!-- 삭제자 -->
, DEL_RSN = #{lsct.delRsn} <!-- 삭제 사유 -->
WHERE LSCT_ID = #{lsct.lsctId}
</update>
<update id="deleteLsct" parameterType="map">/* 임대차계약 대장 삭제(lsctMapper.deleteLsct) */
UPDATE TB_LSCT
SET USE_YN = 'N'
, MDFCN_DT =<include refid="utility.now" />
, MDFR = #{currentUser.id}
WHERE LSCT_ID = #{lsct.lsctId}
</update>
</mapper>
Loading…
Cancel
Save