This commit is contained in:
hylee 2023-07-20 11:39:58 +09:00
commit 02ad329594
5 changed files with 368 additions and 3 deletions

View File

@ -23,6 +23,7 @@ import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@ -36,6 +37,8 @@ import kcc.com.cmm.util.IpUtil;
import kcc.com.cmm.web.EgovFileDownloadController; import kcc.com.cmm.web.EgovFileDownloadController;
import kcc.com.utl.user.service.CheckFileUtil; import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil; import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.kccadr.sch.service.SchduleManageService;
import kcc.kccadr.sch.service.SchduleManageVO;
import kcc.let.uat.uia.service.SsoLoginVO; import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil; import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil4VO; import kcc.let.utl.fcc.service.EgovCryptoUtil4VO;
@ -111,6 +114,10 @@ public class VEAdultEduEndController {
@Resource(name="vEAsgnmNotiService") @Resource(name="vEAsgnmNotiService")
private VEAsgnmNotiService vEAsgnmNotiService; private VEAsgnmNotiService vEAsgnmNotiService;
//일정 정보
@Resource(name = "schduleManageService")
private SchduleManageService schduleManageService;
private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class); private static final Logger LOGGER = LoggerFactory.getLogger(EgovFileDownloadController.class);
/** /**
@ -192,6 +199,76 @@ public class VEAdultEduEndController {
return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList"; return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList";
} }
//청소년강사 강의 종료교육 목록
@RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do")
public String instrEduEndSchdl(
@ModelAttribute("vEInstrAsgnmVO") VEInstrAsgnmVO vEInstrAsgnmVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
model.addAttribute("ssoLoginVO", ssoLoginVO);
model.addAttribute("loginVO", loginVO);
//로그인 처리====================================
//3.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEInstrAsgnmVO);
//4. pageing step2
vEInstrAsgnmVO = this.setPagingStep2(vEInstrAsgnmVO, paginationInfo);
vEInstrAsgnmVO.setUserId(loginVO.getUniqId());
vEInstrAsgnmVO.setInstrDiv("20");
vEInstrAsgnmVO.setAsgnmAprvlCd("30"); // 강사확정코드 => 요청대기 : 10, 수락요청 : 20, 교육확정 : 30, 수락거절 : 40, 추가신청 : 50
try {
System.out.println("session.getAttribute(menuNo).toString()");
System.out.println(session.getAttribute("menuNo").toString());
vEInstrAsgnmVO.setMenuNo(session.getAttribute("menuNo").toString());
}catch(Exception ex) {
ex.printStackTrace();
vEInstrAsgnmVO.setMenuNo("9991300");
}
List<VEInstrAsgnmVO> vEInstrAsgnmVOList = vEAsgnmMIXService.selectAsgnmPagingList(vEInstrAsgnmVO);
//6.pageing step3
paginationInfo = this.setPagingStep3(vEInstrAsgnmVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("vEInstrAsgnmVOList", vEInstrAsgnmVOList);
return "/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl";
}
@RequestMapping(value = "/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do")
@ResponseBody
public List<SchduleManageVO> adultSchduleManagerAjaxLoadData(@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO, ModelMap model) throws Exception {
schduleManageVO.setAprvlCd("60");
schduleManageVO.setLctrDivCd("10");
schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", ""));
return schduleManageService.selectSchManageStatusList(schduleManageVO);
}
//청소년강사 강의 종료교육 상세 //청소년강사 강의 종료교육 상세
@RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do") @RequestMapping("/web/ve/instr/adultVisitEdu/endInfo/instrEduEndDetail.do")
public String instrEduEndDetail( public String instrEduEndDetail(

View File

@ -281,8 +281,5 @@ var ex_s_todate;// = info.startStr;
</div> </div>
</div> </div>
<!-- //cont --> <!-- //cont -->
</body> </body>
</html> </html>

View File

@ -29,6 +29,12 @@
listForm.action = "<c:url value='/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do'/>"; listForm.action = "<c:url value='/web/ve/instr/adultVisitEdu/endInfo/instrEduEndList.do'/>";
listForm.submit(); listForm.submit();
} }
function schdlPage(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/web/ve/instr/adultVisitEdu/endInfo/instrEduEndSchdl.do'/>";
listForm.submit();
}
function goReqStatus(){ function goReqStatus(){
$("#listForm").attr("action","${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/instrInfo/instrPrflReg.do").submit(); $("#listForm").attr("action","${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/instrInfo/instrPrflReg.do").submit();
@ -81,6 +87,7 @@
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script> <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="linkPage(1)">검색</button> <button type="button" class="btnType01" onclick="linkPage(1)">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button> <button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
<button type="button" class="btnType01" onclick="schdlPage()">교육일정달력</button>
</div> </div>
</div> </div>

View File

@ -0,0 +1,280 @@
<!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" %>
<%
/**
* @Class Name : eduSchdlMngList.jsp
* @Description : 관리자 일정관리
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.08.16 김봉호 최초 생성
* @author 김봉호
* @since 2021.08.16
* @version 1.0
* @see
*
*/
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.fc-day-sat { color:#0000FF; } /* 토요일 */
.fc-day-sun { color:#FF0000; } /* 일요일 */
</style>
<link type="text/css" rel="stylesheet" href="<c:url value='/js/fullcalendar/5.9.0/main.css' />" />
<script type="text/javascript" src="<c:url value='/js/fullcalendar/5.9.0/main.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/fullcalendar/5.9.0/locales-all.js'/>"></script>
<script type="text/javascript">
$(document).ready(function(){
});
var ex_s_todate;// = info.startStr;
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('schduleManager');
var calendar = new FullCalendar.Calendar(calendarEl, {
locale: 'ko',
timezone : "local",
weekends : true,
editable : false,
firstDay : 0, //월요일이 먼저 오게 하려면 1
dayMaxEvents: true,
navLinks: true,
customButtons: {
myCustomButton: {
text: '오늘',
click: function(event, elm) {
alert('clicked the custom button!');
}
},viewWeekends : {
text : '주말',
click : function (event, elm) {
calendar.setOption("weekends" , calendar.getOption("weekends") ? false : true);
}
}
},buttonText: {
listMonth: '일정'
},
headerToolbar: {
left: 'prevYear nextYear today',
center: 'prev title next',
right: 'dayGridMonth,listMonth'
},
eventSources: [
{
events: function(info, successCallback, failureCallback) {
console.log(info);
/*
alert(info.start);
alert(info.startStr);
alert(JSON.stringify(info));
alert(JSON.stringify(info.startStr));
*/
var s_todate = info.startStr;
ex_s_todate = info.startStr;
var searchDt = $("#searchCalendarCode").val();
$.ajax({
url: '<c:url value="/web/ve/instr/adultVisitEdu/endInfo/adultSchduleManagerAjaxLoadData.do"/>',
type: 'POST',
dataType: 'json',
data: {
searchStartDt : "",
searchStartDt : s_todate,
todate : info.start,
//todate : info.startStr,
//todate : s_todate,
//todate : "",
searchYearMonth : function(){
return "";
}
},
success: function(data) {
successCallback(data);
// 날짜 계산
setCalDate(data, info.startStr);
}
});
}
}
],
eventContent: function(arg, createElement) {
event.preventDefault();
console.log(arg.event._def.url);
arg.event._def.url = "#none";
},
eventClick: function(info) {
info.jsEvent.preventDefault();
schDetailPop(info.event._def.extendedProps.schSeq, info.event._def.extendedProps.schChasiSeq);
return false;
},
});
calendar.render();
});
function schDetailPop(schSeq, schChasiSeq) {
window.open('', 'schDetailPop', "width=800, height=520, left=100, top=130","location = no","status= no","toolbars= no");
document.listForm.eduAplctOrd.value = schSeq ;
document.listForm.eduChasiOrd.value = schChasiSeq ;
document.listForm.method = "post";
document.listForm.action = "${pageContext.request.contextPath}/kccadr/oprtn/tngrVisitEdu/popup/SchduleManagerPopDetail.do";
document.listForm.target = "schDetailPop" ;
document.listForm.submit();
}
function excelDownLoad(){
var listForm = document.listForm ;
listForm.searchStartDt.value = ex_s_todate ;
listForm.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/tngrSchduleManagerExcelDownLoad.do'/>";
listForm.submit();
}
/*
*##############################################################################
* START
*##############################################################################
*/
// 날짜 계산
function setCalDate(data, startStr) {
// 현재월 구하기
startStr = startStr.substr(0, 10);
startStr = replaceAll(startStr, "-", "");
startStr = replaceAll(startStr, ".", "");
startStr = replaceAll(startStr, "/", "");
var todayYear = startStr.substring(0,4);
var todayMonth = 0;
var todayDay = startStr.substring(6,8);
if (todayDay == "01") {
todayMonth = startStr.substring(4,6);
}
else {
if (startStr.substring(4,6) == "12") {
todayMonth = "01";
}
else {
todayMonth = parseInt(startStr.substring(4,6), 10) + 1;
if (todayMonth < 10) {
todayMonth = "0" + todayMonth;
}
}
}
// End
//alert(todayMonth);
var monthCnt = 0;
var week1Cnt = 0, week2Cnt = 0, week3Cnt = 0, week4Cnt = 0, week5Cnt = 0, week6Cnt = 0;
var sHtml = "";
for (var j = 0; j < data.length; j++) {
var schStartDate = data[j].start.substr(0, 10);
schStartDate = replaceAll(schStartDate, "-", "");
schStartDate = replaceAll(schStartDate, ".", "");
schStartDate = replaceAll(schStartDate, "/", "");
var thisYear = schStartDate.substring(0,4);
var thisMonth = schStartDate.substring(4,6);
var thisDay = schStartDate.substring(6,8);
var thisWeek = getSecofWeek(schStartDate);
// 해당월 데이터만 처리
if (todayMonth == thisMonth) {
monthCnt++;
if (thisWeek == 1) {
week1Cnt++;
}
else if (thisWeek == 2) {
week2Cnt++;
}
else if (thisWeek == 3) {
week3Cnt++;
}
else if (thisWeek == 4) {
week4Cnt++;
}
else if (thisWeek == 5) {
week5Cnt++;
}
else if (thisWeek == 6) {
week6Cnt++;
}
}
}
sHtml += "전체 : " + monthCnt + "건";
sHtml += " &nbsp;(1주차 : " + week1Cnt + "건";
sHtml += ", &nbsp;&nbsp;2주차 : " + week2Cnt + "건";
sHtml += ", &nbsp;&nbsp;3주차 : " + week3Cnt + "건";
sHtml += ", &nbsp;&nbsp;4주차 : " + week4Cnt + "건";
sHtml += ", &nbsp;&nbsp;5주차 : " + week5Cnt + "건";
sHtml += ", &nbsp;&nbsp;6주차 : " + week6Cnt + "건)";
sHtml += '&nbsp;<button type="button" class="btn_down_excel" onclick="excelDownLoad();">일정현황 엑셀 다운로드</button>';
//$("#weekCnt").html(sHtml);
}
// 해당일 주차 계산
function getSecofWeek(date) {
var d = new Date( date.substring(0,4), parseInt(date.substring(4,6))-1, date.substring(6,8) );
var fd = new Date( date.substring(0,4), parseInt(date.substring(4,6))-1, 1 );
return Math.ceil((parseInt(date.substring(6,8))+fd.getDay())/7);
}
// ReplaceAll
function replaceAll(str, searchStr, replaceStr) {
return str.split(searchStr).join(replaceStr);
}
</script>
<title>일정현황</title>
</head>
<body>
<form:form id="listForm" name="listForm" method="post">
<input type="hidden" name="eduAplctOrd" value="" />
<input type="hidden" name="eduChasiOrd" value="" />
<input type="hidden" name="searchStartDt" value="" />
</form:form>
<div class="cont_wrap">
<div class="cont_tit">
<h2>성인 강의 종료교육 목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="box">
<br />
<div style="float: right; padding-right: 40px; color: #777777;" id="weekCnt"></div>
<div class="cont">
<div id="schduleManager"></div>
</div>
</div>
</div>
<!-- //cont -->
</body>
</html>

View File

@ -288,6 +288,7 @@
<p><c:out value="${info.pstn}"/></p> <p><c:out value="${info.pstn}"/></p>
</td> </td>
</tr> </tr>
<!--
<tr class="length2"> <tr class="length2">
<th scope="row"> <th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p> <p class="req_text"><span>필수입력 항목</span>*</p>
@ -306,6 +307,7 @@
<p><c:out value="${info.pstn}"/></p> <p><c:out value="${info.pstn}"/></p>
</td> </td>
</tr> </tr>
-->
<tr class="length4"> <tr class="length4">
<th scope="row"> <th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p> <p class="req_text"><span>필수입력 항목</span>*</p>
@ -322,6 +324,7 @@
<p><ve:code codeId="VE0018" code="${info.divCd}"/></p> <p><ve:code codeId="VE0018" code="${info.divCd}"/></p>
</td> </td>
</tr> </tr>
<!--
<tr class="length2"> <tr class="length2">
<th scope="row"> <th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p> <p class="req_text"><span>필수입력 항목</span>*</p>
@ -340,6 +343,7 @@
<p><ve:code codeId="VE0018" code="${info.divCd}"/></p> <p><ve:code codeId="VE0018" code="${info.divCd}"/></p>
</td> </td>
</tr> </tr>
-->
<tr> <tr>
<th scope="row"> <th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p> <p class="req_text"><span>필수입력 항목</span>*</p>