2025-10-28 14:49 교육실적통계 화면 작업

This commit is contained in:
myname 2025-10-28 14:49:52 +09:00
parent e7f8ff501c
commit 221865ec6e
11 changed files with 6581 additions and 24 deletions

View File

@ -354,6 +354,11 @@ public class VEInstrMixDAO extends EgovAbstractDAO {
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no6", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no7", vEInstrDetailVO);
return tlist;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -611,7 +611,7 @@ public class CndtnInstrMngController {
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
model.addAttribute("list_no6",selectAsgnmInfoT6List);
}
// 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
@ -1085,7 +1085,7 @@ public class CndtnInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1328,7 +1328,7 @@ public class CndtnInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);

View File

@ -49,7 +49,12 @@ import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO;
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;
@ -181,6 +186,18 @@ public class PreventMngController {
@Resource(name = "egovQustnrRespondInfoService")
private EgovQustnrRespondInfoService egovQustnrRespondInfoService;
//강의설정 MIX
@Resource(name = "vELctrMIXService")
private VELctrMIXService vELctrMIXService;
//rkdtk 관리
@Resource(name = "vEInstrMixService")
private VEInstrMixService vEInstrMixService;
// 첨부파일 정보
@Resource(name="vEInstrDetailActvtHstryService")
private VEInstrDetailActvtHstryService vEInstrDetailActvtHstryService;
/**
* 기반강화연수 과정 관리 목록 화면
*/
@ -664,7 +681,190 @@ public class PreventMngController {
}
/**
* 교육실적통계 화면
*/
@RequestMapping("/kccadr/oprtn/prevent/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);
//차시별 정보
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD);
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);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
model.addAttribute("list_no4",selectAsgnmInfoT4List_no4);
}
// 월별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT5List = vEInstrMixService.selectEduPrfrmInfo_csi_no5(vEInstrDetailVODetail);
model.addAttribute("list_no5",selectAsgnmInfoT5List);
}
// 대상별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
model.addAttribute("list_no6",selectAsgnmInfoT6List);
}
// 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
//vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail);
model.addAttribute("list_no7",selectAsgnmInfoT7List);
}
//통계- 인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨
/*
{
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/prevent/newEduPrfrmMngList";
}
/**
* @methodName : instrActvtHstrySignMngList
* @author : 이호영
* @date : 2023.12.28
* @description : 직인대장관리(이수증) - 기반 기소
* @param vEInstrDetailActvtHstryVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/prevent/instrActvtHstrySignAndCmpltCrtfcMngList.do")
public String instrActvtHstrySignAndCmpltCrtfcMngList(
@ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
//LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
// if (loginVO == null || ssoLoginVO == null) {
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// }
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO);
//2. pageing step2
vEInstrDetailActvtHstryVO = this.setPagingStep2_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO, paginationInfo);
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.encrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
// List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignPagingList(vEInstrDetailActvtHstryVO);
List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignAndCmpltCrtfcPagingList(vEInstrDetailActvtHstryVO);
vEInstrDetailActvtHstryVOList.stream().forEach(t-> t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//3.pageing step3
paginationInfo = this.setPagingStep3_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 검색어 복호화
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.decrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
// return "oprtn/cmm/instrActvtHstrySignMngList";
return "oprtn/prevent/instrActvtHstrySignAndCmpltCrtfcMngList";
}
/**
* 기소유예 신청기간 등록
@ -3048,4 +3248,50 @@ public class PreventMngController {
return p_paginationInfo;
}
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1_VEInstrDetailActvtHstryVO(
VEInstrDetailActvtHstryVO p_vEEduAplctVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit());
paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private VEInstrDetailActvtHstryVO setPagingStep2_VEInstrDetailActvtHstryVO(
VEInstrDetailActvtHstryVO p_vEEduAplctVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEEduAplctVO.setSearchSortCnd("prcs_ord");
p_vEEduAplctVO.setSearchSortOrd("desc");
}
return p_vEEduAplctVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setPagingStep3_VEInstrDetailActvtHstryVO(
List<VEInstrDetailActvtHstryVO> p_vEEduAplctVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
}

View File

@ -2450,6 +2450,77 @@
</select>
<!-- 교육실정통계- ①월별 교육 의뢰 현황(그래프 포함) -->
<select id="VESttstMixDAO.selectEduPrfrmInfo_csi_no6" parameterClass="VEInstrDetailVO" resultClass="VELctrDetailVO">
/* VESttstMixDAO.selectEduPrfrmInfo_csi_no6 */
SELECT
CASE WHEN aaa.mnt='A' THEN '성인'
WHEN aaa.mnt='Y' THEN '미성년자'
ELSE aaa.mnt
END
AS codeNm
, coalesce(bbb.cnt,0) AS cnt
FROM (
SELECT 'A' AS mnt
UNION ALL SELECT 'Y' AS mnt
UNION ALL SELECT 'ZZ' AS mnt
)aaa
LEFT OUTER JOIN
(
SELECT
coalesce(aa.CMPTNT_ATHRT,'ZZ') AS codeNm,
sum(aa.cnt) AS cnt
FROM
(
SELECT
substring(req_nmbr,1,1) AS CMPTNT_ATHRT ,
count(*) AS cnt
FROM
vea_sspn_idmt_trgt a
,
ve_edu_aplct b ,
ve_prcs_aplct_prd c ,
vea_aplct_detail_info d
WHERE
/*
TO_CHAR(a.req_pnttm, 'YYYY')=mngNmbrYr
*/
substring(req_nmbr, 1, 1) in ('A','Y')
AND SUBSTRING(c.edu_strt_pnttm, 1, 4)=#mngNmbrYr#
AND b.aprvl_cd = '60'
AND b.prcs_ord = c.prcs_aplct_prd_ord
AND a.sspn_idtmt_trgt_ord = b.rnds_ord
/* 병합제거시 주석 제거 할것
AND a.prcs_aplct_prd_ord_cmplt IS null */
<isNotEmpty property="searchEduStateCd">
AND a.edu_state_cd = #searchEduStateCd#
</isNotEmpty>
AND b.EDU_APLCT_ORD = d.EDU_APLCT_ORD
AND d.aplct_state_cd = '20'
GROUP BY
substring(req_nmbr,1,1) )aa
GROUP BY
ROLLUP(aa.CMPTNT_ATHRT)
)bbb
on(aaa.mnt=bbb.codeNm)
ORDER BY aaa.mnt
</select>
<!-- 교육실정통계- ⑦월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계 -->
<select id="VESttstMixDAO.selectEduPrfrmInfo_csi_no7" parameterClass="VEInstrDetailVO" resultClass="VELctrDetailVO">
/* VESttstMixDAO.selectEduPrfrmInfo_csi_no7 */
@ -2522,7 +2593,8 @@
/* 20-이수 40-미이수 50-연기
AND a.edu_state_cd IN ('20','40','50') */
AND b.EDU_APLCT_ORD =d.EDU_APLCT_ORD
AND b.EDU_APLCT_ORD =d.EDU_APLCT_ORD
AND d.aplct_state_cd = '20'
GROUP BY
SUBSTRING(c.edu_strt_pnttm,6,2)

View File

@ -0,0 +1,249 @@
<!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="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : instrActvtHstrySignMngList.jsp
* @Description : 운영관리 > 직인대장관리
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2022.12.7 안주영 최초 생성
* @author 안주영
* @since 2022.2.7
* @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 type="text/javascript">
$(document).ready(function(){
});
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/kccadr/oprtn/cmdTrgt/instrActvtHstrySignAndCmpltCrtfcMngList.do'/>";
listForm.submit();
}
// function fn_goDetail(instrDetailActvtHstryOrd){
// var form = document.detailForm;
// form.instrDetailActvtHstryOrd.value = instrDetailActvtHstryOrd ;
// form.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/instrActvtHstryMngDetail.do'/>";
// form.submit();
// }
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('');
}
});
}
</script>
<title>직인대장관리(이수증)</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post">
<input type="hidden" name="instrDetailActvtHstryOrd" id="instrDetailActvtHstryOrd" value=""/>
</form>
<form id="listForm" name="listForm" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEInstrActvtHstryVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEInstrActvtHstryVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEInstrActvtHstryVO.searchSortOrd}" />" />
<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">
<ve:select codeId="VEA011" name="searchSelStatus" id="searchSelStatus" css="class='sel_type1'"
selectedValue="${vEInstrActvtHstryVO.searchSelStatus}" defaultValue=''
defaultText='전체'
/>
</div>
</div>
-->
<div class="list_top_2">
<div class="util_left">
<p>발급일자</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchStartDt" name="searchStartDt" value="<c:out value='${vEInstrActvtHstryVO.searchStartDt}'/>">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchEndDt" name="searchEndDt" value="<c:out value='${vEInstrActvtHstryVO.searchEndDt}'/>">
</div>
</div>
</div>
<div class="list_top_2">
<div class="util_left">
<p>성명</p>
</div>
<div class="util_right">
<input type="text" id=searchKeyword name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${vEInstrActvtHstryVO.searchKeyword}'/>" onkeyDown="press(event);">
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<!-- //list_top -->
<!-- list util -->
<div class="list_util">
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${vEInstrActvtHstryVO.pageUnit == '10' or vEInstrActvtHstryVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEInstrActvtHstryVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEInstrActvtHstryVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEInstrActvtHstryVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 60px;">
<col style="width: 150px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>항목</th>
<th>문서번호</th>
<th>과정명</th>
<th>교육일시</th>
<th>성명</th>
<th>발급일자</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<%-- <tr onclick="fn_goDetail('${list.instrDetailActvtHstryOrd}')" style="cursor:pointer;"> --%>
<!-- VE0011 -->
<tr>
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</td>
<td>
<ve:code codeId="VE0011" code="${list.lctrDivCd }"/>
</td>
<td>
<c:if test="${list.lctrDivCd eq '50'}">실무역량-</c:if>
<c:if test="${list.lctrDivCd eq '60'}">기소유예-</c:if>
<c:out value="${list.eduCmpltCrtfcNmbr }" />
</td>
<td>
<c:out value="${list.prcsNm }" />
</td>
<td>
<c:out value="${list.eduStrtPnttm }" />
</td>
<td>
<c:out value="${list.mberNm }" />
</td>
<td>
<c:out value="${list.lastUpdtPnttm }" />
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
<!-- //cont -->
</form>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1220,21 +1220,20 @@
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<div class="list_util">
<p class="list_util_p">
⑦월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<div>
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no7();">엑셀 다운로드</button>
</div>
</div>
-->
<!-- list -->
<!--
<div class="tb_type01">
<table>
<colgroup>
@ -1248,7 +1247,6 @@
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th></th>
<th>차시</th>
<th>이수인원</th>
@ -1260,18 +1258,6 @@
<tbody>
<c:forEach var="list" items="${list_no7}" 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>
-->
<c:choose>
<c:when test="${list.codeNm eq '13'}">
<td>합계</td>
@ -1305,9 +1291,9 @@
</tbody>
</table>
</div>
-->
<!-- //list -->
</c:if>
</div>
</div>

View File

@ -0,0 +1,249 @@
<!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="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : instrActvtHstrySignMngList.jsp
* @Description : 운영관리 > 직인대장관리
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2022.12.7 안주영 최초 생성
* @author 안주영
* @since 2022.2.7
* @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 type="text/javascript">
$(document).ready(function(){
});
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/kccadr/oprtn/prevent/instrActvtHstrySignAndCmpltCrtfcMngList.do'/>";
listForm.submit();
}
// function fn_goDetail(instrDetailActvtHstryOrd){
// var form = document.detailForm;
// form.instrDetailActvtHstryOrd.value = instrDetailActvtHstryOrd ;
// form.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/instrActvtHstryMngDetail.do'/>";
// form.submit();
// }
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('');
}
});
}
</script>
<title>직인대장관리(이수증)</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post">
<input type="hidden" name="instrDetailActvtHstryOrd" id="instrDetailActvtHstryOrd" value=""/>
</form>
<form id="listForm" name="listForm" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEInstrActvtHstryVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEInstrActvtHstryVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEInstrActvtHstryVO.searchSortOrd}" />" />
<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">
<ve:select codeId="VEA011" name="searchSelStatus" id="searchSelStatus" css="class='sel_type1'"
selectedValue="${vEInstrActvtHstryVO.searchSelStatus}" defaultValue=''
defaultText='전체'
/>
</div>
</div>
-->
<div class="list_top_2">
<div class="util_left">
<p>발급일자</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchStartDt" name="searchStartDt" value="<c:out value='${vEInstrActvtHstryVO.searchStartDt}'/>">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchEndDt" name="searchEndDt" value="<c:out value='${vEInstrActvtHstryVO.searchEndDt}'/>">
</div>
</div>
</div>
<div class="list_top_2">
<div class="util_left">
<p>성명</p>
</div>
<div class="util_right">
<input type="text" id=searchKeyword name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${vEInstrActvtHstryVO.searchKeyword}'/>" onkeyDown="press(event);">
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<!-- //list_top -->
<!-- list util -->
<div class="list_util">
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${vEInstrActvtHstryVO.pageUnit == '10' or vEInstrActvtHstryVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEInstrActvtHstryVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEInstrActvtHstryVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEInstrActvtHstryVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 60px;">
<col style="width: 150px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>항목</th>
<th>문서번호</th>
<th>과정명</th>
<th>교육일시</th>
<th>성명</th>
<th>발급일자</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<%-- <tr onclick="fn_goDetail('${list.instrDetailActvtHstryOrd}')" style="cursor:pointer;"> --%>
<!-- VE0011 -->
<tr>
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</td>
<td>
<ve:code codeId="VE0011" code="${list.lctrDivCd }"/>
</td>
<td>
<c:if test="${list.lctrDivCd eq '50'}">실무역량-</c:if>
<c:if test="${list.lctrDivCd eq '60'}">기소유예-</c:if>
<c:out value="${list.eduCmpltCrtfcNmbr }" />
</td>
<td>
<c:out value="${list.prcsNm }" />
</td>
<td>
<c:out value="${list.eduStrtPnttm }" />
</td>
<td>
<c:out value="${list.mberNm }" />
</td>
<td>
<c:out value="${list.lastUpdtPnttm }" />
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
<!-- //cont -->
</form>
</body>
</html>

File diff suppressed because it is too large Load Diff