1. 사전통보된 자료만 조회되도록 수정

2. 수기등록시 법인사업자외국인추가
3. 승인요청시 주소정보가 없으면 자동으로 임대기업주소입력되도록 수정
main
이범준 1 month ago
parent 8a9dd25aaf
commit 4e0d242e7b

@ -11,6 +11,8 @@ public interface ApplMapper extends AbstractMapper {
int countRequestedLsctAprv(LsctAprv lsctAprv);
int updateInProgress(Crdn crdn);
void lockMmCode(Crdn crdn);
int countLockMmCode(Crdn lockQ);
}

@ -1,7 +1,6 @@
package cokr.xit.fims.appl.service.bean;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.annotation.Resource;
@ -9,7 +8,6 @@ import org.springframework.stereotype.Component;
import cokr.xit.base.file.service.bean.FileBean;
import cokr.xit.fims.appl.dao.ApplMapper;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.crdn.Crdn;
import cokr.xit.fims.levy.dao.LevyMapper;
import cokr.xit.fims.nxrp.dao.NisIndivMapper;
@ -21,7 +19,6 @@ import cokr.xit.fims.rent.dao.LsctMapper;
import cokr.xit.fims.rent.dao.LsctMpngMapper;
import cokr.xit.fims.rent.dao.RentEntMapper;
import cokr.xit.foundation.component.AbstractBean;
import cokr.xit.foundation.data.DataObject;
@Component("applBean")
public class ApplBean extends AbstractBean {
@ -69,142 +66,10 @@ public class ApplBean extends AbstractBean {
public String createLsctAprv(LsctAprv lsctAprv) {
// 변수 선언
int rtnNocs = -1; // 처리 결과 건수
String rtnMsg = ""; // 처리 결과 메시지
String sggCd = ifEmpty(lsctAprv.getSggCd(), ()->"");
String taskSeCd = ifEmpty(lsctAprv.getTaskSeCd(), ()->"");
if (sggCd.equals("")) {
rtnMsg = "[F] 시군구 코드 파라미터가 없습니다.(sggCd)";
return rtnMsg;
}
if (taskSeCd.equals("")) {
rtnMsg = "[F] 업무 구분 코드 파라미터가 없습니다.(taskSeCd)";
return rtnMsg;
}
List<DataObject> sggTasks = nisIndivMapper.getNxrpRentSggTask("");
for(DataObject sggTask : sggTasks) {
if(sggTask.string("SGG_CD").equals(sggCd) && sggTask.string("TASK_SE_CD").equals(taskSeCd)) {
lsctAprv.setLsctLinkTblNm("TB_LSCT_APRV_"+sggCd+"_"+taskSeCd);
}
}
if(ifEmpty(lsctAprv.getLsctLinkTblNm(), ()->"").equals("")) {
rtnMsg = "[F] 작업 중 연계시스템이 확인되지 않았습니다.";
return rtnMsg;
}
String rentEntNm = ifEmpty(lsctAprv.getRentEntNm(), ()->"");
if (rentEntNm.equals("")) {
rtnMsg = "[F] 임대기업명 파라미터가 없습니다.(rentEntNm)";
return rtnMsg;
}
String rentEntRegNo = ifEmpty(lsctAprv.getRentEntRegNo(), ()->"");
rentEntRegNo = rentEntRegNo.replace("-", "");
if (rentEntRegNo.equals("")) {
rtnMsg = "[F] 임대기업등록번호 파라미터가 없습니다.(rentEntRegNo)";
return rtnMsg;
}
String vhrno = ifEmpty(lsctAprv.getVhrno(), ()->"");
if (vhrno.equals("")) {
rtnMsg = "[F] 차량번호 파라미터가 없습니다.(vhrno)";
return rtnMsg;
}
String hirerNm = ifEmpty(lsctAprv.getHirerNm(), ()->"");
if (hirerNm.equals("")) {
rtnMsg = "[F] 임차인명 파라미터가 없습니다.(hirerNm)";
return rtnMsg;
}
String omJno = ifEmpty(lsctAprv.getOmJno(), ()->"");
omJno = omJno.replace("-", "");
omJno = omJno.replace(" ", "");
if (omJno.equals("")) {
rtnMsg = "[F] 면허번호 파라미터가 없습니다.(omJno)";
return rtnMsg;
}
if (!CmmnUtil.isNumeric(omJno)) {
rtnMsg = "[F] 면허번호는 숫자만 입력 가능합니다.(omJno)";
return rtnMsg;
}
if (omJno.length() != 12) {
rtnMsg = "[F] 면허번호 자릿수는 12자리이여야 합니다.(omJno)";
return rtnMsg;
}
String crdnYmd = ifEmpty(lsctAprv.getCrdnYmd(), ()->"");
crdnYmd = crdnYmd.replace("-","");
if (crdnYmd.equals("")) {
rtnMsg = "[F] 단속일자 파라미터가 없습니다.(crdnYmd)";
return rtnMsg;
}
SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyyMMdd");
sdf_ymd.setLenient(false);
boolean ymdErr = false;
try {
sdf_ymd.parse(crdnYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 단속일자가 년월일 형식이 아닙니다.(crdnYmd)";
return rtnMsg;
}
String crdnTm = ifEmpty(lsctAprv.getCrdnTm(), ()->"");
crdnTm = crdnTm.replace(":","");
if (crdnTm.equals("")) {
rtnMsg = "[F] 단속시간 파라미터가 없습니다.(crdnTm)";
return rtnMsg;
}
SimpleDateFormat sdf_hms = new SimpleDateFormat("HHmmss");
sdf_hms.setLenient(false);
boolean hmsErr = false;
try {
sdf_hms.parse(crdnTm);
} catch (Exception e) {
hmsErr = true;
}
if (hmsErr) {
rtnMsg = "[F] 단속시간이 시분초 형식이 아닙니다.(crdnTm)";
return rtnMsg;
}
String ctrtBgngYmd = ifEmpty(lsctAprv.getCtrtBgngYmd(), ()->"");
ctrtBgngYmd = ctrtBgngYmd.replace("-","");
if (!ctrtBgngYmd.equals("")) {
try {
sdf_ymd.parse(ctrtBgngYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 계약시작일자가 년월일 형식이 아닙니다.(ctrtBgngYmd)";
return rtnMsg;
}
}
String ctrtEndYmd = ifEmpty(lsctAprv.getCtrtEndYmd(), ()->"");
ctrtEndYmd = ctrtEndYmd.replace("-","");
if (!ctrtEndYmd.equals("")) {
try {
sdf_ymd.parse(ctrtEndYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 계약종료일자가 년월일 형식이 아닙니다.(ctrtEndYmd)";
return rtnMsg;
}
}
lsctAprv.setHirerSeCd("01"); // 임차인 구분 코드
lsctAprv.setAtchFileCnt(0); // 첨부 파일 수
lsctAprv.setLsctMpngId("9999999999");
@ -229,8 +94,8 @@ public class ApplBean extends AbstractBean {
crdn.setMmCode(lsctAprv.getMmCode());
crdn.setSggCd(lsctAprv.getSggCd());
crdn.setTaskSeCd(lsctAprv.getTaskSeCd());
applMapper.updateInProgress(crdn);
applMapper.lockMmCode(crdn);
return "[S] 임대차계약 등록 작업이 정상 처리 되었습니다.";
}

@ -7,6 +7,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.function.Consumer;
@ -22,8 +23,11 @@ import org.springframework.web.servlet.ModelAndView;
import cokr.xit.applib.AppCmmnUtil;
import cokr.xit.fims.appl.service.bean.ApplBean;
import cokr.xit.fims.cmmn.CmmnUtil;
import cokr.xit.fims.nxrp.dao.NisIndivMapper;
import cokr.xit.fims.rent.LsctAprv;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.dao.LsctMpngMapper;
import cokr.xit.foundation.Downloadable;
import cokr.xit.foundation.data.DataObject;
import cokr.xit.foundation.web.AbstractController;
@ -40,6 +44,9 @@ public class ApplController extends AbstractController {
@Resource(name = "nisIndivMapper")
private NisIndivMapper nisIndivMapper;
@Resource(name = "lsctMpngMapper")
private LsctMpngMapper lsctMpngMapper;
/** .
* @return
* @throws Exception
@ -113,7 +120,6 @@ public class ApplController extends AbstractController {
lsctAprv.setChgDmndIp(remoteAddr); // 변경 요청 IP
String sggCd = ifEmpty(lsctAprv.getSggCd(), ()->"");
String taskSeCd = ifEmpty(lsctAprv.getTaskSeCd(), ()->"");
if (sggCd.equals("")) {
@ -161,6 +167,19 @@ public class ApplController extends AbstractController {
.addObject("rtnMsg", rtnMsg);
}
String hirerSeCd = lsctAprv.getHirerSeCd();
if(hirerSeCd == null || hirerSeCd.equals("")) {
lsctAprv.setHirerSeCd("01"); // 임차인 구분 코드
}
hirerSeCd = lsctAprv.getHirerSeCd();
if(!hirerSeCd.equals("01") && !hirerSeCd.equals("02") && !hirerSeCd.equals("03") && !hirerSeCd.equals("04")) {
rtnMsg = "[F] 임차인 구분 코드 오류";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String nxrpCrdnLinkYn = lsctAprv.getNxrpCrdnLinkYn();
if(nxrpCrdnLinkYn == null || nxrpCrdnLinkYn.equals("")) {
lsctAprv.setNxrpCrdnLinkYn("Y");
@ -174,6 +193,214 @@ public class ApplController extends AbstractController {
.addObject("rtnMsg", rtnMsg);
}
String rentEntNm = ifEmpty(lsctAprv.getRentEntNm(), ()->"");
if (rentEntNm.equals("")) {
rtnMsg = "[F] 임대기업명 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String rentEntRegNo = ifEmpty(lsctAprv.getRentEntRegNo(), ()->"");
rentEntRegNo = rentEntRegNo.replace("-", "");
if (rentEntRegNo.equals("")) {
rtnMsg = "[F] 임대기업등록번호 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String vhrno = ifEmpty(lsctAprv.getVhrno(), ()->"");
if (vhrno.equals("")) {
rtnMsg = "[F] 차량번호 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String crdnYmd = ifEmpty(lsctAprv.getCrdnYmd(), ()->"");
crdnYmd = crdnYmd.replace("-","");
if (crdnYmd.equals("")) {
rtnMsg = "[F] 단속일자 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
SimpleDateFormat sdf_ymd = new SimpleDateFormat("yyyyMMdd");
sdf_ymd.setLenient(false);
boolean ymdErr = false;
try {
sdf_ymd.parse(crdnYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 단속일자가 년월일 형식이 아닙니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String crdnTm = ifEmpty(lsctAprv.getCrdnTm(), ()->"");
crdnTm = crdnTm.replace(":","");
if (crdnTm.equals("")) {
rtnMsg = "[F] 단속시간 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
SimpleDateFormat sdf_hms = new SimpleDateFormat("HHmmss");
sdf_hms.setLenient(false);
boolean hmsErr = false;
try {
sdf_hms.parse(crdnTm);
} catch (Exception e) {
hmsErr = true;
}
if (hmsErr) {
rtnMsg = "[F] 단속시간이 시분초 형식이 아닙니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String hirerNm = ifEmpty(lsctAprv.getHirerNm(), ()->"");
if (hirerNm.equals("")) {
rtnMsg = "[F] 임차인명 파라미터가 없습니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
String omJno = ifEmpty(lsctAprv.getOmJno(), ()->"");
omJno = omJno.replace("-", "");
omJno = omJno.replace(" ", "");
if (omJno.equals("")) {
if(hirerSeCd.equals("02")) {
rtnMsg = "[F] 법인번호 파라미터가 없습니다.";
} else if(hirerSeCd.equals("03")) {
rtnMsg = "[F] 사업자번호 파라미터가 없습니다.";
} else {
rtnMsg = "[F] 면허번호 파라미터가 없습니다.";
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
if (!CmmnUtil.isNumeric(omJno)) {
if(hirerSeCd.equals("02")) {
rtnMsg = "[F] 법인번호는 숫자만 입력 가능합니다.";
} else if(hirerSeCd.equals("03")) {
rtnMsg = "[F] 사업자번호는 숫자만 입력 가능합니다.";
} else {
rtnMsg = "[F] 면허번호는 숫자만 입력 가능합니다.";
}
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
if(hirerSeCd.equals("01")) {
if (omJno.length() != 12) {
rtnMsg = "[F] 면허번호 자릿수는 12자리이여야 합니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
} else if(hirerSeCd.equals("02")) {
if (omJno.length() != 13) {
rtnMsg = "[F] 법인번호 자릿수는 13자리이여야 합니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
} else if(hirerSeCd.equals("03")) {
if (omJno.length() != 10) {
rtnMsg = "[F] 사업자번호 자릿수는 10자리이여야 합니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
} else if(hirerSeCd.equals("04")) {
if (omJno.length() < 6 || omJno.length() > 18) {
rtnMsg = "[F] 외국인 면허번호 자릿수는 6~18자리이여야 합니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
}
lsctAprv.setOmJno(omJno);
String ctrtBgngYmd = ifEmpty(lsctAprv.getCtrtBgngYmd(), ()->"");
ctrtBgngYmd = ctrtBgngYmd.replace("-","");
if (!ctrtBgngYmd.equals("")) {
try {
sdf_ymd.parse(ctrtBgngYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 계약시작일자가 년월일 형식이 아닙니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
}
String ctrtEndYmd = ifEmpty(lsctAprv.getCtrtEndYmd(), ()->"");
ctrtEndYmd = ctrtEndYmd.replace("-","");
if (!ctrtEndYmd.equals("")) {
try {
sdf_ymd.parse(ctrtEndYmd);
} catch (Exception e) {
ymdErr = true;
}
if (ymdErr) {
rtnMsg = "[F] 계약종료일자가 년월일 형식이 아닙니다.";
return new ModelAndView("jsonView")
.addObject("saved", saved)
.addObject("rtnMsg", rtnMsg);
}
}
RentQuery mmQuery = new RentQuery();
mmQuery.setSggCd(sggCd);
mmQuery.setTaskSeCd(taskSeCd);
mmQuery.setMmCode(mmCode);
mmQuery.setOrderBy("MM_DATE, MM_TIME"); // 정렬
List<DataObject> mainList = lsctMpngMapper.selectFfnlgMainList(mmQuery);
if(mainList != null && !mainList.isEmpty()) {
DataObject mmInfo = mainList.get(0);
lsctAprv.setHirerZip(mmInfo.string("OM_ZIP"));
lsctAprv.setHirerAddr(mmInfo.string("OM_JUSO"));
lsctAprv.setHirerDtlAddr(mmInfo.string("OM_BUNJI"));
lsctAprv.setRoadNmCd(mmInfo.string("OM_DORO_CODE"));
lsctAprv.setUdgdSeCd(mmInfo.string("OM_BLD_POSITION"));
lsctAprv.setBmno(mmInfo.string("OM_BLD_NO1"));
lsctAprv.setBsno(mmInfo.string("OM_BLD_NO2"));
lsctAprv.setBldgMngNo(mmInfo.string("OM_BLD_ADMNO"));
lsctAprv.setStdgCd(mmInfo.string("OM_BDCODE"));
}
if("Y".equals(lsctAprv.getUdgdSeCd())) {
lsctAprv.setUdgdSeCd("1");
} else if("N".equals(lsctAprv.getUdgdSeCd())) {
lsctAprv.setUdgdSeCd("0");
}
if("".equals(lsctAprv.getBmno())) {
lsctAprv.setBmno(null);
}
if("".equals(lsctAprv.getBsno())) {
lsctAprv.setBsno(null);
}
rtnMsg = applBean.createLsctAprv(lsctAprv); // 등록

@ -28,7 +28,6 @@ import cokr.xit.fims.nxrp.Hirer;
import cokr.xit.fims.nxrp.NisIndivQuery;
import cokr.xit.fims.nxrp.dao.NisIndivMapper;
import cokr.xit.fims.nxrp.support.OnlyTxtMaker;
import cokr.xit.fims.rent.RentQuery;
import cokr.xit.fims.rent.dao.LsctAprvMapper;
import cokr.xit.fims.rent.dao.LsctMpngMapper;
import cokr.xit.foundation.component.AbstractBean;
@ -399,35 +398,6 @@ public class NisIndivBean extends AbstractBean {
String table = "TB_LSCT_APRV_"+driverInfo.getSggCd()+"_"+driverInfo.getTaskSeCd();
driverInfo.setLsctLinkTblNm(table);
if(ifEmpty(driverInfo.getAddr(), ()->"").equals("")) {
RentQuery query = new RentQuery();
query.setTaskSeCd(driverInfo.getTaskSeCd());
query.setMmCode(driverInfo.getMmCode());
DataObject addrInfo = lsctMpngMapper.selectIsCrdnInfo(query);
driverInfo.setZip(addrInfo.string("ZIP"));
driverInfo.setAddr(addrInfo.string("ADDR"));
driverInfo.setDaddr(addrInfo.string("DTL_ADDR"));
driverInfo.setRoadNmCd(addrInfo.string("ROAD_NM_CD"));
driverInfo.setAddrUdgdYn(addrInfo.string("UDGD_SE_CD"));
driverInfo.setBmno(addrInfo.string("BMNO"));
driverInfo.setBsno(addrInfo.string("BSNO"));
driverInfo.setStdgCd(addrInfo.string("STDG_CD"));
if(driverInfo.getAddrUdgdYn().equals("Y")) {
driverInfo.setAddrUdgdYn("1");
} else if(driverInfo.getAddrUdgdYn().equals("N")) {
driverInfo.setAddrUdgdYn("0");
}
if("".equals(driverInfo.getBmno())) {
driverInfo.setBmno(null);
}
if("".equals(driverInfo.getBsno())) {
driverInfo.setBsno(null);
}
}
return lsctAprvMapper.updateDriverInfo(driverInfo) == 1 ? true : false;
}

@ -115,402 +115,415 @@ public class LsctMpngBean extends AbstractBean {
int rtnNocs = -1;
int mainListSize = mainList.size();
if (mainListSize > 0) {
for (int iLoop = 0; iLoop < mainListSize; iLoop++) {
DataObject row = mainList.get(iLoop);
// 단속 ID로 단속(TB_CRDN) 정보 조회
RentQuery rentQuery = new RentQuery();
rentQuery.setMmCode(row.string("MM_CODE"));
rentQuery.setTaskSeCd(row.string("MM_TASKGB"));
DataObject isCrdnInfo = lsctMpngMapper.selectIsCrdnInfo(rentQuery);
Crdn crdn = new Crdn(); // 단속 정보
Payer payer = new Payer(); // 납부자 정보
// 단속 정보가 존재하지 않는다면.. 해당 자료 insert
if (isCrdnInfo == null) {
// 납부자 정보
payer.setSggCd(row.string("OM_SGGCODE")); // 시군구 코드
payer.setRtpyrInptSeCd("07"); // 납부자 입력 구분 코드 FIM015
switch (row.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(row.string("OM_JNO")); // 납부자 번호
payer.setRtpyrNm(row.string("OM_NAME")); // 납부자명
payer.setRtpyrBrdt(row.string("OM_NO1")); // 납부자 생년월일
// 납부자 주소 정보
payer.setAddrInptSeCd("07"); // 주소 입력 구분 코드 FIM087
if (!row.string("OM_DORO_CODE").equals("")) { // 주소 구분 코드
payer.setAddrSeCd("02");
}
payer.setZip(row.string("OM_ZIP")); // 우편번호
payer.setAddr(row.string("OM_JUSO")); // 주소
payer.setDtlAddr(row.string("OM_BUNJI")); // 상세 주소
payer.setRoadNmCd(row.string("OM_DORO_CODE")); // 도로명 코드
payer.setUdgdSeCd(row.string("OM_BLD_POSITION")); // 지하 구분 코드
payer.setBmno(row.number("OM_BLD_NO1").intValue()); // 건물본번
payer.setBsno(row.number("OM_BLD_NO2").intValue()); // 건물부번
payer.setBldgMngNo(row.string("OM_BLD_ADMNO")); // 건물 관리 번호
payer.setStdgCd(row.string("OM_BDCODE")); // 법정동 코드
payer.setWholAddr(row.string("OM_JUSO") + ", " + row.string("OM_BUNJI")); // 전체 주소
// 납부자 주소 정보 등록
Payer result = payerBean.create(payer) ? payer : payerBean.getPayerAddrInfo(payer);
// 단속 정보
crdn.setSggCd(row.string("MM_SGGCODE")); // 시군구 코드
crdn.setTaskSeCd(row.string("MM_TASKGB")); // 업무 구분 코드
crdn.setCrdnRegSeCd(String.format("%02d", row.number("MM_DLGB").intValue())); // 단속 등록 구분 코드
crdn.setCrdnInptSeCd(String.format("%02d", row.number("MM_INGB").intValue())); // 단속 입력 구분 코드
// 민원 정보는 원본 시스템에서 확인하게끔 null로 입력한다.
crdn.setCvlcptLinkYn("N"); // 민원 연계 여부
crdn.setCvlcptLinkTblNm(null); // 민원 연계 테이블 명
crdn.setCvlcptLinkId(null); // 민원 연계 ID
crdn.setRtpyrId(result.getRtpyrId()); // 납부자 ID
crdn.setAddrSn(result.getAddrSn()); // 주소 일련번호
crdn.setCrdnYmd(row.string("MM_DATE")); // 단속 일자
crdn.setCrdnTm(row.string("MM_TIME")); // 단속 시간
crdn.setVhrno(row.string("MM_CARNO")); // 자동차등록번호
crdn.setCrdnStdgNm(row.string("CRDN_STDG_NM")); // 단속 법정동 명
crdn.setCrdnRoadNm(null); // 단속 도로 명
crdn.setCrdnPlc(row.string("MM_SGPOS")); // 단속 장소
crdn.setVltnId(row.string("VLTN_ID")); // 위반 ID
crdn.setGpsX(row.string("MM_GPS_X")); // GPS_X
crdn.setGpsY(row.string("MM_GPS_Y")); // GPS_Y
crdn.setAtchFileCnt(row.number("MM_IMAGECNT").intValue()); // 첨부 파일 수
crdn.setVin(row.string("MM_VHMNO")); // 차대번호
crdn.setVhclNm(row.string("MM_CARNAME")); // 차량 명
crdn.setVhclColr(row.string("MM_CARCOLOR")); // 차량 색상
crdn.setFfnlgCrdnAmt(row.number("MM_KEUM2").intValue()); // 과태료 단속 금액
crdn.setFfnlgRdcrt(null); // 과태료 감면율
crdn.setFfnlgAmt(row.number("MM_KEUM2").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 과태료 금액
crdn.setAdvntceBgngYmd(row.string("MM_SDATE")); // 사전통지 시작 일자
crdn.setAdvntceDudtYmd(row.string("MM_EDATE")); // 사전통지 납기 일자
crdn.setAdvntceAmt(row.number("MM_KEUM1").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 사전통지 금액
if (row.string("MM_RECALL").equals("1")) { // 의견 제출 여부
crdn.setOpnnSbmsnYn("Y");
} else {
crdn.setOpnnSbmsnYn("N");
}
crdn.setEtcCn(row.string("MM_ETC")); // 기타 내용
crdn.setCrdnSttsCd(row.string("MM_STATE")); // 단속 상태 코드
crdn.setCrdnSttsChgDt(row.string("MM_STATE_DT")); // 단속 상태 변경 일시
crdn.setAdtnAmt(row.number("MM_ADD_KEUM").intValue()); // 가산 금액
crdn.setMinusAmt(row.number("MM_MINUS_KEUM").intValue()); // 감경 금액
crdn.setRcvmtAmt(row.number("MM_SUKEUM").intValue()); // 수납 금액
crdn.setBfrCrdnId(row.string("MM_PRECODE")); // 이전 단속 ID
crdn.setNxrpCrdnLinkYn(row.string("NIS_LINK_YN")); // 세외수입 단속 연계 여부
crdn.setNxrpCrdnLinkUserId(null); // 세외수입 단속 연계 사용자 ID
crdn.setNxrpCrdnLinkDt(null); // 세외수입 단속 연계 일시
if (row.string("MC_LVY_KEY").length() == 11) { // 세외수입 대장 키
crdn.setNxrpAcbKey(row.string("MC_LVY_KEY"));
} else {
crdn.setNxrpAcbKey(null);
}
crdn.setMmCode(row.string("MM_CODE")); // 메인코드 MM_CODE
crdn.setDelYn("N"); // 삭제 여부
crdn.setCreatedAt(row.string("MM_INDT"));
crdn.setCreatedBy(row.string("MM_INUSER"));
// 단속 부가 정보
crdn.setCrdnSeCd(null); // 단속 구분 코드
crdn.setTeamId(null); // 조 ID
if (row.string("MM_PRECODE").equals("1")) { // 단속 특별구역 코드 FIM007
crdn.setCrdnSpareaCd("01");
} else {
crdn.setCrdnSpareaCd("00");
}
crdn.setCrdnBgngTm(row.string("MM_TIME")); // 단속 시작 시각
crdn.setCrdnEndTm(row.string("MM_TIME2")); // 단속 종료 시각
crdn.setCrdnSn(row.string("MM_SNO")); // 단속 일련번호
crdn.setMoscX(null); // 모자이크 X
crdn.setMoscY(null); // 모자이크 Y
if (row.string("MM_TRAC").equals("1")) { // 견인 여부
crdn.setTowngYn("Y");
} else {
crdn.setTowngYn("N");
}
crdn.setUseFuelCd(row.string("MM_CARFUEL")); // 사용 연료 코드 LVS005
if (!row.string("MM_CARKIND").equals("")) {
crdn.setFfnlgCarmdlCd(String.format("%02d", row.number("MM_CARKIND").intValue())); // 과태료 차종 코드 FIM009
}
crdn.setPrkPsbltyRsltCd(row.string("MM_CARCHECK")); // 주차 가능 결과 코드
crdn.setVltnNmtm(row.string("MM_VIORCNT")); // 위반 횟수
crdn.setOvtmYn("N"); // 시간외 여부
crdn.setOvtmPrttnYn("N"); // 시간외 분할 여부
// 단속 대장 Insert
rtnNocs = lsctMpngMapper.insertMainToCrdn(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
if (mainListSize <= 0) {
return "[S] 등록 및 수정 작업이 정상 처리 되었습니다.";
}
// 단속 부가 대장 Insert
rtnNocs = lsctMpngMapper.insertMainToCrdnAdi(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 부가 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
/////////////////////////////////////////////////
//FTP 서버 정보 조회
DataObject main = row;
DataObject ftpQuery = new DataObject()
.set("sggCd", main.string("MM_SGGCODE"))
.set("taskSeCd", main.string("MM_TASKGB"));
DataObject storageServer = finSysFtpMapper.selectFtpInfo(ftpQuery);
//FTP 서버 접속
RemoteSystemInfo rs = new RemoteSystemInfo();
rs.setId(storageServer.string("REMOTE_ID"));
rs.setIp(storageServer.string("REMOTE_IP"));
rs.setPort(storageServer.string("REMOTE_PORT"));
rs.setPw(storageServer.string("REMOTE_PASSWORD"));
rs.setOsType(storageServer.string("REMOTE_OS"));
rs.setWorkPath(storageServer.string("REMOTE_WORK_PATH"));
SFTPUtil sftpUtil = new SFTPUtil();
sftpUtil.connect(rs);
boolean fileSearchEnd = false;
int i = 1;
while(!fileSearchEnd) {
///////////////////////////////////////////////
// 단속ID로 단속 파일 다운로드
String i_char = "";
switch (i) {
case 1:i_char="A";break;
case 2:i_char="B";break;
case 3:i_char="C";break;
case 4:i_char="D";break;
}
String remoteFileName = main.string("MM_CODE")+i_char+".JPG";
String remoteFilePath = storageServer.string("REMOTE_WORK_PATH")+remoteFileName;
byte[] bytesObj = sftpUtil.getBytesObj(remoteFilePath);
if(bytesObj == null) {
fileSearchEnd = true;
continue;
}
/////////////////////////////////////////////
// 단속 파일 등록
Relation rel = new FileInfo.Relation().setInfoType(Crdn.INF_TYPE).setInfoKey(crdn.getCrdnId());
String originalFileName = remoteFileName;
DataHolder dataHolder = new FileInfo.DataHolder(rel, originalFileName, bytesObj);
List<FileInfo> fileInfoList = new FileInfoFactory().createFileInfos(List.of(dataHolder));
fileBean.create(fileInfoList);
i++;
if(i >= 5) {
fileSearchEnd = true;
}
}
/////////////////////////////
//sftp연결종료
sftpUtil.disconnect();
} else { // 단속 정보가 존재한다면.. 해당 자료 update
// 납부자 정보
payer.setSggCd(row.string("OM_SGGCODE")); // 시군구 코드
payer.setRtpyrInptSeCd("07"); // 납부자 입력 구분 코드 FIM015
switch (row.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(row.string("OM_JNO")); // 납부자 번호
payer.setRtpyrNm(row.string("OM_NAME")); // 납부자명
payer.setRtpyrBrdt(row.string("OM_NO1")); // 납부자 생년월일
// 납부자 주소 정보
payer.setAddrInptSeCd("07"); // 주소 입력 구분 코드 FIM087
if (!row.string("OM_DORO_CODE").equals("")) { // 주소 구분 코드
payer.setAddrSeCd("02");
}
payer.setZip(row.string("OM_ZIP")); // 우편번호
payer.setAddr(row.string("OM_JUSO")); // 주소
payer.setDtlAddr(row.string("OM_BUNJI")); // 상세 주소
payer.setRoadNmCd(row.string("OM_DORO_CODE")); // 도로명 코드
payer.setUdgdSeCd(row.string("OM_BLD_POSITION")); // 지하 구분 코드
payer.setBmno(row.number("OM_BLD_NO1").intValue()); // 건물본번
payer.setBsno(row.number("OM_BLD_NO2").intValue()); // 건물부번
payer.setBldgMngNo(row.string("OM_BLD_ADMNO")); // 건물 관리 번호
payer.setStdgCd(row.string("OM_BDCODE")); // 법정동 코드
payer.setWholAddr(row.string("OM_JUSO") + ", " + row.string("OM_BUNJI")); // 전체 주소
// 납부자 주소 정보 등록
Payer result = payerBean.create(payer) ? payer : payerBean.getPayerAddrInfo(payer);
// 단속 정보
crdn.setCrdnId(isCrdnInfo.string("CRDN_ID")); // CRDN_ID
crdn.setSggCd(isCrdnInfo.string("SGG_CD")); // 시군구 코드
crdn.setTaskSeCd(isCrdnInfo.string("TASK_SE_CD")); // 업무 구분 코드
crdn.setMmCode(isCrdnInfo.string("MM_CODE")); // MM_CODE
crdn.setCrdnRegSeCd(String.format("%02d", row.number("MM_DLGB").intValue())); // 단속 등록 구분 코드
crdn.setCrdnInptSeCd(String.format("%02d", row.number("MM_INGB").intValue())); // 단속 입력 구분 코드
crdn.setRtpyrId(result.getRtpyrId()); // 납부자 ID
crdn.setAddrSn(result.getAddrSn()); // 주소 일련번호
crdn.setCrdnYmd(row.string("MM_DATE")); // 단속 일자
crdn.setCrdnTm(row.string("MM_TIME")); // 단속 시간
crdn.setVhrno(row.string("MM_CARNO")); // 자동차등록번호
crdn.setCrdnStdgNm(row.string("CRDN_STDG_NM")); // 단속 법정동 명
crdn.setCrdnPlc(row.string("MM_SGPOS")); // 단속 장소
crdn.setVltnId(row.string("VLTN_ID")); // 위반 ID
crdn.setGpsX(row.string("MM_GPS_X")); // GPS_X
crdn.setGpsY(row.string("MM_GPS_Y")); // GPS_Y
crdn.setAtchFileCnt(row.number("MM_IMAGECNT").intValue()); // 첨부 파일 수
crdn.setVin(row.string("MM_VHMNO")); // 차대번호
crdn.setVhclNm(row.string("MM_CARNAME")); // 차량 명
crdn.setVhclColr(row.string("MM_CARCOLOR")); // 차량 색상
crdn.setFfnlgCrdnAmt(row.number("MM_KEUM2").intValue()); // 과태료 단속 금액
crdn.setFfnlgRdcrt(null); // 과태료 감면율
crdn.setFfnlgAmt(row.number("MM_KEUM2").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 과태료 금액
crdn.setAdvntceBgngYmd(row.string("MM_SDATE")); // 사전통지 시작 일자
crdn.setAdvntceDudtYmd(row.string("MM_EDATE")); // 사전통지 납기 일자
crdn.setAdvntceAmt(row.number("MM_KEUM1").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 사전통지 금액
if (row.string("MM_RECALL").equals("1")) { // 의견 제출 여부
crdn.setOpnnSbmsnYn("Y");
} else {
crdn.setOpnnSbmsnYn("N");
}
crdn.setEtcCn(row.string("MM_ETC")); // 기타 내용
crdn.setCrdnSttsCd(row.string("MM_STATE")); // 단속 상태 코드
crdn.setCrdnSttsChgDt(row.string("MM_STATE_DT")); // 단속 상태 변경 일시
crdn.setAdtnAmt(row.number("MM_ADD_KEUM").intValue()); // 가산 금액
crdn.setMinusAmt(row.number("MM_MINUS_KEUM").intValue()); // 감경 금액
crdn.setRcvmtAmt(row.number("MM_SUKEUM").intValue()); // 수납 금액
crdn.setBfrCrdnId(row.string("MM_PRECODE")); // 이전 단속 ID
crdn.setNxrpCrdnLinkYn(row.string("NIS_LINK_YN")); // 세외수입 단속 연계 여부
if (row.string("MC_LVY_KEY").length() == 11) { // 세외수입 대장 키
crdn.setNxrpAcbKey(row.string("MC_LVY_KEY"));
} else {
crdn.setNxrpAcbKey(null);
}
// 단속 부가 정보
crdn.setCrdnSeCd(null); // 단속 구분 코드
crdn.setTeamId(null); // 조 ID
if (row.string("MM_PRECODE").equals("1")) { // 단속 특별구역 코드 FIM007
crdn.setCrdnSpareaCd("01");
} else {
crdn.setCrdnSpareaCd("00");
}
crdn.setCrdnBgngTm(row.string("MM_TIME")); // 단속 시작 시각
crdn.setCrdnEndTm(row.string("MM_TIME2")); // 단속 종료 시각
crdn.setCrdnSn(row.string("MM_SNO")); // 단속 일련번호
crdn.setMoscX(null); // 모자이크 X
crdn.setMoscY(null); // 모자이크 Y
if (row.string("MM_TRAC").equals("1")) { // 견인 여부
crdn.setTowngYn("Y");
} else {
crdn.setTowngYn("N");
}
crdn.setUseFuelCd(row.string("MM_CARFUEL")); // 사용 연료 코드 LVS005
if (!row.string("MM_CARKIND").equals("")) {
crdn.setFfnlgCarmdlCd(String.format("%02d", row.number("MM_CARKIND").intValue())); // 과태료 차종 코드 FIM009
for (int iLoop = 0; iLoop < mainListSize; iLoop++) {
DataObject row = mainList.get(iLoop);
// 단속 ID로 단속(TB_CRDN) 정보 조회
RentQuery rentQuery = new RentQuery();
rentQuery.setMmCode(row.string("MM_CODE"));
rentQuery.setTaskSeCd(row.string("MM_TASKGB"));
DataObject isCrdnInfo = lsctMpngMapper.selectIsCrdnInfo(rentQuery);
Crdn crdn = new Crdn(); // 단속 정보
Payer payer = new Payer(); // 납부자 정보
// 단속 정보가 존재하지 않는다면.. 해당 자료 insert
if (isCrdnInfo == null) {
Crdn lockQ = new Crdn();
lockQ.setSggCd(row.string("OM_SGGCODE"));
lockQ.setTaskSeCd(row.string("MM_TASKGB"));
lockQ.setMmCode(row.string("MM_CODE"));
int lock = applMapper.countLockMmCode(lockQ);
if(lock > 0) {
continue;
}
// 납부자 정보
payer.setSggCd(row.string("OM_SGGCODE")); // 시군구 코드
payer.setRtpyrInptSeCd("07"); // 납부자 입력 구분 코드 FIM015
switch (row.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(row.string("OM_JNO")); // 납부자 번호
payer.setRtpyrNm(row.string("OM_NAME")); // 납부자명
payer.setRtpyrBrdt(row.string("OM_NO1")); // 납부자 생년월일
// 납부자 주소 정보
payer.setAddrInptSeCd("07"); // 주소 입력 구분 코드 FIM087
if (!row.string("OM_DORO_CODE").equals("")) { // 주소 구분 코드
payer.setAddrSeCd("02");
}
payer.setZip(row.string("OM_ZIP")); // 우편번호
payer.setAddr(row.string("OM_JUSO")); // 주소
payer.setDtlAddr(row.string("OM_BUNJI")); // 상세 주소
payer.setRoadNmCd(row.string("OM_DORO_CODE")); // 도로명 코드
payer.setUdgdSeCd(row.string("OM_BLD_POSITION")); // 지하 구분 코드
payer.setBmno(row.number("OM_BLD_NO1").intValue()); // 건물본번
payer.setBsno(row.number("OM_BLD_NO2").intValue()); // 건물부번
payer.setBldgMngNo(row.string("OM_BLD_ADMNO")); // 건물 관리 번호
payer.setStdgCd(row.string("OM_BDCODE")); // 법정동 코드
payer.setWholAddr(row.string("OM_JUSO") + ", " + row.string("OM_BUNJI")); // 전체 주소
// 납부자 주소 정보 등록
Payer result = payerBean.create(payer) ? payer : payerBean.getPayerAddrInfo(payer);
// 단속 정보
crdn.setSggCd(row.string("MM_SGGCODE")); // 시군구 코드
crdn.setTaskSeCd(row.string("MM_TASKGB")); // 업무 구분 코드
crdn.setCrdnRegSeCd(String.format("%02d", row.number("MM_DLGB").intValue())); // 단속 등록 구분 코드
crdn.setCrdnInptSeCd(String.format("%02d", row.number("MM_INGB").intValue())); // 단속 입력 구분 코드
// 민원 정보는 원본 시스템에서 확인하게끔 null로 입력한다.
crdn.setCvlcptLinkYn("N"); // 민원 연계 여부
crdn.setCvlcptLinkTblNm(null); // 민원 연계 테이블 명
crdn.setCvlcptLinkId(null); // 민원 연계 ID
crdn.setRtpyrId(result.getRtpyrId()); // 납부자 ID
crdn.setAddrSn(result.getAddrSn()); // 주소 일련번호
crdn.setCrdnYmd(row.string("MM_DATE")); // 단속 일자
crdn.setCrdnTm(row.string("MM_TIME")); // 단속 시간
crdn.setVhrno(row.string("MM_CARNO")); // 자동차등록번호
crdn.setCrdnStdgNm(row.string("CRDN_STDG_NM")); // 단속 법정동 명
crdn.setCrdnRoadNm(null); // 단속 도로 명
crdn.setCrdnPlc(row.string("MM_SGPOS")); // 단속 장소
crdn.setVltnId(row.string("VLTN_ID")); // 위반 ID
crdn.setGpsX(row.string("MM_GPS_X")); // GPS_X
crdn.setGpsY(row.string("MM_GPS_Y")); // GPS_Y
crdn.setAtchFileCnt(row.number("MM_IMAGECNT").intValue()); // 첨부 파일 수
crdn.setVin(row.string("MM_VHMNO")); // 차대번호
crdn.setVhclNm(row.string("MM_CARNAME")); // 차량 명
crdn.setVhclColr(row.string("MM_CARCOLOR")); // 차량 색상
crdn.setFfnlgCrdnAmt(row.number("MM_KEUM2").intValue()); // 과태료 단속 금액
crdn.setFfnlgRdcrt(null); // 과태료 감면율
crdn.setFfnlgAmt(row.number("MM_KEUM2").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 과태료 금액
crdn.setAdvntceBgngYmd(row.string("MM_SDATE")); // 사전통지 시작 일자
crdn.setAdvntceDudtYmd(row.string("MM_EDATE")); // 사전통지 납기 일자
crdn.setAdvntceAmt(row.number("MM_KEUM1").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 사전통지 금액
if (row.string("MM_RECALL").equals("1")) { // 의견 제출 여부
crdn.setOpnnSbmsnYn("Y");
} else {
crdn.setOpnnSbmsnYn("N");
}
crdn.setEtcCn(row.string("MM_ETC")); // 기타 내용
crdn.setCrdnSttsCd(row.string("MM_STATE")); // 단속 상태 코드
crdn.setCrdnSttsChgDt(row.string("MM_STATE_DT")); // 단속 상태 변경 일시
crdn.setAdtnAmt(row.number("MM_ADD_KEUM").intValue()); // 가산 금액
crdn.setMinusAmt(row.number("MM_MINUS_KEUM").intValue()); // 감경 금액
crdn.setRcvmtAmt(row.number("MM_SUKEUM").intValue()); // 수납 금액
crdn.setBfrCrdnId(row.string("MM_PRECODE")); // 이전 단속 ID
crdn.setNxrpCrdnLinkYn(row.string("NIS_LINK_YN")); // 세외수입 단속 연계 여부
crdn.setNxrpCrdnLinkUserId(null); // 세외수입 단속 연계 사용자 ID
crdn.setNxrpCrdnLinkDt(null); // 세외수입 단속 연계 일시
if (row.string("MC_LVY_KEY").length() == 11) { // 세외수입 대장 키
crdn.setNxrpAcbKey(row.string("MC_LVY_KEY"));
} else {
crdn.setNxrpAcbKey(null);
}
crdn.setMmCode(row.string("MM_CODE")); // 메인코드 MM_CODE
crdn.setDelYn("N"); // 삭제 여부
crdn.setCreatedAt(row.string("MM_INDT"));
crdn.setCreatedBy(row.string("MM_INUSER"));
// 단속 부가 정보
crdn.setCrdnSeCd(null); // 단속 구분 코드
crdn.setTeamId(null); // 조 ID
if (row.string("MM_PRECODE").equals("1")) { // 단속 특별구역 코드 FIM007
crdn.setCrdnSpareaCd("01");
} else {
crdn.setCrdnSpareaCd("00");
}
crdn.setCrdnBgngTm(row.string("MM_TIME")); // 단속 시작 시각
crdn.setCrdnEndTm(row.string("MM_TIME2")); // 단속 종료 시각
crdn.setCrdnSn(row.string("MM_SNO")); // 단속 일련번호
crdn.setMoscX(null); // 모자이크 X
crdn.setMoscY(null); // 모자이크 Y
if (row.string("MM_TRAC").equals("1")) { // 견인 여부
crdn.setTowngYn("Y");
} else {
crdn.setTowngYn("N");
}
crdn.setUseFuelCd(row.string("MM_CARFUEL")); // 사용 연료 코드 LVS005
if (!row.string("MM_CARKIND").equals("")) {
crdn.setFfnlgCarmdlCd(String.format("%02d", row.number("MM_CARKIND").intValue())); // 과태료 차종 코드 FIM009
}
crdn.setPrkPsbltyRsltCd(row.string("MM_CARCHECK")); // 주차 가능 결과 코드
crdn.setVltnNmtm(row.string("MM_VIORCNT")); // 위반 횟수
crdn.setOvtmYn("N"); // 시간외 여부
crdn.setOvtmPrttnYn("N"); // 시간외 분할 여부
// 단속 대장 Insert
rtnNocs = lsctMpngMapper.insertMainToCrdn(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 단속 부가 대장 Insert
rtnNocs = lsctMpngMapper.insertMainToCrdnAdi(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 부가 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
/////////////////////////////////////////////////
//FTP 서버 정보 조회
DataObject main = row;
DataObject ftpQuery = new DataObject()
.set("sggCd", main.string("MM_SGGCODE"))
.set("taskSeCd", main.string("MM_TASKGB"));
DataObject storageServer = finSysFtpMapper.selectFtpInfo(ftpQuery);
//FTP 서버 접속
RemoteSystemInfo rs = new RemoteSystemInfo();
rs.setId(storageServer.string("REMOTE_ID"));
rs.setIp(storageServer.string("REMOTE_IP"));
rs.setPort(storageServer.string("REMOTE_PORT"));
rs.setPw(storageServer.string("REMOTE_PASSWORD"));
rs.setOsType(storageServer.string("REMOTE_OS"));
rs.setWorkPath(storageServer.string("REMOTE_WORK_PATH"));
SFTPUtil sftpUtil = new SFTPUtil();
sftpUtil.connect(rs);
boolean fileSearchEnd = false;
int i = 1;
while(!fileSearchEnd) {
///////////////////////////////////////////////
// 단속ID로 단속 파일 다운로드
String i_char = "";
switch (i) {
case 1:i_char="A";break;
case 2:i_char="B";break;
case 3:i_char="C";break;
case 4:i_char="D";break;
}
crdn.setPrkPsbltyRsltCd(row.string("MM_CARCHECK")); // 주차 가능 결과 코드
crdn.setVltnNmtm(row.string("MM_VIORCNT")); // 위반 횟수
crdn.setOvtmYn("N"); // 시간외 여부
crdn.setOvtmPrttnYn("N"); // 시간외 분할 여부
// 단속 대장 Insert
rtnNocs = lsctMpngMapper.updateMainToCrdn(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 대장 수정 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
String remoteFileName = main.string("MM_CODE")+i_char+".JPG";
String remoteFilePath = storageServer.string("REMOTE_WORK_PATH")+remoteFileName;
byte[] bytesObj = sftpUtil.getBytesObj(remoteFilePath);
if(bytesObj == null) {
fileSearchEnd = true;
continue;
}
// 단속 부가 대장 Insert
rtnNocs = lsctMpngMapper.updateMainToCrdnAdi(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 부가 대장 수정 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
/////////////////////////////////////////////
// 단속 파일 등록
Relation rel = new FileInfo.Relation().setInfoType(Crdn.INF_TYPE).setInfoKey(crdn.getCrdnId());
String originalFileName = remoteFileName;
DataHolder dataHolder = new FileInfo.DataHolder(rel, originalFileName, bytesObj);
List<FileInfo> fileInfoList = new FileInfoFactory().createFileInfos(List.of(dataHolder));
fileBean.create(fileInfoList);
i++;
if(i >= 5) {
fileSearchEnd = true;
}
}
/////////////////////////////
//sftp연결종료
sftpUtil.disconnect();
} else { // 단속 정보가 존재한다면.. 해당 자료 update
// 납부자 정보
payer.setSggCd(row.string("OM_SGGCODE")); // 시군구 코드
payer.setRtpyrInptSeCd("07"); // 납부자 입력 구분 코드 FIM015
switch (row.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(row.string("OM_JNO")); // 납부자 번호
payer.setRtpyrNm(row.string("OM_NAME")); // 납부자명
payer.setRtpyrBrdt(row.string("OM_NO1")); // 납부자 생년월일
// 납부자 주소 정보
payer.setAddrInptSeCd("07"); // 주소 입력 구분 코드 FIM087
if (!row.string("OM_DORO_CODE").equals("")) { // 주소 구분 코드
payer.setAddrSeCd("02");
}
payer.setZip(row.string("OM_ZIP")); // 우편번호
payer.setAddr(row.string("OM_JUSO")); // 주소
payer.setDtlAddr(row.string("OM_BUNJI")); // 상세 주소
payer.setRoadNmCd(row.string("OM_DORO_CODE")); // 도로명 코드
payer.setUdgdSeCd(row.string("OM_BLD_POSITION")); // 지하 구분 코드
payer.setBmno(row.number("OM_BLD_NO1").intValue()); // 건물본번
payer.setBsno(row.number("OM_BLD_NO2").intValue()); // 건물부번
payer.setBldgMngNo(row.string("OM_BLD_ADMNO")); // 건물 관리 번호
payer.setStdgCd(row.string("OM_BDCODE")); // 법정동 코드
payer.setWholAddr(row.string("OM_JUSO") + ", " + row.string("OM_BUNJI")); // 전체 주소
// 납부자 주소 정보 등록
Payer result = payerBean.create(payer) ? payer : payerBean.getPayerAddrInfo(payer);
// 단속 정보
crdn.setCrdnId(isCrdnInfo.string("CRDN_ID")); // CRDN_ID
crdn.setSggCd(isCrdnInfo.string("SGG_CD")); // 시군구 코드
crdn.setTaskSeCd(isCrdnInfo.string("TASK_SE_CD")); // 업무 구분 코드
crdn.setMmCode(isCrdnInfo.string("MM_CODE")); // MM_CODE
crdn.setCrdnRegSeCd(String.format("%02d", row.number("MM_DLGB").intValue())); // 단속 등록 구분 코드
crdn.setCrdnInptSeCd(String.format("%02d", row.number("MM_INGB").intValue())); // 단속 입력 구분 코드
crdn.setRtpyrId(result.getRtpyrId()); // 납부자 ID
crdn.setAddrSn(result.getAddrSn()); // 주소 일련번호
crdn.setCrdnYmd(row.string("MM_DATE")); // 단속 일자
crdn.setCrdnTm(row.string("MM_TIME")); // 단속 시간
crdn.setVhrno(row.string("MM_CARNO")); // 자동차등록번호
crdn.setCrdnStdgNm(row.string("CRDN_STDG_NM")); // 단속 법정동 명
crdn.setCrdnPlc(row.string("MM_SGPOS")); // 단속 장소
crdn.setVltnId(row.string("VLTN_ID")); // 위반 ID
crdn.setGpsX(row.string("MM_GPS_X")); // GPS_X
crdn.setGpsY(row.string("MM_GPS_Y")); // GPS_Y
crdn.setAtchFileCnt(row.number("MM_IMAGECNT").intValue()); // 첨부 파일 수
crdn.setVin(row.string("MM_VHMNO")); // 차대번호
crdn.setVhclNm(row.string("MM_CARNAME")); // 차량 명
crdn.setVhclColr(row.string("MM_CARCOLOR")); // 차량 색상
crdn.setFfnlgCrdnAmt(row.number("MM_KEUM2").intValue()); // 과태료 단속 금액
crdn.setFfnlgRdcrt(null); // 과태료 감면율
crdn.setFfnlgAmt(row.number("MM_KEUM2").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 과태료 금액
crdn.setAdvntceBgngYmd(row.string("MM_SDATE")); // 사전통지 시작 일자
crdn.setAdvntceDudtYmd(row.string("MM_EDATE")); // 사전통지 납기 일자
crdn.setAdvntceAmt(row.number("MM_KEUM1").intValue() - row.number("MM_MINUS_KEUM").intValue()); // 사전통지 금액
if (row.string("MM_RECALL").equals("1")) { // 의견 제출 여부
crdn.setOpnnSbmsnYn("Y");
} else {
crdn.setOpnnSbmsnYn("N");
}
crdn.setEtcCn(row.string("MM_ETC")); // 기타 내용
crdn.setCrdnSttsCd(row.string("MM_STATE")); // 단속 상태 코드
crdn.setCrdnSttsChgDt(row.string("MM_STATE_DT")); // 단속 상태 변경 일시
crdn.setAdtnAmt(row.number("MM_ADD_KEUM").intValue()); // 가산 금액
crdn.setMinusAmt(row.number("MM_MINUS_KEUM").intValue()); // 감경 금액
crdn.setRcvmtAmt(row.number("MM_SUKEUM").intValue()); // 수납 금액
crdn.setBfrCrdnId(row.string("MM_PRECODE")); // 이전 단속 ID
crdn.setNxrpCrdnLinkYn(row.string("NIS_LINK_YN")); // 세외수입 단속 연계 여부
if (row.string("MC_LVY_KEY").length() == 11) { // 세외수입 대장 키
crdn.setNxrpAcbKey(row.string("MC_LVY_KEY"));
} else {
crdn.setNxrpAcbKey(null);
}
// 단속 부가 정보
crdn.setCrdnSeCd(null); // 단속 구분 코드
crdn.setTeamId(null); // 조 ID
if (row.string("MM_PRECODE").equals("1")) { // 단속 특별구역 코드 FIM007
crdn.setCrdnSpareaCd("01");
} else {
crdn.setCrdnSpareaCd("00");
}
crdn.setCrdnBgngTm(row.string("MM_TIME")); // 단속 시작 시각
crdn.setCrdnEndTm(row.string("MM_TIME2")); // 단속 종료 시각
crdn.setCrdnSn(row.string("MM_SNO")); // 단속 일련번호
crdn.setMoscX(null); // 모자이크 X
crdn.setMoscY(null); // 모자이크 Y
if (row.string("MM_TRAC").equals("1")) { // 견인 여부
crdn.setTowngYn("Y");
} else {
crdn.setTowngYn("N");
}
crdn.setUseFuelCd(row.string("MM_CARFUEL")); // 사용 연료 코드 LVS005
if (!row.string("MM_CARKIND").equals("")) {
crdn.setFfnlgCarmdlCd(String.format("%02d", row.number("MM_CARKIND").intValue())); // 과태료 차종 코드 FIM009
}
crdn.setPrkPsbltyRsltCd(row.string("MM_CARCHECK")); // 주차 가능 결과 코드
crdn.setVltnNmtm(row.string("MM_VIORCNT")); // 위반 횟수
crdn.setOvtmYn("N"); // 시간외 여부
crdn.setOvtmPrttnYn("N"); // 시간외 분할 여부
// 단속 대장 Insert
rtnNocs = lsctMpngMapper.updateMainToCrdn(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 대장 수정 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
/////////////////////////////////////////////////
//FTP 서버 정보 조회
// 단속 부가 대장 Insert
rtnNocs = lsctMpngMapper.updateMainToCrdnAdi(crdn);
if (rtnNocs == 0) {
throw new RuntimeException("[F] 단속 부가 대장 수정 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
/////////////////////////////////////////////////
//FTP 서버 정보 조회
}
// 부과 정보 insert
if (row.string("NIS_LINK_YN").equals("Y")) {
Levy levy = new Levy(); // 부과 TB_LEVY
levy.setSggCd(crdn.getSggCd()); // 시군구 코드
levy.setTaskSeCd(crdn.getTaskSeCd()); // 업무 구분 코드
levy.setCrdnId(crdn.getCrdnId()); // CRDN_ID
levy.setFyr(row.string("MC_ACC_YEAR")); // 회계연도
levy.setLevyNo(row.string("MC_LVY_NO")); // 부과 번호
levy.setEpayno(row.string("MC_ERC_NO")); // 전자납부번호
levy.setBankNm(row.string("MC_BANK_NM")); // 은행 명
levy.setVrActno(row.string("MC_ACCOUNT_NO")); // 가상 계좌번호
levy.setBankNm2(row.string("MC_BANK_NM2")); // 은행 명2
levy.setVrActno2(row.string("MC_ACCOUNT_NO2")); // 가상 계좌번호2
levy.setBankNm3(row.string("MC_BANK_NM3")); // 은행 명3
levy.setVrActno3(row.string("MC_ACCOUNT_NO3")); // 가상 계좌번호3
levy.setBankNm4(row.string("MC_BANK_NM4")); // 은행 명4
levy.setVrActno4(row.string("MC_ACCOUNT_NO4")); // 가상 계좌번호4
levy.setBankNm5(row.string("MC_BANK_NM5")); // 은행 명5
levy.setVrActno5(row.string("MC_ACCOUNT_NO5")); // 가상 계좌번호5
levy.setBankNm6(row.string("MC_BANK_NM6")); // 은행 명6
levy.setVrActno6(row.string("MC_ACCOUNT_NO6")); // 가상 계좌번호6
levy.setBankNm7(row.string("MC_BANK_NM7")); // 은행 명7
levy.setVrActno7(row.string("MC_ACCOUNT_NO7")); // 가상 계좌번호7
levy.setBankNm8(row.string("MC_BANK_NM8")); // 은행 명8
levy.setVrActno8(row.string("MC_ACCOUNT_NO8")); // 가상 계좌번호8
levy.setBankNm9(row.string("MC_BANK_NM9")); // 은행 명9
levy.setVrActno9(row.string("MC_ACCOUNT_NO9")); // 가상 계좌번호9
levy.setBankNm10(row.string("MC_BANK_NM10")); // 은행 명10
levy.setVrActno10(row.string("MC_ACCOUNT_NO10")); // 가상 계좌번호10
levy.setBankNm11(row.string("MC_BANK_NM11")); // 은행 명11
levy.setVrActno11(row.string("MC_ACCOUNT_NO11")); // 가상 계좌번호11
if (row.string("MC_LVY_KEY").length() == 20) {
levy.setNxrpLevyKey(row.string("MC_LVY_KEY")); // 세외수입 부과 키
} else {
levy.setNxrpLevyKey(null);
}
// 부과 정보 insert
if (row.string("NIS_LINK_YN").equals("Y")) {
Levy levy = new Levy(); // 부과 TB_LEVY
levy.setSggCd(crdn.getSggCd()); // 시군구 코드
levy.setTaskSeCd(crdn.getTaskSeCd()); // 업무 구분 코드
levy.setCrdnId(crdn.getCrdnId()); // CRDN_ID
levy.setFyr(row.string("MC_ACC_YEAR")); // 회계연도
levy.setLevyNo(row.string("MC_LVY_NO")); // 부과 번호
levy.setEpayno(row.string("MC_ERC_NO")); // 전자납부번호
levy.setBankNm(row.string("MC_BANK_NM")); // 은행 명
levy.setVrActno(row.string("MC_ACCOUNT_NO")); // 가상 계좌번호
levy.setBankNm2(row.string("MC_BANK_NM2")); // 은행 명2
levy.setVrActno2(row.string("MC_ACCOUNT_NO2")); // 가상 계좌번호2
levy.setBankNm3(row.string("MC_BANK_NM3")); // 은행 명3
levy.setVrActno3(row.string("MC_ACCOUNT_NO3")); // 가상 계좌번호3
levy.setBankNm4(row.string("MC_BANK_NM4")); // 은행 명4
levy.setVrActno4(row.string("MC_ACCOUNT_NO4")); // 가상 계좌번호4
levy.setBankNm5(row.string("MC_BANK_NM5")); // 은행 명5
levy.setVrActno5(row.string("MC_ACCOUNT_NO5")); // 가상 계좌번호5
levy.setBankNm6(row.string("MC_BANK_NM6")); // 은행 명6
levy.setVrActno6(row.string("MC_ACCOUNT_NO6")); // 가상 계좌번호6
levy.setBankNm7(row.string("MC_BANK_NM7")); // 은행 명7
levy.setVrActno7(row.string("MC_ACCOUNT_NO7")); // 가상 계좌번호7
levy.setBankNm8(row.string("MC_BANK_NM8")); // 은행 명8
levy.setVrActno8(row.string("MC_ACCOUNT_NO8")); // 가상 계좌번호8
levy.setBankNm9(row.string("MC_BANK_NM9")); // 은행 명9
levy.setVrActno9(row.string("MC_ACCOUNT_NO9")); // 가상 계좌번호9
levy.setBankNm10(row.string("MC_BANK_NM10")); // 은행 명10
levy.setVrActno10(row.string("MC_ACCOUNT_NO10")); // 가상 계좌번호10
levy.setBankNm11(row.string("MC_BANK_NM11")); // 은행 명11
levy.setVrActno11(row.string("MC_ACCOUNT_NO11")); // 가상 계좌번호11
if (row.string("MC_LVY_KEY").length() == 20) {
levy.setNxrpLevyKey(row.string("MC_LVY_KEY")); // 세외수입 부과 키
} else {
levy.setNxrpLevyKey(null);
// 부과 정보가 존재하지 않는다면.. 해당 자료 insert
if (isCrdnInfo == null || isCrdnInfo.string("LEVY_ID").equals("")) {
// 부과(TB_LEVY) 대장을 등록한다.
rtnNocs = levyMapper.insertLevy(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
levy.setLevyId(isCrdnInfo.string("LEVY_ID")); // 부과 ID
// 부과 정보가 존재하지 않는다면.. 해당 자료 insert
if (isCrdnInfo == null || isCrdnInfo.string("LEVY_ID").equals("")) {
// 부과(TB_LEVY) 대장을 등록한다.
rtnNocs = levyMapper.insertLevy(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
} else {
levy.setLevyId(isCrdnInfo.string("LEVY_ID")); // 부과 ID
// 부과(TB_LEVY) 대장의 전자납부번호, 가상계좌번호 정보를 수정한다.
rtnNocs = levyMapper.updateEpaynoVrActnoLevy(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
// 부과(TB_LEVY) 대장의 전자납부번호, 가상계좌번호 정보를 수정한다.
rtnNocs = levyMapper.updateEpaynoVrActnoLevy(levy);
if (rtnNocs != 1) {
throw new RuntimeException("부과 대장 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback
}
}
}
}
return "[S] 등록 및 수정 작업이 정상 처리 되었습니다.";
}
@ -788,7 +801,7 @@ public class LsctMpngBean extends AbstractBean {
lsctAprv.setHirerMblTelno(lsctMpngInfo.string("HIRER_MBL_TELNO")); // 임차인 휴대 전화번호
lsctAprv.setHirerEmlAddr(lsctMpngInfo.string("HIRER_EML_ADDR")); // 임차인 이메일 주소
if(!lsctMpngInfo.string("HIRER_SE_CD").equals("01") && lsctMpngInfo.string("HIRER_ADDR").equals("")){
if(lsctMpngInfo.string("HIRER_ADDR").equals("")){
lsctAprv.setHirerZip(crdnInfo.string("ZIP")); // 임차인 우편번호
lsctAprv.setHirerAddr(crdnInfo.string("ADDR")); // 임차인 주소
lsctAprv.setHirerDtlAddr(crdnInfo.string("DTL_ADDR")); // 임차인 상세 주소

@ -13,19 +13,39 @@ SELECT COUNT(*)
AND LM.TASK_SE_CD = #{taskSeCd} <!-- 업무 구분 코드 -->
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'RQ' <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.CRDN_STTS_CD BETWEEN '41' AND '45'
AND LM.LSCT_MPNG_ID != '9999999999'
AND C.MM_CODE = #{mmCode}
</select>
<update id="updateInProgress" parameterType="cokr.xit.fims.crdn.Crdn">
UPDATE TB_CRDN
SET IN_PROGRESS = 'Y'
WHERE DEL_YN = 'N'
AND MM_CODE = #{mmCode}
AND SGG_CD = #{sggCd}
AND TASK_SE_CD = #{taskSeCd}
</update>
<insert id="lockMmCode" parameterType="cokr.xit.fims.crdn.Crdn">
MERGE INTO TB_MM_CODE_LOCK
USING DUAL ON (SGG_CD = #{sggCd} AND TASK_SE_CD = #{taskSeCd} AND MM_CODE = #{mmCode})
WHEN MATCHED THEN
UPDATE SET LOCK_YN = 'Y'
WHEN NOT MATCHED THEN
INSERT INTO (
SGG_CD
, TASK_SE_CD
, MM_CODE
, LOCK_YN
) VALUES (
#{sggCd}
, #{taskSeCd}
, #{mmCode}
, 'Y'
)
</insert>
<select id="countLockMmCode" parameterType="cokr.xit.fims.crdn.Crdn" resultType="int">
SELECT COUNT(*)
FROM TB_MM_CODE_LOCK
WHERE SGG_CD = #{sggCd}
AND TASK_SE_CD = #{taskSeCd}
AND MM_CODE = #{mmCode}
AND LOCK_YN = 'Y'
</select>
</mapper>

@ -437,14 +437,6 @@
<if test="npaLinkRspnsNm == '정상'">
, NPA_OM_JNO = #{npaOmJno}
, HIRER_NM = #{pyrNm}
, HIRER_ZIP = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{zip} ELSE HIRER_ZIP END)
, HIRER_ADDR = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{addr} ELSE HIRER_ADDR END)
, HIRER_DTL_ADDR = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{daddr} ELSE HIRER_DTL_ADDR END)
, ROAD_NM_CD = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{roadNmCd} ELSE ROAD_NM_CD END)
, UDGD_SE_CD = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{addrUdgdYn} ELSE UDGD_SE_CD END)
, BMNO = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{bmno} ELSE BMNO END)
, BSNO = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{bsno} ELSE BSNO END)
, STDG_CD = (CASE WHEN HIRER_ADDR = '' OR HIRER_ADDR IS NULL THEN #{stdgCd} ELSE STDG_CD END)
</if>
WHERE APRV_ID = #{aprvId}
AND CHG_APRV_STTS_CD = 'RQ' <!-- 변경 승인 상태 -->

@ -152,6 +152,7 @@
, MC_ACCOUNT_NO11
FROM VW_CP_MAIN
<where>
AND MM_STATE <![CDATA[>=]]> '41'
<if test="schCrdnYmdFrom != null">
AND MM_DATE <![CDATA[>=]]> #{schCrdnYmdFrom} <!-- 단속 일자 시작 -->
</if>
@ -178,6 +179,9 @@
<if test="taskSeCd != null">
AND MM_TASKGB = #{taskSeCd} <!-- 업무 구분 코드 -->
</if>
<if test="mmCode != null">
AND MM_CODE = #{mmCode} <!-- mmCode -->
</if>
</where>
<include refid="utility.orderBy" />
</select>
@ -679,13 +683,13 @@
, P.RTPYR_NO <!-- 납부자 번호 -->
, P.RTPYR_NM <!-- 납부자 명 -->
, LM.LSCT_MPNG_ID <!-- 임대차계약 매핑 ID -->
, (CASE WHEN C.IN_PROGRESS = 'Y' THEN '담당자처리'
, (CASE WHEN LCK.LOCK_YN = 'Y' THEN '담당자처리'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RQ' THEN '승인요청(요청중)'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RT' THEN '승인요청(요청취소)'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'AP' THEN '승인요청(승인)'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'UA' THEN '승인요청(미승인)'
WHEN LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'N' THEN '계약서등록'
WHEN LM.LSCT_MPNG_ID IS NULL AND C.CRDN_STTS_CD BETWEEN '11' AND '45' THEN '대상'
WHEN LM.LSCT_MPNG_ID IS NULL AND C.CRDN_STTS_CD BETWEEN '41' AND '45' THEN '대상'
ELSE CONCAT('기타', '(', GET_CODE_NM('FIM010',C.CRDN_STTS_CD), ')')
END) AS TRGT_STTS_NM <!-- 계약서 등록 대상 -->
, LM.LSCT_ID <!-- 임대차계약 ID -->
@ -724,6 +728,7 @@
, L.HIRER_ADDR <!-- 임차인 주소 -->
, L.HIRER_DTL_ADDR <!-- 임차인 상세 주소 -->
FROM TB_CRDN C
LEFT OUTER JOIN TB_MM_CODE_LOCK LCK ON (C.SGG_CD = LCK.SGG_CD AND C.TASK_SE_CD = LCK.TASK_SE_CD AND C.MM_CODE = LCK.MM_CODE)
LEFT OUTER 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_LSCT_MPNG LM ON (C.CRDN_ID = LM.CRDN_ID AND LM.DEL_YN = 'N')
@ -746,26 +751,27 @@
<if test='trgtSttsNm != null and trgtSttsNm != "전체"'>
<choose>
<when test='trgtSttsNm == "대상"'>
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.CRDN_STTS_CD BETWEEN '41' AND '45'
AND LM.LSCT_MPNG_ID IS NULL
AND C.IN_PROGRESS = 'N'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "계약서등록"'>
AND LM.LSCT_MPNG_ID IS NOT NULL
AND LM.DMND_YN = 'N'
AND C.IN_PROGRESS = 'N'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "승인요청"'>
AND LM.LSCT_MPNG_ID IS NOT NULL
AND LM.DMND_YN = 'Y'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "기타"'>
AND C.CRDN_STTS_CD NOT BETWEEN '11' AND '45'
AND C.CRDN_STTS_CD NOT BETWEEN '41' AND '45'
AND LM.LSCT_MPNG_ID IS NULL
AND C.IN_PROGRESS = 'N'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "담당자처리"'>
AND C.IN_PROGRESS = 'Y'
AND LCK.LOCK_YN = 'Y'
</when>
<otherwise>
</otherwise>
@ -849,12 +855,12 @@
, LM.MDFCN_DT <!-- 수정 일시 -->
, LM.MDFR <!-- 수정자 -->
, (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LM.MDFR) AS MDFR_NM <!-- 수정자 명 -->
, (CASE WHEN C.IN_PROGRESS = 'Y' THEN '담당자처리'
, (CASE WHEN LCK.LOCK_YN = 'Y' THEN '담당자처리'
WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'AP' THEN '승인'
WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'UA' THEN '미승인'
WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RQ' AND C.CRDN_STTS_CD BETWEEN '11' AND '45' THEN '요청중'
WHEN LM.DMND_YN = 'N' AND LM.CHG_APRV_STTS_CD = 'RT' AND C.CRDN_STTS_CD BETWEEN '11' AND '45' THEN '요청취소'
WHEN LM.DMND_YN = 'N' AND LM.CHG_APRV_STTS_CD IS NULL AND C.CRDN_STTS_CD BETWEEN '11' AND '45' THEN '대상'
WHEN LM.DMND_YN = 'Y' AND LM.CHG_APRV_STTS_CD = 'RQ' AND C.CRDN_STTS_CD BETWEEN '41' AND '45' THEN '요청중'
WHEN LM.DMND_YN = 'N' AND LM.CHG_APRV_STTS_CD = 'RT' AND C.CRDN_STTS_CD BETWEEN '41' AND '45' THEN '요청취소'
WHEN LM.DMND_YN = 'N' AND LM.CHG_APRV_STTS_CD IS NULL AND C.CRDN_STTS_CD BETWEEN '41' AND '45' THEN '대상'
ELSE CONCAT('기타', '(', GET_CODE_NM('FIM010',C.CRDN_STTS_CD), ')')
END) AS TRGT_STTS_NM <!-- 계약서 등록 대상 -->
, RE.ENT_SE_CD <!-- 기업 구분 코드 -->
@ -905,6 +911,7 @@
LEFT OUTER JOIN TB_LSCT L ON (LM.LSCT_ID = L.LSCT_ID)
LEFT OUTER JOIN TB_RENT_ENT RE ON (LM.ENT_ID = RE.ENT_ID)
LEFT OUTER JOIN TB_CRDN C ON (LM.CRDN_ID = C.CRDN_ID)
LEFT OUTER JOIN TB_MM_CODE_LOCK LCK ON (C.SGG_CD = LCK.SGG_CD AND C.TASK_SE_CD = LCK.TASK_SE_CD AND C.MM_CODE = LCK.MM_CODE)
</sql>
<select id="selectLsctMpngList" parameterType="map" resultType="dataobject">/* 임대차계약 매핑 대장 목록 조회(lsctMpngMapper.selectLsctMpngList) */
@ -953,37 +960,37 @@
<when test='trgtSttsNm == "승인"'>
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'AP' <!-- 변경 승인 상태 -->
AND C.IN_PROGRESS = 'N'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "미승인"'>
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'UA' <!-- 변경 승인 상태 -->
AND C.IN_PROGRESS = 'N'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "요청중"'>
AND LM.DMND_YN = 'Y' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'RQ' <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
AND C.CRDN_STTS_CD BETWEEN '41' AND '45'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "요청취소"'>
AND LM.DMND_YN = 'N' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD = 'RT' <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
AND C.CRDN_STTS_CD BETWEEN '41' AND '45'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "대상"'>
AND LM.DMND_YN = 'N' <!-- 요청 여부 -->
AND LM.CHG_APRV_STTS_CD IS NULL <!-- 변경 승인 상태 -->
AND C.CRDN_STTS_CD BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
AND C.CRDN_STTS_CD BETWEEN '41' AND '45'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</when>
<when test='trgtSttsNm == "담당자처리"'>
AND C.IN_PROGRESS = 'Y'
AND LCK.LOCK_YN = 'Y'
</when>
<otherwise>
AND C.CRDN_STTS_CD NOT BETWEEN '11' AND '45'
AND C.IN_PROGRESS = 'N'
AND C.CRDN_STTS_CD NOT BETWEEN '41' AND '45'
AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N')
</otherwise>
</choose>
</if>

Loading…
Cancel
Save