2023-12-26 15:12 운영자 초기화 버튼 오류 수정

This commit is contained in:
myname 2023-12-26 15:12:26 +09:00
parent 146bc9ea76
commit 35ea707816
10 changed files with 712 additions and 175 deletions

View File

@ -133,6 +133,10 @@ public class MyPageController {
)
);
System.out.println(tngrMap);
System.out.println(tngrMap);
model.addAttribute("tngrMap", tngrMap);
model.addAttribute("tngrList", tngrList);
}

View File

@ -8,6 +8,8 @@ public interface VEInstrDetailActvtHstryService {
List<VEInstrDetailActvtHstryVO> selectPagingList(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO);
List<VEInstrDetailActvtHstryVO> selectSignPagingList(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO);
VEInstrDetailActvtHstryVO findById(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO);
void updateStateCd(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO);

View File

@ -5,9 +5,7 @@ import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.kccadr.accdnt.acd.service.AdjstChangeDateVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
@Repository("vEInstrDetailActvtHstryDAO")
public class VEInstrDetailActvtHstryDAO extends EgovAbstractDAO {
@ -24,6 +22,10 @@ public class VEInstrDetailActvtHstryDAO extends EgovAbstractDAO {
return (List<VEInstrDetailActvtHstryVO>) list("VEInstrDetailActvtHstryDAO.selectPagingList", vEInstrDetailActvtHstryVO);
}
public List<VEInstrDetailActvtHstryVO> selectSignPagingList(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO) {
return (List<VEInstrDetailActvtHstryVO>) list("VEInstrDetailActvtHstryDAO.selectSignPagingList", vEInstrDetailActvtHstryVO);
}
public VEInstrDetailActvtHstryVO findById(VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO) {
return (VEInstrDetailActvtHstryVO) select("VEInstrDetailActvtHstryDAO.findById", vEInstrDetailActvtHstryVO);
// TODO Auto-generated method stub

View File

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

View File

@ -0,0 +1,181 @@
package kcc.ve.oprtn.comweb;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
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 egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO;
@Controller
//@RequestMapping("/kccadr/oprtn/comm")
public class CommonManageController {
/*
@Resource(name = "scholInfoService")
private ScholInfoService scholInfoService;
@Resource(name = "scholInfoMIXService")
private ScholInfoMIXService scholInfoMIXService;
@Resource(name = "vEEduAplctService")
private VEEduAplctService vEEduAplctService;
@Resource(name = "vEPrcsOnlnCntntService")
private VEPrcsOnlnCntntService vEPrcsOnlnCntntService;
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
//snd_hstry id gen
@Resource(name = "sndGnrService")
private EgovIdGnrService sndGnrService;
// 교육신청발송이력
@Resource(name = "vEEduAplctSndHstryService")
private VEEduAplctSndHstryService vEEduAplctSndHstryService;
//회원조회
@Resource(name = "userManageService")
private EgovUserManageService userManageService;
//강의 회차 정보
@Resource(name = "vEAStngService")
private VEAStngService vEAStngService;
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
*/
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
// 첨부파일 정보
@Resource(name="vEInstrDetailActvtHstryService")
private VEInstrDetailActvtHstryService vEInstrDetailActvtHstryService;
/**
* @methodName : instrActvtHstryMngList
* @author : 이호영
* @date : 2023.11.16
* @description : 강사활동확인서신청관리 목록
* @param vEInstrDetailActvtHstryVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/cmm/instrActvtHstrySignMngList.do")
public String instrActvtHstrySignMngList(
@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); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// }
//로그인 처리====================================
vEInstrDetailActvtHstryVO.setInstrDiv(VeConstants.LCTR_DIV_CD_10); //청소년
//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);
vEInstrDetailActvtHstryVOList.stream().forEach(t-> t.setInstrNm(egovCryptoUtil.decrypt(t.getInstrNm())));
//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";
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(
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 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(
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

@ -126,6 +126,40 @@
</select>
<select id="VEInstrDetailActvtHstryDAO.selectSignPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectSignPagingList */
SELECT
COUNT(1) OVER() AS totCnt ,
TO_CHAR(a.state_pnttm, 'YYYY') ||'-'||a.docu_nmbr||'호' AS docuNmbrDp ,
b.INSTR_NM AS instrNm ,
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
JOIN ve_instr_detail b
ON a.user_id = b.user_id
AND a.instr_detail_ord = b.instr_detail_ord
WHERE
1=1
AND a.docu_nmbr IS not null
<isNotEmpty prepend="AND" property="searchKeyword">
b.INSTR_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.aplct_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 */
SELECT

View File

@ -52,6 +52,8 @@
<!-- 찾교 추가 관리자 -->
<decorator name="adminVelayout" page="/WEB-INF/jsp/layout/adminVeLayout.jsp">
<pattern>*/oprtn/cmm/*</pattern> <!-- 공통 화면 -->
<pattern>*/oprtn/tngrVisitEdu/*</pattern> <!-- 청소년 교육 화면 -->
<pattern>*/oprtn/instr/tngrVisitEdu/*</pattern> <!-- 청소년 교육 강사 화면 -->

View File

@ -65,7 +65,22 @@
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>

View File

@ -0,0 +1,278 @@
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<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.searchCondition.value = $('#searchCondition').val();
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/cmm/instrActvtHstrySignMngList.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: 60px;">
<col style="width: auto;">
<col style="width: 150px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<%-- <col style="width: 10%;"> --%>
<%-- <col style="width: 10%;"> --%>
<%-- <col style="width: 15%;"> --%>
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>강사명</th>
<th>성별</th>
<th>용도</th>
<th>사업자명<br/>사업자등록번호</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;">
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</td>
<td>
<c:out value="${list.instrNm }" />
</td>
<td>
<c:out value="${list.sex }" />
</td>
<td>
<c:out value="${list.purpose }" />
</td>
<td>
<c:out value="${list.bsnsNm }" />
<br/>
(<c:out value="${list.bsnsNmbr }" />)
</td>
<td>
<c:out value="${list.aplctPnttm }" />
</td>
<td>
<c:choose>
<c:when test="${list.stateCd eq 10 }">
-
</c:when>
<c:otherwise>
<c:out value="${list.statePnttm }" />
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${list.docuNmbr ne '' and not empty list.docuNmbr}">
<c:out value="${list.docuNmbrDp }" />
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<ve:code codeId="VEA011" code="${list.stateCd}"/>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="9"><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>

View File

@ -65,7 +65,22 @@
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>