2024-04-12 15:11 기소유예 통계 작업

This commit is contained in:
myname 2024-04-12 15:12:15 +09:00
parent 9ccd71d757
commit 2d72bee2ba
7 changed files with 909 additions and 3 deletions

View File

@ -35,6 +35,9 @@ public interface VEPrcsAplctPrdService {
//기반강화, 기소유예 - 사용자용 //기반강화, 기소유예 - 사용자용
List<VEPrcsDetailVO> selectPagingList4Fndth4User(VEPrcsDetailVO paramVO) throws Exception; List<VEPrcsDetailVO> selectPagingList4Fndth4User(VEPrcsDetailVO paramVO) throws Exception;
//기반강화, 기소유예
List<VEPrcsDetailVO> selectPagingList4Fndth4Stts(VEPrcsDetailVO paramVO) throws Exception;
//R //R
VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception; VEPrcsDetailVO selectDetailNewOne(VEPrcsDetailVO paramVO) throws Exception;

View File

@ -84,6 +84,11 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
return tlist; return tlist;
} }
public List<VEPrcsDetailVO> selectPagingList4Fndth4Stts(VEPrcsDetailVO paramVO) throws Exception {
List<VEPrcsDetailVO> tlist = (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectPagingList4Fndth4Stts", paramVO);
return tlist;
}
public List<VEPrcsDetailVO> selectCfnPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception { public List<VEPrcsDetailVO> selectCfnPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception {
List<VEPrcsDetailVO> tlist = (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth", paramVO); List<VEPrcsDetailVO> tlist = (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth", paramVO);
return tlist; return tlist;

View File

@ -84,6 +84,10 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
return vEPrcsAplctPrdDAO.selectPagingList4Fndth4User(paramVO); return vEPrcsAplctPrdDAO.selectPagingList4Fndth4User(paramVO);
} }
public List<VEPrcsDetailVO> selectPagingList4Fndth4Stts(VEPrcsDetailVO paramVO) throws Exception{
return vEPrcsAplctPrdDAO.selectPagingList4Fndth4Stts(paramVO);
}
public List<VEPrcsDetailVO> selectCfnPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception{ public List<VEPrcsDetailVO> selectCfnPagingList4Fndth(VEPrcsDetailVO paramVO) throws Exception{
return vEPrcsAplctPrdDAO.selectCfnPagingList4Fndth(paramVO); return vEPrcsAplctPrdDAO.selectCfnPagingList4Fndth(paramVO);
} }

View File

@ -531,6 +531,11 @@ public class CndtnInstrMngController {
List<VELctrDetailVO> selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO); List<VELctrDetailVO> selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO);
model.addAttribute("selectStngYrList", selectStngYrList); model.addAttribute("selectStngYrList", selectStngYrList);
//차시별 정보
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth4Stts(vEPrcsDetailVO);
model.addAttribute("vEPrcsDetailVOList", vEPrcsDetailVOList);
//vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예 //vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예
@ -629,6 +634,131 @@ public class CndtnInstrMngController {
return "oprtn/cndtnSspnIdtmt/newEduPrfrmMngList"; return "oprtn/cndtnSspnIdtmt/newEduPrfrmMngList";
}
/**
* 교육실적통계 화면-개별
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/newEduPrfrmEAMngList.do")
public String newEduPrfrmEAMngList(
@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);
//차시별 정보
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth4Stts(vEPrcsDetailVO);
model.addAttribute("vEPrcsDetailVOList", vEPrcsDetailVOList);
//vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예
//통계- 검찰청별 교육 의뢰 현황(그래프 포함)
{
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_csi_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<VELctrDetailVO> selectAsgnmInfoT2List_no2 = vEInstrMixService.selectEduPrfrmInfo_csi_no2(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<VELctrDetailVO> selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3);
model.addAttribute("list_no3",selectAsgnmInfoT2List_no3);
}
//통계- 월별 강사종류별,강사별 교육횟수(그래프 포함)
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> 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<VELctrDetailVO> 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<VELctrDetailVO> selectAsgnmInfoT2List_no8 = vEInstrMixService.selectEduPrfrmInfo_tngr_no8(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no8 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no8);
model.addAttribute("list_no8",selectAsgnmInfoT2List_no8);
}
*/
//통계- 도서벽지별 지역교육횟수, 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨
/*
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no9 = vEInstrMixService.selectEduPrfrmInfo_tngr_no9(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no9 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no9);
model.addAttribute("list_no9",selectAsgnmInfoT2List_no9);
}
*/
return "oprtn/cndtnSspnIdtmt/newEduPrfrmEAMngList";
} }
/** /**

View File

@ -598,6 +598,37 @@
</select> </select>
<!-- 기반강화, 기소유예 L page -->
<select id="VEPrcsAplctPrdDAO.selectPagingList4Fndth4Stts" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.selectPagingList4Fndth4Stts */
SELECT
COUNT(1) OVER() AS totCnt ,
<include refid="VEPrcsAplctPrdDAO.select_column_name"/>
, b.prcs_nm as prcsNm
FROM
<include refid="VEPrcsAplctPrdDAO.table_name"/> a
, ve_prcs b
WHERE
1=1
AND a.prcs_ord=b.prcs_ord
<isNotEmpty property="lctrDivCd">
AND a.lctr_div_cd=#lctrDivCd#
</isNotEmpty>
<isEqual property="lctrDivCd" compareValue="60">
AND NVL(a.use_yn,'Y')='Y'
</isEqual>
ORDER BY 1, b.prcs_nm ASC
</select>
<!-- 기반강화, 기소유예 확정 L page --> <!-- 기반강화, 기소유예 확정 L page -->
<select id="VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO"> <select id="VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth */ /* VEPrcsAplctPrdDAO.selectCfnPagingList4Fndth */

View File

@ -0,0 +1,720 @@
<!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 : newEduPrfrmEAMngList.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/cndtnSspnIdtmt/newEduPrfrmEAMngList.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/cndtnSspnIdtmt/eduAsgnmCnfrmMngDetail.do'/>";
listForm.submit();
}
function excelDownLoad_no1(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no1.do'/>";
listForm.submit();
}
function excelDownLoad_no2(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no2.do'/>";
listForm.submit();
}
function excelDownLoad_no3(){
/*
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduPrfrmMngExcelDownLoad_csi_no2.do'/>";
listForm.submit();
*/
alert("준비중입니다.");
}
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/cndtnSspnIdtmt/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 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="20" />
<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>
<select class="sel_type1" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" title="줄 선택" style="width: 440px">
<c:forEach var="list" items="${vEPrcsDetailVOList}" varStatus="status">
<c:if test="${list.prcsAplctPrdOrd eq vEEduAplctVO.prcsAplctPrdOrd}">
<option value='${list.prcsAplctPrdOrd}' selected>${list.prcsNm}(${list.prcsAplctPrdOrd})</option>
</c:if>
<c:if test="${list.prcsAplctPrdOrd ne vEEduAplctVO.prcsAplctPrdOrd}">
<option value='${list.prcsAplctPrdOrd}'>${list.prcsNm}(${list.prcsAplctPrdOrd})</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>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no1();">엑셀 다운로드</button>
</div>
</div>
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<script type="text/javascript">
var dataNOT = [];
//var dataNOP = [];
var month = [];
</script>
<c:forEach var="list" items="${list_no1}" varStatus="status">
<script type="text/javascript">
dataNOT.push('${list.cnt}');
//dataNOP.push('${list.cnt}');
month.push('${list.codeNm}');
</script>
</c:forEach>
<script type="text/javascript">
dataNOT.pop();
//dataNOP.pop();
month.pop();
</script>
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartAll" style="float:left; width: 100%; height:600px;">
</div>
<script type="text/javascript">
var chartAll = echarts.init(document.getElementById('chartAll'));
//var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//alert(dataNOT);
//alert(month);
var optionAll = {
toolbox: {
feature: {
//dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
legend: {
data: ['명']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: month,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 90,
}
}
],
yAxis: [
{
type: 'value',
name: '명',
interval: 50,
/* max : maxNOT, */
alignTicks: true,
axisLabel: {
formatter: '{value}명'
}
}
],
series: [
{
name: '명',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '명';
}
},
label: {
show: true,
position: 'top'
},
data: dataNOT
}
]
}
//차트 옵션 적용
chartAll.setOption(optionAll);
</script>
</div>
<!-- /월별 횟수/교육인원 차트 -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 200px">
<col style="width: 200px">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>구분</th>
<th>의뢰(명)</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list_no1}" 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.cnt}" pattern="#,###"/></td>
</tr>
</c:forEach>
<c:if test="${empty list_no1}">
<tr><td colspan="2"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- 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_no2();">엑셀 다운로드</button>
</div>
</div>
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<script type="text/javascript">
var dataNOT_2 = [];
//var dataNOP = [];
var month_2 = [];
</script>
<c:forEach var="list" items="${list_no2}" varStatus="status">
<script type="text/javascript">
dataNOT_2.push('${list.cnt}');
//dataNOP.push('${list.cnt}');
month_2.push('${list.codeNm}월');
</script>
</c:forEach>
<script type="text/javascript">
dataNOT_2.pop();
//dataNOP.pop();
month_2.pop();
</script>
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartAll_2" style="float:left; width: 100%; height:600px;">
</div>
<script type="text/javascript">
var chartAll_2 = echarts.init(document.getElementById('chartAll_2'));
//var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//alert(dataNOT);
//alert(month);
var optionAll_2 = {
toolbox: {
feature: {
//dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
legend: {
data: ['명']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: month_2,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 0,
}
}
],
yAxis: [
{
type: 'value',
name: '명',
interval: 50,
/* max : maxNOT, */
alignTicks: true,
axisLabel: {
formatter: '{value}명'
}
}
],
series: [
{
name: '명',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '명';
}
},
label: {
show: true,
position: 'top'
},
data: dataNOT_2
}
]
}
//차트 옵션 적용
chartAll_2.setOption(optionAll_2);
</script>
</div>
<!-- /월별 횟수/교육인원 차트 -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>구분</th>
<c:forEach var="list" items="${list_no2}" varStatus="status">
<th>
<c:choose>
<c:when test="${list.codeNm eq '13'}">합계</c:when>
<c:otherwise>${list.codeNm}월</c:otherwise>
</c:choose>
</th>
</c:forEach>
</tr>
</thead>
<tbody>
<tr>
</tr>
<tr>
<td>의뢰(명)</td>
<c:forEach var="list" items="${list_no2}" varStatus="status">
<td><fmt:formatNumber value="${list.cnt}" pattern="#,###"/></td>
</c:forEach>
</tr>
<c:if test="${empty list_no2}">
<tr><td colspan="8"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<p class="list_util_p">
3.대상별 교육 의뢰 현황
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no3();">엑셀 다운로드</button>
</div>
</div>
<!-- 월별 횟수/교육인원 차트 -->
<!-- 횟수합계 - dataNOT / 인원합계 = dataNOP -->
<script type="text/javascript">
var dataNOT_3 = [];
//var dataNOP = [];
var month_3 = [];
</script>
<c:forEach var="list" items="${list_no3}" varStatus="status">
<script type="text/javascript">
dataNOT_3.push('${list.cnt}');
//dataNOP.push('${list.cnt}');
month_3.push('${list.codeNm}');
</script>
</c:forEach>
<script type="text/javascript">
dataNOT_3.pop();
//dataNOP.pop();
month_3.pop();
</script>
<div id="chartContainer" style="display:flex; width:100%;">
<div id="chartAll_3" style="float:left; width: 100%; height:600px;">
</div>
<script type="text/javascript">
var chartAll_3 = echarts.init(document.getElementById('chartAll_3'));
//var month = ['1월', '2월', '3월', '4월', '5월','6월','7월','8월', '9월','10월','11월', '12월'];
//alert(dataNOT);
//alert(month);
var optionAll_3 = {
toolbox: {
feature: {
//dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
legend: {
data: ['명']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: [
{
type: 'category',
data: month_3,
axisPointer: {
type: 'shadow'
},
axisLabel: {
rotate: 0,
}
}
],
yAxis: [
{
type: 'value',
name: '명',
interval: 50,
/* max : maxNOT, */
alignTicks: true,
axisLabel: {
formatter: '{value}명'
}
}
],
series: [
{
name: '명',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + '명';
}
},
label: {
show: true,
position: 'top'
},
data: dataNOT_3
}
]
}
//차트 옵션 적용
chartAll_3.setOption(optionAll_3);
</script>
</div>
<!-- /월별 횟수/교육인원 차트 -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<%-- <col style="width: 10%"> --%>
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
<col style="width: 100px">
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th>구분</th>
<c:forEach var="list" items="${list_no3}" varStatus="status">
<th>
<c:choose>
<c:when test="${list.codeNm eq 'ZZ'}">합계</c:when>
<c:otherwise>${list.codeNm}</c:otherwise>
</c:choose>
</th>
</c:forEach>
</tr>
</thead>
<tbody>
<tr>
</tr>
<tr>
<td>의뢰(명)</td>
<c:forEach var="list" items="${list_no3}" varStatus="status">
<td><fmt:formatNumber value="${list.cnt}" pattern="#,###"/></td>
</c:forEach>
</tr>
<c:if test="${empty list_no3}">
<tr><td colspan="4"><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

@ -191,6 +191,19 @@
</c:forEach> </c:forEach>
</select> </select>
<!-- <select class="sel_type1" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" title="줄 선택" style="width: 440px"> -->
<!-- <option value=''>전체</option> -->
<%-- <c:forEach var="list" items="${vEPrcsDetailVOList}" varStatus="status"> --%>
<%-- <c:if test="${list.prcsAplctPrdOrd eq vEEduAplctVO.prcsAplctPrdOrd}"> --%>
<%-- <option value='${list.prcsAplctPrdOrd}' selected>${list.prcsNm}(${list.prcsAplctPrdOrd})</option> --%>
<%-- </c:if> --%>
<%-- <c:if test="${list.prcsAplctPrdOrd ne vEEduAplctVO.prcsAplctPrdOrd}"> --%>
<%-- <option value='${list.prcsAplctPrdOrd}'>${list.prcsNm}(${list.prcsAplctPrdOrd})</option> --%>
<%-- </c:if> --%>
<%-- </c:forEach> --%>
<!-- </select> -->
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button> <button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
</div> </div>