diff --git a/src/main/java/cokr/xit/fims/rent/RentQuery.java b/src/main/java/cokr/xit/fims/rent/RentQuery.java index 09575f8c..bcae43a0 100644 --- a/src/main/java/cokr/xit/fims/rent/RentQuery.java +++ b/src/main/java/cokr/xit/fims/rent/RentQuery.java @@ -54,6 +54,7 @@ public class RentQuery extends CmmnQuery { private String lsctLinkTblNm; // 임대차계약 연계 테이블 명 // ETC + private String callPageName; // 호출한 페이지의 이름 private String callPurpose; // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정, refresh 재조회). private String delRsn; // 삭제 사유 private String ffnlgSysInqYn; // 과태료 시스템 조회 여부 @@ -317,6 +318,14 @@ public class RentQuery extends CmmnQuery { } // ETC ///////////////////////////////////////////////////////////////////// + public String getCallPageName() { + return ifEmpty(callPageName, () -> null); + } + + public void setCallPageName(String callPageName) { + this.callPageName = callPageName; + } + public String getCallPurpose() { return ifEmpty(callPurpose, () -> null); } diff --git a/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngServiceBean.java b/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngServiceBean.java index dd9f7888..2c2055f7 100644 --- a/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngServiceBean.java +++ b/src/main/java/cokr/xit/fims/rent/service/bean/LsctMpngServiceBean.java @@ -44,7 +44,21 @@ public class LsctMpngServiceBean extends AbstractServiceBean implements LsctMpng @Override public DataObject getCrdnInfo(RentQuery req) { - return lsctMpngBean.getCrdnInfo(req); + // 단속 조회 + DataObject dataObject = lsctMpngBean.getCrdnInfo(req); + + // 단속 첨부 파일 조회 + FileQuery fileQuery = new FileQuery(); + fileQuery.setInfoType(Crdn.INF_TYPE); + fileQuery.setInfoKeys(req.getCrdnId()); + + List fileList = fileBean.getFileList(fileQuery); + + if (fileList != null && !fileList.isEmpty()) { + dataObject.set("fileList", fileList); + } + + return dataObject; } @Override diff --git a/src/main/java/cokr/xit/fims/rent/web/Rent03Controller.java b/src/main/java/cokr/xit/fims/rent/web/Rent03Controller.java new file mode 100644 index 00000000..ef83ae18 --- /dev/null +++ b/src/main/java/cokr/xit/fims/rent/web/Rent03Controller.java @@ -0,0 +1,198 @@ +package cokr.xit.fims.rent.web; + +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.apache.poi.ss.usermodel.CellStyle; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import cokr.xit.base.code.CommonCode; +import cokr.xit.base.docs.xls.CellDef; +import cokr.xit.base.docs.xls.Format; +import cokr.xit.base.docs.xls.Style; +import cokr.xit.base.docs.xls.XLSWriter; +import cokr.xit.base.web.ApplicationController; +import cokr.xit.fims.base.FimsUser; +import cokr.xit.fims.cmmn.service.bean.StngBean; +import cokr.xit.fims.cmmn.xls.FormatMaker; +import cokr.xit.fims.cmmn.xls.StyleMaker; +import cokr.xit.fims.rent.RentQuery; +import cokr.xit.fims.rent.service.LsctService; +import cokr.xit.fims.rent.service.LsctMpngService; +import cokr.xit.fims.rent.service.RentEntService; +import cokr.xit.fims.task.Task; +import cokr.xit.foundation.data.DataObject; + +/**임대차계약 대장 서비스의 웹 컨트롤러 + * + *

상세 설명: + * + *

+ * ============ 변경 이력 ============
+ * 2024-08-27   JoJH 최초 작성
+ * ================================
+ * 
+ */ +@Controller +@RequestMapping(name = "단속 정보", value=Rent03Controller.CLASS_URL) +public class Rent03Controller extends ApplicationController { + + public static final String CLASS_URL = "/rent/rent03"; + + public class METHOD_URL { + public static final String + crackdownMain = "/010/main.do" // 단속 대장 메인 화면 + , getCrackdownList = "/010/list.do" // 단속 대장 목록 조회 + , getCrackdownInfo = "/020/info.do" // 단속 대장 상세 화면 + , getCrackdown = "/020/list.do" // 단속 대장 상세 조회 + ; + } + + + /**임대차계약 대장 서비스*/ + @Resource(name = "lsctMpngService") + private LsctMpngService lsctMpngService; + + /**임차인 정보 서비스*/ + @Resource(name = "lsctService") + private LsctService lsctService; + + /**임대 기업 대장 서비스*/ + @Resource(name = "rentEntService") + private RentEntService rentEntService; + + /**설정 정보 Bean */ + @Resource(name = "stngBean") + private StngBean stngBean; + + /**세외수입 연계 단속 대장 메인 화면(fims/rent/rent03010-main)을 연다. + * @return fims/rent/rent03010-main + */ + @RequestMapping(name = "단속 대장 메인 화면", value=METHOD_URL.crackdownMain) + public ModelAndView crackdownMain() { + ModelAndView mav = new ModelAndView("fims/rent/rent03010-main"); + + // 사용자 정보 + FimsUser fimsUser = (FimsUser)currentUser().getUser(); + + // 사용자와 매핑되어있는 임대업체 정보 조회 + RentQuery req = new RentQuery(); + req.setUserId(fimsUser.getId()); + + List entRegNoList = rentEntService.getUserRentEntMpngs(req); + + return mav + .addObject("pageName", "rent03010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("prefixUrl", CLASS_URL) // prefixUrl + .addObject("userId", fimsUser.getId()) // 사용자 ID(USER_ID) + .addObject("entRegNoList", entRegNoList) // 임대업체 목록 + ; + } + + /**세외수입 연계 단속 대장 목록 조회하여 반환한다. + * {@link LsctMpngService#getLsctList(LsctQuery)} 참고 + * @param req 임대차계약 대장 조회 조건 + * @return jsonView + *
 {
+     *     "List": [임대차계약 대장 목록]
+     *     "Start": 임대차계약 대장 목록 시작 인덱스
+     *     "Fetch": 한 번에 가져오는 임대차계약 대장 목록 수
+     *     "Total": 조회 결과 찾은 전체 임대차계약 대장 수
+     * }
+ */ + + @Task("CMN") + @RequestMapping(name = "단속 대장 목록 조회", value=METHOD_URL.getCrackdownList) + public ModelAndView getCrackdownList(RentQuery req) { + if (!"xls".equals(req.getDownload())) { + List result = lsctMpngService.getCrdnList(setFetchSize(req)); + return setPagingInfo(new ModelAndView("jsonView"), result, ""); + } else { + // 현재 날짜 구하기 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String dateTime = dateFormat.format(System.currentTimeMillis()); + + List cellDefs = fromJson(req.getCellDefs(), CellDef.listType()); + + XLSWriter xlsx = new XLSWriter().worksheet(0); + Format format = new Format(xlsx); + CellStyle center = format.cellStyle(Style.CENTER); + CellStyle numeric = format.n_nn0(); + CellStyle dateDT = format.yyyy_mm_dd_hh_mm_ss(); + + List list = lsctMpngService.getCrdnList(req.setFetchSize(0)); + + Map valueMap = new HashMap(); + + valueMap.put("업무구분", format.of("TASK_SE_NM").style(center)); + 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")); + valueMap.put("단속법정동", format.of("CRDN_STDG_NM").style(center)); + valueMap.put("단속장소", format.of("CRDN_PLC")); + valueMap.put("위반항목", format.of("VLTN_ARTCL")); + valueMap.put("단속원금", format.of("FFNLG_CRDN_AMT").style(numeric)); + valueMap.put("처리상태", format.of("CRDN_STTS_NM")); + valueMap.put("등록일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "REG_DT").style(dateDT)); + valueMap.put("등록사용자", format.of("RGTR_NM").style(center)); + valueMap.put("수정일시", FormatMaker.yyyy_mm_dd_hh_mm_ss(format, "MDFCN_DT").style(dateDT)); + valueMap.put("수정사용자", format.of("MDFR_NM").style(center)); + + CellDef.setValues(cellDefs, valueMap); + + xlsx.cell(0, 0).value("임대차계약등록").value(center).merge(0, cellDefs.size() - 1) + .cell(3, 0).rowValues(CellDef.header(cellDefs, () -> StyleMaker.headerStyle(xlsx))) + .cell(4, 0).values(list, CellDef.values(cellDefs.stream().map(i -> { if(i.getValue() instanceof Format) { i.setField(null); }; return i; }).toList())); + + return new ModelAndView("downloadView") + .addObject("download", xlsx.getDownloadable().setFilename("임대차계약등록" + "_목록_" + dateTime + ".xlsx")); + } + } + + /**세외수입 연계 단속 대장 상세 화면(fims/rent/rent03020-info)을 연다. + * 조건없는 {@link #getCrackdownLeaseContract(RentQuery) 단속 임대차계약 대장 조회 결과}를 포함시킨다. + * @return fims/rent/rent03020-info + */ + @Task("CMN") + @RequestMapping(name = "단속 대장 상세 화면", value=METHOD_URL.getCrackdownInfo) + public ModelAndView getCrackdownInfo(HttpServletRequest hReq, RentQuery req) { + boolean json = jsonResponse(); + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/rent/rent03020-info"); + + // 상세 정보 조회 + DataObject info = getCrackdown(req); + mav.addObject("Info", json ? info : toJson(info)); + + if (!json) { + // View(jsp)에서 사용할 공통코드를 조회 + Map> commonCodes = getCodesOf("FIM089"); + + mav.addObject("callPageName", req.getCallPageName()) // 호출 pageName + .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + .addObject("pageName", "rent03020") // jsp pageName + .addObject("prefixUrl", CLASS_URL) // prefixUrl + .addObject("FIM089List", commonCodes.get("FIM089")) // 임차인 구분 코드(HIRER_SE_CD) + ; + } + + return mav; + } + + @Task("CMN") + @RequestMapping(name = "과태료시스템 연계 단속 대장 상세 조회", value=METHOD_URL.getCrackdown) + public DataObject getCrackdown(RentQuery req) { + // 상세 정보 조회 + return lsctMpngService.getCrdnInfo(req); + } + +}