diff --git a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrDetailVO.java b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrDetailVO.java index 5a8841ad..107e883d 100644 --- a/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrDetailVO.java +++ b/src/main/java/kcc/ve/instr/tngrVisitEdu/instrInfo/service/VEInstrDetailVO.java @@ -208,6 +208,10 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable { private String yNowMthreeStsfc; private String yNowMfourStsfc; + private String lctrDivCd; //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예 + + private String no3; //통계 데이터 구분 10-횟수, 20-인원 + public String getDesc1() { return desc1; @@ -1051,5 +1055,17 @@ public class VEInstrDetailVO extends ComDefaultVO implements Serializable { public void setyNowMfourStsfc(String yNowMfourStsfc) { this.yNowMfourStsfc = yNowMfourStsfc; } + public String getLctrDivCd() { + return lctrDivCd; + } + public void setLctrDivCd(String lctrDivCd) { + this.lctrDivCd = lctrDivCd; + } + public String getNo3() { + return no3; + } + public void setNo3(String no3) { + this.no3 = no3; + } } 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 3f8c5d9d..8787f84b 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 @@ -113,4 +113,11 @@ public interface VEInstrMixService { List selectWhereInDetailReport(VEInstrDetailVO vEInstrDetailVO); List selectInstrExcelList(VEInstrDetailVO vEInstrDetailVO); + + + //교육실정통계- ①월별 횟수/교육인원(그래프 포함) + List selectEduPrfrmInfo_tngr_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception; + + //교육실정통계- ②월별 지역별 교육횟수/③교육인원(그래프 포함) + List selectEduPrfrmInfo_tngr_no2_no3(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 22883a9d..ea88e2b2 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 @@ -188,7 +188,7 @@ public class VEInstrMixDAO extends EgovAbstractDAO { List tlist = (List) list("VEInstrMixDAO.selectEduPrfrmInfo", vEInstrDetailVO); return tlist; } - + public List selectEduPrfrmInfoAdult(VEInstrDetailVO vEInstrDetailVO) throws Exception { List tlist = (List) list("VEInstrMixDAO.selectEduPrfrmInfoAdult", vEInstrDetailVO); return tlist; @@ -245,4 +245,17 @@ public class VEInstrMixDAO extends EgovAbstractDAO { List tlist = (List) list("VEInstrMixDAO.selectInstrExcelList", vEInstrDetailVO); return tlist; } + + + //통계정보-청소년-①월별 횟수/교육인원(그래프 포함) + public List selectEduPrfrmInfo_tngr_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception { + List tlist = (List) list("VESttstMixDAO.selectEduPrfrmInfo_tngr_no1", vEInstrDetailVO); + return tlist; + } + + //통계정보-청소년-②월별 지역별 교육횟수/③교육인원(그래프 포함) + public List selectEduPrfrmInfo_tngr_no2_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception { + List tlist = (List) list("VESttstMixDAO.selectEduPrfrmInfo_tngr_no2_no3", 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 4256ddfc..bd19b50d 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 @@ -138,7 +138,7 @@ public class VEInstrMixServiceImpl implements VEInstrMixService { public List selectEduPrfrmInfo(VEInstrDetailVO vEInstrDetailVO) throws Exception{ return vEInstrMixDAO.selectEduPrfrmInfo(vEInstrDetailVO); } - + public List selectEduPrfrmInfoAdult(VEInstrDetailVO vEInstrDetailVO) throws Exception{ return vEInstrMixDAO.selectEduPrfrmInfoAdult(vEInstrDetailVO); } @@ -196,4 +196,14 @@ public class VEInstrMixServiceImpl implements VEInstrMixService { public List selectInstrExcelList(VEInstrDetailVO vEInstrDetailVO) { return vEInstrMixDAO.selectInstrExcelList(vEInstrDetailVO); } + + + public List selectEduPrfrmInfo_tngr_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception{ + return vEInstrMixDAO.selectEduPrfrmInfo_tngr_no1(vEInstrDetailVO); + } + + public List selectEduPrfrmInfo_tngr_no2_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception{ + return vEInstrMixDAO.selectEduPrfrmInfo_tngr_no2_no3(vEInstrDetailVO); + } + } diff --git a/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAsgnmCnfrmMng/web/EduAsgnmCnfrmMngTngrController.java b/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAsgnmCnfrmMng/web/EduAsgnmCnfrmMngTngrController.java index ee1c4cd5..ede4f72c 100644 --- a/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAsgnmCnfrmMng/web/EduAsgnmCnfrmMngTngrController.java +++ b/src/main/java/kcc/ve/oprtn/tngrVisitEdu/eduAsgnmCnfrmMng/web/EduAsgnmCnfrmMngTngrController.java @@ -1315,6 +1315,88 @@ public class EduAsgnmCnfrmMngTngrController { return "oprtn/tngrVisitEdu/eduPrfrmMngList"; } + /** + * 교육실적통계 화면 + */ + @RequestMapping("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); + + /* + //1.pageing step1 + //vEInstrDetailVODetail.setPageUnit(10); + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo = vEPagingUtil.setPagingStep1_VEInstrDetailVO(paginationInfo, vEInstrDetailVODetail); + + + //2. pageing step2 + vEInstrDetailVODetail = vEPagingUtil.setPagingStep2_VEInstrDetailVO(vEInstrDetailVODetail, paginationInfo); + */ + + + 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); + + + /* 10-횟수, 20-인원 */ + vEInstrDetailVODetail.setNo3("10"); + //통계- ②월별 지역별 교육횟수(그래프 포함) + 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); + + + /* 10-횟수, 20-인원 */ + vEInstrDetailVODetail.setNo3("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); + + + /* + //3.pageing step3 + paginationInfo = vEPagingUtil.setPagingStep3_VELctrDetailVO(selectAsgnmInfoT2List, paginationInfo); + + model.addAttribute("paginationInfo", paginationInfo); + */ + + + + return "oprtn/tngrVisitEdu/newEduPrfrmMngList"; + } + /** * 교육실적통계 Excel * @param model @@ -1573,6 +1655,233 @@ public class EduAsgnmCnfrmMngTngrController { modelAndView.addObject(model); return modelAndView; } + + /** + * 교육실적통계 Excel - 청소년 - ①월별 횟수/교육인원(그래프 포함) + * @param model + * @return + * @throws Exception + */ + @SuppressWarnings("rawtypes") + @RequestMapping(value = "eduPrfrmMngExcelDownLoad_tngr_no1.do") + public ModelAndView eduPrfrmMngExcelDownLoad_tngr_no1( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail + , ModelMap model + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + + try { + + /* + //1.pageing step1 + //vEInstrDetailVODetail.setPageUnit(10); + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo = vEPagingUtil.setPagingStep1_VEInstrDetailVO(paginationInfo, vEInstrDetailVODetail); + + + //2. pageing step2 + vEInstrDetailVODetail = vEPagingUtil.setPagingStep2_VEInstrDetailVO(vEInstrDetailVODetail, paginationInfo); + */ + + + //통계- ①월별 횟수/교육인원(그래프 포함) + 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" + + }; + + /* + // 호출 + SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + */ + + excelDown( + excelData, + title, + width, + header, + order, + model + ); + + }catch(Exception ep) { + ep.getStackTrace(); + } + + + modelAndView.addObject(model); + + return modelAndView; + } + + /** + * 교육실적통계 Excel - 청소년 + * ②월별 지역별 교육횟수(그래프 포함) + ③월별 지역별 교육인원(그래프 포함) + * @param model + * @return + * @throws Exception + */ + @SuppressWarnings("rawtypes") + @RequestMapping(value = "eduPrfrmMngExcelDownLoad_tngr_no2_no3.do") + public ModelAndView eduPrfrmMngExcelDownLoad_tngr_no2_no3( + @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO + , @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail + , ModelMap model + ) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("excelDownloadView"); + + try { + String s_no3 = vEInstrDetailVODetail.getNo3(); + String title = "교육실적통계-월별 횟수.교육인원"; + + if ("10".equals(s_no3)) { + title = "교육실적통계-월별 지역별 교육횟수"; + }else if ("20".equals(s_no3)) { + title = "교육실적통계-월별 지역별 교육인원"; + } + + //통계- ①월별 횟수/교육인원(그래프 포함) + vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword()); + vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail); + List selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_tngr_no2_no3(vEInstrDetailVODetail); + + + 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" + , "divCd", "Chasi" + , "Mnt01" + //, "wCnt" + , "Mnt02" + + , "Mnt03", "Mnt04", "Mnt05", "Mnt06", "Mnt07" + , "Mnt08", "Mnt09", "Mnt10", "Mnt11", "Mnt12" + , "MntSum" + + }; + + /* + // 호출 + SXSSFWorkbook workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(excelData , header, order, width, title); + model.addAttribute("locale", Locale.KOREA); + model.addAttribute("workbook", workbook); + model.addAttribute("workbookName", title); + */ + + excelDown( + excelData, + title, + width, + header, + order, + model + ); + + }catch(Exception ep) { + ep.getStackTrace(); + } + + + modelAndView.addObject(model); + + return modelAndView; + } ////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // @@ -1626,4 +1935,26 @@ public class EduAsgnmCnfrmMngTngrController { 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/config/tibero/sql-map-config-tibero-ve.xml b/src/main/resources/egovframework/sqlmap/config/tibero/sql-map-config-tibero-ve.xml index fe8fc18f..ec8ab328 100644 --- a/src/main/resources/egovframework/sqlmap/config/tibero/sql-map-config-tibero-ve.xml +++ b/src/main/resources/egovframework/sqlmap/config/tibero/sql-map-config-tibero-ve.xml @@ -149,5 +149,8 @@ + + + \ No newline at end of file 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 new file mode 100644 index 00000000..9abf0a68 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Tibero.xml @@ -0,0 +1,708 @@ + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Tibero.xml b/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Tibero.xml index 2397a518..0caafbe3 100644 --- a/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Tibero.xml +++ b/src/main/resources/egovframework/sqlmap/ve/lctr/VELctr_MIX_SQL_Tibero.xml @@ -314,8 +314,22 @@ UNION ALL SELECT '07' FROM DUAL UNION ALL SELECT '08' FROM DUAL UNION ALL SELECT '09' FROM DUAL + + UNION ALL SELECT '10' FROM DUAL + UNION ALL SELECT '11' FROM DUAL + UNION ALL SELECT '12' FROM DUAL + UNION ALL SELECT '13' FROM DUAL + UNION ALL SELECT '14' FROM DUAL + UNION ALL SELECT '15' FROM DUAL + UNION ALL SELECT '16' FROM DUAL + UNION ALL SELECT '17' FROM DUAL + UNION ALL SELECT '18' FROM DUAL + UNION ALL SELECT '19' FROM DUAL + UNION ALL SELECT '20' FROM DUAL + UNION ALL SELECT '0' FROM DUAL )b + WHERE to_char(SYSDATE, 'yyyy') >= concat(round(a.stndrd_yr * 1 + b.stndrd_mnt * 1 - 1), '') ORDER BY a.stndrd_yr*1+b.stndrd_mnt*1 diff --git a/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduPrfrmMngList.jsp b/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduPrfrmMngList.jsp index 8f158a8f..6fceaf77 100644 --- a/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduPrfrmMngList.jsp +++ b/src/main/webapp/WEB-INF/jsp/oprtn/tngrVisitEdu/eduPrfrmMngList.jsp @@ -139,7 +139,8 @@ + " /> + " /> + + + +
+
+ +
+

교육실적통계

+
    +
  • +
  • +

    청소년 찾아가는 저작권 교육

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

구분

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

+
+ *교육신청과 강사배정이 모두 확정된 데이터 기준 +
+
+ + +
+ +

+ ①월별 횟수/교육인원 +

+
+ + + +
+
+ + +
+ + +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
구분횟수/인원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월합계
+ + + + + + + + +
+
+ + + + +
+
+
+
+ + +