2024-01-15 18:02 체험교실 통계 수정 & 청소년 달력 보기 수정

This commit is contained in:
myname 2024-01-15 18:03:10 +09:00
parent f2feba81d1
commit 8926800607
8 changed files with 959 additions and 8 deletions

View File

@ -270,7 +270,8 @@ public class ScholInfoController {
}else if (Integer.parseInt(vList.get(i).getTitleF())>=Integer.parseInt(vList.get(i).getTitleB()))
{
vList.get(i).setColor("#FF0000");
vList.get(i).setTitle("가능");
//vList.get(i).setTitle("가능");
vList.get(i).setTitle("불가능");
}else if (Integer.parseInt(vList.get(i).getTitleF())*5>=Integer.parseInt(vList.get(i).getTitleB())*4)
{

View File

@ -115,6 +115,7 @@ public interface VEInstrMixService {
List<VEInstrDetailVO> selectInstrExcelList(VEInstrDetailVO vEInstrDetailVO);
//청소년 통계
//교육실정통계- 월별 횟수/교육인원(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_tngr_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception;
@ -134,4 +135,13 @@ public interface VEInstrMixService {
//성인 통계
//교육실정통계- 월별 교육대상별 교육횟수(그래프 포함),월별 교육대상별 교육횟수(그래프 포함),월별 교육대상별 교육인원(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_adult_no5_no6_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//저작권 체험교실 통계
//교육실정통계- 11. 전체 운영신청 , 운영확정 , 운영진행 , 결과보고 , 운영종료 , 운영취소 (그래프, 비율 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_Exprn_no11(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 12. 지역별 운영신청 , 운영확정 , 운영진행 , 결과보고 , 운영종료 , 운영취소 (그래프, 비율 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_Exprn_no12(VEInstrDetailVO vEInstrDetailVO) throws Exception;
}

View File

@ -283,4 +283,16 @@ public class VEInstrMixDAO extends EgovAbstractDAO {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_adult_no5_no6_no7", vEInstrDetailVO);
return tlist;
}
//교육실정통계- 11. 전체 운영신청 , 운영확정 , 운영진행 , 결과보고 , 운영종료 , 운영취소 (그래프, 비율 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_Exprn_no11(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_Exprn_no11", vEInstrDetailVO);
return tlist;
}
//교육실정통계- 12. 지역별 운영신청 , 운영확정 , 운영진행 , 결과보고 , 운영종료 , 운영취소 (그래프, 비율 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_Exprn_no12(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_Exprn_no12", vEInstrDetailVO);
return tlist;
}
}

View File

@ -221,4 +221,12 @@ public class VEInstrMixServiceImpl implements VEInstrMixService {
public List<VELctrDetailVO> selectEduPrfrmInfo_adult_no5_no6_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_adult_no5_no6_no7(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_Exprn_no11(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_Exprn_no11(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_Exprn_no12(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_Exprn_no12(vEInstrDetailVO);
}
}

View File

@ -1,20 +1,23 @@
package kcc.ve.oprtn.cpyrgExprnClsrm.oprtnStateMng.web;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
@ -22,6 +25,7 @@ import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.uss.ion.fms.service.FmsFileVO;
import kcc.com.utl.user.service.CheckLoginUtil;
@ -39,6 +43,9 @@ import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduOprtnService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduOprtnVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailService;
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.VEPrcsMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.instr.tngrVisitEdu.rprtInfo.service.VEEduRprtVO;
@ -127,6 +134,14 @@ public class OprtnStateMngController {
@Resource(name = "egovQustnrRespondManageService")
private EgovQustnrRespondManageService egovQustnrRespondManageService;
//강의설정 MIX
@Resource(name = "vELctrMIXService")
private VELctrMIXService vELctrMIXService;
//강사 관리
@Resource(name = "vEInstrMixService")
private VEInstrMixService vEInstrMixService;
/**
* 운영현황 관리 목록 화면
*/
@ -526,6 +541,278 @@ public class OprtnStateMngController {
return modelAndView;
}
/**
* 교육실적통계 화면
*/
@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<VELctrDetailVO> selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO);
model.addAttribute("selectStngYrList", selectStngYrList);
//vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예
//통계- 11. 전체 운영신청 , 운영확정 , 운영진행 , 결과보고 , 운영종료 , 운영취소 (그래프, 비율 포함)
{
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no11 = vEInstrMixService.selectEduPrfrmInfo_Exprn_no11(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no11 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no11);
model.addAttribute("list_no11",selectAsgnmInfoT2List_no11);
}
//통계- 12. 지역별 운영신청 , 운영확정 , 운영진행 , 결과보고 , 운영종료 , 운영취소 (그래프, 비율 포함)
{
vEInstrDetailVODetail.setNo3("10"); /* 10-횟수, 20-인원 */
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no12 = vEInstrMixService.selectEduPrfrmInfo_Exprn_no12(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no12 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no12);
model.addAttribute("list_no12",selectAsgnmInfoT2List_no12);
}
return "oprtn/cpyrgExprnClsrm/newEduPrfrmMngList";
}
/**
* 교육실적통계 Excel - 체험교실 - 전체 운영신청 , 운영확정 , 운영진행 , 결과보고 , 운영종료 , 운영취소 (그래프, 비율 포함)
* @param model
* @returncpyrgExprnClsrm
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "eduPrfrmMngExcelDownLoad_Exprn_no11.do")
public ModelAndView eduPrfrmMngExcelDownLoad_Exprn_no11(
@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<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_Exprn_no11(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT2List);
// 세팅값
String title = "교육실적통계-전체 운영신청 수, 운영확정 수, 운영진행 수, 결과보고 수, 운영종료 수, 운영취소 수";
int[] width = {
4000, 4000
, 4000
, 4000, 4000
//, 4000
, 4000
}; // 너비
//33개 항목
String[] header = {
"운영신청 수", "운영확정 수"
, "결과보고 수"
, "운영종료 수", "운영취소 수"
, "전체"
, "운영신청 수(%)", "운영확정 수(%)"
, "결과보고 수(%)"
, "운영종료 수(%)", "운영취소 수(%)"
};
String[] order = {
"Mnt01", "Mnt02"
, "Mnt03"
, "Mnt04", "Mnt05"
, "Mnt06"
, "AreaCnt01", "AreaCnt02"
, "AreaCnt03"
, "AreaCnt04", "AreaCnt05"
};
/*
// 호출
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
* @returncpyrgExprnClsrm
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "eduPrfrmMngExcelDownLoad_Exprn_no12.do")
public ModelAndView eduPrfrmMngExcelDownLoad_Exprn_no12(
@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<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_Exprn_no12(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT2List);
// 세팅값
String title = "교육실적통계-지역별 운영신청 수, 운영확정 수, 운영진행 수, 결과보고 수, 운영종료 수, 운영취소 수";
int[] width = {
4000, 4000
, 4000
, 4000, 4000
//, 4000
, 4000
}; // 너비
//33개 항목
String[] header = {
"지역"
, "운영신청 수", "운영확정 수"
, "결과보고 수"
, "운영종료 수", "운영취소 수"
, "전체"
, "운영신청 수(%)", "운영확정 수(%)"
, "결과보고 수(%)"
, "운영종료 수(%)", "운영취소 수(%)"
};
String[] order = {
"CodeNm",
"Mnt01", "Mnt02"
, "Mnt03"
, "Mnt04", "Mnt05"
, "Mnt06"
, "AreaCnt01", "AreaCnt02"
, "AreaCnt03"
, "AreaCnt04", "AreaCnt05"
};
/*
// 호출
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;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(
VEEduAplctVO p_vEEduAplctVO
@ -572,4 +859,26 @@ public class OprtnStateMngController {
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();
}
}
}

View File

@ -1276,4 +1276,113 @@
</select>
<!-- 교육실정통계 -11.① 전체 운영신청 수, 운영확정 수, 운영진행 수, 결과보고 수, 운영종료 수, 운영취소 수(그래프, 비율 포함) -->
<select id="VESttstMixDAO.selectEduPrfrmInfo_Exprn_no11" parameterClass="VEInstrDetailVO" resultClass="VELctrDetailVO">
/* VESttstMixDAO.selectEduPrfrmInfo_Exprn_no11 */
SELECT aa.lctrDivCd
, sum(decode(aa.aprvlcd,10,aa.cnt,11,aa.cnt,13,aa.cnt,0)) AS mnt01
, round(sum(decode(aa.aprvlcd,10,aa.cnt,11,aa.cnt,13,aa.cnt,0.0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt01
, sum(decode(aa.aprvlcd,12,aa.cnt,0)) AS mnt02
, round(sum(decode(aa.aprvlcd,12,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt02
, sum(decode(aa.aprvlcd,20,aa.cnt,30,aa.cnt,40,aa.cnt,50,aa.cnt,0)) AS mnt03
, round(sum(decode(aa.aprvlcd,20,aa.cnt,30,aa.cnt,40,aa.cnt,50,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt03
, sum(decode(aa.aprvlcd,60,aa.cnt,70,aa.cnt,0)) AS mnt04
, round(sum(decode(aa.aprvlcd,60,aa.cnt,70,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt04
, sum(decode(aa.aprvlcd,80,aa.cnt,0)) AS mnt05
, round(sum(decode(aa.aprvlcd,80,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt05
, sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0 end) AS mnt06
FROM (
SELECT a.LCTR_DIV_CD AS lctrDivCd
, a.APRVL_CD AS aprvlCd
, count(*) AS cnt
from VE_EDU_APLCT a
WHERE a.LCTR_DIV_CD =#lctrDivCd#
AND a.SBMT_YN ='Y'
AND TO_CHAR(a.SBMT_PNTTM ,'YYYY')=#mngNmbrYr#
GROUP BY rollup(a.LCTR_DIV_CD ,a.APRVL_CD)
)aa
WHERE aa.lctrDivCd=#lctrDivCd#
GROUP BY aa.lctrDivCd
/*
* 운영취소 = 12
* 20 > 운영신청 and != 12
* 60 > 운영확정 >=20
* 80 > 결과보고 >=60
* 운영종료 =80
*
*/
</select>
<!-- 교육실정통계 -11.① 전체 운영신청 수, 운영확정 수, 운영진행 수, 결과보고 수, 운영종료 수, 운영취소 수(그래프, 비율 포함) -->
<select id="VESttstMixDAO.selectEduPrfrmInfo_Exprn_no12" parameterClass="VEInstrDetailVO" resultClass="VELctrDetailVO">
/* VESttstMixDAO.selectEduPrfrmInfo_Exprn_no12 */
SELECT
NVL(aaa.mnt01,0) AS mnt01, NVL(aaa.areaCnt01,0) AS areaCnt01
, NVL(aaa.mnt02,0) AS mnt02, NVL(aaa.areaCnt02,0) AS areaCnt02
, NVL(aaa.mnt03,0) AS mnt03, NVL(aaa.areaCnt03,0) AS areaCnt03
, NVL(aaa.mnt04,0) AS mnt04, NVL(aaa.areaCnt04,0) AS areaCnt04
, NVL(aaa.mnt05,0) AS mnt05, NVL(aaa.areaCnt05,0) AS areaCnt05
, NVL(aaa.mnt06,0) AS mnt06
, bbb.code_nm AS codeNm
FROM (
SELECT code, code_nm
FROM LETTCCMMNDETAILCODE bbb
WHERE code_id='VE0008'
AND code !='400'
UNION ALL
SELECT '999', '합계'
FROM dual
) bbb
LEFT OUTER JOIN (
SELECT aa.lctrDivCd
, nvl(aa.eduSlctAreaCd,'999') AS eduSlctAreaCd
, sum(decode(aa.aprvlcd,10,aa.cnt,11,aa.cnt,13,aa.cnt,0)) AS mnt01
, round(sum(decode(aa.aprvlcd,10,aa.cnt,11,aa.cnt,13,aa.cnt,0.0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt01
, sum(decode(aa.aprvlcd,12,aa.cnt,0)) AS mnt02
, round(sum(decode(aa.aprvlcd,12,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt02
, sum(decode(aa.aprvlcd,20,aa.cnt,30,aa.cnt,40,aa.cnt,50,aa.cnt,0)) AS mnt03
, round(sum(decode(aa.aprvlcd,20,aa.cnt,30,aa.cnt,40,aa.cnt,50,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt03
, sum(decode(aa.aprvlcd,60,aa.cnt,70,aa.cnt,0)) AS mnt04
, round(sum(decode(aa.aprvlcd,60,aa.cnt,70,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt04
, sum(decode(aa.aprvlcd,80,aa.cnt,0)) AS mnt05
, round(sum(decode(aa.aprvlcd,80,aa.cnt,0))*100/sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0.0 end),2) AS areaCnt05
, sum(CASE WHEN aa.aprvlcd IS NULL THEN aa.cnt ELSE 0 end) AS mnt06
FROM (
SELECT a.LCTR_DIV_CD AS lctrDivCd
, a.APRVL_CD AS aprvlCd
, a.edu_slct_area_cd AS eduSlctAreaCd
, count(*) cnt
from VE_EDU_APLCT a
WHERE a.LCTR_DIV_CD =#lctrDivCd#
AND a.SBMT_YN ='Y'
AND TO_CHAR(a.SBMT_PNTTM ,'YYYY')=#mngNmbrYr#
GROUP BY rollup(a.LCTR_DIV_CD, a.edu_slct_area_cd, a.APRVL_CD)
)aa
WHERE aa.lctrDivCd IS NOT null
GROUP BY aa.lctrDivCd
, aa.eduSlctAreaCd
)aaa
ON(bbb.code=aaa.eduSlctAreaCd)
WHERE 1=1
AND 999>bbb.code
ORDER BY decode(bbb.code,'999','희희',bbb.code_nm)
</select>
</sqlMap>

View File

@ -0,0 +1,500 @@
<!DOCTYPE html>
<%@ 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" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<%
/**
* @Class Name : newEduPrfrmMngList.jsp
* @Description : 교육신청관리 > 교육실적통계 (new 2024-01-10)
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.14 조용준 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script src="<c:url value='/js/echarts.min.js' />"></script>
<script type="text/javascript">
$(document).ready(function(){
});
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
if($(this).prop('tagName') == 'SELECT'){
if($(this).attr('name').indexOf('Month') != -1){
$(this).val(new Date().getMonth()+1);
}else if($(this).attr('name').indexOf('Year') != -1){
$(this).val(new Date().getFullYear());
}else{
$(this).prop("selectedIndex", 0);
}
}else{
$(this).val('');
}
});
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/kccadr/oprtn/cpyrgExprnClsrm/newEduPrfrmMngList.do'/>";
listForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncGoDetail(eduAplctOrd){
var listForm = document.listForm ;
listForm.eduAplctOrd.value = eduAplctOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/adultVisitEdu/eduAsgnmCnfrmMngDetail.do'/>";
listForm.submit();
}
function excelDownLoad_no1(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no1.do'/>";
listForm.submit();
}
function excelDownLoad_no2_no3(p_no3){
var listForm = document.listForm ;
listForm.no3.value = p_no3;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no2_no3.do'/>";
listForm.submit();
}
function excelDownLoad_no4(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no4.do'/>";
listForm.submit();
}
function excelDownLoad_no5_no6_no7(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/adultVisitEdu/eduPrfrmMngExcelDownLoad_adult_no5_no6_no7.do'/>";
listForm.submit();
}
function excelDownLoad_no8(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no8.do'/>";
listForm.submit();
}
function excelDownLoad_no9(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduPrfrmMngExcelDownLoad_tngr_no9.do'/>";
listForm.submit();
}
function excelDownLoad_no11(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cpyrgExprnClsrm/eduPrfrmMngExcelDownLoad_Exprn_no11.do'/>";
listForm.submit();
}
function excelDownLoad_no12(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cpyrgExprnClsrm/eduPrfrmMngExcelDownLoad_Exprn_no12.do'/>";
listForm.submit();
}
function excelDownLoadArea(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/eduAreaExcelDownLoad.do'/>";
listForm.submit();
}
// 강사 거리계산
function fncInstrDstncInfo() {
var form = document.listForm ;
form.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/popup/instrAsgnmDstncPopup.do'/>";
window.open("#", "_dstncPop", "scrollbars = no, top=100px, left=100px, height=750px, width=1200px");
form.target = "_dstncPop";
form.submit();
form.target = "_self";
}
</script>
<title>교육확정관리</title>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO" method="post" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" value="" />
<input type="hidden" name="no3" value="" />
<input type="hidden" name="lctrDivCd" value="30" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육실적통계</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>청소년 찾아가는 저작권 교육</p>
</li>
<li><span class="cur_nav">교육실적통계</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<!-- list_top -->
<div class="list_top">
<div class="list_top_1">
<div class="util_left">
<p>구분</p>
</div>
<div class="util_right">
<select class="sel_type1" name="mngNmbrYr" id="mngNmbrYr" title="줄 선택" style="width: 140px">
<c:forEach var="list" items="${selectStngYrList}" varStatus="status">
<c:if test="${list.stngYr eq vEEduAplctVO.mngNmbrYr
or (empty vEEduAplctVO.mngNmbrYr and list.useYn eq '1')}">
<option value='${list.stngYr}' selected>${list.stngYr*1}년</option>
</c:if>
<c:if test="${list.stngYr ne vEEduAplctVO.mngNmbrYr}">
<option value='${list.stngYr}'>${list.stngYr*1}년</option>
</c:if>
</c:forEach>
</select>
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
</div>
</div>
</div>
<!-- //list_top -->
<c:if test="${not empty vEEduAplctVO.mngNmbrYr}">
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<p class="list_util_p"></p>
<div>
*교육신청과 강사배정이 모두 확정된 데이터 기준
</div>
</div>
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<p class="list_util_p">
① 전체 운영신청 수, 운영확정 수, 운영진행 수, 결과보고 수, 운영종료 수, 운영취소 수
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no11();">엑셀 다운로드</button>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 16%">
<col style="width: 16%">
<col style="width: 16%">
<col style="width: 16%">
<col style="width: 16%">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>운영신청 수</th>
<th>운영확정 수</th>
<th>결과보고 수</th>
<th>운영종료 수</th>
<th>운영취소 수</th>
<th>전체</th>
</tr>
</thead>
<tbody>
<c:set var="title1" value="" />
<c:set var="title2" value="" />
<c:forEach var="list" items="${list_no11}" varStatus="status">
<tr>
<!--
<td>
<c:choose>
<c:when test="${list.divCd eq title1}">
</c:when>
<c:otherwise>
<c:out value="${list.divCd}"/>
</c:otherwise>
</c:choose>
</td>
-->
<td><fmt:formatNumber value="${list.mnt01}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt01}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt02}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt02}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt03}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt03}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt04}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt04}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt05}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt05}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt06}" pattern="#,###"/></td>
</tr>
</c:forEach>
<c:if test="${empty list_no11}">
<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<c:forEach var="list" items="${list_no11}" varStatus="status">
<c:if test="${status.count eq '1'}">
<script type="text/javascript">
var dataNOT = ['${list.mnt01}', '${list.mnt02}', '${list.mnt03}', '${list.mnt04}', '${list.mnt05}', '${list.mnt06}'];
var dataNOTSum = 0;
for(var i = 0; i<6; i++){
dataNOTSum = parseInt(dataNOT[5]);
}
if(isNaN(dataNOTSum)){
dataNOTSum = 0;
}
</script>
</c:if>
</c:forEach>
<!-- 횟수 차트 -->
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartNumOfTime" style="float:left; width: 50%; height:600px;">
</div>
<script type="text/javascript">
<!-- 차트 선언 -->
var chartNOT = echarts.init(document.getElementById('chartNumOfTime'))
var month = ['운영신청 수', '운영확정 수', '결과보고 수', '운영종료 수', '운영취소 수','전체'];
<!-- 차트 옵션 지정하기 -->
var optionNOT = {
// 차트 제목
title: {
text: '월별 횟수 차트 (총합 :' + dataNOTSum +')',
},
// x축 라벨
xAxis: {
data: month,
},
yAxis: {},
series: [
{
name: '개수',
type: 'bar', // 막대 그래프
data: dataNOT,
label: {
show: true,
position: 'top'
}
},
],
}
<!-- 차트 옵션 적용 -->
chartNOT.setOption(optionNOT);
</script>
<!-- /횟수 차트 -->
<!-- 인원 차트 -->
<div id="chartNumOfPeople" style="float:right; width: 50%; height:600px;">
</div>
<script type="text/javascript">
<!-- 차트 선언 -->
var chartNOP = echarts.init(document.getElementById('chartNumOfPeople'))
<!-- 차트 옵션 지정하기 -->
var optionNOP = {
// 차트 제목
title: {
text: '월별 인원 차트(총합 :' + dataNOPSum +')',
},
// x축 라벨
xAxis: {
data: month,
},
yAxis: {},
series: [
{
name: '개수',
type: 'bar', // 막대 그래프
data: dataNOP,
label: {
show: true,
position: 'top'
}
},
],
}
<!-- 차트 옵션 적용 -->
chartNOP.setOption(optionNOP);
</script>
</div>
<!-- /인원 차트 -->
<!-- /월별 횟수/교육인원 차트 -->
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<p class="list_util_p">
②지역별 운영신청 수, 운영확정 수, 운영진행 수, 결과보고 수, 운영종료 수, 운영취소 수
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no12();">엑셀 다운로드</button>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: 12%">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>지역</th>
<th>운영신청 수</th>
<th>운영확정 수</th>
<th>결과보고 수</th>
<th>운영종료 수</th>
<th>운영취소 수</th>
<th>전체</th>
</tr>
</thead>
<tbody>
<c:set var="title1" value="" />
<c:set var="title2" value="" />
<c:forEach var="list" items="${list_no12}" varStatus="status">
<tr>
<!--
<td>
<c:choose>
<c:when test="${list.divCd eq title1}">
</c:when>
<c:otherwise>
<c:out value="${list.divCd}"/>
</c:otherwise>
</c:choose>
</td>
-->
<td><c:out value="${list.codeNm}"/></td>
<td><fmt:formatNumber value="${list.mnt01}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt01}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt02}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt02}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt03}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt03}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt04}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt04}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt05}" pattern="#,###"/>
(<fmt:formatNumber value="${list.areaCnt05}" pattern="#,###.#"/>%)
</td>
<td><fmt:formatNumber value="${list.mnt06}" pattern="#,###"/></td>
</tr>
</c:forEach>
<c:if test="${empty list_no12}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
</c:if>
</div>
</div>
</div>
</form:form>
</body>
</html>

View File

@ -150,12 +150,14 @@
*/
if (info.event._def.title=="불가능"){
alert("해당 일자는 관리자가 교육 불가 일자로 설정하여 시수 설정이 불가능 합니다.");
//alert("해당 일자는 관리자가 교육 불가 일자로 설정하여 시수 설정이 불가능 합니다.");
}else{
/*
dtPsblTmQnttyPop(
info.event._def.extendedProps.dtPsblTmQnttyOrd
, info.event._def.extendedProps.rndsNm
);
*/
}