2023-10-24 11:47 강사 일정 달력 제공

This commit is contained in:
myname 2023-10-24 11:47:52 +09:00
parent 48c7c20450
commit 5e058ef76c
13 changed files with 999 additions and 42 deletions

View File

@ -22,5 +22,7 @@ public interface SchduleManageService {
//관리자 일정 페이지
List<SchduleManageVO> selectSchManageStatusAdminList(SchduleManageVO schduleManageVO) throws Exception;
//강사 일정 페이지
List<SchduleManageVO> selectSchManageStatusInstrList(SchduleManageVO schduleManageVO) throws Exception;
}

View File

@ -119,6 +119,8 @@ public class SchduleManageVO extends ComDefaultVO {
private String eduPlace; //교육장소
private String prcsNm; //온라인콘텐츠 신청 항목
private String userId; //강사화면 달력 출력을 위해 추가한 항목
public Date getTodate() {
@ -482,6 +484,14 @@ public class SchduleManageVO extends ComDefaultVO {
this.prcsNm = prcsNm;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}

View File

@ -29,6 +29,12 @@ public class SchduleManageDAO extends EgovAbstractDAO {
public List<SchduleManageVO> selectSchManageStatusAdminList(SchduleManageVO schduleManageVO)throws Exception{
return (List<SchduleManageVO>)list("schduleManageDAO.selectSchManageStatusAdminList" , schduleManageVO);
}
//강사 배정 확정 교육 확정된 강좌 리스트
@SuppressWarnings("unchecked")
public List<SchduleManageVO> selectSchManageStatusInstrList(SchduleManageVO schduleManageVO)throws Exception{
return (List<SchduleManageVO>)list("schduleManageDAO.selectSchManageStatusInstrList" , schduleManageVO);
}
public SchduleManageVO selectSchManageDetail(SchduleManageVO schduleManageVO)throws Exception{
return (SchduleManageVO) select("schduleManageDAO.selectSchManageDetail" , schduleManageVO);

View File

@ -54,4 +54,9 @@ public class SchduleManageServiceImpl implements SchduleManageService {
public List<SchduleManageVO> selectSchManageStatusAdminList(SchduleManageVO schduleManageVO) throws Exception {
return schduleManageDAO.selectSchManageStatusAdminList(schduleManageVO);
}
@Override
public List<SchduleManageVO> selectSchManageStatusInstrList(SchduleManageVO schduleManageVO) throws Exception {
return schduleManageDAO.selectSchManageStatusInstrList(schduleManageVO);
}
}

View File

@ -16,6 +16,7 @@ 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 org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@ -34,6 +35,8 @@ import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.kccadr.accdnt.acd.service.AdjstChangeDateService;
import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService;
import kcc.kccadr.sch.service.SchduleManageService;
import kcc.kccadr.sch.service.SchduleManageVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil4VO;
@ -135,6 +138,9 @@ public class InstrAdultPrflController {
@Resource(name = "vELctrMIXService")
private VELctrMIXService vELctrMIXService;
//일정 정보 가져오기
@Resource(name = "schduleManageService")
private SchduleManageService schduleManageService;
/**
* 0.성인 강사 대시보드 화면
@ -712,6 +718,110 @@ public class InstrAdultPrflController {
return modelAndView;
}
/**
* 1.성인대상 강사 상세화면 - 달력일정
*/
@RequestMapping("/web/ve/instr/adultVisitEdu/instrInfo/instrPrflSchdl.do")
public String instrPrflSchdl(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
, 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); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//성인대상 강사 상세정보 조회
vEInstrDetailVO.setUserId(loginVO.getUniqId());
vEInstrDetailVO.setInstrDiv("20");
vEInstrDetailVO.setUseYn("Y");
VEInstrDetailVO info = vEInstrDetailService.selectDetail(vEInstrDetailVO);
info = egovCryptoUtil.decryptVEInstrDetailVO(info);
model.addAttribute("info", info);
//성인대상 강사 신청내역 조회
vEInstrDetailVO.setFirstIndex(0);
vEInstrDetailVO.setSelectPagingListQuery("AND a.instr_detail_ord = '1'"); //첫번째 신청 조회
List<VEInstrDetailVO> vEInstrAplctList = vEInstrDetailService.selectPagingList(vEInstrDetailVO);
model.addAttribute("vEInstrAplctList", vEInstrAplctList);
//성인대상 강사 수정신청 내역 조회
vEInstrDetailVO.setFirstIndex(0);
vEInstrDetailVO.setSelectPagingListQuery("AND a.instr_detail_ord != '1'"); //첫번째가 아닌 수정 요청 조회
List<VEInstrDetailVO> vEInstrMdfyList = vEInstrDetailService.selectPagingList(vEInstrDetailVO);
model.addAttribute("vEInstrMdfyList", vEInstrMdfyList);
//현재 요청중인 내역 조회 - 요청 항목이 있으면 수정 요청 버튼 막기
vEInstrDetailVO.setFirstIndex(0);
vEInstrDetailVO.setSelectPagingListQuery("AND a.aprvl_cd = '10'");
List<VEInstrDetailVO> vEInstrMdfyRqstList = vEInstrDetailService.selectPagingList(vEInstrDetailVO);
model.addAttribute("vEInstrMdfyRqstList", vEInstrMdfyRqstList);
VELctrDetailVO lctrDetailVO = new VELctrDetailVO();
lctrDetailVO.setInstrDiv(vEInstrDetailVO.getInstrDiv());
lctrDetailVO.setUserId(vEInstrDetailVO.getUserId());
//강의설정 요청 리스트 불러오기
List<VELctrDetailVO> lctrStngSbmtInfo = vELctrMIXService.selectLctrStngSbmtList(lctrDetailVO);
model.addAttribute("lctrStngSbmtInfo", lctrStngSbmtInfo);
//강의설정테이블
lctrDetailVO.setUseYn("Y");
VELctrDetailVO lctrStngInfo = vELctrMIXService.selectDetail(lctrDetailVO);
model.addAttribute("lctrStngInfo", lctrStngInfo);
return "/web/ve/instr/adultVisitEdu/instrInfo/instrPrflSchdl";
}
@RequestMapping(value = "/web/ve/instr/adultVisitEdu/instrInfo/adultSchduleManagerAjaxLoadData.do")
@ResponseBody
public List<SchduleManageVO> adultSchduleManagerAjaxLoadData(
@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
//성인대상 강사 상세정보 조회
schduleManageVO.setUserId(loginVO.getUniqId());
schduleManageVO.setAprvlCd("60");
schduleManageVO.setLctrDivCd("20");
schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", ""));
return schduleManageService.selectSchManageStatusInstrList(schduleManageVO);
}
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(
VEInstrDetailVO p_vEInstrDetailVO

View File

@ -229,45 +229,51 @@ public class lctrAdultInfoStngController {
}
//로그인 처리====================================
//성인대상 강사 정보 가져오기
vELctrDetailVO.setInstrDiv(vEInstrDetailVO.getInstrDiv()); //강사구분 10-청소년 20-성인대상
vELctrDetailVO.setUserId(vEInstrDetailVO.getUserId());
model.addAttribute("info", vELctrDetailVO);
//강의지역 조회
VERsdncVO vERsdncVO = new VERsdncVO();
List<VERsdncVO> rsdncStep1VOList = vERsdncMIXService.selectRsdncStep1List(vERsdncVO);
model.addAttribute("rsdncStep1VOList", rsdncStep1VOList);
List<VERsdncVO> rsdncStep2VOList = vERsdncMIXService.selectRsdncStep2List(vERsdncVO);
model.addAttribute("rsdncStep2VOList", rsdncStep2VOList);
// 선호대상 공통코드 조회
List<?> prfrnTrgtList = cmmUseService.selectCmmCodeDetail("VE0006");
model.addAttribute("prfrnTrgtList", prfrnTrgtList);
VELctrDetailVO lctrDetailVO = new VELctrDetailVO();
lctrDetailVO.setInstrDiv(vEInstrDetailVO.getInstrDiv());
lctrDetailVO.setUserId(vEInstrDetailVO.getUserId());
//강의설정테이블
//VELctrDetailVO lctrStngInfo = vELctrMIXService.selectDetail(lctrDetailVO);
//VELctrDetailVO lctrStngInfo = vELctrMIXService.selectLctrStngDetail(lctrDetailVO);
//lctrDetailVO.setUseYn(//useYn);
VELctrDetailVO lctrStngInfo = vELctrMIXService.selectDetail(lctrDetailVO);
model.addAttribute("lctrStngInfo", lctrStngInfo);
//선호대상 정보 테이블
vELctrDetailVO.setLctrStngOrd(lctrStngInfo.getLctrStngOrd());
List<VELctrDetailVO> lctrPrfrnInfo = vELctrPrfrnService.selectPrfrnInfoList(vELctrDetailVO);
model.addAttribute("lctrPrfrnInfo", lctrPrfrnInfo);
//강의지역 조회
vELctrDetailVO.setRecordCountPerPage(1000);
vELctrDetailVO.setFirstIndex(0);
List<VELctrDetailVO> vELctrAreaList = vELctrAreaService.selectPagingList(vELctrDetailVO);
model.addAttribute("vELctrAreaList", vELctrAreaList);
try {
//성인대상 강사 정보 가져오기
vELctrDetailVO.setInstrDiv(vEInstrDetailVO.getInstrDiv()); //강사구분 10-청소년 20-성인대상
vELctrDetailVO.setUserId(vEInstrDetailVO.getUserId());
model.addAttribute("info", vELctrDetailVO);
//강의지역 조회
VERsdncVO vERsdncVO = new VERsdncVO();
List<VERsdncVO> rsdncStep1VOList = vERsdncMIXService.selectRsdncStep1List(vERsdncVO);
model.addAttribute("rsdncStep1VOList", rsdncStep1VOList);
List<VERsdncVO> rsdncStep2VOList = vERsdncMIXService.selectRsdncStep2List(vERsdncVO);
model.addAttribute("rsdncStep2VOList", rsdncStep2VOList);
// 선호대상 공통코드 조회
List<?> prfrnTrgtList = cmmUseService.selectCmmCodeDetail("VE0006");
model.addAttribute("prfrnTrgtList", prfrnTrgtList);
VELctrDetailVO lctrDetailVO = new VELctrDetailVO();
lctrDetailVO.setInstrDiv(vEInstrDetailVO.getInstrDiv());
lctrDetailVO.setUserId(vEInstrDetailVO.getUserId());
//강의설정테이블
//VELctrDetailVO lctrStngInfo = vELctrMIXService.selectDetail(lctrDetailVO);
//VELctrDetailVO lctrStngInfo = vELctrMIXService.selectLctrStngDetail(lctrDetailVO);
//lctrDetailVO.setUseYn(//useYn);
VELctrDetailVO lctrStngInfo = vELctrMIXService.selectDetail(lctrDetailVO);
model.addAttribute("lctrStngInfo", lctrStngInfo);
//선호대상 정보 테이블
vELctrDetailVO.setLctrStngOrd(lctrStngInfo.getLctrStngOrd());
List<VELctrDetailVO> lctrPrfrnInfo = vELctrPrfrnService.selectPrfrnInfoList(vELctrDetailVO);
model.addAttribute("lctrPrfrnInfo", lctrPrfrnInfo);
//강의지역 조회
vELctrDetailVO.setRecordCountPerPage(1000);
vELctrDetailVO.setFirstIndex(0);
List<VELctrDetailVO> vELctrAreaList = vELctrAreaService.selectPagingList(vELctrDetailVO);
model.addAttribute("vELctrAreaList", vELctrAreaList);
}catch(Exception ex) {
ex.printStackTrace();
}
return "/web/ve/instr/adultVisitEdu/lctrInfo/lctrStngDetailView";
}

View File

@ -16,6 +16,7 @@ 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 org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@ -34,6 +35,8 @@ import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.kccadr.accdnt.acd.service.AdjstChangeDateService;
import kcc.kccadr.kccadrCom.service.KccadrMgrUdtService;
import kcc.kccadr.sch.service.SchduleManageService;
import kcc.kccadr.sch.service.SchduleManageVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.EgovCryptoUtil4VO;
@ -142,6 +145,10 @@ public class InstrPrflController {
@Resource(name="egovCryptoUtil4VO")
private EgovCryptoUtil4VO egovCryptoUtil4VO;
//일정 정보 가져오기
@Resource(name = "schduleManageService")
private SchduleManageService schduleManageService;
/**
* 1.신청변경신청 목록 - L
*/
@ -836,6 +843,95 @@ public class InstrPrflController {
return "/web/ve/instr/tngrVisitEdu/instrInfo/instrTypeSelect";
}
/**
* 청소년대상 강사 일정달력
*/
@RequestMapping("/web/ve/instr/tngrVisitEdu/instrInfo/instrPrflSchdl.do")
public String instrPrflSchdl(
@ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
, 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); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//청소년 강사 상세정보 조회
vEInstrDetailVO.setUserId(loginVO.getUniqId());
vEInstrDetailVO.setInstrDiv("10");
vEInstrDetailVO.setUseYn("Y");
VEInstrDetailVO info = vEInstrDetailService.selectDetail(vEInstrDetailVO);
info = egovCryptoUtil.decryptVEInstrDetailVO(info);
model.addAttribute("info", info);
//성인대상 강사 신청내역 조회
vEInstrDetailVO.setFirstIndex(0);
vEInstrDetailVO.setSelectPagingListQuery("AND a.instr_detail_ord = '1'"); //첫번째 신청 조회
List<VEInstrDetailVO> vEInstrAplctList = vEInstrDetailService.selectPagingList(vEInstrDetailVO);
model.addAttribute("vEInstrAplctList", vEInstrAplctList);
//성인대상 강사 수정신청 내역 조회
vEInstrDetailVO.setFirstIndex(0);
vEInstrDetailVO.setSelectPagingListQuery("AND a.instr_detail_ord != '1'"); //첫번째가 아닌 수정 요청 조회
List<VEInstrDetailVO> vEInstrMdfyList = vEInstrDetailService.selectPagingList(vEInstrDetailVO);
model.addAttribute("vEInstrMdfyList", vEInstrMdfyList);
//패널티 조회
List<VEInstrDetailVO> vEInstrPnltyList = vEInstrMixService.selectPnltyList(vEInstrDetailVO);
model.addAttribute("vEInstrPnltyList", vEInstrPnltyList);
//현재 요청중인 내역 조회 - 요청 항목이 있으면 수정 요청 버튼 막기
vEInstrDetailVO.setFirstIndex(0);
vEInstrDetailVO.setSelectPagingListQuery("AND a.aprvl_cd = '10'");
List<VEInstrDetailVO> vEInstrMdfyRqstList = vEInstrDetailService.selectPagingList(vEInstrDetailVO);
model.addAttribute("vEInstrMdfyRqstList", vEInstrMdfyRqstList);
return "/web/ve/instr/tngrVisitEdu/instrInfo/instrPrflSchdl";
}
@RequestMapping(value = "/web/ve/instr/tngrVisitEdu/instrInfo/tngrSchduleManagerAjaxLoadData.do")
@ResponseBody
public List<SchduleManageVO> adultSchduleManagerAjaxLoadData(
@ModelAttribute("schduleManageVO") SchduleManageVO schduleManageVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
//성인대상 강사 상세정보 조회
schduleManageVO.setUserId(loginVO.getUniqId());
schduleManageVO.setAprvlCd("60");
schduleManageVO.setLctrDivCd("10");
schduleManageVO.setSearchStartDt(schduleManageVO.getSearchStartDt().split("T")[0].replaceAll("-", ""));
return schduleManageService.selectSchManageStatusInstrList(schduleManageVO);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -316,6 +316,133 @@
</select>
<!-- 사용자(강사) 일정 달력 -->
<select id="schduleManageDAO.selectSchManageStatusInstrList" parameterClass="SchduleManageVO" resultClass="SchduleManageVO" remapResults="true">
/* schduleManageDAO.selectSchManageStatusInstrList */
SELECT aa.title
, aa.content
, aa.schSeq
, aa.schChasiSeq
, to_char( TO_DATE(aa.edu_hope_dt|| aa.strt_tm,'YYYY.MM.DDHH24MI'), 'YYYY-MM-DD HH24:MI:SS' ) AS "start"
, to_char( TO_DATE(aa.edu_hope_dt|| aa.strt_tm,'YYYY.MM.DDHH24MI'), 'YYYY-MM-DD' ) AS dateTxt
, to_char( TO_DATE(aa.edu_hope_dt|| aa.strt_tm,'YYYY.MM.DDHH24MI'), 'HH24:MI:SS' ) AS timeTxt
,
TO_CHAR( TO_DATE(aa.edu_hope_dt|| aa.strt_tm,'YYYY.MM.DDHH24MI'), 'YYYY-MM-DD HH24:MI' )
|| '~'
||TO_CHAR( TO_DATE(aa.edu_hope_dt|| AA.END_tm,'YYYY.MM.DDHH24MI'), 'HH24:MI' )
AS eduDate
, aa.url
, aa.allDay
, aa.eduSlctCd
, aa.insttDivCd
, aa.eduMd
, aa.addr || ' ' || aa.addrDetail AS addrDetail
, aa.chrgNm
, aa.jobNm
, aa.clphone
, aa.phone
, aa.email
, aa.hopeSbjct
, aa.rqstCn
, aa.trgt
, aa.prsnl
, aa.instrNm
, DECODE(aa.isltnScholYn , 'Y', '예', '아니오') AS isltnScholYn
, aa.eduPlace
FROM(
SELECT
<isNotEmpty property="lctrDivCd">
<isEqual property="lctrDivCd" compareValue="10">
a.schol_instt_nm title ,
a.schol_instt_nm content ,
</isEqual>
<isEqual property="lctrDivCd" compareValue="20">
a.instt_nm title ,
a.instt_nm content ,
</isEqual>
</isNotEmpty>
a.edu_aplct_ord schSeq ,
b.edu_chasi_ord schChasiSeq ,
b.edu_hope_dt,
b.strt_tm,
b.end_tm,
'' url ,
0 allDay,
c.code_nm eduSlctCd,
d.code_nm insttDivCd,
a.EDU_MD eduMd,
a.ADDR addr,
a.ADDR_DETAIL addrDetail,
a.CHRG_NM chrgNm,
a.JOB_NM jobNm,
a.CLPHONE clphone,
a.PHONE phone,
a.EMAIL email,
a.HOPE_SBJCT hopeSbjct,
a.RQST_CN rqstCn,
b.trgt trgt,
b.prsnl prsnl,
f.instr_nm instrNm,
a.isltn_schol_yn isltnScholYn,
a.edu_place eduPlace
FROM ve_edu_aplct a
, ve_edu_chasi b
LEFT OUTER JOIN ve_edu_chasi_instr_asgnm e
ON(
e.EDU_APLCT_ORD = b.EDU_APLCT_ORD
AND e.EDU_CHASI_ORD = b.EDU_CHASI_ORD
)
LEFT OUTER JOIN ve_instr_detail f
ON(
f.user_id = e.user_id
AND f.use_yn = 'Y'
AND f.instr_div = #lctrDivCd#
)
, lettccmmndetailcode c
, lettccmmndetailcode d
WHERE 1=1
AND NVL(A.USE_YN, 'Y') != 'N'
<isNotEmpty property="aprvlCd">
AND A.aprvl_cd = #aprvlCd#
</isNotEmpty>
<isNotEmpty property="lctrDivCd">
AND A.lctr_div_cd = #lctrDivCd#
</isNotEmpty>
AND a.edu_aplct_ord=b.edu_aplct_ord
AND length(b.edu_hope_dt)=10
AND length(b.strt_tm)=4
AND length(b.end_tm)=4
<isNotEmpty property="searchStartDt">
AND SUBSTRING(b.edu_hope_dt,1,7)
= TO_CHAR(TO_DATE(#searchStartDt#,'YYYYMMDD')+7,'YYYY.MM')
</isNotEmpty>
AND c.code_id = 'VE0007'
AND c.code = a.edu_slct_cd
<isNotEmpty property="lctrDivCd">
<isEqual property="lctrDivCd" compareValue="10">
AND d.code_id = 'VE0009'
AND d.code = a.schol_div_cd
</isEqual>
<isEqual property="lctrDivCd" compareValue="20">
AND d.code_id = 'VE0012'
AND d.code = a.instt_div_cd
</isEqual>
</isNotEmpty>
AND e.user_id = #userId#
)aa
ORDER BY eduDate
</select>
<select id="schduleManageDAO.selectSchManageStatusList_ori" parameterClass="SchduleManageVO" resultClass="SchduleManageVO">
SELECT
SCH_SEQ AS schSeq,

View File

@ -57,6 +57,7 @@
</div>
<div class="btn_wrap">
<button type="button" class="btnType05" onclick="location.href='${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/instrInfo/instrPrflDetail.do'">상세정보 보기</button>
<button type="button" class="btnType05" onclick="location.href='${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/instrInfo/instrPrflSchdl.do'">일정달력 보기</button>
</div>
</div>
@ -81,7 +82,10 @@
<th scope="row">
<p>강사명</p>
</th>
<td><c:out value='${instrInfo.instrNm}'/></td>
<td><c:out value='${instrInfo.instrNm}'/>&nbsp;&nbsp;&nbsp;
<%-- <button type="button" class="btnType05" onclick="location.href='${pageContext.request.contextPath}/web/ve/instr/tngrVisitEdu/instrInfo/instrPrflDetail.do'">상세정보 보기</button> --%>
<%-- <button type="button" class="btnType05" onclick="location.href='${pageContext.request.contextPath}/web/ve/instr/adultVisitEdu/instrInfo/instrPrflDetail.do'">상세정보 보기</button> --%>
</td>
</tr>
<tr>
<th scope="row">

View File

@ -92,8 +92,9 @@
}
function fncGoList(){
var varFrom = document.getElementById("listForm");
varFrom.action = "<c:url value='/web/kccadr/accdnt/adr/adjstDeputyReqList.do'/>";
//var varFrom = document.getElementById("listForm");
var varFrom = document.getElementById("createForm");
varFrom.action = "<c:url value='/web/ve/instr/adultVisitEdu/instrInfo/instrDashboard.do'/>";
varFrom.submit();
}
@ -585,6 +586,9 @@
<button class="btnType06 btn_list" onclick="fncMdfy(); return false;">정보 수정 </button>
</c:if>
</c:if>
<button class="btnType06 btn_list" onclick="fncGoList(); return false;">목록 </button>
<!-- <button class="btnType06 btn_list" onclick="fncLctrStngDetailView(); return false;">강의 설정 정보</button> -->
</div>
</div>

View File

@ -0,0 +1,293 @@
<%--
Class Name : instrPrflSchdl.jsp
Description : 강사정보(성인)-일정달력
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2021.12.02 조용준 내용
author : 조용준
since : 2021.12.02
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<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: false,
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',
left: 'today',
center: 'prev title next',
//right: 'dayGridMonth,listMonth'
right: ''
},
eventSources: [
{
events: function(info, successCallback, failureCallback) {
console.log(info);
var s_todate = info.startStr;
ex_s_todate = info.startStr;
$.ajax({
url: '<c:url value="/web/ve/instr/adultVisitEdu/instrInfo/adultSchduleManagerAjaxLoadData.do"/>',
type: 'POST',
dataType: 'json',
data: {
searchStartDt : "",
//searchStartDt : "",
searchStartDt : s_todate,
todate : info.start,
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=600, height=520, left=200, 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/adultVisitEdu/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/adultVisitEdu/adultSchduleManagerExcelDownLoad.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);
}
function fncGoList(){
//var varFrom = document.getElementById("listForm");
var varFrom = document.getElementById("listForm");
varFrom.action = "<c:url value='/web/ve/instr/adultVisitEdu/instrInfo/instrDashboard.do'/>";
varFrom.submit();
}
</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="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>일정현황
</h2>
<div class="btn_wrap btn_layout01" style="margin-top: 0px;">
<div class="btn_Left">
<button class="btnType05" onclick="fncGoList(); return false;" style="width: 100px;">목록 </button>
</div>
<div class="btn_Right">
<!-- <button class="btnType05" onclick="fncGoList(); return false;">목록 </button> -->
</div>
</div>
</div>
<!-- //cont_tit -->
<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>

View File

@ -116,6 +116,7 @@
<c:out value='${instrInfo.instrNm}'/>&nbsp;&nbsp;&nbsp;
<button type="button" class="btnType05" onclick="location.href='${pageContext.request.contextPath}/web/ve/instr/tngrVisitEdu/instrInfo/instrPrflDetail.do'">상세정보 보기</button>
<button type="button" class="btnType05" onclick="fncGoLctrRsrchDetail('${vELctrDetailVO.rsrchInstrDiv}','${vELctrDetailVO.stngYrMnt}');">강의설정보기</button>
<button type="button" class="btnType05" onclick="location.href='${pageContext.request.contextPath}/web/ve/instr/tngrVisitEdu/instrInfo/instrPrflSchdl.do'">일정달력 보기</button>
</div>
</td>
</tr>

View File

@ -0,0 +1,293 @@
<%--
Class Name : instrPrflSchdl.jsp
Description : 청소년 강사 일정 달력
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2021.12.02 조용준 내용
author : 조용준
since : 2021.12.02
--%>
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<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: false,
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',
left: 'today',
center: 'prev title next',
//right: 'dayGridMonth,listMonth'
right: ''
},
eventSources: [
{
events: function(info, successCallback, failureCallback) {
console.log(info);
var s_todate = info.startStr;
ex_s_todate = info.startStr;
$.ajax({
url: '<c:url value="/web/ve/instr/tngrVisitEdu/instrInfo/tngrSchduleManagerAjaxLoadData.do"/>',
type: 'POST',
dataType: 'json',
data: {
searchStartDt : "",
//searchStartDt : "",
searchStartDt : s_todate,
todate : info.start,
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=600, height=520, left=200, 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/adultVisitEdu/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/adultVisitEdu/adultSchduleManagerExcelDownLoad.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);
}
function fncGoList(){
//var varFrom = document.getElementById("listForm");
var varFrom = document.getElementById("listForm");
varFrom.action = "<c:url value='/web/ve/instr/tngrVisitEdu/instrInfo/instrDashboard.do'/>";
varFrom.submit();
}
</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="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>일정현황
</h2>
<div class="btn_wrap btn_layout01" style="margin-top: 0px;">
<div class="btn_Left">
<button class="btnType05" onclick="fncGoList(); return false;" style="width: 100px;">목록 </button>
</div>
<div class="btn_Right">
<!-- <button class="btnType05" onclick="fncGoList(); return false;">목록 </button> -->
</div>
</div>
</div>
<!-- //cont_tit -->
<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>