2024-04-09 17:53 기소유예 통계 정보 수정

This commit is contained in:
myname 2024-04-09 17:53:27 +09:00
parent 1e3d6c324d
commit 0f9626b125
6 changed files with 233 additions and 4 deletions

View File

@ -171,4 +171,7 @@ public interface VEInstrMixService {
//교육실정통계- 월별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 3.대상별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception;
}

View File

@ -336,5 +336,10 @@ public class VEInstrMixDAO extends EgovAbstractDAO {
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no2", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no3", vEInstrDetailVO);
return tlist;
}
}

View File

@ -269,5 +269,9 @@ public class VEInstrMixServiceImpl implements VEInstrMixService {
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no2(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no3(vEInstrDetailVO);
}
}

View File

@ -564,13 +564,13 @@ public class CndtnInstrMngController {
//통계- 월별 지역별 교육인원(그래프 포함)
{
vEInstrDetailVODetail.setNo3("20"); /* 10-횟수, 20-인원 */
//vEInstrDetailVODetail.setNo3("20"); /* 10-횟수, 20-인원 */
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_tngr_no2_no3(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3);
//selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3);
model.addAttribute("list_no3",selectAsgnmInfoT2List_no3);
}

View File

@ -2210,5 +2210,50 @@
on(aaa.mnt=bbb.codeNm)
ORDER BY aaa.mnt
</select>
</select>
<!-- 교육실정통계- ①월별 교육 의뢰 현황(그래프 포함) -->
<select id="VESttstMixDAO.selectEduPrfrmInfo_csi_no3" parameterClass="VEInstrDetailVO" resultClass="VELctrDetailVO">
/* VESttstMixDAO.selectEduPrfrmInfo_csi_no3 */
SELECT
CASE WHEN aaa.mnt='A' THEN '성인'
WHEN aaa.mnt='Y' THEN '미성년자'
ELSE aaa.mnt
END
AS codeNm
, NVL(bbb.cnt,0) AS cnt
FROM (
SELECT 'A' AS mnt FROM dual
UNION ALL SELECT 'Y' AS mnt FROM dual
UNION ALL SELECT 'ZZ' AS mnt FROM dual
)aaa
LEFT OUTER JOIN
(
SELECT
NVL(aa.CMPTNT_ATHRT,'ZZ') AS codeNm,
sum(aa.cnt) AS cnt
FROM
(
SELECT
substring(req_nmbr,0,1) AS CMPTNT_ATHRT ,
count(*) AS cnt
FROM
vea_sspn_idmt_trgt a
WHERE to_char(a.REQ_PNTTM,'YYYY')=#mngNmbrYr#
/* 병합제거시 주석 제거 할것
AND a.prcs_aplct_prd_ord_cmplt IS null */
GROUP BY
substring(req_nmbr,0,1) )aa
GROUP BY
ROLLUP(aa.CMPTNT_ATHRT)
)bbb
on(aaa.mnt=bbb.codeNm)
ORDER BY aaa.mnt
</select>
</sqlMap>

View File

@ -94,6 +94,15 @@
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'/>";
@ -527,6 +536,169 @@
</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>