diff --git a/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java b/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java index eefd0155..0b2c1ce5 100644 --- a/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java +++ b/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java @@ -341,9 +341,6 @@ public class LsctBean extends AbstractBean { return lsctMapper.selectCrdnLsctList(req); } - - - /**지정한 조건에 따라 임대차계약 대장 목록을 조회하여 반환한다. * 통합플랫폼으로 사용하지 안을 경우 렌트 소스만 사용하기 위해서 TB_CRDN, TB_PAYER에 직접 등록한다. * @param req 임대차계약 대장 조회 조건 @@ -352,246 +349,6 @@ public class LsctBean extends AbstractBean { * @throws NumberFormatException */ public List getLsctList(RentQuery req) { - // 기존 과태료 시스템에서 사용하던 암/복호화 함수 사용을 위해서.. - XitAria crypto = new XitAria("xit-aria"); - - // 연계 view 테이블 검색 조건에 사용할 소유주 암호화 하기 - if (req.getSchEntRegNos() != null && req.getSchEntRegNos().length > 0 ) { // 임대기업번호s 암호화 - int tnocs = req.getSchEntRegNos().length; - - String[] strArray = req.getSchEntRegNos(); - String[] encArray = new String[tnocs]; - - for (int iLoop = 0; iLoop < tnocs; iLoop++) { - encArray[iLoop] = crypto.encrypt(strArray[iLoop]); - } - req.setOmJnos(encArray); - } else { // 임대기업번호 암호화 - req.setOmJno(crypto.encrypt(req.getSchEntRegNo())); - } - - // 연계 View 테이블 조회 - List mainList = lsctMapper.selectMainList(req); - - if (mainList.size() > 0) { - for (int iLoop = 0; iLoop < mainList.size(); iLoop++) { - // 단속 ID로 단속(TB_CRDN) 정보 조회 - RentQuery rentQuery = new RentQuery(); - rentQuery.setMmCode(mainList.get(iLoop).string("MM_CODE")); - rentQuery.setTaskSeCd(mainList.get(iLoop).string("MM_TASKGB")); - - DataObject crdnInfo = lsctMapper.selectCrdnInfo(rentQuery); - - // 단속 정보가 존재하지 않는다면.. - if (crdnInfo == null) { - // 납부자 정보 - Payer payer = new Payer(); - payer.setSggCd(mainList.get(iLoop).string("OM_SGGCODE")); // 시군구 코드 - payer.setRtpyrInptSeCd("07"); // 납부자 입력 구분 코드 FIM015 - switch (mainList.get(iLoop).string("OM_NOGB")) { // 납부자 구분 코드 FIM011 - case "11": - payer.setRtpyrSeCd("01"); break; - case "12": - payer.setRtpyrSeCd("02"); break; - case "13": - payer.setRtpyrSeCd("03"); break; - case "14": - payer.setRtpyrSeCd("04"); break; - case "15": - payer.setRtpyrSeCd("05"); break; - default: - payer.setRtpyrSeCd("05"); break; - } - payer.setRtpyrNo(crypto.decrypt(mainList.get(iLoop).string("OM_JNO"))); // 납부자 번호 - payer.setRtpyrNm(mainList.get(iLoop).string("OM_NAME")); // 납부자명 - payer.setRtpyrBrdt(mainList.get(iLoop).string("OM_NO1")); // 납부자 생년월일 - - // 납부자 주소 정보 - payer.setAddrInptSeCd("07"); // 주소 입력 구분 코드 FIM087 - if (!mainList.get(iLoop).string("OM_DORO_CODE").equals("")) { // 주소 구분 코드 - payer.setAddrSeCd("02"); - } - payer.setZip(mainList.get(iLoop).string("OM_ZIP")); // 우편번호 - payer.setAddr(mainList.get(iLoop).string("OM_JUSO")); // 주소 - payer.setDtlAddr(mainList.get(iLoop).string("OM_BUNJI")); // 상세 주소 - payer.setRoadNmCd(mainList.get(iLoop).string("OM_DORO_CODE")); // 도로명 코드 - payer.setUdgdSeCd(mainList.get(iLoop).string("OM_BLD_POSITION")); // 지하 구분 코드 - payer.setBmno(mainList.get(iLoop).number("OM_BLD_NO1").intValue()); // 건물본번 - payer.setBsno(mainList.get(iLoop).number("OM_BLD_NO2").intValue()); // 건물부번 - payer.setBldgMngNo(mainList.get(iLoop).string("OM_BLD_ADMNO")); // 건물 관리 번호 - payer.setStdgCd(mainList.get(iLoop).string("OM_BDCODE")); // 법정동 코드 - payer.setWholAddr(mainList.get(iLoop).string("OM_JUSO") + ", " + mainList.get(iLoop).string("OM_BUNJI")); // 전체 주소 - - // 납부자 주소 정보 등록 - Payer result = payerBean.create(payer) ? payer : payerBean.getPayerAddrInfo(payer); - - // 단속 정보 Insert - Crdn crdn = new Crdn(); - crdn.setSggCd(mainList.get(iLoop).string("MM_SGGCODE")); - crdn.setTaskSeCd(mainList.get(iLoop).string("MM_TASKGB")); - crdn.setCrdnRegSeCd(String.format("%02d", mainList.get(iLoop).number("MM_DLGB").intValue())); // 단속 등록 구분 코드 - crdn.setCrdnInptSeCd(String.format("%02d", mainList.get(iLoop).number("MM_INGB").intValue())); // 단속 입력 구분 코드 - // 민원 정보는 원본 시스템에서 확인하게끔 null로 입력한다. - crdn.setCvlcptLinkYn("N"); // 민원 연계 여부 - crdn.setLinkId(null); // 연계 ID - crdn.setLinkTblNm(null); // 민원 연계 테이블 명 - crdn.setRtpyrId(result.getRtpyrId()); // 납부자 ID - crdn.setAddrSn(result.getAddrSn()); // 주소 일련번호 - crdn.setCrdnYmd(mainList.get(iLoop).string("MM_DATE")); // 단속 일자 - crdn.setCrdnTm(mainList.get(iLoop).string("MM_TIME")); // 단속 시간 - crdn.setVhrno(mainList.get(iLoop).string("MM_CARNO")); // 자동차등록번호 - crdn.setCrdnStdgNm(mainList.get(iLoop).string("CRDN_STDG_NM")); // 단속 법정동 명 - crdn.setCrdnRoadNm(null); // 단속 도로 명 - crdn.setCrdnPlc(mainList.get(iLoop).string("MM_SGPOS")); // 단속 장소 - crdn.setVltnId(mainList.get(iLoop).string("VLTN_ID")); // 위반 ID - crdn.setGpsX(mainList.get(iLoop).string("MM_GPS_X")); // GPS_X - crdn.setGpsY(mainList.get(iLoop).string("MM_GPS_Y")); // GPS_Y - crdn.setAtchFileCnt(mainList.get(iLoop).number("MM_IMAGECNT").intValue()); // 첨부 파일 수 - crdn.setVin(mainList.get(iLoop).string("MM_VHMNO")); // 차대번호 - crdn.setVhclNm(mainList.get(iLoop).string("MM_CARNAME")); // 차량 명 - crdn.setVhclColr(mainList.get(iLoop).string("MM_CARCOLOR")); // 차량 색상 - crdn.setFfnlgCrdnAmt(mainList.get(iLoop).number("MM_KEUM2").intValue()); // 과태료 단속 금액 - crdn.setFfnlgRdcrt(null); // 과태료 감면율 - crdn.setFfnlgAmt(mainList.get(iLoop).number("MM_KEUM2").intValue()); // 과태료 금액 - crdn.setAdvntceBgngYmd(mainList.get(iLoop).string("MM_SDATE")); // 사전통지 시작 일자 - crdn.setAdvntceDudtYmd(mainList.get(iLoop).string("MM_EDATE")); // 사전통지 납기 일자 - crdn.setAdvntceAmt(mainList.get(iLoop).number("MM_KEUM1").intValue()); // 사전통지 금액 - if (mainList.get(iLoop).string("MM_RECALL").equals("1")) { // 의견 제출 여부 - crdn.setOpnnSbmsnYn("Y"); - } else { - crdn.setOpnnSbmsnYn("N"); - } - crdn.setEtcCn(mainList.get(iLoop).string("MM_ETC")); // 기타 내용 - crdn.setCrdnSttsCd(mainList.get(iLoop).string("MM_STATE")); // 단속 상태 코드 - crdn.setCrdnSttsChgDt(mainList.get(iLoop).string("MM_STATE_DT")); // 단속 상태 변경 일시 - crdn.setAdtnAmt(mainList.get(iLoop).number("MM_ADD_KEUM").intValue()); // 가산 금액 - crdn.setMinusAmt(mainList.get(iLoop).number("MM_MINUS_KEUM").intValue()); // 감경 금액 - crdn.setRcvmtAmt(mainList.get(iLoop).number("MM_SUKEUM").intValue()); // 수납 금액 - crdn.setBfrCrdnId(mainList.get(iLoop).string("MM_PRECODE")); // 이전 단속 ID - crdn.setNxrpCrdnLinkYn(mainList.get(iLoop).string("NIS_LINK_YN")); // 세외수입 단속 연계 여부 - crdn.setNxrpCrdnLinkUserId(null); // 세외수입 단속 연계 사용자 ID - crdn.setNxrpCrdnLinkDt(null); // 세외수입 단속 연계 일시 - if (mainList.get(iLoop).string("MC_LVY_KEY").length() == 11) { // 세외수입 대장 키 - crdn.setNxrpAcbKey(mainList.get(iLoop).string("MC_LVY_KEY")); - } else { - crdn.setNxrpAcbKey(null); - } - crdn.setMmCode(mainList.get(iLoop).string("MM_CODE")); // 메인 코드(MM_CODE) - crdn.setDelYn("N"); // 삭제 여부 - crdn.setCreatedAt(mainList.get(iLoop).string("MM_INDT")); - crdn.setCreatedBy(mainList.get(iLoop).string("MM_INUSER")); - - int rtnNocs = lsctMapper.copyMainToCrdn(crdn); - if (rtnNocs == 0) { - throw new RuntimeException("[F] 단속 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - // 단속 부가 정보 Insert - crdn.setCrdnSeCd(null); // 단속 구분 코드 - crdn.setTeamId(null); // 조 ID - if (mainList.get(iLoop).string("MM_PRECODE").equals("1")) { // 단속 특별구역 코드 FIM007 - crdn.setCrdnSpareaCd("01"); - } else { - crdn.setCrdnSpareaCd("00"); - } - crdn.setCrdnBgngTm(mainList.get(iLoop).string("MM_TIME")); // 단속 시작 시각 - crdn.setCrdnEndTm(mainList.get(iLoop).string("MM_TIME2")); // 단속 종료 시각 - crdn.setCrdnSn(mainList.get(iLoop).string("MM_SNO")); // 단속 일련번호 - crdn.setMoscX(null); // 모자이크 X - crdn.setMoscY(null); // 모자이크 Y - if (mainList.get(iLoop).string("MM_TRAC").equals("1")) { // 견인 여부 - crdn.setTowngYn("Y"); - } else { - crdn.setTowngYn("N"); - } - crdn.setUseFuelCd(mainList.get(iLoop).string("MM_CARFUEL")); // 사용 연료 코드 LVS005 - crdn.setFfnlgCarmdlCd(String.format("%02d", mainList.get(iLoop).number("MM_CARKIND").intValue())); // 과태료 차종 코드 FIM009 - crdn.setPrkPsbltyRsltCd(mainList.get(iLoop).string("MM_CARCHECK")); // 주차 가능 결과 코드 - crdn.setVltnNmtm(mainList.get(iLoop).string("MM_VIORCNT")); // 위반 횟수 - crdn.setOvtmYn("N"); // 시간외 여부 - crdn.setOvtmPrttnYn("N"); // 시간외 분할 여부 - - rtnNocs = lsctMapper.copyMainToCrdnAdi(crdn); - if (rtnNocs == 0) { - throw new RuntimeException("[F] 단속 부가 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback - } - - ///////////////////////////////////////////////// - //FTP 서버 정보 조회 - DataObject main = mainList.get(iLoop); - DataObject ftpQuery = new DataObject() - .set("SGG_CD", main.string("MM_SGGCODE")) - .set("TASK_SE_CD", 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 { - - // - } - } - } - - // 단속(TB_CRDN) 자료 조회 - if (req.getSchEntRegNos() != null) { -// 잠시 대기.. 한실장님 확인중 -// req.setRtpyrNos(req.getSchEntRegNos()); - } - if (req.getSchEntRegNo() != null) { - req.setRtpyrNo(req.getSchEntRegNo()); - } - return lsctMapper.selectLsctList(req); } diff --git a/src/main/java/cokr/xit/fims/rent/web/Rent02Controller.java b/src/main/java/cokr/xit/fims/rent/web/Rent02Controller.java index 06286959..f828c436 100644 --- a/src/main/java/cokr/xit/fims/rent/web/Rent02Controller.java +++ b/src/main/java/cokr/xit/fims/rent/web/Rent02Controller.java @@ -58,8 +58,6 @@ public class Rent02Controller extends ApplicationController { leaseContractRegistrationMain = "/010/main.do" // 임대차계약 대장 등록 메인 화면 , getLeaseContractRegistrationList = "/010/list.do" // 임대차계약 대장 등록 단속 대장 목록 조회 , removeLeaseContract = "/010/removeCtrt.do" // 임대차계약 대장 삭제 - , createLeaseContractApproval = "/010/createAprv.do" // 임대차계약 승인 대장 등록 - , removeLeaseContractApproval = "/010/removeAprv.do" // 임대차계약 승인 대장 삭제 , getLeaseContractInfo = "/020/info.do" // 임대차계약 상세 화면 , getLeaseContract = "/020/list.do" // 임대차계약 상세 정보 조회 , hirerMain = "/030/main.do" // 임대차계약 등록 단속 대장 상세 조회 @@ -73,6 +71,9 @@ public class Rent02Controller extends ApplicationController { , removeAttachmentFile = "/040/removeAtchFile.do" // 임차인 첨부 파일 수정 , leaseContractMain = "/050/main.do" // 임대차계약 관리 메인 화면 , getLeaseContractList = "/050/list.do" // 임대차계약 관리 대장 목록 조회 + , createLeaseContractApproval = "/050/createAprv.do" // 임대차계약 승인 대장 등록 + , removeLeaseContractApproval = "/050/removeAprv.do" // 임대차계약 승인 대장 삭제 + ; } @@ -153,8 +154,9 @@ public class Rent02Controller extends ApplicationController { Map valueMap = new HashMap(); valueMap.put("업무구분", format.of("TASK_SE_NM").style(center)); - valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT)); - valueMap.put("차량번호", format.of("VHRNO")); + valueMap.put("대상여부", format.of("TRGT_STTS_NM").style(center)); + valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_DT").style(dateDT)); + valueMap.put("자동차등록번호", format.of("VHRNO")); valueMap.put("납부자구분", format.of("RTPYR_SE_NM").style(center)); valueMap.put("납부자번호", format.of("RTPYR_NO").style(center)); valueMap.put("납부자명", format.of("RTPYR_NM")); @@ -170,12 +172,12 @@ public class Rent02Controller extends ApplicationController { CellDef.setValues(cellDefs, valueMap); - xlsx.cell(0, 0).value("임대차계약").value(center).merge(0, cellDefs.size() - 1) + xlsx.cell(0, 0).value("임대차계약등록").value(center).merge(0, cellDefs.size() - 1) .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx))) .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> { if(i.getValue() instanceof Format) { i.setField(null); }; return i; }).toList())); return new ModelAndView("downloadView") - .addObject("download", xlsx.getDownloadable().setFilename("임대차계약" + "_목록_" + dateTime + ".xlsx")); + .addObject("download", xlsx.getDownloadable().setFilename("임대차계약등록" + "_목록_" + dateTime + ".xlsx")); } } @@ -264,88 +266,6 @@ public class Rent02Controller extends ApplicationController { .addObject("rtnMsg", rtnMsg); } - /**임대차계약 승인 대장를 등록한다. - * @param lsctAprv 임대차계약 승인 대장 정보 - * @return jsonView - *
 {
-     *     "saved": 등록되었으면 true, 그렇지 않으면 false
-     * }
- */ - @Task("CMN") - @RequestMapping(name = "임대차계약 승인 대장 등록", value = METHOD_URL.createLeaseContractApproval) - public ModelAndView createLeaseContractApproval(LsctAprv lsctAprv) { - boolean saved = false; - String rtnMsg = ""; - - // 단건 - if (lsctAprv.getLsctIds() == null || lsctAprv.getLsctIds().length < 1) { - rtnMsg = lsctService.createLsctAprv(lsctAprv); // 등록 - } else { - // Ids 만큼 반복 등록 - for (String lsctId : lsctAprv.getLsctIds()) { - LsctAprv createAprv = new LsctAprv(); - createAprv.setLsctId(lsctId); - - rtnMsg = lsctService.createLsctAprv(createAprv); // 등록 - if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. - saved = false; - break; - } - } - } - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - - /**지정한 임대차계약 승인 대장를 삭제한다. - * @param lsctAprvIDs 임대차계약 승인 대장 아이디 - * @return jsonView - *
 {
-     *     "saved": 등록되었으면 true, 그렇지 않으면 false
-     * }
- */ - @Task("CMN") - @RequestMapping(name = "임대차계약 승인 대장 제거", value = METHOD_URL.removeLeaseContractApproval) - public ModelAndView removeLeaseContractApproval(LsctAprv lsctAprv) { - boolean saved = false; - String rtnMsg = ""; - - // 단건 - if (lsctAprv.getLsctIds() == null || lsctAprv.getLsctIds().length < 1) { - rtnMsg = lsctService.removeLsctAprv(lsctAprv); // 삭제 - } else { - // Ids 만큼 반복 등록 - for (String lsctId : lsctAprv.getLsctIds()) { - LsctAprv removeAprv = new LsctAprv(); - removeAprv.setLsctId(lsctId); - - rtnMsg = lsctService.removeLsctAprv(removeAprv); // 삭제 - if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. - saved = false; - break; - } - } - } - - if (rtnMsg.contains("[S]")) { - saved = true; - } else { - saved = false; - } - - return new ModelAndView("jsonView") - .addObject("saved", saved) - .addObject("rtnMsg", rtnMsg); - } - /**임차인 대장 관리 메인화면(fims/rent/rent02030-main)을 연다. * 조건없는 {@link #getRentEntList(RentEntQuery) 사용자 임대 기업 대장 조회 결과}를 포함시킨다. * @return /rentEnt/rentEnt-main @@ -568,18 +488,13 @@ public class Rent02Controller extends ApplicationController { .addObject("rtnMsg", rtnMsg); } - - - - - /**임대차계약 대장 관리 메인화면(lsct/lsct-main)을 연다. * 조건없는 {@link #getLsctList(LsctQuery) 임대차계약 대장 조회 결과}를 포함시킨다. * @return /lsct/lsct-main */ @RequestMapping(name = "임대차계약 대장 관리 메인", value=METHOD_URL.leaseContractMain) public ModelAndView leaseContractMain() { - ModelAndView mav = new ModelAndView("fims/rent/rent02040-main"); + ModelAndView mav = new ModelAndView("fims/rent/rent02050-main"); // 사용자 정보 FimsUser fimsUser = (FimsUser)currentUser().getUser(); @@ -588,13 +503,13 @@ public class Rent02Controller extends ApplicationController { RentQuery req = new RentQuery(); req.setUserId(fimsUser.getId()); - List entNolist = rentEntService.getUserRentEntMpngs(req); + List entRegNoList = rentEntService.getUserRentEntMpngs(req); return mav - .addObject("pageName", "rent02040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("pageName", "rent02050") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("prefixUrl", CLASS_URL) // prefixUrl .addObject("userId", fimsUser.getId()) // 사용자 ID(USER_ID) - .addObject("entNoList", entNolist) // 임대업체 목록 + .addObject("entRegNoList", entRegNoList) // 임대업체 목록 ; } @@ -609,7 +524,6 @@ public class Rent02Controller extends ApplicationController { * "lsctTotal": 조회 결과 찾은 전체 임대차계약 대장 수 * } */ - @Task("CMN") @RequestMapping(name = "임대차계약 대장 관리 조회", value=METHOD_URL.getLeaseContractList) public ModelAndView getLeaseContractList(RentQuery req) { @@ -634,12 +548,23 @@ public class Rent02Controller extends ApplicationController { Map valueMap = new HashMap(); valueMap.put("업무구분", format.of("TASK_SE_NM").style(center)); - valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_YMD_TM").style(dateDT)); - valueMap.put("차량번호", format.of("VHRNO")); - valueMap.put("납부자구분", format.of("RTPYR_SE_NM").style(center)); - valueMap.put("납부자번호", format.of("RTPYR_NO").style(center)); - valueMap.put("납부자명", format.of("RTPYR_NM")); - valueMap.put("위반항목", format.of("VLTN_ARTCL")); + valueMap.put("대상여부", format.of("TRGT_STTS_NM").style(center)); + valueMap.put("요청일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CHG_DMND_DT").style(dateDT)); + valueMap.put("승인여부", format.of("CHG_APRV_NM").style(center)); + valueMap.put("승인일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CHG_APRV_DT").style(dateDT)); + valueMap.put("승인자", format.of("CHG_AUTZR").style(center)); + valueMap.put("승인사유", format.of("CHG_APRV_RSN")); + valueMap.put("기업명", format.of("ENT_NM")); + valueMap.put("법인(사업자)번호", format.of("ENT_REG_NO").style(center)); + valueMap.put("단속일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CRDN_DT").style(dateDT)); + valueMap.put("자동차등록번호", format.of("VHRNO")); + valueMap.put("계약시작일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CTRT_BGNG_DT").style(dateDT)); + valueMap.put("계약종료일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "CTRT_END_DT").style(dateDT)); + valueMap.put("임차인구분", format.of("HIRER_SE_NM").style(center)); + valueMap.put("임차인번호", format.of("HIRER_REG_NO").style(center)); + valueMap.put("임차인명", format.of("HIRER_NM")); + valueMap.put("전화번호", format.of("HIRER_TELNO").style(center)); + valueMap.put("휴대전화번호", format.of("HIRER_MBL_TELNO").style(center)); valueMap.put("단속법정동", format.of("CRDN_STDG_NM").style(center)); valueMap.put("단속장소", format.of("CRDN_PLC")); valueMap.put("단속원금", format.of("FFNLG_CRDN_AMT").style(numeric)); @@ -651,13 +576,95 @@ public class Rent02Controller extends ApplicationController { CellDef.setValues(cellDefs, valueMap); - xlsx.cell(0, 0).value("임대차계약").value(center).merge(0, cellDefs.size() - 1) + xlsx.cell(0, 0).value("임대차계약 관리").value(center).merge(0, cellDefs.size() - 1) .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx))) .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> { if(i.getValue() instanceof Format) { i.setField(null); }; return i; }).toList())); return new ModelAndView("downloadView") - .addObject("download", xlsx.getDownloadable().setFilename("임대차계약" + "_목록_" + dateTime + ".xlsx")); + .addObject("download", xlsx.getDownloadable().setFilename("임대차계약관리" + "_목록_" + dateTime + ".xlsx")); } } + /**임대차계약 승인 대장를 등록한다. + * @param lsctAprv 임대차계약 승인 대장 정보 + * @return jsonView + *
 {
+     *     "saved": 등록되었으면 true, 그렇지 않으면 false
+     * }
+ */ + @Task("CMN") + @RequestMapping(name = "임대차계약 승인 대장 등록", value = METHOD_URL.createLeaseContractApproval) + public ModelAndView createLeaseContractApproval(LsctAprv lsctAprv) { + boolean saved = false; + String rtnMsg = ""; + + // 단건 + if (lsctAprv.getLsctIds() == null || lsctAprv.getLsctIds().length < 1) { + rtnMsg = lsctService.createLsctAprv(lsctAprv); // 등록 + } else { + // Ids 만큼 반복 등록 + for (String lsctId : lsctAprv.getLsctIds()) { + LsctAprv createAprv = new LsctAprv(); + createAprv.setLsctId(lsctId); + + rtnMsg = lsctService.createLsctAprv(createAprv); // 등록 + if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. + saved = false; + break; + } + } + } + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + + /**지정한 임대차계약 승인 대장를 삭제한다. + * @param lsctAprvIDs 임대차계약 승인 대장 아이디 + * @return jsonView + *
 {
+     *     "saved": 등록되었으면 true, 그렇지 않으면 false
+     * }
+ */ + @Task("CMN") + @RequestMapping(name = "임대차계약 승인 대장 제거", value = METHOD_URL.removeLeaseContractApproval) + public ModelAndView removeLeaseContractApproval(LsctAprv lsctAprv) { + boolean saved = false; + String rtnMsg = ""; + + // 단건 + if (lsctAprv.getLsctIds() == null || lsctAprv.getLsctIds().length < 1) { + rtnMsg = lsctService.removeLsctAprv(lsctAprv); // 삭제 + } else { + // Ids 만큼 반복 등록 + for (String lsctId : lsctAprv.getLsctIds()) { + LsctAprv removeAprv = new LsctAprv(); + removeAprv.setLsctId(lsctId); + + rtnMsg = lsctService.removeLsctAprv(removeAprv); // 삭제 + if (!rtnMsg.contains("[S]")) { // 오류가 발생하였으면 종료.. + saved = false; + break; + } + } + } + + if (rtnMsg.contains("[S]")) { + saved = true; + } else { + saved = false; + } + + return new ModelAndView("jsonView") + .addObject("saved", saved) + .addObject("rtnMsg", rtnMsg); + } + } diff --git a/src/main/resources/sql/mapper/fims/rent/lsct-mapper.xml b/src/main/resources/sql/mapper/fims/rent/lsct-mapper.xml index 552ee256..9c5986b0 100644 --- a/src/main/resources/sql/mapper/fims/rent/lsct-mapper.xml +++ b/src/main/resources/sql/mapper/fims/rent/lsct-mapper.xml @@ -351,14 +351,14 @@ , C.TASK_SE_CD , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM , C.CRDN_YMD - , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_DT , C.VHRNO , C.CRDN_STDG_NM , C.CRDN_ROAD_NM , C.CRDN_PLC , C.FFNLG_CRDN_AMT , C.CRDN_STTS_CD - , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM , C.NXRP_CRDN_LINK_YN , C.NXRP_ACB_KEY , C.MM_CODE @@ -375,9 +375,10 @@ , PA.ADDR , PA.DTL_ADDR , L.LSCT_ID - , (CASE WHEN L.CHG_APRV_YN = 'Y' AND L.CHG_DMND_YN = 'Y' THEN '승인완료' - WHEN L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'Y' THEN '승인요청' - WHEN L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'N' THEN '계약서등록' + , (CASE WHEN L.CHG_APRV_YN = 'Y' AND L.CHG_DMND_YN = 'Y' AND C.NXRP_CRDN_LINK_YN = 'N' THEN '기타(승인완료)' + WHEN L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'Y' AND C.NXRP_CRDN_LINK_YN = 'N' THEN '기타(승인요청)' + WHEN L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'N' AND C.NXRP_CRDN_LINK_YN = 'Y' THEN '기타(세외수입)' + WHEN L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'N' AND C.NXRP_CRDN_LINK_YN = 'N' THEN '계약서등록' ELSE '대상' END) AS TRGT_STTS_NM , (CASE WHEN L.ENT_ID IS NULL THEN (SELECT RE.ENT_ID FROM TB_RENT_ENT RE WHERE RE.ENT_REG_NO = P.RTPYR_NO) @@ -420,25 +421,23 @@ - - AND L.CHG_APRV_YN = 'Y' - AND L.CHG_DMND_YN = 'Y' - - - AND L.CHG_APRV_YN = 'N' - AND L.CHG_DMND_YN = 'Y' - + AND L.LSCT_ID IS NOT NULL AND L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'N' + AND C.NXRP_CRDN_LINK_YN = 'N' + + + AND L.LSCT_ID IS NULL - AND L.LSCT_ID IS NULL + AND L.LSCT_ID IS NOT NULL + AND (L.CHG_APRV_YN = 'Y' OR L.CHG_DMND_YN = 'Y') - AND P.RTPYR_NO IN ( + AND P.RTPYR_NO IN ( #{rtpyrNo} ) @@ -466,12 +465,14 @@ , (SELECT GET_CODE_NM('FIM054', L.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM , L.CRDN_YMD , L.CRDN_TM + , (CONCAT(L.CRDN_YMD, L.CRDN_TM)) AS CRDN_DT , L.VHRNO , L.RTPYR_NO , L.RTPYR_NM , L.ENT_ID , L.HIRER_ID , L.CHG_DMND_YN + , (SELECT GET_CODE_NM('CMN006', L.CHG_DMND_YN) FROM DUAL) AS CHG_DMND_NM , L.CHG_DMND_DT , L.CHG_DMND_RGTR , L.CHG_DMND_IP @@ -479,6 +480,7 @@ , L.CHG_DMND_MDFR , L.CHG_DMND_RTRCN_IP , L.CHG_APRV_YN + , (SELECT GET_CODE_NM('CMN006', L.CHG_APRV_YN) FROM DUAL) AS CHG_APRV_NM , L.CHG_APRV_DT , L.CHG_AUTZR , L.CHG_APRV_RSN @@ -486,8 +488,17 @@ , L.DEL_YN , L.REG_DT , L.RGTR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.RGTR) AS RGTR_NM + , L.MDFCN_DT + , L.MDFR + , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = L.MDFR) AS MDFR_NM + , (CASE WHEN L.CHG_APRV_YN = 'Y' AND L.CHG_DMND_YN = 'Y' AND C.NXRP_CRDN_LINK_YN = 'N' THEN '승인완료' + WHEN L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'Y' AND C.NXRP_CRDN_LINK_YN = 'N' THEN '승인요청' + WHEN L.CHG_APRV_YN = 'N' AND L.CHG_DMND_YN = 'N' AND C.NXRP_CRDN_LINK_YN = 'N' THEN '대상' + ELSE '미대상' + END) AS TRGT_STTS_NM , RE.ENT_SE_CD - , (SELECT GET_CODE_NM('FIM088', RE.ENT_SE_CD) FROM DUAL) AS ENT_SE_NM + , (SELECT GET_CODE_NM('FIM088', RE.ENT_SE_CD) FROM DUAL) AS ENT_SE_NM , RE.ENT_NM , RE.ENT_REG_NO , RE.RPRSV_NM @@ -499,9 +510,12 @@ , RE.ENT_DTL_ADDR , H.CTRT_BGNG_YMD , H.CTRT_BGNG_TM + , (CONCAT(H.CTRT_BGNG_YMD, H.CTRT_BGNG_TM)) AS CTRT_BGNG_DT , H.CTRT_END_YMD - , H.CTRT_END_TM + , H.CTRT_END_TM + , (CONCAT(H.CTRT_END_YMD, H.CTRT_END_TM)) AS CTRT_END_DT , H.HIRER_SE_CD + , (SELECT GET_CODE_NM('FIM089', H.HIRER_SE_CD) FROM DUAL) AS HIRER_SE_NM , H.HIRER_REG_NO , H.HIRER_NM , H.HIRER_TELNO @@ -511,9 +525,16 @@ , H.HIRER_ADDR , H.HIRER_DTL_ADDR , H.ATCH_FILE_CNT - FROM TB_LSCT L - INNER JOIN TB_RENT_ENT RE ON (L.ENT_ID = RE.ENT_ID) - INNER JOIN TB_HIRER H ON (L.HIRER_ID = H.HIRER_ID) + , C.CRDN_STDG_NM + , C.CRDN_PLC + , C.FFNLG_CRDN_AMT + , C.CRDN_STTS_CD + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM + , C.MM_CODE + FROM TB_LSCT L + LEFT OUTER JOIN TB_RENT_ENT RE ON (L.ENT_ID = RE.ENT_ID) + LEFT OUTER JOIN TB_HIRER H ON (L.HIRER_ID = H.HIRER_ID) + LEFT OUTER JOIN TB_CRDN C ON (L.CRDN_ID = C.CRDN_ID)