From 4e0d242e7bac2438f4a613ceb44c5387216f8579 Mon Sep 17 00:00:00 2001 From: leebj Date: Thu, 13 Nov 2025 16:29:13 +0900 Subject: [PATCH] =?UTF-8?q?1.=20=EC=82=AC=EC=A0=84=ED=86=B5=EB=B3=B4?= =?UTF-8?q?=EB=90=9C=20=EC=9E=90=EB=A3=8C=EB=A7=8C=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95=202.=20?= =?UTF-8?q?=EC=88=98=EA=B8=B0=EB=93=B1=EB=A1=9D=EC=8B=9C=20=EB=B2=95?= =?UTF-8?q?=EC=9D=B8=EC=82=AC=EC=97=85=EC=9E=90=EC=99=B8=EA=B5=AD=EC=9D=B8?= =?UTF-8?q?=EC=B6=94=EA=B0=80=203.=20=EC=8A=B9=EC=9D=B8=EC=9A=94=EC=B2=AD?= =?UTF-8?q?=EC=8B=9C=20=EC=A3=BC=EC=86=8C=EC=A0=95=EB=B3=B4=EA=B0=80=20?= =?UTF-8?q?=EC=97=86=EC=9C=BC=EB=A9=B4=20=EC=9E=90=EB=8F=99=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9E=84=EB=8C=80=EA=B8=B0=EC=97=85=EC=A3=BC?= =?UTF-8?q?=EC=86=8C=EC=9E=85=EB=A0=A5=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/fims/appl/dao/ApplMapper.java | 4 +- .../xit/fims/appl/service/bean/ApplBean.java | 137 +--- .../xit/fims/appl/web/ApplController.java | 229 +++++- .../fims/nxrp/service/bean/NisIndivBean.java | 30 - .../fims/rent/service/bean/LsctMpngBean.java | 769 +++++++++--------- .../sql/mapper/fims/appl/appl-mapper.xml | 38 +- .../sql/mapper/fims/rent/lsctAprv-mapper.xml | 8 - .../sql/mapper/fims/rent/lsctMpng-mapper.xml | 53 +- 8 files changed, 682 insertions(+), 586 deletions(-) diff --git a/src/main/java/cokr/xit/fims/appl/dao/ApplMapper.java b/src/main/java/cokr/xit/fims/appl/dao/ApplMapper.java index 510c7929..daac49b8 100644 --- a/src/main/java/cokr/xit/fims/appl/dao/ApplMapper.java +++ b/src/main/java/cokr/xit/fims/appl/dao/ApplMapper.java @@ -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); } diff --git a/src/main/java/cokr/xit/fims/appl/service/bean/ApplBean.java b/src/main/java/cokr/xit/fims/appl/service/bean/ApplBean.java index 32d0ba0d..ef070066 100644 --- a/src/main/java/cokr/xit/fims/appl/service/bean/ApplBean.java +++ b/src/main/java/cokr/xit/fims/appl/service/bean/ApplBean.java @@ -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 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] 임대차계약 등록 작업이 정상 처리 되었습니다."; } diff --git a/src/main/java/cokr/xit/fims/appl/web/ApplController.java b/src/main/java/cokr/xit/fims/appl/web/ApplController.java index fd860c99..5c14752e 100644 --- a/src/main/java/cokr/xit/fims/appl/web/ApplController.java +++ b/src/main/java/cokr/xit/fims/appl/web/ApplController.java @@ -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 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); // 등록 diff --git a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java index 525684e5..d90e1af9 100644 --- a/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java +++ b/src/main/java/cokr/xit/fims/nxrp/service/bean/NisIndivBean.java @@ -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; } diff --git a/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngBean.java b/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngBean.java index 4048a32e..03b939e3 100644 --- a/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngBean.java +++ b/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngBean.java @@ -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 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 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")); // 임차인 상세 주소 diff --git a/src/main/resources/sql/mapper/fims/appl/appl-mapper.xml b/src/main/resources/sql/mapper/fims/appl/appl-mapper.xml index 8df7fb87..ed44ff51 100644 --- a/src/main/resources/sql/mapper/fims/appl/appl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/appl/appl-mapper.xml @@ -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} - -UPDATE TB_CRDN - SET IN_PROGRESS = 'Y' - WHERE DEL_YN = 'N' - AND MM_CODE = #{mmCode} - AND SGG_CD = #{sggCd} - AND TASK_SE_CD = #{taskSeCd} - + +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' + ) + + + + \ No newline at end of file diff --git a/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml b/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml index 3df99f33..d45afbb5 100644 --- a/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml +++ b/src/main/resources/sql/mapper/fims/rent/lsctAprv-mapper.xml @@ -437,14 +437,6 @@ , 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) WHERE APRV_ID = #{aprvId} AND CHG_APRV_STTS_CD = 'RQ' diff --git a/src/main/resources/sql/mapper/fims/rent/lsctMpng-mapper.xml b/src/main/resources/sql/mapper/fims/rent/lsctMpng-mapper.xml index 496d1602..b3e2ffc0 100644 --- a/src/main/resources/sql/mapper/fims/rent/lsctMpng-mapper.xml +++ b/src/main/resources/sql/mapper/fims/rent/lsctMpng-mapper.xml @@ -152,6 +152,7 @@ , MC_ACCOUNT_NO11 FROM VW_CP_MAIN + AND MM_STATE =]]> '41' AND MM_DATE =]]> #{schCrdnYmdFrom} @@ -178,6 +179,9 @@ AND MM_TASKGB = #{taskSeCd} + + AND MM_CODE = #{mmCode} + @@ -679,13 +683,13 @@ , P.RTPYR_NO , P.RTPYR_NM , LM.LSCT_MPNG_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 @@ -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 @@ - 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') 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') AND LM.LSCT_MPNG_ID IS NOT NULL AND LM.DMND_YN = 'Y' + AND (LCK.LOCK_YN IS NULL OR LCK.LOCK_YN = 'N') - 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') - AND C.IN_PROGRESS = 'Y' + AND LCK.LOCK_YN = 'Y' @@ -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)