<%@ page import="org.springframework.web.context.WebApplicationContext" %> <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %> <%@ page import="java.util.*"%> <%@ page import="egovframework.uljin4.education.service.*"%> <%@ page import="egovframework.uljin4.common.util.CommonFunc"%> <%@ page import="egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo"%> <%@ page import="egovframework.rfc3.menu.vo.*"%> <%@ page import="egovframework.rfc3.category.vo.*" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ include file="/WEB-INF/jsp/egovframework/rfc3/user/board/function_cms.jsp"%> <%@ page import="egovframework.alsfc.sportFacility.service.SportFacilityUserService" %> <%@ page import="egovframework.rfc3.category.web.*"%> <%@ page import="egovframework.rfc3.iam.security.userdetails.util.EgovUserDetailsHelper" %> <%@ page import="egovframework.rfc3.login.vo.LoginVO" %> <%@ page import="java.text.*" %> <%@ page import="egovframework.rfc3.common.util.DateUtils" %> <%@ page import="egovframework.rfc3.common.util.EgovDateUtil"%> <%@ page import="egovframework.alsfc.sportFacility.service.SportFacilityService" %> <%@ page import="egovframework.alsfc.sportFacility.vo.*" %> <% Calendar dayCal = Calendar.getInstance(); int dayWeek = dayCal.get(Calendar.DAY_OF_WEEK); int nowHour = Integer.parseInt(EgovDateUtil.getDate(new Date(),"HH")); int nowDate2 = Integer.parseInt(EgovDateUtil.getDate(new Date(),"yyyyMMdd")); String nowT = String.valueOf(dayWeek)+String.format("%02d",nowHour); if((Integer.parseInt(nowT) < 209 || Integer.parseInt(nowT) >= 617 )){%> <% return; } //현재 메뉴코드로 현재메뉴의 자바빈을 생성 MenuVO currMenuVO = cm.getMenuVO(); String currMenuCD = ""; //현재 메뉴코드용 변수 if(currMenuVO != null) currMenuCD = currMenuVO.getMenuCd(); //현재 메뉴코드를 따로 저장 else currMenuCD = ""; // 예약 정보 불러오기 WebApplicationContext context=WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); SportFacilityUserService facilityUserService=(SportFacilityUserService)context.getBean("SportFacilityUserService"); SportFacilityService facilityService = (SportFacilityService)context.getBean("SportFacilityService"); //request로 가져올 것들... String facilityCd = request.getParameter("facilityCd"); String faceSid = request.getParameter("faceSid"); String searchDate = request.getParameter("searchDate"); String facltId = request.getParameter("facltId"); // 객체 선언... SportFacilityVO facilityVO = new SportFacilityVO(); // 시설 SportFacilityApplicantVO applicantVO = new SportFacilityApplicantVO(); // 예약자 List facilityFileList= new ArrayList(); // 파일 목록 SportFacilityFileVO fileVO = new SportFacilityFileVO(); // 메인 파일 DecimalFormat sportDf = new DecimalFormat("00"); // 1 -> 01 SportFacilityFaceVO facilityFaceVO = new SportFacilityFaceVO(); // 면 단위 List faceList = new ArrayList(); // 면 단위 목록 SimpleDateFormat sportFormat = new SimpleDateFormat("yyyy-MM-dd"); // 시간 포맷 SportFacilityHolidayVO holidayVO = new SportFacilityHolidayVO(); // 휴관일 객체 SportFacilityTimeVO timeVO = new SportFacilityTimeVO(); // 시간 객체 // 시설정보 if(facilityCd == null) { facilityCd = "CODE_00000001"; } facilityVO.setFacilityCd(facilityCd); facilityVO = facilityUserService.selectFacilityInfo(facilityVO); // 파일 정보 if(facilityVO != null) { fileVO.setFacilitySid(facilityVO.getFacilitySid()); facilityFileList = facilityUserService.selectFacilityFileList(fileVO); if(facilityFileList.size() > 0) { fileVO = facilityFileList.get(0); // 파일 } // 면 단위 정보도 얻어야 한다 facilityFaceVO.setFacilityCd(facilityCd); faceList = facilityUserService.selectFacilityFaceList(facilityFaceVO); } // 달력... String nowDate = EgovDateUtil.getDate(EgovDateUtil.addDays(new java.util.Date(),0),"yyyy-MM-dd"); // 오늘 날짜 Str //검색 날짜 String으로 설정 if(searchDate == null){ searchDate = nowDate; //searchDate => 2017-04-20 } // 검색된 날짜 요일 가져오기 Date searchDOF = EgovDateUtil.convertStringToDate (searchDate,"yyyy-MM-dd"); Calendar searchDOFCal = Calendar.getInstance(); searchDOFCal.setTime(searchDOF); int dayOfWeek = searchDOFCal.get(Calendar.DAY_OF_WEEK); //검색 날짜 배열로 년 월 일로 나눔 String[] arryCurDate = searchDate.split("-"); // arryCurDate [2017,04,20] //검색 달 표시 int resvYear = Integer.parseInt(arryCurDate[0]); //resvYear 2017 int resvMonth = Integer.parseInt(arryCurDate[1]); //resvMonth 04 int resvDate = Integer.parseInt(arryCurDate[2]); //resvDate 20 //이전달 다음달 표시 int prevYear = resvYear; int nextYear = resvYear; int prevMonth = 0; int nextMonth = 0; //이전달 if(resvMonth > 1){ prevMonth = resvMonth - 1; }else{ prevMonth = 12; prevYear = resvYear-1; } //다음달 if(resvMonth < 12){ nextMonth = resvMonth + 1; }else{ nextMonth = 1; nextYear = resvYear + 1; } // 날짜 tr Object[][] cal = getCalendar2(resvYear, resvMonth); Date startDate = EgovDateUtil.addDays(new java.util.Date(),0); // 현재부터 3일 후에 예약가능 Date endDate; Calendar dayCal22 = Calendar.getInstance(); int lastDate = dayCal22.getActualMaximum(Calendar.DATE); int nowW = dayCal22.get(Calendar.WEEK_OF_MONTH); int nowWeek = dayCal22.get(Calendar.DAY_OF_WEEK); dayCal22.set(dayCal22.get(Calendar.YEAR), dayCal22.get(Calendar.MONTH), dayCal22.getActualMaximum(Calendar.DATE)); int lastW = dayCal22.get(Calendar.WEEK_OF_MONTH); dayCal22.add(Calendar.MONTH,1); int lastDate2 = dayCal22.getActualMaximum(Calendar.DATE); /* if(Integer.parseInt(EgovDateUtil.getDate(new java.util.Date(),"dd")) >= 21 && Integer.parseInt(EgovDateUtil.getDate(new java.util.Date(),"dd")) <= 31){ int mm = 0; if(1 == Integer.parseInt(EgovDateUtil.getDate(new java.util.Date(),"MM"))){ mm = (lastDate - Integer.parseInt(EgovDateUtil.getDate(new java.util.Date(),"dd")) - 2); }else{ mm = (lastDate == 30 ? (lastDate - Integer.parseInt(EgovDateUtil.getDate(new java.util.Date(),"dd")) + 1) : (lastDate - Integer.parseInt(EgovDateUtil.getDate(new java.util.Date(),"dd")) - 1)); } endDate = EgovDateUtil.addDays(new java.util.Date(),30+mm); // 현재부터 90까지 예약가능 //endDate = EgovDateUtil.addDays(new java.util.Date(),30); // 현재부터 90까지 예약가능 }else{ endDate = EgovDateUtil.addDays(new java.util.Date(),30); // 현재부터 90까지 예약가능 } endDate = sportFormat.parse("2025-05-01"); */ if((nowW == lastW && nowWeek >= 2)){ endDate = sportFormat.parse(EgovDateUtil.getDate(dayCal22.getTime(),"yyyy")+"-"+EgovDateUtil.getDate(dayCal22.getTime(),"MM")+"-"+String.format("%02d",lastDate2)); }else{ endDate = sportFormat.parse(EgovDateUtil.getDate(new java.util.Date(),"yyyy")+"-"+EgovDateUtil.getDate(new java.util.Date(),"MM")+"-"+String.format("%02d",lastDate)); } Date curDate = new Date(); // 오늘 날짜 %> <% //시설 정보 체크 if(facilityVO == null) { %> <% return; } %>

소개

<%-- 기존 p 태그에 버튼과 이미지가 함께 있엇는데 이 때문에 이미지에 스크립트 넣으면 이미지의 인덱스 번호가 에러납니다. 그래서 p -> div 로 변경하고 이미지만 따로 이미지 div로 이미지 감싸서 이미지와 버튼을 구분했습니다. 문제시 말씀해주세요. --%>
<%if(facilityFileList.size() > 0 && facilityFileList != null) { for(SportFacilityFileVO facilityFile: facilityFileList){ %> 체육시설 이미지 <% } } else {%>
  • <%}%>
      <%if(facilityFileList.size() > 0 && facilityFileList != null) { for(SportFacilityFileVO facilityFile: facilityFileList){ %>
    • <%} } else {%>
    • <%}%>
    <%--
    <%=facilityVO.getCommonCodeName2()%>
    • 운영시간 <%=facilityVO.getOperation()%>
    • 예약인원 <%=facilityVO.getCapacity()%> 명
    • 주소 <%=facilityVO.getAddress()%>
    • 문의사항 <%=facilityVO.getTel()%>
    --%>
    <%=facilityVO.getCommonCodeName2()%>
    체육시설 정보를 보여주는 페이지
    운영시간 <%=facilityVO.getOperation()%>
    주소 <%=facilityVO.getAddress()%> 지도보기
    문의사항 <%=facilityVO.getTel()%>
    <% if((facilityVO.getFacilitySid() == 49 || facilityVO.getFacilitySid() == 21 || facilityVO.getFacilitySid() == 25) || (nowDate2 >= 20250630 && ((facilityVO.getFacilitySid() == 15 || facilityVO.getFacilitySid() == 14 || facilityVO.getFacilitySid() == 11 || facilityVO.getFacilitySid() == 4 || facilityVO.getFacilitySid() == 2 || facilityVO.getFacilitySid() == 16 || facilityVO.getFacilitySid() == 17 || facilityVO.getFacilitySid() == 49 || facilityVO.getFacilitySid() == 24 || facilityVO.getFacilitySid() == 23 || facilityVO.getFacilitySid() == 22 || facilityVO.getFacilitySid() == 20 || facilityVO.getFacilitySid() == 19 || facilityVO.getFacilitySid() == 28 || facilityVO.getFacilitySid() == 38 || facilityVO.getFacilitySid() == 34))) || sm.isRoleAdmin()){%>
      <% // 기본 면 단위 1있음 2개부터 화면에 나타나야 한다 if(faceList.size() > 1 && faceList != null) { for(SportFacilityFaceVO face : faceList) { String sid = ""; if(faceSid != null) { sid = face.getFaceSid() == Long.parseLong(faceSid) ? "on" : ""; }else { long getLong = faceList.get(0).getFaceSid(); if(getLong == face.getFaceSid()) { sid = "on"; } } %>
    • <%=face.getFaceNm()%>
    • <% } } %>

    예약현황

    <%=arryCurDate[0]%>.<%=arryCurDate[1]%>

    <% String Yn = ""; // 공휴일 주말 확인 for(int i=0; i <% for(int j=0; j= 0 && !"00".equals(date)) { //현재부터 3-90 사이에 on holidayVO.setFacilityCd(facilityVO.getFacilityCd()); holidayVO.setHoli_date(searchSchedule); holidayVO.setIs_holiday("Y"); int holiCnt = facilityUserService.selectFacilityHoliCnt(holidayVO); // 휴관일여부 확인 if(holiCnt == 0) { classNm += " on"; /*hrefLink = "/index.uljin?menuCd=" + currMenuVO.getMenuCd() + "&facilityCd=" + facilityVO.getFacilityCd() + "&searchDate=" + searchSchedule;*/ } } if(searchSchedule.equals(searchDate)) { // 내가 검색하는 날이야 classNm += " active"; } %> <% }%> <%}%>
    월별 예약현황 날짜 클릭 시 예약현황 및 신청하기 제공
    <%="00".equals(date) ? "" : date%>

    <%=arryCurDate[1]%>월 <%=arryCurDate[2]%>일 예약현황

    예약가능 예약불가 선택
      <% if(faceSid == null) { faceSid = String.valueOf(faceList.get(0).getFaceSid()); } timeVO.setFacilityCd(facilityVO.getFacilityCd()); timeVO.setReservation_dt(searchDate); timeVO.setFaceSid(Long.parseLong(faceSid)); List timeList = facilityUserService.selectFacilityTimeList(timeVO); if(timeList== null) { %>
    • <%} else { if(facltId == null) { if(timeList.size() > 0 ) { SportFacilityTimeVO timeVO3 = timeList.get(0); facltId = timeVO3.getFacltId() + ""; } } Date timeStart = sportFormat.parse("2025-04-01"); Date timeEnd = sportFormat.parse("2025-12-31"); Date timeEnd2 = sportFormat.parse("2025-12-31"); Date formatCurDate = sportFormat.parse(searchDate); Calendar timCal = Calendar.getInstance(); timCal.setTime(formatCurDate); int timeWeek = timCal.get(Calendar.DAY_OF_WEEK); int index = 0; for(SportFacilityTimeVO timeVO1: timeList) { String classNm = ""; String emNm = ""; index = index + 1; SportFacilityApplicantVO applicantVO1 = new SportFacilityApplicantVO(); applicantVO1.setFacltId(timeVO1.getFacltId()); applicantVO1.setFaceSid(Long.parseLong(faceSid)); applicantVO1.setReservation_dt(searchDate); int aplyCntCk = 0; if("SF09".equals(facilityVO.getCommonCode3())) { List applicantTimeList = facilityUserService.selectGolfCountList(applicantVO1); if(applicantTimeList != null) { if(applicantTimeList.size() > 0 ) { for(SportFacilityApplicantTimeVO applicantTimeVO : applicantTimeList) { long ck = applicantTimeVO.getCapacity(); aplyCntCk = aplyCntCk + (int) ck; } } } } else { aplyCntCk = facilityUserService.searchDateApplyCnt(applicantVO1); } //현재부터 3-90 사이에 on if (startDate.compareTo(formatCurDate) <= 0 && endDate.compareTo(formatCurDate) >= 0) { // 파크 골프장은 수용 인원보다 적어야 예약 가능 파크 골프장 외에는 한팀씩만 받음 SF09는 파크골프장 코드 if(("SF09".equals(facilityVO.getCommonCode3()) && aplyCntCk < facilityVO.getCapacity())) { classNm += "on"; emNm += "(" + aplyCntCk + "/" + facilityVO.getCapacity() + ")"; } // 나머지 한팀씩만 예약 받음 if(!"SF09".equals(facilityVO.getCommonCode3()) && aplyCntCk <= 0) { classNm += "on"; if(Long.parseLong(facltId) == timeVO1.getFacltId()) { // classNm += " active"; } } if(timeStart.compareTo(formatCurDate) <= 0 && timeEnd.compareTo(formatCurDate) >= 0){ if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (Long.parseLong(faceSid) == 59 || Long.parseLong(faceSid) == 60 || Long.parseLong(faceSid) == 62 || Long.parseLong(faceSid) == 63) && (timeVO1.getFacltId() == 646 || timeVO1.getFacltId() == 647 || timeVO1.getFacltId() == 648 || timeVO1.getFacltId() == 649)){ classNm = ""; }else if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (Long.parseLong(faceSid) == 61) && (timeVO1.getFacltId() == 647 || timeVO1.getFacltId() == 648)){ classNm = ""; }else if((timeWeek == 3 || timeWeek == 5) && (Long.parseLong(faceSid) == 64) && (timeVO1.getFacltId() == 647 || timeVO1.getFacltId() == 648)){ classNm = ""; } if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (timeVO1.getFacltId() == 625 || timeVO1.getFacltId() == 626) && (Long.parseLong(faceSid) == 74 || Long.parseLong(faceSid) == 75)){ classNm = ""; } // else if((timeWeek == 1 || timeWeek == 7) && (timeVO1.getFacltId() == 629 || timeVO1.getFacltId() == 630 || timeVO1.getFacltId() == 631) && (Long.parseLong(faceSid) == 74 || Long.parseLong(faceSid) == 75)){ // classNm = ""; // } } if(timeStart.compareTo(formatCurDate) < 0 && timeEnd2.compareTo(formatCurDate) > 0){ if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (timeVO1.getFacltId() == 625 || timeVO1.getFacltId() == 626) && (Long.parseLong(faceSid) == 74 || Long.parseLong(faceSid) == 75)){ classNm = ""; }else if((timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && ( timeVO1.getFacltId() == 629 || timeVO1.getFacltId() == 630) && (Long.parseLong(faceSid) == 74 || Long.parseLong(faceSid) == 75)){ classNm = ""; }else if((timeWeek == 1 || timeWeek == 7) && (timeVO1.getFacltId() == 625 || timeVO1.getFacltId() == 626 || timeVO1.getFacltId() == 627) && (Long.parseLong(faceSid) == 74 || Long.parseLong(faceSid) == 75)){ classNm = ""; } } if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (Long.parseLong(faceSid) == 70 || Long.parseLong(faceSid) == 71) && (timeVO1.getFacltId() == 677 || timeVO1.getFacltId() == 678)){ // 후포테니스장 classNm = ""; } if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6 || timeWeek == 7) && (Long.parseLong(faceSid) == 51 || Long.parseLong(faceSid) == 52 || Long.parseLong(faceSid) == 53 || Long.parseLong(faceSid) == 54) && (timeVO1.getFacltId() == 702 || timeVO1.getFacltId() == 703)){ // 평해테니스장 classNm = ""; } if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (Long.parseLong(faceSid) == 67 || Long.parseLong(faceSid) == 68 || Long.parseLong(faceSid) == 69) && (timeVO1.getFacltId() == 756 || timeVO1.getFacltId() == 757)){ // 죽변테니스장 classNm = ""; } if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (Long.parseLong(faceSid) == 58) && (timeVO1.getFacltId() == 743 || timeVO1.getFacltId() == 744)){ // 흥부테니스장 classNm = ""; } if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (Long.parseLong(faceSid) == 2 || Long.parseLong(faceSid) == 71) && (timeVO1.getFacltId() == 549 || timeVO1.getFacltId() == 622 || timeVO1.getFacltId() == 692 || timeVO1.getFacltId() == 693)){ // 평해축구장(인조) classNm = ""; } if((timeWeek == 4) && (Long.parseLong(faceSid) == 35) && (timeVO1.getFacltId() == 767 || timeVO1.getFacltId() == 768 || timeVO1.getFacltId() == 769)){ //죽변야구장 classNm = ""; } if((timeWeek == 7) && (Long.parseLong(faceSid) == 35) && (timeVO1.getFacltId() == 329 || timeVO1.getFacltId() == 599 || timeVO1.getFacltId() == 764)){//죽변야구장 classNm = ""; } if((timeWeek == 2 || timeWeek == 3 || timeWeek == 4 || timeWeek == 5 || timeWeek == 6) && (Long.parseLong(faceSid) == 78) && (timeVO1.getFacltId() == 653 || timeVO1.getFacltId() == 654)){ // 울진 족구장 classNm = ""; } } %>
    • <%=timeVO1.getTimeNm()%><%=emNm%> <%if("SF09".equals(facilityVO.getCommonCode3()) && "".equals(classNm)){%> (<%=aplyCntCk%>/<%=facilityVO.getCapacity()%>) <%}%>
    • <% } } %>
    <%if("SF09".equals(facilityVO.getCommonCode3())){%>

    파크골프장 내에서 거짓 또는 부정한 방법으로 신청하거나 영리행위를 하는 등 공익상 부적당하다고 인정되는 경우, 허가가 취소될 수 있음을 확인합니다.

    <%}else{%>
    • 주의사항
      • 사용월 한달이내만 예약가능합니다.
      • 사용시간은 기본 2시간이며, 다중 선택이 가능합니다.
    <% } %>

    <% if(Integer.parseInt(nowT) >= 209 && Integer.parseInt(nowT) <= 617){%> 예약하기 <% } %>

    <% } %>

    목록으로

    <%! // 달력 그리기 관련 메서드 S ####################################################### // 테이블에 일 그려넣기 private static Object[][] getCalendar2(int year, int month){ //cal 객체생성 Calendar cal = Calendar.getInstance(); cal.set(year,month-1,1); //해당 월의 마지막 일 int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //해당 월의 시작 요일(1-일요일 2-월요일 3-화요일 4-수요일 5-목요일 6-금요일 7-토요일) int firstDay = cal.get(Calendar.DAY_OF_WEEK); // 달력 크기 설정 반환시킬 객체 Object temp[][] = new Object[6][7]; int daycount = 1; // 1일부터 설정 for(int i = 0; i < 6; i++){ for(int j=0; j<7; j++){ // 시작일 전 칸 / 마지막일 후 칸 공백처리 if(firstDay - 1 > 0 || daycount > lastDay){ temp[i][j] = "0"; firstDay--; continue; }else{ //달력에 해당날짜를 저장 temp[i][j] = String.valueOf(daycount++); } } } return temp; } // 달력 그리기 관련 메서드 E ####################################################### %>