From 96b9c2ed7e88766b209ef75976e61dd546e36e55 Mon Sep 17 00:00:00 2001 From: jjh Date: Tue, 26 Dec 2023 11:15:41 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B6=80=EA=B3=BC=EC=A0=9C=EC=99=B8=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 --- .../xit/fims/excl/dao/LevyExclMapper.java | 12 +++ .../fims/excl/service/LevyExclService.java | 27 +++++++ .../fims/excl/service/bean/LevyExclBean.java | 69 ++++++++++++---- .../service/bean/LevyExclServiceBean.java | 15 ++++ .../xit/fims/excl/web/Excl01Controller.java | 81 ++++++++++--------- .../sql/mapper/fims/excl/levyExcl-mapper.xml | 71 ++++++++++------ .../WEB-INF/jsp/fims/excl/excl01010-main.jsp | 10 ++- .../WEB-INF/jsp/fims/excl/excl01020-info.jsp | 10 ++- .../WEB-INF/jsp/fims/sprt/sprt02050-info.jsp | 4 +- .../webapp/resources/js/base/base-fims.js | 1 - 10 files changed, 212 insertions(+), 88 deletions(-) diff --git a/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java b/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java index 6a7ef938..9f639a03 100644 --- a/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java +++ b/src/main/java/cokr/xit/fims/excl/dao/LevyExclMapper.java @@ -57,6 +57,18 @@ public interface LevyExclMapper extends AbstractMapper { return !levyExcls.isEmpty() ? levyExcls.get(0) : null; } + /**지정한 조건에 따라 단속 대장 객체를 반환한다. + * @param crdnId 단속 ID + * @return 단속 대장 객체 + */ + List selectCrdn(LevyExclQuery req); + + default DataObject selectCrdnInfo(LevyExclQuery req) { + List crdn = selectCrdn(req); + + return !crdn.isEmpty() ? crdn.get(0) : null; + } + /**부과제외 대장 정보를 등록한다. * @param params 파라미터 *
  • "excl01" - 부과 제외 대장
  • diff --git a/src/main/java/cokr/xit/fims/excl/service/LevyExclService.java b/src/main/java/cokr/xit/fims/excl/service/LevyExclService.java index c5e1575a..cd16e707 100644 --- a/src/main/java/cokr/xit/fims/excl/service/LevyExclService.java +++ b/src/main/java/cokr/xit/fims/excl/service/LevyExclService.java @@ -63,4 +63,31 @@ public interface LevyExclService { */ String removeLevyExcl(LevyExcl levyExcl); + /**부과제외 대장 정보를 등록한다. + * @param levyExcl 부과제외 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + boolean create(LevyExcl levyExcl); + + /**부과제외 대장 정보를 수정한다. + * @param levyExcl 부과제외 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + boolean update(LevyExcl levyExcl); + + /**부과제외 대장 정보를 삭제한다. + * @param levyExcl 부과제외 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + boolean remove(LevyExcl levyExcl); + } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java index b217f939..c9f60ef6 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclBean.java @@ -83,10 +83,12 @@ public class LevyExclBean extends AbstractComponent { * @return 부과제외 정보 */ public DataObject getLevyExclInfo(LevyExclQuery req) { - DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(req); + DataObject levyExclInfo = new DataObject(); if (req.getCallPurpose().equals("create")) { - levyExclInfo.set("LEVY_EXCL_SE_CD", req.getLevyExclSeCd()); // 부과 제외 구분 코드 + levyExclInfo = levyExclMapper.selectCrdnInfo(req); + } else { + levyExclInfo = levyExclMapper.selectLevyExclInfo(req); } return levyExclInfo; @@ -106,30 +108,30 @@ public class LevyExclBean extends AbstractComponent { String newCrdnSttsCd = ""; // 신규 단속 상태 코드(CRDN_STTS_CD) // 단속 ID로 단속, 부과제외 정보 조회 - DataObject infoCrdnLevyExcl = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId())); + DataObject crdnInfo = levyExclMapper.selectCrdnInfo(new LevyExclQuery().setCrdnId(levyExcl.getCrdnId())); // 부과제외 ID가 있다면 이미 부과제외 자료가 존재하므로 종료.. - if (!infoCrdnLevyExcl.string("LEVY_EXCL_ID").equals("")) { - rtnMsg = "[F] 작업 중 이미 등록된 자료가 존재합니다."; + if (!crdnInfo.string("LEVY_EXCL_ID").equals("")) { + rtnMsg = "[F] 작업 중 이미 등록된 부과제외 자료가 존재합니다."; return rtnMsg; } // 단속 상태 코드(CRDN_STTS_CD) 확인.. if (levyExcl.getLevyExclSeCd().equals("1") || levyExcl.getLevyExclSeCd().equals("2")) { // 비부과(서손), 계고 // 단속 상태 코드가 부과(51) 보다 크다면, 비부과 또는 계고 등록을 할 수 없다. 종료.. - if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() >= 51) { - rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다."; + if (crdnInfo.number("CRDN_STTS_CD").intValue() >= 51) { + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다."; return rtnMsg; } } else if (levyExcl.getLevyExclSeCd().equals("5")) { // 단속 상태 코드가 부과(51) 보다 작다면, 전액감액 등록 할 수 없다. 종료.. 전액감액 등록은 부과이후... - if (infoCrdnLevyExcl.number("CRDN_STTS_CD").intValue() < 51) { - rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + infoCrdnLevyExcl.string("CRDN_STTS_NM") + " 상태 입니다."; + if (crdnInfo.number("CRDN_STTS_CD").intValue() < 51) { + rtnMsg = "[F] 작업 중 오류가 발생하였습니다.
    현재 자료의 단속 상태가 " + crdnInfo.string("CRDN_STTS_NM") + " 상태 입니다."; return rtnMsg; } } // 단속 민원(TB_CRDN_CVLCPT) 민원 처리 확인 - if (!infoCrdnLevyExcl.string("CVLCPT_LINK_ID").equals("")) { - if (infoCrdnLevyExcl.string("CVLCPT_PRCS_CD").equals("00")) { + if (!crdnInfo.string("CVLCPT_LINK_ID").equals("")) { + if (crdnInfo.string("CVLCPT_PRCS_CD").equals("00")) { rtnMsg = "[F] 작업 중 단속 민원 자료가 처리 되지 않았습니다.
    단속 민원 업무를 먼저 처리 하시기 바랍니다.
    "; return rtnMsg; } @@ -153,9 +155,9 @@ public class LevyExclBean extends AbstractComponent { // 단속상태이력(TB_CRDN_STTS_HSTRY) CrdnSttsHstry crdnSttsHstry = new CrdnSttsHstry(); - crdnSttsHstry.setCrdnId(infoCrdnLevyExcl.string("CRDN_ID")); - crdnSttsHstry.setBfrSttsCd(infoCrdnLevyExcl.string("CRDN_STTS_CD")); - crdnSttsHstry.setBfrSttsChgDt(infoCrdnLevyExcl.string("CRDN_STTS_CHG_DT")); + crdnSttsHstry.setCrdnId(crdnInfo.string("CRDN_ID")); + crdnSttsHstry.setBfrSttsCd(crdnInfo.string("CRDN_STTS_CD")); + crdnSttsHstry.setBfrSttsChgDt(crdnInfo.string("CRDN_STTS_CHG_DT")); crdnSttsHstry.setCrdnSttsCd(newCrdnSttsCd); crdnSttsHstry.setTaskDtlId(levyExcl.getLevyExclId()); @@ -211,8 +213,10 @@ public class LevyExclBean extends AbstractComponent { String rtnMsg = "[F] "; // 처리 결과 메시지 // 부과제외(TB_LEVY_EXCL) 정보 조회 - DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery().setLevyExclId(levyExcl.getLevyExclId()) - .setDelYN("N")); + DataObject levyExclInfo = levyExclMapper.selectLevyExclInfo(new LevyExclQuery() + .setLevyExclId(levyExcl.getLevyExclId()) + .setDelYN("N") + ); // 부과제외 ID가 조회되지 않았다면 종료.. if (levyExclInfo.string("LEVY_EXCL_ID").equals("")) { @@ -272,6 +276,39 @@ public class LevyExclBean extends AbstractComponent { return rtnMsg; } + /**부과제외 대장 정보를 등록한다. + * @param levyExcl 부과제외 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public boolean create(LevyExcl levyExcl) { + return levyExclMapper.insert(levyExcl); + } + + /**부과제외 대장 정보를 수정한다. + * @param levyExcl 부과제외 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public boolean update(LevyExcl levyExcl) { + return levyExclMapper.update(levyExcl); + } + + /**부과제외 대장 정보를 삭제한다. + * @param levyExcl 부과제외 대장 + * @return 저장 여부 + *
    • 저장됐으면 true
    • + *
    • 그렇지 않으면 false
    • + *
    + */ + public boolean remove(LevyExcl levyExcl) { + return levyExclMapper.delete(levyExcl); + } + } diff --git a/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclServiceBean.java b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclServiceBean.java index da51d328..03f0dd9f 100644 --- a/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclServiceBean.java +++ b/src/main/java/cokr/xit/fims/excl/service/bean/LevyExclServiceBean.java @@ -92,4 +92,19 @@ public class LevyExclServiceBean extends AbstractServiceBean implements LevyExcl return rtnMsg; } + @Override + public boolean create(LevyExcl levyExcl) { + return levyExclBean.create(levyExcl); + } + + @Override + public boolean update(LevyExcl levyExcl) { + return levyExclBean.update(levyExcl); + } + + @Override + public boolean remove(LevyExcl levyExcl) { + return levyExclBean.remove(levyExcl); + } + } diff --git a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java index 14749682..4c63c8dc 100644 --- a/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java +++ b/src/main/java/cokr/xit/fims/excl/web/Excl01Controller.java @@ -269,44 +269,47 @@ public class Excl01Controller extends ApplicationController { .addObject("rtnMsg", rtnMsg); } -} + /**부과제외 대장를 등록한다. + * @param levyExcl 부과제외 대장 정보 + * @return jsonView + *
     {
    +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ +// @PostMapping(name = "부과제외 대장 등록", value = "/create.do") + public ModelAndView create(LevyExcl levyExcl) { + boolean saved = levyExclService.create(levyExcl); + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**부과제외 대장 정보를 수정한다. + * @param levyExcl 부과제외 대장 정보 + * @return jsonView + *
     {
    +	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ +// @PostMapping(name = "부과제외 대장 수정", value = "/update.do") + public ModelAndView update(LevyExcl levyExcl) { + boolean saved = levyExclService.update(levyExcl); + return new ModelAndView("jsonView") + .addObject("saved", saved); + } + + /**지정한 부과제외 대장를 제거한다. + * @param levyExclIDs 부과제외 대장 아이디 + * @return jsonView + *
     {
    +	 *     "affected": 저장된 정보수
    +	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
    +	 * }
    + */ +// @PostMapping(name = "부과제외 대장 제거", value = "/remove.do") + public ModelAndView remove(LevyExcl levyExcl) { + boolean saved = levyExclService.remove(levyExcl); + return new ModelAndView("jsonView") + .addObject("saved", saved); + } -/* 엑셀 저장 샘플 -if (!"xls".equals(req.getDownload())) { - List result = levyExclService.getLevyExclList(setFetchSize(req)); - return setCollectionInfo(new ModelAndView("jsonView"), result, "levyExcl"); -} else { - XLSWriter xlsx = new XLSWriter() - .setFilename("부과제외 목록.xlsx") - .worksheet(0); - - XLSWriter.Styler header = new XLSWriter.Styler() - .width(20) - .foregroundColor(HSSFColor.HSSFColorPredefined.LIGHT_BLUE.getIndex()) - .configure(styler -> { - Font font = xlsx.workbook().createFont(); - font.setColor(HSSFColor.HSSFColorPredefined.WHITE.getIndex()); - styler.font(font); - }); - CellStyle numeric = xlsx.n_nn0(); - - xlsx.cell(0, 0) - .value("부과제외 목록", XLSWriter.Styler.CENTER) - .merge(0, 15) - .cell(3, 0) - .rowValues(List.of( - "업무구분", header, "부과제외일자", header, "부과제외구분", header, "부과제외사유", header, "기타내용", header, - "민원신청번호", header, "민원접수번호", header, "민원접수일자", header, "단속일시", header, "차량번호", header, - "법정동", header, "단속장소", header, "과태료금액", header, "처리상태", header, "납부자명", header, "납부자생일", header - )) - .cell(4, 0) - .values( - levyExclService.getLevyExclList(req.setFetchSize(0)), - "TASK_SE_NM", xlsx.format(r -> xlsx.str2date(r.get("LEVY_EXCL_YMD"))), "LEVY_EXCL_SE_NM", "LEVY_EXCL_RSN_NM", "ETC_CN", - "CVLCPT_APLY_NO", "CVLCPT_RCPT_NO", xlsx.format(r -> xlsx.str2date(r.get("CVLCPT_RCPT_YMD"))), xlsx.format(r -> xlsx.str2date(r.get("CRDN_YMD")) + " " + xlsx.str2time(r.get("CRDN_TM"))), - "VHRNO", "CRDN_STDG_NM", "CRDN_PLC", xlsx.style("FFNLG_AMT", numeric), "CRDN_STTS_NM", "RTPYR_NM", xlsx.format(r -> xlsx.str2date(r.get("RTPYR_BRDT"))) - ); - return new ModelAndView("xlsView") - .addObject("xls", xlsx); } -*/ diff --git a/src/main/resources/sql/mapper/fims/excl/levyExcl-mapper.xml b/src/main/resources/sql/mapper/fims/excl/levyExcl-mapper.xml index a3f703a2..61dafcc1 100644 --- a/src/main/resources/sql/mapper/fims/excl/levyExcl-mapper.xml +++ b/src/main/resources/sql/mapper/fims/excl/levyExcl-mapper.xml @@ -194,22 +194,10 @@ - SELECT C.CRDN_ID /* 단속 ID */ - , C.SGG_CD /* 시군구 코드 */ - , C.TASK_SE_CD /* 업무 구분 코드 */ - , C.VHRNO /* 차량번호 */ - , C.CRDN_STDG_NM /* 단속 법정동 명 */ - , C.CRDN_ROAD_NM /* 단속 도로 명 */ - , C.CRDN_PLC /* 단속 장소 */ - , C.CRDN_STTS_CD /* 단속 상태 코드 */ - , C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */ - , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */ - , (SELECT GET_CODE_NM('FIM054', C.TASK_SE_CD) FROM DUAL) AS TASK_SE_NM /* 업무 구분 명 */ - , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ - , CC.CVLCPT_LINK_ID /* 민원 연계 ID */ - , CC.CVLCPT_PRCS_CD /* 민원 처리 코드 */ - , CC.CVLCPT_TRSM_CD /* 민원 전송 코드 */ - , LE.LEVY_EXCL_ID /* 부과제외 ID */ + SELECT LE.LEVY_EXCL_ID /* 부과제외 ID */ + , LE.SGG_CD /* 시군구 코드 */ + , LE.TASK_SE_CD /* 업무 구분 코드 */ + , LE.CRDN_ID /* 단속 ID */ , LE.LEVY_EXCL_YMD /* 부과제외 일자 */ , LE.LEVY_EXCL_SE_CD /* 부과제외 구분 코드 */ , LE.LEVY_EXCL_RSN_CD /* 부과제외 사유 코드 */ @@ -227,30 +215,61 @@ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.RGTR) AS RGTR_NM /* 등록자 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.MDFR) AS MDFR_NM /* 수정자 명 */ , (SELECT USER_NM FROM TB_USER X WHERE X.USER_ID = LE.DLTR) AS DLTR_NM /* 삭제자 명 */ - FROM TB_CRDN C - LEFT OUTER JOIN TB_CRDN_CVLCPT CC ON (C.LINK_ID = CC.CVLCPT_LINK_ID AND C.CVLCPT_LINK_YN = 'Y' AND CC.DEL_YN = 'N') - LEFT OUTER JOIN TB_LEVY_EXCL LE ON (C.CRDN_ID = LE.CRDN_ID AND LE.DEL_YN = 'N') + , C.VHRNO /* 차량번호 */ + , C.CRDN_STTS_CD /* 단속 상태 코드 */ + , C.CRDN_STTS_CHG_DT /* 단속 상태 변경 일시 */ + , (CONCAT(C.CRDN_YMD, C.CRDN_TM)) AS CRDN_YMD_TM /* 단속 일시 */ + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ + FROM TB_LEVY_EXCL LE + LEFT OUTER JOIN TB_CRDN C ON (LE.CRDN_ID = C.CRDN_ID) + + /* 부과제외 대장 등록(levyExclMapper.insertLevyExcl) */ SELECT CONCAT(DATE_FORMAT(CURRENT_DATE, '%Y'), LPAD(CAST(IFNULL(MAX(SUBSTRING(LEVY_EXCL_ID, 5)) + 1, 1) AS INT), 16, '0')) AS NEW_ID @@ -305,7 +324,7 @@ UPDATE TB_LEVY_EXCL SET DEL_YN = 'Y' /* 삭제 여부 */ , DEL_DT = /* 삭제 일시 */ - , DLTR = #{levyExcl.removedBy} /* 삭제자 */ + , DLTR = #{levyExcl.modifiedBy} /* 삭제자 */ , DEL_RSN = #{levyExcl.delRsn} /* 삭제 사유 */ WHERE LEVY_EXCL_ID = #{levyExcl.levyExclId} /* 부과 제외 ID */ AND DEL_YN = 'N' diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp index 63659fee..1359837b 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01010-main.jsp @@ -551,7 +551,7 @@ // 검색조건 ${pageName}Control.query = ${pageName}Fields.get(); - ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수 FETCH_XS = 30 + ${pageName}Control.query.fetchSize = ${pageName}Control.defaultFetchSize; // 한번에 조회되는 자료 건수 ${pageName}Control.query.delYN = "N"; // 삭제 여부 ${pageName}Control.load(1); @@ -568,10 +568,16 @@ return; } + // DataTables(그리드) 타이틀 let headerInfo = $("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)").getHeaderInfo(); - ${pageName}Control.query.excelTitle = headerInfo.excelTitle; ${pageName}Control.query.excelTitleWidth = headerInfo.excelTitleWidth; + + // DataTables(그리드) 데이터 + let colDefs = getColDefs($("#theadTr--${pageName} th").not(".dummy-th").not(":eq(0)") + , $($("#${infoPrefix}Row--${pageName}")[0].content).find("td").not(".dummy-td").not(":eq(0)")); + ${pageName}Control.query.colDefs = colDefs; + ${pageName}Control.download(); } diff --git a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp index a991371e..9235d495 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/excl/excl01020-info.jsp @@ -18,6 +18,11 @@
    + +
    + + +
    @@ -215,8 +220,9 @@ // 기본 데이터 설정 setFormData${pageName} = () => { - $("#vhrno--${pageName}").prop("readonly", true); // 차량번호 - $("#levyExclSeNm--${pageName}").prop("readonly", true); // 부과 제외 구분 + $("#crdnYmdTm--${pageName}").prop("readonly", true); // 단속 일시 + $("#vhrno--${pageName}").prop("readonly", true); // 차량번호 + $("#levyExclSeNm--${pageName}").prop("readonly", true); // 부과 제외 구분 if (${pageName}CallPurpose == "view") { // input 요소들을 disabled diff --git a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp index a44e0f61..957f0041 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sprt/sprt02050-info.jsp @@ -80,8 +80,8 @@ -