Merge branch 'hylee' into advc

This commit is contained in:
hylee 2023-12-29 10:06:45 +09:00
commit 1b2e596a17
7 changed files with 427 additions and 0 deletions

View File

@ -13,6 +13,9 @@ public interface VEInstrDetailActvtHstryService {
VEInstrDetailActvtHstryVO findById(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO);
void updateStateCd(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO);
List<VEInstrDetailActvtHstryVO> selectSignAndCmpltCrtfcPagingList(
VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO);

View File

@ -47,6 +47,8 @@ public class VEInstrDetailActvtHstryVO extends ComDefaultVO implements Serializa
private String selectPagingListQuery;
private String userId;
private String lctrDivCd;
//강의활동확인서 컬럼 추가
private String sex = ""; //성별
private String purpose = ""; //용도
@ -60,6 +62,16 @@ public class VEInstrDetailActvtHstryVO extends ComDefaultVO implements Serializa
private String cnt = ""; //횟수
private String chasiSum = ""; //차시 합계
private String prcsAplctPrdOrd; //
private String eduAplctOrd; //
private String aplctStateCd; //
private String prcsNm; //
private String prcsDiv; //
private String mberNm; //
private String eduCmpltCrtfcNmbr; //
private String eduStrtPnttm; //
public String getInstrDetailActvtHstryOrd() {
@ -224,6 +236,60 @@ public class VEInstrDetailActvtHstryVO extends ComDefaultVO implements Serializa
public void setChasiSum(String chasiSum) {
this.chasiSum = chasiSum;
}
public String getPrcsAplctPrdOrd() {
return prcsAplctPrdOrd;
}
public void setPrcsAplctPrdOrd(String prcsAplctPrdOrd) {
this.prcsAplctPrdOrd = prcsAplctPrdOrd;
}
public String getEduAplctOrd() {
return eduAplctOrd;
}
public void setEduAplctOrd(String eduAplctOrd) {
this.eduAplctOrd = eduAplctOrd;
}
public String getAplctStateCd() {
return aplctStateCd;
}
public void setAplctStateCd(String aplctStateCd) {
this.aplctStateCd = aplctStateCd;
}
public String getPrcsNm() {
return prcsNm;
}
public void setPrcsNm(String prcsNm) {
this.prcsNm = prcsNm;
}
public String getPrcsDiv() {
return prcsDiv;
}
public void setPrcsDiv(String prcsDiv) {
this.prcsDiv = prcsDiv;
}
public String getMberNm() {
return mberNm;
}
public void setMberNm(String mberNm) {
this.mberNm = mberNm;
}
public String getEduCmpltCrtfcNmbr() {
return eduCmpltCrtfcNmbr;
}
public void setEduCmpltCrtfcNmbr(String eduCmpltCrtfcNmbr) {
this.eduCmpltCrtfcNmbr = eduCmpltCrtfcNmbr;
}
public String getLctrDivCd() {
return lctrDivCd;
}
public void setLctrDivCd(String lctrDivCd) {
this.lctrDivCd = lctrDivCd;
}
public String getEduStrtPnttm() {
return eduStrtPnttm;
}
public void setEduStrtPnttm(String eduStrtPnttm) {
this.eduStrtPnttm = eduStrtPnttm;
}

View File

@ -26,6 +26,10 @@ public class VEInstrDetailActvtHstryDAO extends EgovAbstractDAO {
return (List<VEInstrDetailActvtHstryVO>) list("VEInstrDetailActvtHstryDAO.selectSignPagingList", vEInstrDetailActvtHstryVO);
}
public List<VEInstrDetailActvtHstryVO> selectSignAndCmpltCrtfcPagingList(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO) {
return (List<VEInstrDetailActvtHstryVO>) list("VEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList", vEInstrDetailActvtHstryVO);
}
public VEInstrDetailActvtHstryVO findById(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO) {
return (VEInstrDetailActvtHstryVO) select("VEInstrDetailActvtHstryDAO.findById", vEInstrDetailActvtHstryVO);
// TODO Auto-generated method stub

View File

@ -33,6 +33,11 @@ public class VEInstrDetailActvtHstryServiceImpl implements VEInstrDetailActvtHst
public List<VEInstrDetailActvtHstryVO> selectSignPagingList(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO) {
return vEInstrDetailActvtHstryDAO.selectSignPagingList(vEInstrDetailActvtHstryVO);
}
@Override
public List<VEInstrDetailActvtHstryVO> selectSignAndCmpltCrtfcPagingList(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO) {
return vEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList(vEInstrDetailActvtHstryVO);
}
@Override
public VEInstrDetailActvtHstryVO findById(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO) {

View File

@ -124,6 +124,59 @@ public class CommonManageController {
return "oprtn/cmm/instrActvtHstrySignMngList";
}
/**
* @methodName : instrActvtHstrySignMngList
* @author : 이호영
* @date : 2023.12.28
* @description : 직인대장관리(이수증) - 기반 기소
* @param vEInstrDetailActvtHstryVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/cmm/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);
//2. pageing step2
vEInstrDetailActvtHstryVO = this.setPagingStep2(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(vEInstrDetailActvtHstryVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 검색어 복호화
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.decrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
// return "oprtn/cmm/instrActvtHstrySignMngList";
return "oprtn/cmm/instrActvtHstrySignAndCmpltCrtfcMngList";
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//

View File

@ -182,6 +182,55 @@
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList */
SELECT
COUNT(1) OVER() AS totCnt
, a.PRCS_APLCT_PRD_ORD as prcsAplctPrdOrd
, b.LCTR_DIV_CD AS lctrDivCd
, b.EDU_STRT_PNTTM AS eduStrtPnttm
, a.EDU_APLCT_ORD as eduAplctOrd
, a.APLCT_STATE_CD as aplctStateCd
, a.EDU_CMPLT_CRTFC_NMBR as eduCmpltCrtfcNmbr
, c.PRCS_NM as prcsNm
, c.PRCS_DIV as prcsDiv
, d.USER_ID as userId
, e.MBER_NM as mberNm
, to_char( a.LAST_UPDT_PNTTM ,'YYYY.MM.DD' ) AS lastUpdtPnttm
FROM
vea_aplct_detail_info a
LEFT JOIN ve_prcs_aplct_prd b
ON a.PRCS_APLCT_PRD_ORD = b.PRCS_APLCT_PRD_ORD
LEFT JOIN ve_prcs c
ON b.PRCS_ORD = c.PRCS_ORD
LEFT JOIN VE_EDU_APLCT d
ON a.EDU_APLCT_ORD = d.EDU_APLCT_ORD
LEFT JOIN LETTNGNRLMBER e
ON e.MBER_ID = d.USER_ID
WHERE
a.APLCT_STATE_CD ='20'
AND
a.EDU_CMPLT_CRTFC_NMBR IS NOT null
<isNotEmpty prepend="AND" property="searchKeyword">
e.MBER_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.LAST_UPDT_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.LAST_UPDT_PNTTM,'YYYYMMDD')<![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.findById" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/*VEInstrDetailActvtHstryDAO.findById */

View File

@ -0,0 +1,247 @@
<!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/cmm/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: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>