From 42af207701fd3369f66142c377f2f0bacb16ff3c Mon Sep 17 00:00:00 2001 From: myname Date: Tue, 20 Feb 2024 17:37:18 +0900 Subject: [PATCH] =?UTF-8?q?2024-02-20=2017:36=20=EA=B8=B0=EC=86=8C?= =?UTF-8?q?=EC=9C=A0=EC=98=88=20=EC=A0=95=EB=A0=AC=20=EC=88=9C=EC=84=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../instrInfo/service/VEInstrMixService.java | 4 + .../instrInfo/service/impl/VEInstrMixDAO.java | 7 + .../service/impl/VEInstrMixServiceImpl.java | 5 + .../web/CndtnInstrMngController.java | 250 +++++ .../ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml | 2 +- .../ve/instr/VESttst_MIX_SQL_Tibero.xml | 36 +- .../cndtnSspnIdtmt/newEduPrfrmMngList.jsp | 925 ++++++++++++++++++ 7 files changed, 1227 insertions(+), 2 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/newEduPrfrmMngList.jsp diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java index 3f92da0c..3f71fbde 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrMixService.java @@ -144,4 +144,8 @@ public interface VEInstrMixService { //교육실정통계- 12.② 지역별 운영신청 수, 운영확정 수, 운영진행 수, 결과보고 수, 운영종료 수, 운영취소 수(그래프, 비율 포함) List selectEduPrfrmInfo_Exprn_no12(VEInstrDetailVO vEInstrDetailVO) throws Exception; + + //조건부기소유예관리 통계 + //교육실정통계- ①검찰청별 교육 의뢰 현황(그래프 포함) + List selectEduPrfrmInfo_csi_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception; } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java index b162e392..de96f651 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixDAO.java @@ -295,4 +295,11 @@ public class VEInstrMixDAO extends EgovAbstractDAO { List tlist = (List) list("VESttstMixDAO.selectEduPrfrmInfo_Exprn_no12", vEInstrDetailVO); return tlist; } + + + //통계정보-조건부기소유예관리-①검찰청별 교육 의뢰 현황(그래프 포함) + public List selectEduPrfrmInfo_csi_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception { + List tlist = (List) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no1", vEInstrDetailVO); + return tlist; + } } diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java index 84a9b729..b27f42c8 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/impl/VEInstrMixServiceImpl.java @@ -229,4 +229,9 @@ public class VEInstrMixServiceImpl implements VEInstrMixService { public List selectEduPrfrmInfo_Exprn_no12(VEInstrDetailVO vEInstrDetailVO) throws Exception{ return vEInstrMixDAO.selectEduPrfrmInfo_Exprn_no12(vEInstrDetailVO); } + + + public List selectEduPrfrmInfo_csi_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception{ + return vEInstrMixDAO.selectEduPrfrmInfo_csi_no1(vEInstrDetailVO); + } } diff --git a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnInstrMngController.java b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnInstrMngController.java index e99235f4..2e20a7c4 100644 --- a/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnInstrMngController.java +++ b/src/main/java/kcc/ve/oprtn/cndtnSspnIdtmt/web/CndtnInstrMngController.java @@ -33,6 +33,9 @@ import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; +import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService; +import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO; +import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrMIXService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; @@ -141,6 +144,14 @@ public class CndtnInstrMngController { @Resource(name = "vEInstrFeeService") private VEInstrFeeService vEInstrFeeService; + //rkdtk 관리 + @Resource(name = "vEInstrMixService") + private VEInstrMixService vEInstrMixService; + + //강의설정 MIX + @Resource(name = "vELctrMIXService") + private VELctrMIXService vELctrMIXService; + /* // 교육신청 서비스단 @@ -500,6 +511,223 @@ public class CndtnInstrMngController { return modelAndView; } + /** + * 교육실적통계 화면 + */ + @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/newEduPrfrmMngList.do") + public String newEduPrfrmMngList( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , @ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO + , @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail + + , HttpSession session + , ModelMap model + ) throws Exception { + + //LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + + + //설정 년 리스트(과거~올해+1) + List selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO); + model.addAttribute("selectStngYrList", selectStngYrList); + + + //vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예 + + + //통계- ①월별 횟수/교육인원(그래프 포함) + { + //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_tngr_no1(vEInstrDetailVODetail); + + //복호화 + selectAsgnmInfoT2List_no1 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no1); + + model.addAttribute("list_no1",selectAsgnmInfoT2List_no1); + } + + + //통계- ②월별 지역별 교육횟수(그래프 포함) + { + vEInstrDetailVODetail.setNo3("10"); /* 10-횟수, 20-인원 */ + //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List_no2 = vEInstrMixService.selectEduPrfrmInfo_tngr_no2_no3(vEInstrDetailVODetail); + + //복호화 + selectAsgnmInfoT2List_no2 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no2); + + model.addAttribute("list_no2",selectAsgnmInfoT2List_no2); + } + + + //통계- ③월별 지역별 교육인원(그래프 포함) + { + vEInstrDetailVODetail.setNo3("20"); /* 10-횟수, 20-인원 */ + //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_tngr_no2_no3(vEInstrDetailVODetail); + + //복호화 + selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3); + + model.addAttribute("list_no3",selectAsgnmInfoT2List_no3); + } + + + //통계- ④월별 강사종류별,강사별 교육횟수(그래프 포함) + { + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List_no4 = vEInstrMixService.selectEduPrfrmInfo_tngr_no4(vEInstrDetailVODetail); + + //복호화 + selectAsgnmInfoT2List_no4 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no4); + + model.addAttribute("list_no4",selectAsgnmInfoT2List_no4); + } + + // ⑤월별 교육대상별 교육횟수(그래프 포함) - 대상이 없어서 제공안됨 + // ⑥월별 교육대상별 교육횟수(그래프 포함) - 대상이 없어서 제공안됨 + // ⑦월별 교육대상별 교육인원(그래프 포함) - 대상이 없어서 제공안됨 + { + //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List_no5_no_6_no7 = vEInstrMixService.selectEduPrfrmInfo_adult_no5_no6_no7(vEInstrDetailVODetail); + + //복호화 + selectAsgnmInfoT2List_no5_no_6_no7 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no5_no_6_no7); + + model.addAttribute("list_no5_no6_no7",selectAsgnmInfoT2List_no5_no_6_no7); + } + //통계- ⑧인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨 + /* + { + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List_no8 = vEInstrMixService.selectEduPrfrmInfo_tngr_no8(vEInstrDetailVODetail); + + //복호화 + selectAsgnmInfoT2List_no8 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no8); + + model.addAttribute("list_no8",selectAsgnmInfoT2List_no8); + } + */ + + + //통계- ⑨도서벽지별 지역교육횟수, 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨 + /* + { + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List_no9 = vEInstrMixService.selectEduPrfrmInfo_tngr_no9(vEInstrDetailVODetail); + + //복호화 + selectAsgnmInfoT2List_no9 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no9); + + model.addAttribute("list_no9",selectAsgnmInfoT2List_no9); + } + */ + return "oprtn/cndtnSspnIdtmt/newEduPrfrmMngList"; + + + } + + /** + * 교육실적통계 Excel - 조건부기소유예 - ①검찰청별 교육 의뢰 현황(그래프 포함) + * @param model + * @return + * @throws Exception + */ + @SuppressWarnings("rawtypes") + @RequestMapping(value = "/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no1.do") + public ModelAndView eduPrfrmMngExcelDownLoad_csi_no1( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail + , ModelMap model + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + + try { + + //통계- ①월별 횟수/교육인원(그래프 포함) + //vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_tngr_no1(vEInstrDetailVODetail); + + //복호화 + //selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List); + + System.out.println("out-list-2"); + + + List excelData = new ArrayList<>(); + excelData.addAll(selectAsgnmInfoT2List); + + + // 세팅값 + String title = "교육실적통계-월별 횟수.교육인원"; + int[] width = { + + 4000, 4000 + , 4000 + , 4000, 4000 + //, 4000 + , 4000 + + , 4000, 4000, 4000, 4000, 4000 + , 4000, 4000, 4000, 4000, 4000 + + }; // 너비 + + //33개 항목 + String[] header = { + + "구분" + , "횟수/인원" + , "1월" + //, "요일" + , "2월" + + , "3월", "4월", "5월", "6월", "7월" + , "8월", "9월", "10월", "11월", "12월" + , "합계" + + }; + + String[] order = { + + "EduSlctCd" + , "Chasi" + , "Mnt01" + //, "wCnt" + , "Mnt02" + + , "Mnt03", "Mnt04", "Mnt05", "Mnt06", "Mnt07" + , "Mnt08", "Mnt09", "Mnt10", "Mnt11", "Mnt12" + , "MntSum" + + }; + + excelDown( + excelData, + title, + width, + header, + order, + model + ); + + }catch(Exception ep) { + ep.getStackTrace(); + } + + + modelAndView.addObject(model); + + return modelAndView; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // @@ -617,4 +845,26 @@ public class CndtnInstrMngController { return p_paginationInfo; } + + @SuppressWarnings("unused") + private void excelDown( + List list, + String title, + int[] width, + String[] header, + String[] order, + ModelMap model + ){ + // 호출 + SXSSFWorkbook workbook; + try { + workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } diff --git a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml index 1733a872..2251c795 100644 --- a/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml @@ -429,7 +429,7 @@ ORDER BY a.req_pnttm DESC - , NVL(a.prcs_aplct_prd_ord_cmplt, a.sspn_idtmt_trgt_ord) + , a.sspn_idtmt_trgt_ord DESC , a.prcs_aplct_prd_ord_cmplt DESC , a.frst_regist_pnttm desc OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY; diff --git a/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Tibero.xml index da165be8..7f13576f 100644 --- a/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Tibero.xml @@ -1384,5 +1384,39 @@ AND 999>bbb.code ORDER BY decode(bbb.code,'999','희희',bbb.code_nm) - + + + + + diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/newEduPrfrmMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/newEduPrfrmMngList.jsp new file mode 100644 index 00000000..60b3a355 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/oprtn/cndtnSspnIdtmt/newEduPrfrmMngList.jsp @@ -0,0 +1,925 @@ + +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%> +<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %> + +<% + /** + * @Class Name : newEduPrfrmMngList.jsp + * @Description : 교육신청관리 > 교육실적통계 (new 2024-01-10) + * @Modification Information + * @ + * @ 수정일 수정자 수정내용 + * @ ------- -------- --------------------------- + * @ 2021.12.14 조용준 최초 생성 + * @author 조용준 + * @since 2021.12.14 + * @version 1.0 + * @see + * + */ +%> + + + + + + +교육확정관리 + + + + + " /> + " /> + + + +
+
+ +
+

교육실적통계

+
    +
  • +
  • +

    조건부기소유예관리

    +
  • +
  • 교육실적통계
  • +
+
+ + +
+ +
+
+
+

구분

+
+
+ + + +
+
+
+ + + + + +
+ +

+ ①검찰청별 교육 의뢰 현황 +

+
+ + + +
+
+ + +
+ + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분횟수/인원1월2월3월4월5월6월7월8월9월10월11월12월합계
+ + + + + + + + +
+
+ + + + + + + + + + + + +
+
+
+ +
+ + + + +
+ +

+ ②월별 지역별 교육횟수 +

+
+ + + +
+
+ + +
+ + +<%-- --%> + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + +
구분지역1월2월3월4월5월6월7월8월9월10월11월12월합계
+ + + + + + + + +
+
+ + + + + + + +
+ +

+ ③월별 지역별 교육인원 +

+
+ + + +
+
+ + +
+ + +<%-- --%> + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + +
구분지역1월2월3월4월5월6월7월8월9월10월11월12월합계
+ + + + + + + + +
+
+ + + + +
+ +

+ ④월별 강사종류별,강사별 교육횟수 +

+
+ + + +
+
+ + +
+ + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- --%> + + + + + + + + + + + + + + + +
강사명구분교육횟수강사료수당교통비숙박비
+
+ + + +
+ +

+ ⑤월별 교육대상별 교육횟수/⑥월별 교육대상별 교육횟수/⑦월별 교육대상별 교육인원 +

+
+ + + +
+
+ + +
+ + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분횟수/인원1월2월3월4월5월6월7월8월9월10월11월12월합계
+
+ + + +
+ +

+ ⑧인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자 - 대상이 없어서 제공안됨 +

+
+ + + +
+
+ + + + +
+ +

+ ⑨도서벽지별 지역교육횟수, 교육인원, 교육기관, 교육일자 - 대상이 없어서 제공안됨 +

+
+ + + +
+
+ + +
+
+
+
+
+ +