From 660a1d20bb0236221a70ec86ca4dadc3176dc507 Mon Sep 17 00:00:00 2001 From: jjh Date: Mon, 18 Dec 2023 14:32:59 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9A=B0=ED=8E=B8=EB=B0=9C=EC=86=A1=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=EB=82=B4=EC=97=AD=20=EC=A1=B0=ED=9A=8C=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 --- .../java/cokr/xit/fims/epst/EpostQuery.java | 10 + .../xit/fims/epst/dao/EpostRcptRegMapper.java | 6 + .../epst/service/EpostRcptRegService.java | 11 +- .../epst/service/bean/EpostRcptRegBean.java | 25 + .../service/bean/EpostRcptRegServiceBean.java | 5 + .../xit/fims/epst/web/Epst02Controller.java | 143 +++-- .../cokr/xit/fims/task/web/CmnController.java | 6 +- .../cokr/xit/fims/task/web/DpvController.java | 24 +- .../mapper/fims/epst/epostRcptReg-mapper.xml | 503 ++++++++++-------- .../WEB-INF/jsp/fims/epst/epst02030-main.jsp | 25 +- .../WEB-INF/jsp/fims/epst/epst02040-info.jsp | 324 +++++++---- 11 files changed, 680 insertions(+), 402 deletions(-) diff --git a/src/main/java/cokr/xit/fims/epst/EpostQuery.java b/src/main/java/cokr/xit/fims/epst/EpostQuery.java index 62d4a091..74c080f8 100644 --- a/src/main/java/cokr/xit/fims/epst/EpostQuery.java +++ b/src/main/java/cokr/xit/fims/epst/EpostQuery.java @@ -29,6 +29,7 @@ public class EpostQuery extends CmmnQuery { private String gdccId; // 안내문 ID private String[] rcptRsltIDs; // 접수 결과 IDs private String rcptRsltId; // 접수 결과 ID + private String conKey; // 외부연계식별키 // 검색 조건 private String schLevyExclYmdFrom; // 부과제외_부과제외 일자 시작 private String schLevyExclYmdTo; // 부과제외_부과제외 일자 종료 @@ -173,6 +174,15 @@ public class EpostQuery extends CmmnQuery { return self(); } + public String getConKey() { + return ifEmpty(conKey, () -> null); + } + + public T setConKey(String conKey) { + this.conKey = conKey; + return self(); + } + public String getSchLevyExclYmdFrom() { return ifEmpty(schLevyExclYmdFrom, () -> null); } diff --git a/src/main/java/cokr/xit/fims/epst/dao/EpostRcptRegMapper.java b/src/main/java/cokr/xit/fims/epst/dao/EpostRcptRegMapper.java index 10f24afd..1a100bab 100644 --- a/src/main/java/cokr/xit/fims/epst/dao/EpostRcptRegMapper.java +++ b/src/main/java/cokr/xit/fims/epst/dao/EpostRcptRegMapper.java @@ -54,6 +54,12 @@ public interface EpostRcptRegMapper extends AbstractMapper { return !epostRcptReg.isEmpty() ? epostRcptReg.get(0) : null; } + /**지정한 조건에 따라 전자우편 발송 상태 정보를 반환한다. + * @param req 전자우편 접수 등록 조회 조건 + * @return 전자우편 발송 상태 객체 정보 + */ + List selectEpostSndngSttses(EpostQuery req); + /**지정한 조건에 따라 전자우편 접수 등록 목록을 조회하여 반환한다.
* @param req 전자우편 조회 조건 * @return 전자우편 접수 등록 목록 diff --git a/src/main/java/cokr/xit/fims/epst/service/EpostRcptRegService.java b/src/main/java/cokr/xit/fims/epst/service/EpostRcptRegService.java index 23cab32f..517dcd08 100644 --- a/src/main/java/cokr/xit/fims/epst/service/EpostRcptRegService.java +++ b/src/main/java/cokr/xit/fims/epst/service/EpostRcptRegService.java @@ -18,6 +18,7 @@ import cokr.xit.fims.epst.EpostQuery; * */ public interface EpostRcptRegService { + /**지정한 조건에 따라 전자우편 접수 등록 목록을 조회하여 반환한다. * @param req 전자우편 접수 등록 조회 조건 * @return 전자우편 접수 등록 목록 @@ -31,11 +32,17 @@ public interface EpostRcptRegService { List getEpostRcptRegs(EpostQuery req); /**지정한 조건에 따라 전자우편 안내문 정보를 반환한다. - * @param req 전자우편 안내문 조회 조건 - * @return 전자우편 안내문 정보 + * @param req 전자우편 접수 등록 조회 조건 + * @return 전자우편 접수 등록 객체 정보 */ DataObject getEpostRcptRegInfo(EpostQuery req); + /**지정한 조건에 따라 전자우편 발송 상태 정보를 반환한다. + * @param req 전자우편 접수 등록 조회 조건 + * @return 전자우편 발송 상태 객체 정보 + */ + List getEpostSndngSttsInfo(EpostQuery req); + /**전자우편 접수 등록 정보를 등록한다. * @param epostRcptReg 전자우편 접수 등록 * @return 저장 여부 diff --git a/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegBean.java b/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegBean.java index 0c477934..c8fc6055 100644 --- a/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegBean.java +++ b/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegBean.java @@ -93,6 +93,31 @@ public class EpostRcptRegBean extends AbstractComponent { return dataInfo; } + /**지정한 조건에 따라 전자우편 발송 상태 정보를 반환한다. + * @param req 전자우편 접수 등록 조회 조건 + * @return 전자우편 발송 상태 객체 정보 + */ + List getEpostSndngSttsInfo(EpostQuery req) { + // 사용 여부 확인 + if (req.getUseYN() == null) { + req.setUseYN("Y"); + } + // 삭제 여부 확인 + if (req.getDelYN() == null) { + req.setDelYN("N"); + } + // 정렬 확인 + if (req.getOrderBy() == null) { + if (req.getBy() == null) { + req.setOrderBy("CON_KEY, RGST_NMBR"); + } else { + req.setOrderBy(CmmnUtil.convertCamelCaseToSnakeCase(req.getBy())); + } + } + + return epostRcptRegMapper.selectEpostSndngSttses(req); + } + /**등기 번호 * @param req * @return 전자우편 접수 등록 객체 목록 diff --git a/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegServiceBean.java b/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegServiceBean.java index cf082367..165cd310 100644 --- a/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegServiceBean.java +++ b/src/main/java/cokr/xit/fims/epst/service/bean/EpostRcptRegServiceBean.java @@ -45,6 +45,11 @@ public class EpostRcptRegServiceBean extends AbstractServiceBean implements Epos return epostRcptRegBean.getEpostRcptRegInfo(req); } + @Override + public List getEpostSndngSttsInfo(EpostQuery req) { + return epostRcptRegBean.getEpostSndngSttsInfo(req); + } + @Override public boolean create(EpostRcptReg epostRcptReg) { return epostRcptRegBean.create(epostRcptReg); diff --git a/src/main/java/cokr/xit/fims/epst/web/Epst02Controller.java b/src/main/java/cokr/xit/fims/epst/web/Epst02Controller.java index 795690b0..215a0313 100644 --- a/src/main/java/cokr/xit/fims/epst/web/Epst02Controller.java +++ b/src/main/java/cokr/xit/fims/epst/web/Epst02Controller.java @@ -44,20 +44,21 @@ public class Epst02Controller extends ApplicationController { public class METHOD_URL { public static final String - epostGuidanceDocumentMain = "/010/main.do" // 전자우편 안내문 메인 - , getEpostGuidanceDocumentList = "/010/list.do" // 전자우편 안내문 목록 조회 - , getEpostGuidanceDocumentInfo = "/020/info.do" // 전자우편 안내문 정보 조회 - , createEpostGuidanceDocument = "/020/create.do" // 전자우편 안내문 등록 - , updateEpostGuidanceDocument = "/020/update.do" // 전자우편 안내문 수정 - , removeEpostGuidanceDocument = "/010/remove.do" // 전자우편 안내문 삭제 - , epostReceiptRegistrationMain = "/030/main.do" // 전자우편 우편발송 메인 - , getEpostReceiptRegistrationList = "/030/list.do" // 전자우편 우편발송 목록 조회 - , updateEpostReceiptPostProcessStatus = "/030/updateSttsCd.do" // 전자우편 우편발송 우편처리상태코드 수정 - , removeEpostReceiptRegistration = "/030/remove.do" // 전자우편 우편발송 삭제 - , getEpostReceiptRegistrationInfo = "/040/info.do" // 전자우편 우편발송 정보 조회 - , epostReceiptResultMain = "/050/main.do" // 전자우편 접수 결과 메인 - , getEpostReceiptResultList = "/050/list.do" // 전자우편 접수 결과 목록 조회 - , getEpostReceiptResultSumAmount = "/050/sumAmt.do" // 전자우편 접수 결과 합계 금액 조회 + epostGuidanceDocumentMain = "/010/main.do" // 전자우편 안내문 메인 + , getEpostGuidanceDocumentList = "/010/list.do" // 전자우편 안내문 목록 조회 + , getEpostGuidanceDocumentInfo = "/020/info.do" // 전자우편 안내문 상세 정보 조회 + , createEpostGuidanceDocument = "/020/create.do" // 전자우편 안내문 등록 + , updateEpostGuidanceDocument = "/020/update.do" // 전자우편 안내문 수정 + , removeEpostGuidanceDocument = "/010/remove.do" // 전자우편 안내문 삭제 + , epostSendingStatusMain = "/030/main.do" // 전자우편 우편발송 메인 + , getEpostSendingStatusList = "/030/list.do" // 전자우편 발송 목록 조회 + , getEpostSendingStatusInfo = "/040/info.do" // 전자우편 발송 상세 정보 조회 +// , updateEpostSendingStatus = "/030/update.do" // 전자우편 발송 수정 + , updateEpostSendingProcessStatus = "/030/updateSttsCd.do" // 전자우편 발송 처리상태코드 수정 + , removeEpostSendingStatus = "/030/remove.do" // 전자우편 발송 삭제 + , epostReceiptResultMain = "/050/main.do" // 전자우편 접수 결과 메인 + , getEpostReceiptResultList = "/050/list.do" // 전자우편 접수 결과 목록 조회 + , getEpostReceiptResultSumAmount = "/050/sumAmt.do" // 전자우편 접수 결과 합계 금액 조회 ; } @@ -191,8 +192,6 @@ public class Epst02Controller extends ApplicationController { // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM047", "FIM054"); - addCodes(commonCodes, mav, "FIM047", "FIM054"); - return mav .addObject("pageName", "epst02020") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 @@ -269,11 +268,10 @@ public class Epst02Controller extends ApplicationController { .addObject("rtnMsg", rtnMsg); } - /**전자우편 접수 등록 관리 메인화면(epostRcptReg/epostRcptReg-main)을 연다. - * 조건없는 {@link #getEpostRcptRegList(EpostRcptRegQuery) 전자우편 접수 등록 조회 결과}를 포함시킨다. - * @return /epostRcptReg/epostRcptReg-main + /**전자우편 접수 등록 관리 메인화면(fims/epst/epst02030-main)을 연다. + * @return /fims/epst/epst02030-main */ - public ModelAndView epostReceiptRegistrationMain() { + public ModelAndView epostSendingStatusMain() { ModelAndView mav = new ModelAndView("fims/epst/epst02030-main"); // 사용자 정보 @@ -282,7 +280,8 @@ public class Epst02Controller extends ApplicationController { // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("FIM054"); - return mav.addObject("pageName", "epst02030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + return mav + .addObject("pageName", "epst02030") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "epostRcptReg") // prefix .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("deptCd", managedUser.getDeptCode()) // 부서 코드(DEPT_CD) 7자리 @@ -301,7 +300,7 @@ public class Epst02Controller extends ApplicationController { * "epostRcptRegTotal": 조회 결과 찾은 전체 전자우편 접수 등록 수 * } */ - public ModelAndView getEpostReceiptRegistrationList(EpostQuery req) { + public ModelAndView getEpostSendingStatusList(EpostQuery req) { if (!"xls".equals(req.getDownload())) { List result = epostRcptRegService.getEpostRcptRegList(setFetchSize(req)); return setCollectionInfo(new ModelAndView("jsonView"), result, "epostRcptReg"); @@ -362,33 +361,87 @@ public class Epst02Controller extends ApplicationController { } } - /**전자우편 접수 등록 단건의 정보(info)를 반환한다. + /**전자우편 발송 상세 정보(info)를 반환한다. * @param req 부과제외 대장 조회 조건 - * @return fims/epst/epst01020-info 또는 jsonView + * @return fims/epst/epst02040-info 또는 jsonView *
{
 	 *     "epostRcptReg": 전자우편 접수 등록 정보
 	 * }
*/ - public ModelAndView getEpostReceiptRegistrationInfo(EpostQuery req) { - // - DataObject epostRcptRegInfo = epostRcptRegService.getEpostRcptRegInfo(req); + public ModelAndView getEpostSendingStatusInfo(EpostQuery req) { + // 엑셀 저장이 아니라면.. 검색 + if (!"xls".equals(req.getDownload())) { + List epostSndngSttsInfo = epostRcptRegService.getEpostSndngSttsInfo(req); - boolean json = jsonResponse(); + boolean json = jsonResponse(); - ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/epst/epst02040-info"); + ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/epst/epst02040-info"); - // View(jsp)에서 사용할 공통코드를 조회 - Map> commonCodes = getCodesOf("FIM047", "FIM054"); + return mav + .addObject("pageName", "epst02040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + .addObject("sggCd", req.getSggCd()) // 시군구 코드(SGG_CD) + .addObject("taskSeCd", req.getTaskSeCd()) // 업무 구분 코드(TASK_SE_CD) + .addObject("epostSndngSttsInfo", json ? epostSndngSttsInfo : toJson(epostSndngSttsInfo)) + ; + } else { + XLSWriter xlsx = new XLSWriter() + .setFilename("우편통합 발송상세 정보.xlsx") + .worksheet(0); - addCodes(commonCodes, mav, "FIM047", "FIM054"); + CellStyle dateDT = xlsx.yyyy_mm_dd_hh_mm_ss(); // 연월일+시간 - return mav - .addObject("pageName", "epst02040") // View(jsp)에서 사용할 id 뒤에 붙일 suffix - .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 - .addObject("FIM047List", commonCodes.get("FIM047")) // 발송 구분 코드(SNDNG_SE_CD) - .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) - .addObject("epostRcptRegInfo", json ? epostRcptRegInfo : toJson(epostRcptRegInfo)) - ; + String[] excelTitle = req.getExcelTitle(); + List titles = new ArrayList(); + for (int iLoop = 0; iLoop < excelTitle.length; iLoop++) { + String item = excelTitle[iLoop]; + titles.add(item); + } + + int[] excelTitleWidth = req.getExcelTitleWidth(); + List widths = new ArrayList<>(); + for (int jLoop = 0; jLoop < excelTitleWidth.length; jLoop++) { + int item = excelTitleWidth[jLoop]; + widths.add(item); + } + + List headerStylers = CmmnUtil.makeHeadersByDiffrentWidths(widths, xlsx); + + xlsx.cell(0, 0) + .value("우편통합 발송상세", XLSWriter.Styler.CENTER) + .merge(0, 13) + .cell(3, 0) + .rowValues(CmmnUtil.mergeListByIndex(titles, headerStylers)); + + List list = epostRcptRegService.getEpostSndngSttsInfo(req.setFetchSize(0)); + + BiFunction getValue = (titleNm, nothing) -> { + switch (titleNm) { + case "등록일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("REG_DT"))).style(dateDT); + case "등기번호" : return xlsx.style("RGST_NMBR", XLSWriter.Styler.CENTER); + case "우편번호" : return xlsx.style("RECEV_CAR_OWNER_ZIPCODE", XLSWriter.Styler.CENTER); + case "수취인명" : return xlsx.style("RECEV_CAR_OWNER_NM", XLSWriter.Styler.LEFT); + case "배달일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("DELIV_YMD_TM"))).style(dateDT); + case "배달결과" : return xlsx.style("DELIVRSLTCD_NM", XLSWriter.Styler.CENTER); + case "수령인명" : return xlsx.style("SUBRECPRSNNM", XLSWriter.Styler.LEFT); + case "수령인관계" : return xlsx.style("RELRECPRSNCDNM", XLSWriter.Styler.LEFT); + case "미배달사유" : return xlsx.style("NONDELIVREASNCDNM", XLSWriter.Styler.LEFT); + case "주소" : return xlsx.style("RECEV_CAR_OWNER_ADDR", XLSWriter.Styler.LEFT); + case "상세주소" : return xlsx.style("RECEV_CAR_OWNER_DETAILADDR", XLSWriter.Styler.LEFT); + case "등록사용자" : return xlsx.style("RGTR_NM", XLSWriter.Styler.CENTER); + case "수정일시" : return xlsx.format(o -> xlsx.str2datetime(o.get("MDFCN_DT"))).style(dateDT); + case "수정사용자" : return xlsx.style("MDFR_NM", XLSWriter.Styler.CENTER); + } + + return ""; + }; + + xlsx.cell(4, 0) + .values(list, titles.stream().map((item) -> { return getValue.apply(item, null); }).toArray()); + + return new ModelAndView("xlsView") + .addObject("xls", xlsx); + } } /**전자우편 접수 등록 정보의 우편 처리 상태 코드를 수정한다. @@ -398,7 +451,7 @@ public class Epst02Controller extends ApplicationController { * "saved": 수정되었으면 true, 그렇지 않으면 false * } */ - public ModelAndView updateEpostReceiptPostProcessStatus(EpostRcptReg epostRcptReg) { + public ModelAndView updateEpostSendingProcessStatus(EpostRcptReg epostRcptReg) { boolean saved = false; String rtnMsg = epostRcptRegService.updatePostPrcsSttsCd(epostRcptReg); @@ -421,7 +474,7 @@ public class Epst02Controller extends ApplicationController { * "saved": 저장되었으면 true, 그렇지 않으면 false * } */ - public ModelAndView removeEpostReceiptRegistration(EpostRcptReg epostRcptReg) { + public ModelAndView removeEpostSendingStatus(EpostRcptReg epostRcptReg) { boolean saved = false; String rtnMsg = epostRcptRegService.remove(epostRcptReg); @@ -456,8 +509,6 @@ public class Epst02Controller extends ApplicationController { // View(jsp)에서 사용할 공통코드를 조회 Map> commonCodes = getCodesOf("EGP002", "FIM054", "FIM082"); - addCodes(commonCodes, mav, "EGP002", "FIM054", "FIM082"); - return mav .addObject("pageName", "epst02050") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "epostRcptRslt") // prefix @@ -547,9 +598,9 @@ public class Epst02Controller extends ApplicationController { } } - /**지정하는 단속 ID의 단속, 납부자 정보를 반환한다. - * @param crdnId 단속ID - * @return fims/sprt/sprt02020-main 또는 jsonView + /**전자우편 접수 결과의 합계 건수, 금액을 조회하여 반환한다. + * @param req 전자우편 접수 결과 조회 조건 + * @return 합계 건수, 금액 정보 *
 {
 	 *     "crdnPayer": {...}
 	 * }
diff --git a/src/main/java/cokr/xit/fims/task/web/CmnController.java b/src/main/java/cokr/xit/fims/task/web/CmnController.java index 39c304a7..0a779c09 100644 --- a/src/main/java/cokr/xit/fims/task/web/CmnController.java +++ b/src/main/java/cokr/xit/fims/task/web/CmnController.java @@ -580,9 +580,9 @@ public class CmnController { } @Override - @RequestMapping(name="발송상태", value=METHOD_URL.epostReceiptRegistrationMain) - public ModelAndView epostReceiptRegistrationMain() { - return super.epostReceiptRegistrationMain(); + @RequestMapping(name="우편발송", value=METHOD_URL.epostSendingStatusMain) + public ModelAndView epostSendingStatusMain() { + return super.epostSendingStatusMain(); } @Override diff --git a/src/main/java/cokr/xit/fims/task/web/DpvController.java b/src/main/java/cokr/xit/fims/task/web/DpvController.java index 0ec72b62..f0e50872 100644 --- a/src/main/java/cokr/xit/fims/task/web/DpvController.java +++ b/src/main/java/cokr/xit/fims/task/web/DpvController.java @@ -937,21 +937,27 @@ public class DpvController { } @Override - @RequestMapping(name="전자우편 우편발송 목록 조회", value=METHOD_URL.getEpostReceiptRegistrationList) - public ModelAndView getEpostReceiptRegistrationList(EpostQuery req) { - return super.getEpostReceiptRegistrationList(req); + @RequestMapping(name="전자우편 발송 목록 조회", value=METHOD_URL.getEpostSendingStatusList) + public ModelAndView getEpostSendingStatusList(EpostQuery req) { + return super.getEpostSendingStatusList(req); } @Override - @RequestMapping(name="전자우편 우편발송 우편처리상태코드 수정", value=METHOD_URL.updateEpostReceiptPostProcessStatus) - public ModelAndView updateEpostReceiptPostProcessStatus(EpostRcptReg epostRcptReg) { - return super.updateEpostReceiptPostProcessStatus(epostRcptReg); + @RequestMapping(name="전자우편 발송 상세 정보 조회", value=METHOD_URL.getEpostSendingStatusInfo) + public ModelAndView getEpostSendingStatusInfo(EpostQuery req) { + return super.getEpostSendingStatusInfo(req); } @Override - @RequestMapping(name="전자우편 우편발송 삭제", value=METHOD_URL.removeEpostReceiptRegistration) - public ModelAndView removeEpostReceiptRegistration(EpostRcptReg epostRcptReg) { - return super.removeEpostReceiptRegistration(epostRcptReg); + @RequestMapping(name="전자우편 발송 우편처리상태코드 수정", value=METHOD_URL.updateEpostSendingProcessStatus) + public ModelAndView updateEpostSendingProcessStatus(EpostRcptReg epostRcptReg) { + return super.updateEpostSendingProcessStatus(epostRcptReg); + } + + @Override + @RequestMapping(name="전자우편 발송 삭제", value=METHOD_URL.removeEpostSendingStatus) + public ModelAndView removeEpostSendingStatus(EpostRcptReg epostRcptReg) { + return super.removeEpostSendingStatus(epostRcptReg); } @Override diff --git a/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml b/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml index 25623680..33b30bd0 100644 --- a/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml +++ b/src/main/resources/sql/mapper/fims/epst/epostRcptReg-mapper.xml @@ -63,58 +63,58 @@ - SELECT ERR.CON_KEY - , ERR.CON_ORG - , ERR.SNDNG_ID - , ERR.RCEPT_ID - , ERR.RCEPT_YMD - , ERR.DATA_CD - , ERR.DIV_KB - , ERR.DFPAYYN - , ERR.RCPT_KB - , ERR.SEAL_CD - , ERR.WORD_KB - , ERR.MAIL_CNT - , ERR.RECEV_CNT - , ERR.ENV_CD - , ERR.COLOR_YN - , ERR.MM_YN - , ERR.FLEX_CD - , ERR.DM_CNT - , ERR.SB_FG - , ERR.APVL_NB - , ERR.SEND_DATE - , ERR.SEND_TIME - , ERR.RELORSECT_CD - , ERR.RECEV_SENDER_ORG_CODE - , ERR.RECEV_SENDER_NM - , ERR.RECEV_SENDER_ZIPCODE - , ERR.RECEV_SENDER_ADDR - , ERR.RECEV_SENDER_DETAILADDR - , ERR.RECEV_SENDER_DEPART_TEL - , ERR.RECEV_SENDER_DEPART_NM - , ERR.RECEV_DIV_CD - , ERR.RECEV_PRINT_DT - , ERR.RECEV_PRINT_YEAR - , ERR.RECEV_PRINT_MONTH - , ERR.RECEV_PRINT_DAY - , ERR.RECEV_SENDER_FAX - , ERR.RECEV_SERDER_STAFF - , ERR.RECEV_SENDER_EMAIL - , ERR.REG_VAR_DATA1 - , ERR.REG_VAR_DATA2 - , ERR.REG_VAR_DATA3 - , ERR.REG_VAR_DATA4 - , ERR.REG_VAR_DATA5 - , ERR.JOB_CD - , ERR.POST_PRCS_STTS_CD - , ERR.DEL_YN - , ERR.REG_DT - , ERR.RGTR - , ERR.MDFCN_DT - , ERR.MDFR - , ERR.DEL_DT - , ERR.DLTR + SELECT ERR.CON_KEY /* 외부연계식별키 */ + , ERR.CON_ORG /* 외부기관구분코드 */ + , ERR.SNDNG_ID /* 발송 ID */ + , ERR.RCEPT_ID /* 접수우체국국기호 */ + , ERR.RCEPT_YMD /* 접수 일자 */ + , ERR.DATA_CD /* 접수코드 */ + , ERR.DIV_KB /* 취급구분 */ + , ERR.DFPAYYN /* 결재방법 */ + , ERR.RCPT_KB /* 내용문 유형 */ + , ERR.SEAL_CD /* 내용문 상세 종류 */ + , ERR.WORD_KB /* 내용문 종류 */ + , ERR.MAIL_CNT /* 내용문 매수 */ + , ERR.RECEV_CNT /* 수취인 수 */ + , ERR.ENV_CD /* 봉투 종류 */ + , ERR.COLOR_YN /* 칼라우편물 */ + , ERR.MM_YN /* 메일머지 플래그 */ + , ERR.FLEX_CD /* 이면구분 */ + , ERR.DM_CNT /* 동봉물 개수 */ + , ERR.SB_FG /* 반송불필요 여부 */ + , ERR.APVL_NB /* 승인번호 */ + , ERR.SEND_DATE /* 신청 일자 */ + , ERR.SEND_TIME /* 전송 시간 */ + , ERR.RELORSECT_CD /* 연계기관결제부서코드 */ + , ERR.RECEV_SENDER_ORG_CODE /* 발송기관코드 */ + , ERR.RECEV_SENDER_NM /* 발송인명 */ + , ERR.RECEV_SENDER_ZIPCODE /* 발송인 우편번호 */ + , ERR.RECEV_SENDER_ADDR /* 주소 */ + , ERR.RECEV_SENDER_DETAILADDR /* 상세주소 */ + , ERR.RECEV_SENDER_DEPART_TEL /* 부과부서 전화번호 */ + , ERR.RECEV_SENDER_DEPART_NM /* 부과부서 */ + , ERR.RECEV_DIV_CD /* 등기구분 */ + , ERR.RECEV_PRINT_DT /* 출력일자 */ + , ERR.RECEV_PRINT_YEAR /* 출력연도 */ + , ERR.RECEV_PRINT_MONTH /* 출력월 */ + , ERR.RECEV_PRINT_DAY /* 출력일 */ + , ERR.RECEV_SENDER_FAX /* 부과부서 팩스번호 */ + , ERR.RECEV_SERDER_STAFF /* 부과부서 담당자 */ + , ERR.RECEV_SENDER_EMAIL /* 부과부서 이메일 */ + , ERR.REG_VAR_DATA1 /* 추가 데이터1 */ + , ERR.REG_VAR_DATA2 /* 추가 데이터2 */ + , ERR.REG_VAR_DATA3 /* 추가 데이터3 */ + , ERR.REG_VAR_DATA4 /* 추가 데이터4 */ + , ERR.REG_VAR_DATA5 /* 추가 데이터5 */ + , ERR.JOB_CD /* 작업 코드 */ + , ERR.POST_PRCS_STTS_CD /* 우편 처리 상태 코드 */ + , ERR.DEL_YN /* 삭제 여부 */ + , ERR.REG_DT /* 등록 일시 */ + , ERR.RGTR /* 등록자 */ + , ERR.MDFCN_DT /* 수정 일시 */ + , ERR.MDFR /* 수정자 */ + , ERR.DEL_DT /* 삭제 일시 */ + , ERR.DLTR /* 삭제자 */ , (SELECT GET_CODE_NM('EGP002', ERR.DIV_KB) FROM DUAL) AS DIV_KB_NM /* 취급 구분 명 */ , (SELECT GET_CODE_NM('EGP012', ERR.POST_PRCS_STTS_CD) FROM DUAL) AS POST_PRCS_STTS_NM /* 우편 처리 상태 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = ERR.RGTR) AS RGTR_NM /* 등록자 명 */ @@ -216,57 +216,90 @@ + + - - - -
- -
- - -
- -
- - -
- -
- -
-
- -
-
+ + - - -
- - - - + +
+ + + + + - -
- +
+ + + +
+ +
+ + @@ -63,58 +96,143 @@ **************************************************************************/ // URL var ${pageName}PrefixUrl = "/epst/epst02"; - // FormFields - var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}"); // infoDialog 호출 용도(view 조회(편집불가), create 등록, update 수정) var ${pageName}CallPurpose = "${callPurpose}"; + // FormFields + var ${pageName}Fields = new FimsFormFields("#frmEdit--${pageName}"); /************************************************************************** * DatasetControl **************************************************************************/ var ${pageName}Control = new DatasetControl({ - prefix : "epostGdcc" - , prefixName : "안내문 정보" - , keymapper : info => info ? info.GDCC_ID : "" - , dataGetter : obj => obj.epostGdccInfo + prefix : "epostRcptReg" + , prefixName : "우편 발송 정보" + , keymapper : info => info ? info.RGST_NMBR : "" + , dataGetter : obj => obj.epostRcptRegInfo + , appendData : true + , untilPageNum : 0 // 현재 페이지 번호 + , tableRenderComplete : false // dataTables 에 자료 추가 완료 여부 + , formats : { + DELIV_YMD_TM : datetimeFormat + , REG_DT : datetimeFormat + , MDFCN_DT : datetimeFormat + } }); - ${pageName}Control.onCurrentChange = item => { - if (!item) return; + /************************************************************************** + * DatasetControl 이벤트 + **************************************************************************/ + // Dataset 변경 이벤트 + ${pageName}Control.onDatasetChange = obj => { + renderList${pageName}(obj.${infoPrefix}Total); - // Dataset 셋팅 - ${pageName}Fields.set(item); + $("#paging--${pageName}").setPagingInfo({ + list : ${pageName}Control.dataset + , prefix : "paging--${pageName}" + , start : obj.${infoPrefix}Start + , totalSize : obj.${infoPrefix}Total + , fetchSize : obj.${infoPrefix}Fetch + , func : "${pageName}Control.load({index})" + }); - // 업무구분에 따른 url 변경 - ${pageName}Control.urls.create = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/create.do"); - ${pageName}Control.urls.update = wctx.url(item.data.TASK_SE_CD + ${pageName}PrefixUrl + "/020/update.do"); - } + ${pageName}Control.tableRenderComplete = true; // dataTables 에 자료 추가 true + }; + + // 현재 선택 자료 변경 이벤트 + ${pageName}Control.onCurrentChange = item => { + if (!item) return; + + let key = item.data.RGST_NMBR; + + $("#tbody--${pageName}").setCurrentRow(key); + + // CON_KEY + $("#conKey--${pageName}").val(item.data.CON_KEY); + }; /************************************************************************** - * DatasetControl 이벤트 + * DataTables 이벤트 **************************************************************************/ - // 저장 callback - ${pageName}Control.onSave = (resp) => { - let dialogTitle = $("#" + ${pageName}Control.prefix + "Dialog").find("h5.modal-title").html(); - let showMessage = resp.retMessage.replace(/[S]|[F]/g, dialogTitle); + // DataTables에 click, dbclick 이벤트 + renderList${pageName} = (totalSize) => { + let ${infoPrefix}List = ${pageName}Control.dataset; + let empty = ${infoPrefix}List.empty; + + let trs = empty ? + [document.getElementById("${infoPrefix}NotFound--${pageName}").innerHTML] : <%-- from template#${infoPrefix}NotFound --%> + ${infoPrefix}List.inStrings( + document.getElementById("${infoPrefix}Row--${pageName}").innerHTML, <%-- from template#${infoPrefix}Row --%> + (str, dataItem) => str + .replace(/{onclick}/gi, "${pageName}Control.setCurrent('" + dataItem.getValue("RGST_NMBR") + "');") + ); + + let noMore = (totalSize == ${infoPrefix}List.length); + let initScroll = (${pageName}Control.query.pageNum < 2) && (${pageName}Control.untilPageNum == 0); - dialog.alert(showMessage); + $("#table-responsive--${pageName}")[0].changeContent(trs.join(), initScroll, noMore); - if (resp.saved) { - dialog.close(${pageName}Control.prefix + "Dialog"); + if (${pageName}Control.untilPageNum != 0) { + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; + ${pageName}Control.query.pageNum = ${pageName}Control.untilPageNum; + ${pageName}Control.untilPageNum = 0; } + + // checkbox 체크 해제 + $("th input[type='checkbox']").prop("checked", false); + + // 보안모드 + fn_securityModeToggle($("#securityMode--top").is(":checked")); } - // 저장 - ${pageName}Control.save = (info) => { - if (!info) return; + // DataTables에 스크롤이 맨 밑으로 이동했을 때 이벤트 + scrollDataList${pageName} = () => { + ${pageName}Control.tableRenderComplete = false; // dataTables 에 자료 추가 false - let create = (${pageName}CallPurpose == "create"); // if 문 + ${pageName}Control.load(${pageName}Control.query.pageNum + 1); + } - ajax.post({ - url : !create ? ${pageName}Control.urls.update : ${pageName}Control.urls.create - , data : info - , success : resp => ${pageName}Control.onSave(resp) - }); + /************************************************************************** + * 사용자 함수(function) + **************************************************************************/ + + + /************************************************************************** + * 버튼 clickEvent + **************************************************************************/ + // 엑셀 버튼 이벤트 + fnExcel${pageName} = () => { + if (${pageName}Control.dataset.empty) { + dialog.alert({ + content : "검색된 자료가 없습니다." + , onOK : () => { } + }); + return; + } + + let excelTitle = []; + let excelTitleWidth = []; + + $("#theadTr--${pageName} th").not(".dummy-th").each(function() { + let title = $(this).text(); + + if (title != "" ) { + excelTitle.push(title); + + let titleWidth = Math.ceil($(this).outerWidth() / 10) + 2; + + excelTitleWidth.push(titleWidth); + } + }); + + ${pageName}Control.query = ${pageName}Fields.get(); + + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 1 페이지당 조회되는 자료 건수 + ${pageName}Control.query.conKey = ${pageName}Control.dataset.getValue("CON_KEY"); // conKey + ${pageName}Control.query.delYn = "N"; // 삭제 여부 + ${pageName}Control.query.excelTitle = excelTitle.join(","); + ${pageName}Control.query.excelTitleWidth = excelTitleWidth.join(","); + + ${pageName}Control.download(); } /************************************************************************** @@ -122,43 +240,46 @@ **************************************************************************/ // 이벤트 설정 setEvent${pageName} = () => { + // DataTables width 변경 조정 업무별 그리드가 존재 한다면.. crdn06010-main.jsp 참고 + $("#DataTables_Table_0--${pageName}").find("th").resizable( {handles : "e"} ); + // DataTables 스크롤 이벤트 생성 + fnMakeScrollableTable($("#table-responsive--${pageName}")[0], scrollDataList${pageName}); } - // 화면 초기 설정 + // 초기 기본 설정 initForm${pageName} = () => { - if (${pageName}CallPurpose == "view") { - $("#sndngSeCd--${pageName}").attr("disabled", true); - $("#ttlNm--${pageName}").attr("disabled", true); - $("#wordsCn--${pageName}").attr("disabled", true); - $("#btnSave--${pageName}").attr("disabled", true); - } else { - $("#sndngSeCd--${pageName}").attr("disabled", false); - $("#ttlNm--${pageName}").attr("disabled", false); - $("#wordsCn--${pageName}").attr("disabled", false); - $("#btnSave--${pageName}").attr("disabled", false); - } + // 화면 초기화 + $("#frmEdit--${pageName}")[0].reset(); + + // 달력 초기화 + initDatepicker("frmEdit--${pageName}"); + } + + // URL 설정 + setURL${pageName} = () => { + let taskSeCd = $("#taskSeCd--${pageName}").val(); + + ${pageName}Control.urls.load = wctx.url("/" + taskSeCd + ${pageName}PrefixUrl + "/040/info.do"); // 엑셀(조회) } // 기본 데이터 설정 setFormData${pageName} = () => { + // 화면 데이터 설정 + $("#sggCd--${pageName}").val("${sggCd}"); // 시군구 코드 + $("#taskSeCd--${pageName}").val("${taskSeCd}"); // 업무 구분 코드 - } + // ${pageName}Control 설정 + ${pageName}Control.defaultFetchSize = FETCH_XS; // 1 페이지당 조회되는 자료 건수 index.jsp에서 확인 FETCH_XS = 30 - /************************************************************************** - * function - **************************************************************************/ - // 저장 - fnSave${pageName} = () => { - // validate 확인 - if (!customValidate($("#frmEdit--${pageName}").find("input, select, textarea"))) return; - - dialog.alert({ - content : "현재 " + ${pageName}Control.prefixName + " 정보를 저장하시겠습니까?" - , onOK : () => { - ${pageName}Control.save(${pageName}Fields.get()); - } - }); + if (${pageName}CallPurpose == "view") { + // input 요소들을 disabled + $("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true); + } else if (${pageName}CallPurpose == "create") { + // + } else if (${pageName}CallPurpose == "update") { + // + } } /************************************************************************** @@ -168,14 +289,17 @@ // 이벤트 설정 setEvent${pageName}(); - // 화면 초기 설정 + // 초기 기본 설정 initForm${pageName}(); - // Dataset 셋팅 - 단건일 경우 setData - ${pageName}Control.setData([${epostGdccInfo}]); + // Dataset 설정 + ${pageName}Control.setData(${epostSndngSttsInfo}); // 기본 데이터 설정 setFormData${pageName}(); + + // URL 설정 + setURL${pageName}(); });