From da10b3a8e422921a3a5e6937d5d2da582f077648 Mon Sep 17 00:00:00 2001 From: jjh Date: Tue, 26 Dec 2023 17:36:37 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=A0=84=20=EA=B0=90=EA=B2=BD?= =?UTF-8?q?=EB=B6=80=EA=B3=BC=20=EC=88=98=EC=A0=95.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cokr/xit/fims/levy/dao/LevyMapper.java | 2 +- .../xit/fims/levy/service/bean/LevyBean.java | 111 +++++++++--------- .../xit/fims/levy/web/Levy01Controller.java | 10 +- .../xit/fims/sndb/web/Sndb01Controller.java | 4 +- .../sql/mapper/fims/cmmn/task-mapper.xml | 15 ++- .../sql/mapper/fims/levy/levy-mapper.xml | 23 ++-- .../WEB-INF/jsp/fims/excl/excl01010-main.jsp | 2 +- .../WEB-INF/jsp/fims/levy/levy01010-main.jsp | 13 +- .../WEB-INF/jsp/fims/levy/levy01020-info.jsp | 25 ++-- .../WEB-INF/jsp/fims/sndb/sndb01060-info.jsp | 2 +- 10 files changed, 112 insertions(+), 95 deletions(-) diff --git a/src/main/java/cokr/xit/fims/levy/dao/LevyMapper.java b/src/main/java/cokr/xit/fims/levy/dao/LevyMapper.java index dcd0bb25..4eca5d62 100644 --- a/src/main/java/cokr/xit/fims/levy/dao/LevyMapper.java +++ b/src/main/java/cokr/xit/fims/levy/dao/LevyMapper.java @@ -63,7 +63,7 @@ public interface LevyMapper extends AbstractMapper { * @param crdnId 단속 ID * @return 단속 대장 객체 */ - DataObject selectCrdnInfo(String crdnId); + DataObject selectCrdn(String crdnId); /**지정한 단속 ID에 따라 단속 대장 객체를 반환한다. * @param crdnId 단속 ID diff --git a/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java b/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java index 7859b75e..d27c7e95 100644 --- a/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java +++ b/src/main/java/cokr/xit/fims/levy/service/bean/LevyBean.java @@ -112,57 +112,6 @@ public class LevyBean extends AbstractComponent { return levyMapper.selectMaxLevyNo(req); } - /**감경부과 대장 정보를 등록한다. - * @param levy 부과 대장 - * @return 저장 여부 - * - */ - public String createRductLevyList(LevyQuery req) { - // 변수 선언 - String rtnMsg = "[F] "; // 처리 결과 메시지 - - // 최초 조회 - List rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req); - - // 조회 건수와 등록 대상 건수 확인 - if (!req.getTnocs().equals(rductLevyTrgtList.get(0).string("TNOCS"))) { - rtnMsg = "[F] 조회된 총건수와 감경부과 등록 대상건수가 다릅니다."; - return rtnMsg; - } - - // 총 페이지 건수 확인 - int totalPageCnt = rductLevyTrgtList.get(0).number("TOT_CNT").intValue() / req.getFetchSize() + ((rductLevyTrgtList.get(0).number("TOT_CNT").intValue() % req.getFetchSize() == 0) ? 0 : 1); - - // 페이지 건수 + 1 만큼 반복문 실행.. - for (int iLoop = 1; iLoop <= totalPageCnt; iLoop++) { - if (iLoop != 1) { - req.setPageNum(iLoop); - - rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req); - } - - for (int jLoop = 0; jLoop < rductLevyTrgtList.size(); jLoop++) { - Levy levy = new Levy(); - - levy.setCrdnId(rductLevyTrgtList.get(jLoop).string("CRDN_ID")); // 단속 ID - levy.setLevyYmd(req.getLevyYmd()); // 부과 일자 - levy.setFrstDudtYmd(req.getDudtYmd()); // 최초 납기 일자 - levy.setDudtYmd(req.getDudtYmd()); // 납기 일자 - - rtnMsg = createRductLevy(levy); - if (rtnMsg.contains("[F]")) { - throw new RuntimeException(rtnMsg); - } - } - } - - rtnMsg = "[S] 작업이 정상 처리 되었습니다."; - - return rtnMsg; - } - /**감경부과 대장 정보를 등록한다. * @param levy 부과 대장 * @return 저장 여부 @@ -179,7 +128,7 @@ public class LevyBean extends AbstractComponent { ManagedUser managedUser = (ManagedUser)currentUser().getUser(); // 단속 정보 - DataObject crdnInfo = levyMapper.selectCrdnInfo(levy.getCrdnId()); + DataObject crdnInfo = levyMapper.selectCrdn(levy.getCrdnId()); if (!crdnInfo.string("LEVY_ID").equals("")) { throw new RuntimeException("감경부과 등록 중 이미 감경부과된 자료가 있습니다."); // 예외를 발생시켜서 DB Rollback @@ -191,9 +140,9 @@ public class LevyBean extends AbstractComponent { // 전용차로위반, 주정차위반 과태료 if ("BPV,PVS".contains(crdnInfo.string("TASK_SE_CD"))) { String maxLevyNo = levyMapper.selectMaxLevyNo(new LevyQuery().setFyr(crdnInfo.string("TODAY").substring(0, 4)) - .setAcntgSeCd(crdnInfo.string("ACNTG_SE_CD")) - .setTxitmCd(crdnInfo.string("TXITM_CD")) - .setSggCd(crdnInfo.string("SGG_CD"))); // 최종 부과번호+1 을 조회 한다. + .setAcntgSeCd(crdnInfo.string("ACNTG_SE_CD")) + .setTxitmCd(crdnInfo.string("TXITM_CD")) + .setSggCd(crdnInfo.string("SGG_CD"))); // 최종 부과번호+1 을 조회 한다. levy.setFyr(levy.getLevyYmd().substring(0, 4)); // 회계연도 levy.setLevyNo(maxLevyNo); // 부과 번호 @@ -281,6 +230,58 @@ public class LevyBean extends AbstractComponent { return rtnMsg; } + + /**감경부과 대장 정보를 등록한다. + * @param levy 부과 대장 + * @return 저장 여부 + * + */ + public String createRductLevyList(LevyQuery req) { + // 변수 선언 + String rtnMsg = "[F] "; // 처리 결과 메시지 + + // 최초 조회 + List rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req); + + // 조회 건수와 등록 대상 건수 확인 + if (!req.getTnocs().equals(rductLevyTrgtList.get(0).string("TNOCS"))) { + rtnMsg = "[F] 조회된 총건수와 감경부과 등록 대상건수가 다릅니다."; + return rtnMsg; + } + + // 총 페이지 건수 확인 + int totalPageCnt = rductLevyTrgtList.get(0).number("TOT_CNT").intValue() / req.getFetchSize() + ((rductLevyTrgtList.get(0).number("TOT_CNT").intValue() % req.getFetchSize() == 0) ? 0 : 1); + + // 페이지 건수 + 1 만큼 반복문 실행.. + for (int iLoop = 1; iLoop <= totalPageCnt; iLoop++) { + if (iLoop != 1) { + req.setPageNum(iLoop); + + rductLevyTrgtList = levyMapper.selectRductLevyTrgtList(req); + } + + for (int jLoop = 0; jLoop < rductLevyTrgtList.size(); jLoop++) { + Levy levy = new Levy(); + + levy.setCrdnId(rductLevyTrgtList.get(jLoop).string("CRDN_ID")); // 단속 ID + levy.setLevyYmd(req.getLevyYmd()); // 부과 일자 + levy.setFrstDudtYmd(req.getDudtYmd()); // 최초 납기 일자 + levy.setDudtYmd(req.getDudtYmd()); // 납기 일자 + + rtnMsg = createRductLevy(levy); + if (rtnMsg.contains("[F]")) { + throw new RuntimeException(rtnMsg); + } + } + } + + rtnMsg = "[S] 작업이 정상 처리 되었습니다."; + + return rtnMsg; + } + /**감경부과 대장의 부과일자, 최초납기일자, 납기일자 정보를 수정한다. * @param levy 부과 대장 * @return 저장 여부 diff --git a/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java b/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java index 9b359967..415bee8c 100644 --- a/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java +++ b/src/main/java/cokr/xit/fims/levy/web/Levy01Controller.java @@ -43,7 +43,7 @@ public class Levy01Controller extends ApplicationController { reductionLevyTargetMain = "/010/main.do" // 사전 감경부과 대상 메인 화면 , getReductionLevyTargetList = "/010/list.do" // 사전 감경부과 대상 대장 목록 조회 , getReductionLevyTargetInfo = "/020/info.do" // 사전 감경부과 대상 정보 - , createReductionLevyList = "/020/createRductLevyList.do" // 사전 감경부과 대장 등록 + , createReductionLevyList = "/020/createRductLevyList.do" // 사전 감경부과 등록 , levyMain = "/050/main.do" // 부과 관리 메인 화면 , getLevyList = "/050/list.do" // 부과 대장 목록 조회 ; @@ -71,7 +71,8 @@ public class Levy01Controller extends ApplicationController { addCodes(commonCodes, mav, "FIM004", "FIM005", "FIM006", "FIM061", "FIM064"); - return mav.addObject("pageName", "levy01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix + return mav + .addObject("pageName", "levy01010") // View(jsp)에서 사용할 id 뒤에 붙일 suffix .addObject("infoPrefix", "rductLevyTrgt") // prefix .addObject("sggCd", managedUser.getOrgID()) // 시군구 코드(SGG_CD) .addObject("FIM054List", commonCodes.get("FIM054")) // 업무 구분 코드(TASK_SE_CD) @@ -182,13 +183,14 @@ public class Levy01Controller extends ApplicationController { ModelAndView mav = new ModelAndView(json ? "jsonView" : "fims/levy/levy01020-info"); + // 이전에 조회되었던 총건수, 금액 rductLevyYmdInfo.put("TNOCS", req.getTnocs()); rductLevyYmdInfo.put("GRAMT", req.getGramt()); return mav .addObject("pageName", "levy01020") - .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 - .addObject("levyQuery", json ? req : toJson(req)) // Query + .addObject("callPurpose", req.getCallPurpose()) // 호출 용도 + .addObject("levyQuery", json ? req : toJson(req)) // Query .addObject("rductLevyYmdInfo", json ? rductLevyYmdInfo : toJson(rductLevyYmdInfo)) ; } diff --git a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java index 3c5c5f76..5f0302f4 100644 --- a/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java +++ b/src/main/java/cokr/xit/fims/sndb/web/Sndb01Controller.java @@ -291,7 +291,7 @@ public class Sndb01Controller extends ApplicationController { DataObject taskInfo = taskService.getTaskInfo(new CmmnQuery().setSggCd(req.getSggCd()) .setTaskSeCd(req.getTaskSeCd())); - int advntceDaycnt = taskInfo.number("ADVNTCE_DAYCNT").intValue(); + int advntceDayCnt = taskInfo.number("ADVNTCE_DAY_CNT").intValue(); boolean json = jsonResponse(); @@ -302,7 +302,7 @@ public class Sndb01Controller extends ApplicationController { .addObject("taskSeCd", req.getTaskSeCd()) .addObject("sndngSeCd", req.getSndngSeCd()) // 발송 구분 코드 .addObject("vltnCd", req.getVltnCd()) // 위반 코드 - .addObject("advntceDaycnt", advntceDaycnt) // 사전통지 일수 + .addObject("advntceDayCnt", advntceDayCnt) // 사전통지 일수 .addObject("advntceTrgtDtl", json ? advntceTrgts : toJson(advntceTrgts)) // 사전통지 발송 대상 정보 ; } diff --git a/src/main/resources/sql/mapper/fims/cmmn/task-mapper.xml b/src/main/resources/sql/mapper/fims/cmmn/task-mapper.xml index fc7e857b..1ac3573d 100644 --- a/src/main/resources/sql/mapper/fims/cmmn/task-mapper.xml +++ b/src/main/resources/sql/mapper/fims/cmmn/task-mapper.xml @@ -11,7 +11,7 @@ - + @@ -29,7 +29,7 @@ SELECT T.SGG_CD /* 시군구 코드 */ , T.TASK_SE_CD /* 업무 구분 코드 */ , T.TASK_SE_NM /* 업무 구분 명 */ - , T.ADVNTCE_DAYCNT /* 사전통지 일수 */ + , T.ADVNTCE_DAY_CNT /* 사전통지 일수 */ , T.ADVNTCE_RDUCT_RT /* 사전통지 감경 율 */ , T.WKSN_RDUCT_RT /* 사회적약자 감경 율 */ , T.FFNLG_ADTN_YMD /* 과태료 가산 일자 */ @@ -69,12 +69,11 @@ /* 감경부과 대상 목록 조회(levyMapper.selectRductLevyTrgtList) */ - SELECT COUNT(*) OVER() AS TNOCS - , SUM(C.ADVNTCE_AMT) OVER() AS GRAMT + SELECT COUNT(*) OVER() AS TNOCS + , SUM(C.FFNLG_AMT) OVER() AS GRAMT , C.CRDN_ID /* 단속 ID */ , C.SGG_CD /* 시군구 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */ @@ -507,7 +507,7 @@ - /* 단속 정보 가져오기(levyMapper.selectCrdn) */ SELECT C.CRDN_ID /* 단속 ID */ , C.SGG_CD /* 시군구 코드 */ , C.TASK_SE_CD /* 업무 구분 코드 */ @@ -539,7 +539,8 @@ , C.ADTN_AMT , C.MINUS_AMT , C.RCVMT_AMT - , C.BFR_CRDN_ID + , (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK /* 단속 일시 마스크 */ + , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ , V.VLTN_CD /* 위반 코드 */ , V.VLTN_ARTCL /* 위반 항목 */ , V.VLTN_LAW_NM /* 위반 법 명 */ @@ -550,13 +551,17 @@ , V.TXITM_CD /* 세목 코드 */ , V.OPER_ITEM_CD /* 운영 항목 코드 */ , V.SPCL_BIZ_CD /* 특별회계 사업 코드 */ + , P.RTPYR_ID /* 납부자 ID */ + , P.RTPYR_NO /* 납부자 번호 */ + , P.RTPYR_NM /* 납부자 명 */ + , P.RTPYR_STTS_CD /* 납부자 상태 코드 */ + , (SELECT GET_CODE_NM('FIM014', P.RTPYR_STTS_CD) FROM DUAL) AS RTPYR_STTS_NM /* 납부자 상태 명 */ , L.LEVY_ID /* 부과 ID */ - , AS TODAY /* 오늘 일자 */ - , (SELECT GET_MASK_DATETIME(C.CRDN_YMD, '-', C.CRDN_TM, ':') FROM DUAL) AS CRDN_YMD_TM_MASK /* 단속 일시 마스크 */ - , (SELECT GET_CODE_NM('FIM010', C.CRDN_STTS_CD) FROM DUAL) AS CRDN_STTS_NM /* 단속 상태 명 */ + , AS TODAY /* 오늘 일자 */ FROM TB_CRDN C - INNER JOIN TB_VLTN V ON (C.VLTN_ID = V.VLTN_ID AND C.SGG_CD = V.SGG_CD AND C.TASK_SE_CD = V.TASK_SE_CD AND V.USE_YN = 'Y') - LEFT OUTER JOIN TB_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') + INNER 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_LEVY L ON (C.CRDN_ID = L.CRDN_ID AND L.DEL_YN = 'N') WHERE C.CRDN_ID = #{crdnId} /* 단속 ID */ AND C.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 1359837b..bf6565c2 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 @@ -368,7 +368,7 @@ } ajax.get({ - url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do?openerPageName=${pageName}") + url : ${pageName}Control.urls.getInfo + "?openerPageName=${pageName}" , data : params || {} , success : resp => { dialog.open({ diff --git a/src/main/webapp/WEB-INF/jsp/fims/levy/levy01010-main.jsp b/src/main/webapp/WEB-INF/jsp/fims/levy/levy01010-main.jsp index e00b7059..200318db 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/levy/levy01010-main.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/levy/levy01010-main.jsp @@ -5,7 +5,7 @@
- 사전 감경부과 대상 + 사전 감경부과
@@ -357,7 +357,7 @@ } ajax.get({ - url : wctx.url("/" + params.taskSeCd + ${pageName}PrefixUrl + "/020/info.do") + url : ${pageName}Control.urls.getInfo , data : params || {} , success : resp => { dialog.open({ @@ -516,10 +516,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(); } @@ -596,6 +602,7 @@ // URL 설정 setURL${pageName} = (taskSeCd) => { ${pageName}Control.urls.load = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/010/list.do"); // 조회 + ${pageName}Control.urls.getInfo = wctx.url(taskSeCd + ${pageName}PrefixUrl + "/020/info.do"); // 등록 } // 기본 데이터 설정 diff --git a/src/main/webapp/WEB-INF/jsp/fims/levy/levy01020-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/levy/levy01020-info.jsp index 7dde9147..ccea75ab 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/levy/levy01020-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/levy/levy01020-info.jsp @@ -14,7 +14,6 @@ -
@@ -23,6 +22,11 @@
+ +
+ + % +
@@ -83,10 +87,6 @@ , prefixName : "감경부과" , keymapper : info => info ? info.CRDN_ID : "" , dataGetter : obj => obj.rductLevyInfo - , urls : { - create : wctx.url(${pageName}PrefixUrl + "/020/create.do") // 등록 - , update : wctx.url(${pageName}PrefixUrl + "/020/update.do") // 수정 - } , formats : { TNOCS : numberFormat , GRAMT : numberFormat @@ -194,18 +194,21 @@ // 기본 데이터 설정 setFormData${pageName} = () => { - $("#tnocs--${pageName}").prop("readonly", true); // 총건수 - $("#gramt--${pageName}").prop("readonly", true); // 총금액 + $("#tnocs--${pageName}").prop("readonly", true); // 총건수 + $("#gramt--${pageName}").prop("readonly", true); // 총금액 + $("#advntceRductRt--${pageName}").prop("readonly", true); // 감경율 if (${pageName}CallPurpose == "view") { // input 요소들을 disabled $("#frmEdit--${pageName}").find("input,textarea,select").prop("disabled", true); // button 요소들을 disabled - $("#btnLevyYmd--${pageName}").prop("disabled", true); // 부과 일자 버튼 - $("#btnDudtYmd--${pageName}").prop("disabled", true); // 납기 일자 버튼 - $("#btnSave--${pageName}").prop("disabled", true); // 저장 버튼 + $("#btnLevyYmd--${pageName}").prop("disabled", true); // 부과 일자 버튼 + $("#btnDudtYmd--${pageName}").prop("disabled", true); // 납기 일자 버튼 + $("#btnSave--${pageName}").prop("disabled", true); // 저장 버튼 } else if (${pageName}CallPurpose == "create") { - // +// let advntceDayCnt = ${pageName}Control.dataset.getValue("ADVNTCE_DAY_CNT"); +// $("#levyYmd--${pageName}").datepicker("setDate", new Date()); +// $("#dudtYmd--${pageName}").datepicker("setDate", DateUtil.getDateDay(advntceDayCnt).date); } else if (${pageName}CallPurpose == "update") { // } diff --git a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp index 7cd63660..b04d7384 100644 --- a/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp +++ b/src/main/webapp/WEB-INF/jsp/fims/sndb/sndb01060-info.jsp @@ -325,7 +325,7 @@ initDatepicker("frmEdit--${pageName}"); $("#sndngYmd--${pageName}").datepicker("setDate", new Date()); - $("#sndngEndYmd--${pageName}").datepicker("setDate", DateUtil.getDateDay(${advntceDaycnt}).date); + $("#sndngEndYmd--${pageName}").datepicker("setDate", DateUtil.getDateDay(${advntceDayCnt}).date); } /**************************************************************************