2026-02-14 병원휴일관련 수정

This commit is contained in:
pjs
2026-02-14 15:15:03 +09:00
parent 3899fc47fd
commit 1175eb13c5
8 changed files with 2580 additions and 1365 deletions

View File

@@ -25,6 +25,7 @@ import javax.xml.xpath.XPathFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Node; import org.w3c.dom.Node;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
@@ -33,6 +34,9 @@ import org.xml.sax.SAXException;
import com.madeu.dao.web.webpublicholiday.WebPublicHolidaySqlMapDAO; import com.madeu.dao.web.webpublicholiday.WebPublicHolidaySqlMapDAO;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
@@ -42,9 +46,30 @@ public class InsertPublicHolidayBatchExcute {
@Autowired @Autowired
private WebPublicHolidaySqlMapDAO webPublicHolidaySqlMapDAO; private WebPublicHolidaySqlMapDAO webPublicHolidaySqlMapDAO;
// 21~22년 (공공 api 조회 가능 연도가 내년꺼까지만 가능.) https://www.data.go.kr/dataset/15012690/openapi.do /**
* [임시 실행용] 서버 시작(또는 리로드) 시 배치를 즉시 1회 실행합니다.
* 실행이 완료된 후에는 다시 주석 처리하거나 삭제하세요.
*/
@EventListener(ContextRefreshedEvent.class)
public void forceRunBatch() {
log.info("============================================================================");
log.info("============== [FORCE START] Public Holiday Batch Execution ==============");
log.info("============================================================================");
try {
go();
} catch (Exception e) {
log.error("Force Batch Error", e);
}
log.info("============================================================================");
log.info("============== [FORCE END] Public Holiday Batch Execution ================");
log.info("============================================================================");
}
// 21~22년 (공공 api 조회 가능 연도가 내년꺼까지만 가능.)
// https://www.data.go.kr/dataset/15012690/openapi.do
@Scheduled(cron = "0 0 03 1 * ?") // 매월 1일 03:00 @Scheduled(cron = "0 0 03 1 * ?") // 매월 1일 03:00
// @Scheduled(cron = "0 0/1 * * * ?") // @Scheduled(cron = "0 0/1 * * * ?")
@Transactional
public void go() { public void go() {
log.debug("InsertPublicHolidayBatchExcute - run start"); log.debug("InsertPublicHolidayBatchExcute - run start");
@@ -95,13 +120,13 @@ public class InsertPublicHolidayBatchExcute {
publicHolidayParamMap.put("dateName", dateName); publicHolidayParamMap.put("dateName", dateName);
publicHolidayParamMap.put("locDate", sbTemp.toString()); publicHolidayParamMap.put("locDate", sbTemp.toString());
List<Map<String, Object>> listMapTemp = webPublicHolidaySqlMapDAO.selectListPublicHolidayDate(publicHolidayParamMap); List<Map<String, Object>> listMapTemp = webPublicHolidaySqlMapDAO
.selectListPublicHolidayDate(publicHolidayParamMap);
// 존재하는 공휴일일 경우 // 존재하는 공휴일일 경우
if (1 <= listMapTemp.size()) { if (1 <= listMapTemp.size()) {
} } else {
else{
String muPublicHolidayId = ("PH").concat(String.valueOf(System.currentTimeMillis())); String muPublicHolidayId = ("PH").concat(String.valueOf(System.currentTimeMillis()));
publicHolidayParamMap.put("muPublicHolidayId", muPublicHolidayId); publicHolidayParamMap.put("muPublicHolidayId", muPublicHolidayId);
publicHolidayParamMap.put("regId", "BATCH_SYSTEM"); publicHolidayParamMap.put("regId", "BATCH_SYSTEM");
@@ -128,13 +153,14 @@ public class InsertPublicHolidayBatchExcute {
DocumentBuilder builder; DocumentBuilder builder;
Document doc = null; Document doc = null;
String addr = "http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService"; String addr = "https://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService";
String query = "/getRestDeInfo?"; String query = "/getRestDeInfo?";
StringBuffer stringBuffer = new StringBuffer(); StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(addr); stringBuffer.append(addr);
stringBuffer.append(query); stringBuffer.append(query);
stringBuffer.append("ServiceKey=" + "IMP1dVPnFLL2UYlH8yyENSeLeS5UMLYxnaomTs5L2IHp8qnyd%2FzApTGcCUV9%2FD76wZQzD24HegGoNFotIoh9GA%3D%3D"); stringBuffer.append("ServiceKey="
+ "bd37daa85809e0f1ef330722c6b92dd8ebbe7226a63be7644d9f334662996e7c");
stringBuffer.append("&solYear=" + year); stringBuffer.append("&solYear=" + year);
stringBuffer.append("&solMonth=" + month); stringBuffer.append("&solMonth=" + month);
@@ -157,9 +183,11 @@ public class InsertPublicHolidayBatchExcute {
} }
// xml 리절트 출력부분 // xml 리절트 출력부분
/*if(0<result.toString().length()){ /*
logger.debug("result :"+result.toString()); * if(0<result.toString().length()){
}*/ * logger.debug("result :"+result.toString());
* }
*/
rd.close(); rd.close();
@@ -183,8 +211,7 @@ public class InsertPublicHolidayBatchExcute {
holidayList.add(holidayMapTemp); holidayList.add(holidayMapTemp);
} }
} } catch (Exception e) {
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -21,7 +21,6 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession; import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
@Controller @Controller
public class WebHospitalController extends ManagerDraftAction { public class WebHospitalController extends ManagerDraftAction {
@@ -40,7 +39,8 @@ public class WebHospitalController extends ManagerDraftAction{
* @return * @return
*/ */
@RequestMapping(value = "/webhospital/selectHospitalIntro.do") @RequestMapping(value = "/webhospital/selectHospitalIntro.do")
public String selectHospitalIntro(HttpSession session,HttpServletRequest request, HttpServletResponse response, Model model) { public String selectHospitalIntro(HttpSession session, HttpServletRequest request, HttpServletResponse response,
Model model) {
log.debug("WebHospitalController selectHospitalIntro START"); log.debug("WebHospitalController selectHospitalIntro START");
HashMap<String, Object> paramMap = HttpUtil.getParameterMap(request); HashMap<String, Object> paramMap = HttpUtil.getParameterMap(request);
@@ -49,8 +49,7 @@ public class WebHospitalController extends ManagerDraftAction{
try { try {
if (!webCheckLogin(session)) { if (!webCheckLogin(session)) {
return "/web/login/logout"; return "/web/login/logout";
} } else {
else {
paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId"))); paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId")));
map = webHospitalService.selectHospitalIntro(paramMap); map = webHospitalService.selectHospitalIntro(paramMap);
@@ -60,8 +59,7 @@ public class WebHospitalController extends ManagerDraftAction{
model.addAttribute("deleteUseYn", map.get("deleteUseYn")); model.addAttribute("deleteUseYn", map.get("deleteUseYn"));
model.addAttribute("downloadUseYn", map.get("downloadUseYn")); model.addAttribute("downloadUseYn", map.get("downloadUseYn"));
} }
} } catch (Exception e) {
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return "/web/login/logout"; return "/web/login/logout";
} }
@@ -87,21 +85,17 @@ public class WebHospitalController extends ManagerDraftAction{
try { try {
if (!webCheckLogin(session)) { if (!webCheckLogin(session)) {
return null; return null;
} } else {
else{
paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId"))); paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId")));
map = webHospitalService.selectHospital(paramMap); map = webHospitalService.selectHospital(paramMap);
} }
} } catch (Exception e) {
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
} } finally {
finally {
if (Constants.OK == map.get("msgCode")) { if (Constants.OK == map.get("msgCode")) {
} } else {
else{
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("success", false); map.put("success", false);
if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) { if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) {
@@ -131,21 +125,17 @@ public class WebHospitalController extends ManagerDraftAction{
try { try {
if (!webCheckLogin(session)) { if (!webCheckLogin(session)) {
return null; return null;
} } else {
else{
paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId"))); paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId")));
map = webHospitalService.selectWorkTime(paramMap); map = webHospitalService.selectWorkTime(paramMap);
} }
} } catch (Exception e) {
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return null; return null;
} } finally {
finally {
if (Constants.OK == map.get("msgCode")) { if (Constants.OK == map.get("msgCode")) {
} } else {
else{
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("success", false); map.put("success", false);
if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) { if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) {
@@ -157,6 +147,47 @@ public class WebHospitalController extends ManagerDraftAction{
return HttpUtil.makeHashToJsonModelAndView(map); return HttpUtil.makeHashToJsonModelAndView(map);
} }
/**
* 병원 휴일 정보 조회 (달력 표출용)
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/webhospital/selectHospitalHolidayList.do")
public ModelAndView selectHospitalHolidayList(HttpSession session, HttpServletRequest request,
HttpServletResponse response) {
log.debug("WebHospitalController selectHospitalHolidayList START");
HashMap<String, Object> paramMap = HttpUtil.getParameterMap(request);
HashMap<String, Object> map = new HashMap<String, Object>();
try {
if (!webCheckLogin(session)) {
return null;
} else {
paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId")));
map = webHospitalService.selectHospitalHolidayList(paramMap);
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (Constants.OK == map.get("msgCode")) {
} else {
map.put("msgCode", Constants.FAIL);
map.put("success", false);
if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) {
map.put("msgDesc", "정상적으로 수행되지 않았습니다. 관리자에게 문의하시기 바랍니다.");
}
}
}
log.debug("WebHospitalController selectHospitalHolidayList END");
return HttpUtil.makeHashToJsonModelAndView(map);
}
/** /**
* 병원 정보 수정 * 병원 정보 수정
* *
@@ -165,7 +196,8 @@ public class WebHospitalController extends ManagerDraftAction{
* @return * @return
*/ */
@RequestMapping(value = "/webhospital/updateHospital.do") @RequestMapping(value = "/webhospital/updateHospital.do")
public ModelAndView updateHospital(HttpSession session,HttpServletRequest request, HttpServletResponse response, MultipartHttpServletRequest file) { public ModelAndView updateHospital(HttpSession session, HttpServletRequest request, HttpServletResponse response,
MultipartHttpServletRequest file) {
log.debug("WebHospitalController updateHospital START"); log.debug("WebHospitalController updateHospital START");
@@ -177,23 +209,19 @@ public class WebHospitalController extends ManagerDraftAction{
try { try {
if (!webCheckLogin(session)) { if (!webCheckLogin(session)) {
return null; return null;
} } else {
else{
paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId"))); paramMap.put("loginMemberId", String.valueOf(session.getAttribute("loginMemberId")));
paramMap.put("regId", String.valueOf(session.getAttribute("loginMemberId"))); paramMap.put("regId", String.valueOf(session.getAttribute("loginMemberId")));
paramMap.put("modId", String.valueOf(session.getAttribute("loginMemberId"))); paramMap.put("modId", String.valueOf(session.getAttribute("loginMemberId")));
map = webHospitalService.updateHospital(paramMap); map = webHospitalService.updateHospital(paramMap);
} }
} } catch (Exception e) {
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
errorMsg.append(e); errorMsg.append(e);
} } finally {
finally {
if (Constants.OK == map.get("msgCode")) { if (Constants.OK == map.get("msgCode")) {
} } else {
else{
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("success", false); map.put("success", false);
if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) { if (null == map.get("msgDesc") || ("").equals(map.get("msgDesc"))) {
@@ -213,18 +241,17 @@ public class WebHospitalController extends ManagerDraftAction{
insertMap.put("requestValue", String.valueOf(paramMap)); insertMap.put("requestValue", String.valueOf(paramMap));
insertMap.put("responseValue", String.valueOf(map)); insertMap.put("responseValue", String.valueOf(map));
insertMap.put("tId", map.get("tId")); insertMap.put("tId", map.get("tId"));
if((String.valueOf(errorMsg)).equals("") || (String.valueOf(errorMsg) == null) || String.valueOf(errorMsg).length() == 0){ if ((String.valueOf(errorMsg)).equals("") || (String.valueOf(errorMsg) == null)
|| String.valueOf(errorMsg).length() == 0) {
insertMap.put("resultCode", "SUCCESS"); insertMap.put("resultCode", "SUCCESS");
} } else {
else{
insertMap.put("resultCode", "ERROR"); insertMap.put("resultCode", "ERROR");
} }
insertMap.put("resultMsg", String.valueOf(errorMsg)); insertMap.put("resultMsg", String.valueOf(errorMsg));
insertMap.put("muMemberId", paramMap.get("loginMemberId")); insertMap.put("muMemberId", paramMap.get("loginMemberId"));
webLogHistoryService.insertLogHistory(insertMap, visitLogParamMap); webLogHistoryService.insertLogHistory(insertMap, visitLogParamMap);
} } catch (Exception e) {
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

View File

@@ -5,8 +5,13 @@ import java.util.HashMap;
public interface WebHospitalService { public interface WebHospitalService {
public HashMap<String, Object> selectHospitalIntro(HashMap<String, Object> paramMap) throws Exception; public HashMap<String, Object> selectHospitalIntro(HashMap<String, Object> paramMap) throws Exception;
public HashMap<String, Object> selectHospital(HashMap<String, Object> paramMap) throws Exception; public HashMap<String, Object> selectHospital(HashMap<String, Object> paramMap) throws Exception;
public HashMap<String, Object> selectWorkTime(HashMap<String, Object> paramMap) throws Exception; public HashMap<String, Object> selectWorkTime(HashMap<String, Object> paramMap) throws Exception;
public HashMap<String, Object> updateHospital(HashMap<String, Object> paramMap) throws Exception; public HashMap<String, Object> updateHospital(HashMap<String, Object> paramMap) throws Exception;
public HashMap<String, Object> selectHospitalHolidayList(HashMap<String, Object> paramMap) throws Exception;
} }

View File

@@ -45,7 +45,6 @@ public class WebHospitalServiceImpl implements WebHospitalService {
@Autowired @Autowired
private WebAuthMenuRelationSqlMapDAO webAuthMenuRelationSqlMapDAO; private WebAuthMenuRelationSqlMapDAO webAuthMenuRelationSqlMapDAO;
/** /**
* 병원 상세 화면으로 이동. * 병원 상세 화면으로 이동.
* *
@@ -84,8 +83,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
if (1 == userListMapSize) { if (1 == userListMapSize) {
paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId"));
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); map.put("msgDesc", "사용자 정보가 올바르지 않습니다.");
@@ -97,7 +95,8 @@ public class WebHospitalServiceImpl implements WebHospitalService {
HashMap<String, Object> authCheckParamMap = new HashMap<String, Object>(); HashMap<String, Object> authCheckParamMap = new HashMap<String, Object>();
authCheckParamMap.put("menuClass", paramMap.get("menuClass")); authCheckParamMap.put("menuClass", paramMap.get("menuClass"));
authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId"));
List<Map<String, Object>> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); List<Map<String, Object>> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO
.selectAuthMenuRelation(authCheckParamMap);
int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); int authMenuRelationlistMapSize = authMenuRelationlistMap.size();
if (1 == authMenuRelationlistMapSize) { if (1 == authMenuRelationlistMapSize) {
@@ -109,14 +108,12 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("updateUseYn", authMenuRelationlistMap.get(0).get("updateUseYn")); map.put("updateUseYn", authMenuRelationlistMap.get(0).get("updateUseYn"));
map.put("deleteUseYn", authMenuRelationlistMap.get(0).get("deleteUseYn")); map.put("deleteUseYn", authMenuRelationlistMap.get(0).get("deleteUseYn"));
map.put("downloadUseYn", authMenuRelationlistMap.get(0).get("downloadUseYn")); map.put("downloadUseYn", authMenuRelationlistMap.get(0).get("downloadUseYn"));
} } else {
else {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "권한 정보가 없습니다."); map.put("msgDesc", "권한 정보가 없습니다.");
} }
} }
} } catch (Exception e) {
catch(Exception e){
e.printStackTrace(); e.printStackTrace();
throw e; throw e;
} }
@@ -125,7 +122,6 @@ public class WebHospitalServiceImpl implements WebHospitalService {
return map; return map;
} }
/** /**
* 병원 정보 상세 조회 (one) * 병원 정보 상세 조회 (one)
* *
@@ -155,8 +151,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
if (1 == userListMapSize) { if (1 == userListMapSize) {
paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId"));
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); map.put("msgDesc", "사용자 정보가 올바르지 않습니다.");
@@ -167,20 +162,19 @@ public class WebHospitalServiceImpl implements WebHospitalService {
HashMap<String, Object> authCheckParamMap = new HashMap<String, Object>(); HashMap<String, Object> authCheckParamMap = new HashMap<String, Object>();
authCheckParamMap.put("menuClass", paramMap.get("menuClass")); authCheckParamMap.put("menuClass", paramMap.get("menuClass"));
authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId"));
List<Map<String, Object>> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); List<Map<String, Object>> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO
.selectAuthMenuRelation(authCheckParamMap);
if (1 == authMenuRelationlistMap.size()) { if (1 == authMenuRelationlistMap.size()) {
if (("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) { if (("Y").equals(authMenuRelationlistMap.get(0).get("selectUseYn"))) {
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "조회 권한 정보가 없습니다."); map.put("msgDesc", "조회 권한 정보가 없습니다.");
} }
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "권한 정보가 없습니다."); map.put("msgDesc", "권한 정보가 없습니다.");
@@ -194,15 +188,15 @@ public class WebHospitalServiceImpl implements WebHospitalService {
if (1 == hospitalListMapSize) { if (1 == hospitalListMapSize) {
// 병원 휴일 정보 조회 // 병원 휴일 정보 조회
paramMap.put("muHospitalId", hospitalListMap.get(0).get("muHospitalId")); paramMap.put("muHospitalId", hospitalListMap.get(0).get("muHospitalId"));
List<Map<String, Object>> hospitalHolidayListMap = webHospitalHolidaySqlMapDAO.selectListHospitalHoliday(paramMap); List<Map<String, Object>> hospitalHolidayListMap = webHospitalHolidaySqlMapDAO
.selectListHospitalHoliday(paramMap);
hospitalListMap.get(0).put("holidayRows", hospitalHolidayListMap); hospitalListMap.get(0).put("holidayRows", hospitalHolidayListMap);
map.put("msgCode", Constants.OK); map.put("msgCode", Constants.OK);
map.put("success", "true"); map.put("success", "true");
map.put("rows", hospitalListMap); map.put("rows", hospitalListMap);
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "병원 정보가 없습니다."); map.put("msgDesc", "병원 정보가 없습니다.");
@@ -210,8 +204,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
} }
} } catch (Exception e) {
catch(Exception e){
e.printStackTrace(); e.printStackTrace();
throw e; throw e;
} }
@@ -248,8 +241,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
if (1 == userListMapSize) { if (1 == userListMapSize) {
paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId"));
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); map.put("msgDesc", "사용자 정보가 올바르지 않습니다.");
@@ -263,15 +255,15 @@ public class WebHospitalServiceImpl implements WebHospitalService {
if (1 == hospitalListMapSize) { if (1 == hospitalListMapSize) {
// 병원 휴일 정보 조회 // 병원 휴일 정보 조회
paramMap.put("muHospitalId", hospitalListMap.get(0).get("muHospitalId")); paramMap.put("muHospitalId", hospitalListMap.get(0).get("muHospitalId"));
List<Map<String, Object>> hospitalHolidayListMap = webHospitalHolidaySqlMapDAO.selectListHospitalHoliday(paramMap); List<Map<String, Object>> hospitalHolidayListMap = webHospitalHolidaySqlMapDAO
.selectListHospitalHoliday(paramMap);
hospitalListMap.get(0).put("holidayRows", hospitalHolidayListMap); hospitalListMap.get(0).put("holidayRows", hospitalHolidayListMap);
map.put("msgCode", Constants.OK); map.put("msgCode", Constants.OK);
map.put("success", "true"); map.put("success", "true");
map.put("rows", hospitalListMap); map.put("rows", hospitalListMap);
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "병원 정보가 없습니다."); map.put("msgDesc", "병원 정보가 없습니다.");
@@ -279,8 +271,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
} }
} } catch (Exception e) {
catch(Exception e){
e.printStackTrace(); e.printStackTrace();
throw e; throw e;
} }
@@ -288,6 +279,54 @@ public class WebHospitalServiceImpl implements WebHospitalService {
return map; return map;
} }
/**
* 병원 휴일 정보 조회 (달력 표출용)
*
* @param paramMap
* @return
* @throws Exception
*/
@Override
public HashMap<String, Object> selectHospitalHolidayList(HashMap<String, Object> paramMap) throws Exception {
log.debug("WebHospitalServiceImpl selectHospitalHolidayList START");
HashMap<String, Object> map = new HashMap<String, Object>();
try {
// 병원 정보 조회 (병원 ID 등을 가져오기 위함)
// paramMap에 muHospitalId가 없을 수 있으므로, 로그인한 사용자의 병원을 찾아야 할 수도 있음.
// 하지만 보통 관리자 메뉴이므로 muHospitalId를 parameter로 받거나, 없으면 첫번째 병원을 가져오는 로직이 필요할 수 있음.
// 여기서는 selectHospital 로직을 참고하여 병원 조회를 먼저 수행.
List<Map<String, Object>> hospitalListMap = null;
if (paramMap.get("muHospitalId") == null || "".equals(paramMap.get("muHospitalId"))) {
hospitalListMap = webHospitalSqlMapDAO.selectHospital(paramMap);
if (hospitalListMap.size() > 0) {
paramMap.put("muHospitalId", hospitalListMap.get(0).get("muHospitalId"));
}
}
// muHospitalId가 있어야 조회 가능
if (paramMap.get("muHospitalId") != null && !"".equals(paramMap.get("muHospitalId"))) {
// 병원 휴일 및 공휴일 조회 (UNION 쿼리 사용)
List<Map<String, Object>> holidayList = webHospitalSqlMapDAO.selectHospitalHoliday(paramMap);
map.put("msgCode", Constants.OK);
map.put("success", "true");
map.put("rows", holidayList);
} else {
map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "병원 정보가 없습니다.");
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
log.debug("WebHospitalServiceImpl selectHospitalHolidayList END");
return map;
}
/** /**
* 병원 정보 수정 * 병원 정보 수정
* *
@@ -395,7 +434,6 @@ public class WebHospitalServiceImpl implements WebHospitalService {
String sunBreakEndTime = String.valueOf(paramMap.get("sunBreakEndTime")); String sunBreakEndTime = String.valueOf(paramMap.get("sunBreakEndTime"));
String publicHolidayUseYn = String.valueOf(paramMap.get("publicHolidayUseYn")); String publicHolidayUseYn = String.valueOf(paramMap.get("publicHolidayUseYn"));
if (true != ValidationCheckUtil.emptyCheck(muHospitalId)) { if (true != ValidationCheckUtil.emptyCheck(muHospitalId)) {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
@@ -426,8 +464,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "월요일 휴게 종료시간 정보가 없습니다."); map.put("msgDesc", "월요일 휴게 종료시간 정보가 없습니다.");
} }
} } else {
else {
monOpenYn = "N"; monOpenYn = "N";
monOpenStartTime = "00:00"; monOpenStartTime = "00:00";
monOpenEndTime = "00:00"; monOpenEndTime = "00:00";
@@ -459,8 +496,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "화요일 휴게 종료시간 정보가 없습니다."); map.put("msgDesc", "화요일 휴게 종료시간 정보가 없습니다.");
} }
} } else {
else {
tueOpenYn = "N"; tueOpenYn = "N";
tueOpenStartTime = "00:00"; tueOpenStartTime = "00:00";
tueOpenEndTime = "00:00"; tueOpenEndTime = "00:00";
@@ -492,8 +528,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "수요일 휴게 종료시간 정보가 없습니다."); map.put("msgDesc", "수요일 휴게 종료시간 정보가 없습니다.");
} }
} } else {
else {
wedOpenYn = "N"; wedOpenYn = "N";
wedOpenStartTime = "00:00"; wedOpenStartTime = "00:00";
wedOpenEndTime = "00:00"; wedOpenEndTime = "00:00";
@@ -525,8 +560,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "목요일 휴게 종료시간 정보가 없습니다."); map.put("msgDesc", "목요일 휴게 종료시간 정보가 없습니다.");
} }
} } else {
else {
thuOpenYn = "N"; thuOpenYn = "N";
thuOpenStartTime = "00:00"; thuOpenStartTime = "00:00";
thuOpenEndTime = "00:00"; thuOpenEndTime = "00:00";
@@ -558,8 +592,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "금요일 휴게 종료시간 정보가 없습니다."); map.put("msgDesc", "금요일 휴게 종료시간 정보가 없습니다.");
} }
} } else {
else {
friOpenYn = "N"; friOpenYn = "N";
friOpenStartTime = "00:00"; friOpenStartTime = "00:00";
friOpenEndTime = "00:00"; friOpenEndTime = "00:00";
@@ -591,8 +624,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "토요일 휴게 종료시간 정보가 없습니다."); map.put("msgDesc", "토요일 휴게 종료시간 정보가 없습니다.");
} }
} } else {
else {
satOpenYn = "N"; satOpenYn = "N";
satOpenStartTime = "00:00"; satOpenStartTime = "00:00";
satOpenEndTime = "00:00"; satOpenEndTime = "00:00";
@@ -624,8 +656,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "일요일 휴게 종료시간 정보가 없습니다."); map.put("msgDesc", "일요일 휴게 종료시간 정보가 없습니다.");
} }
} } else {
else {
sunOpenYn = "N"; sunOpenYn = "N";
sunOpenStartTime = "00:00"; sunOpenStartTime = "00:00";
sunOpenEndTime = "00:00"; sunOpenEndTime = "00:00";
@@ -646,8 +677,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
if (1 == userListMapSize) { if (1 == userListMapSize) {
paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId")); paramMap.put("menuClassAuthId", userListMap.get(0).get("muAuthId"));
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "사용자 정보가 올바르지 않습니다."); map.put("msgDesc", "사용자 정보가 올바르지 않습니다.");
@@ -659,21 +689,20 @@ public class WebHospitalServiceImpl implements WebHospitalService {
HashMap<String, Object> authCheckParamMap = new HashMap<String, Object>(); HashMap<String, Object> authCheckParamMap = new HashMap<String, Object>();
authCheckParamMap.put("menuClass", paramMap.get("menuClass")); authCheckParamMap.put("menuClass", paramMap.get("menuClass"));
authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId")); authCheckParamMap.put("muAuthId", paramMap.get("menuClassAuthId"));
List<Map<String, Object>> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO.selectAuthMenuRelation(authCheckParamMap); List<Map<String, Object>> authMenuRelationlistMap = webAuthMenuRelationSqlMapDAO
.selectAuthMenuRelation(authCheckParamMap);
int authMenuRelationlistMapSize = authMenuRelationlistMap.size(); int authMenuRelationlistMapSize = authMenuRelationlistMap.size();
if (1 == authMenuRelationlistMapSize) { if (1 == authMenuRelationlistMapSize) {
if (("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) { if (("Y").equals(authMenuRelationlistMap.get(0).get("updateUseYn"))) {
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "수정 권한 정보가 없습니다."); map.put("msgDesc", "수정 권한 정보가 없습니다.");
} }
} } else {
else {
check = false; check = false;
map.put("msgCode", Constants.FAIL); map.put("msgCode", Constants.FAIL);
map.put("msgDesc", "권한 정보가 없습니다."); map.put("msgDesc", "권한 정보가 없습니다.");
@@ -711,6 +740,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
holidayParamMap.put("hospitalHolidayName", hospitalHolidayName); holidayParamMap.put("hospitalHolidayName", hospitalHolidayName);
holidayParamMap.put("locDate", locDate); holidayParamMap.put("locDate", locDate);
holidayParamMap.put("repeatYn", repeatYn); holidayParamMap.put("repeatYn", repeatYn);
holidayParamMap.put("useYn", "Y");
holidayParamMap.put("regId", paramMap.get("regId")); holidayParamMap.put("regId", paramMap.get("regId"));
holidayParamMap.put("modId", paramMap.get("modId")); holidayParamMap.put("modId", paramMap.get("modId"));
holidayParamMap.put("tId", paramMap.get("tId")); holidayParamMap.put("tId", paramMap.get("tId"));
@@ -721,8 +751,7 @@ public class WebHospitalServiceImpl implements WebHospitalService {
map.put("msgCode", Constants.OK); map.put("msgCode", Constants.OK);
map.put("msgDesc", "수정되었습니다."); map.put("msgDesc", "수정되었습니다.");
} }
} } catch (Exception e) {
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
throw e; throw e;
} }

View File

@@ -190,22 +190,26 @@
</select> </select>
<select id="selectHospitalHoliday" parameterType="hashmap" resultType="hashmap"> <select id="selectHospitalHoliday" parameterType="hashmap" resultType="hashmap">
SELECT 'hospitalHoliday' AS dateType SELECT 'hospitalHoliday' AS "dateType"
, DATE_FORMAT(LOC_DATE, '%Y.%m.%d') AS locDate , HOSPITAL_HOLIDAY_NAME AS "hospitalHolidayName"
, DATE_FORMAT(LOC_DATE, '%Y-%m-%d') AS "locDate"
FROM MU_HOSPITAL_HOLIDAY MH FROM MU_HOSPITAL_HOLIDAY MH
WHERE MH.USE_YN = 'Y' WHERE MH.USE_YN = 'Y'
AND MH.MU_HOSPITAL_ID = #{muHospitalId}
AND ( AND (
(MH.REPEAT_YN = 'Y') (MH.REPEAT_YN = 'Y')
OR OR
(MH.REPEAT_YN = 'N' AND DATE_FORMAT( MH.LOC_DATE, '%Y' ) >= DATE_FORMAT( CURDATE( ), '%Y' )) (MH.REPEAT_YN = 'N' AND DATE_FORMAT( MH.LOC_DATE, '%Y' ) >= DATE_FORMAT( CURDATE( ), '%Y' ))
) )
UNION UNION ALL
( (
SELECT 'publicHoliday' AS dateType SELECT 'publicHoliday' AS "dateType"
, DATE_FORMAT(LOC_DATE, '%Y.%m.%d') AS locDate , MPH.PUBLIC_HOLIDAY_NAME AS "publicHolidayName"
, DATE_FORMAT(MPH.LOC_DATE, '%Y-%m-%d') AS "locDate"
FROM MU_PUBLIC_HOLIDAY MPH FROM MU_PUBLIC_HOLIDAY MPH
JOIN MU_HOSPITAL JOIN MU_HOSPITAL MH
ON PUBLIC_HOLIDAY_USE_YN='Y' ON MH.MU_HOSPITAL_ID = #{muHospitalId}
AND MH.PUBLIC_HOLIDAY_USE_YN = 'Y'
WHERE MPH.USE_YN = 'Y' WHERE MPH.USE_YN = 'Y'
AND DATE_FORMAT( MPH.LOC_DATE, '%Y' ) >= DATE_FORMAT( CURDATE( ), '%Y' ) AND DATE_FORMAT( MPH.LOC_DATE, '%Y' ) >= DATE_FORMAT( CURDATE( ), '%Y' )
) )

File diff suppressed because it is too large Load Diff

View File

@@ -127,6 +127,9 @@ function fn_selectHospitalJson(){
// 휴일 상세 정보 // 휴일 상세 정보
fn_addRow2(hospitalRows.holidayRows); fn_addRow2(hospitalRows.holidayRows);
// 달력 조회 (병원 ID 확보 후 실행)
fn_selectHospitalHolidayList();
} }
else { else {
modalEvent.danger("조회 오류", data.msgDesc); modalEvent.danger("조회 오류", data.msgDesc);
@@ -246,8 +249,8 @@ function fn_addRow(param){
addRowHtml += ' <div class="select_list">'; addRowHtml += ' <div class="select_list">';
addRowHtml += ' <div class="select_box dropdown">'; addRowHtml += ' <div class="select_box dropdown">';
addRowHtml += ' <button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">반복 여부</button>'; addRowHtml += ' <button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">반복 안함</button>';
addRowHtml += ' <input type="hidden" name="repeatYn" value=""/>'; addRowHtml += ' <input type="hidden" name="repeatYn" value="N"/>';
addRowHtml += ' <ul class="select_option_list dropdown-menu">'; addRowHtml += ' <ul class="select_option_list dropdown-menu">';
addRowHtml += ' <li class="option_list_item first" onclick="fn_clickSelectValue(this, \'Y\', \'반복\');">반복</li>'; addRowHtml += ' <li class="option_list_item first" onclick="fn_clickSelectValue(this, \'Y\', \'반복\');">반복</li>';
addRowHtml += ' <li class="option_list_item" onclick="fn_clickSelectValue(this, \'N\', \'반복 안함\');">반복 안함</li>'; addRowHtml += ' <li class="option_list_item" onclick="fn_clickSelectValue(this, \'N\', \'반복 안함\');">반복 안함</li>';
@@ -715,6 +718,83 @@ function fn_pageInit(){
fn_selectHospitalJson(); fn_selectHospitalJson();
} }
/****************************************************************************
* 병원 휴일 정보 조회 (달력용)
****************************************************************************/
function fn_selectHospitalHolidayList() {
let calendarEl = document.getElementById('calendar');
let calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth',
fixedWeekCount: false,
contentHeight: 'auto',
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,listMonth'
},
locale: 'ko',
events: function (info, successCallback, failureCallback) {
let formData = new FormData();
// 필요한 파라미터가 있다면 추가 (예: 검색 년월 등)
// 여기서는 전체 조회를 하거나, FullCalendar가 주는 start/end 날짜를 활용할 수 있음
// 하지만 현재 API는 파라미터 없이 병원 ID 기준으로 다 가져오거나 날짜 조건이 필요함.
// selectHospitalHoliday 쿼리를 보면 locDate 등의 조건이 있을 수 있음.
// 일단 전체 조회 또는 현재 월 기준 조회가 필요하지만, 쿼리 확인 결과 조건이 없거나 locDate 조건이 있을 수 있음.
// 여기서는 단순히 호출하고 결과 매핑.
// FullCalendar는 startStr, endStr을 쿼리스트링으로 보낼 수 있음 (?start=...&end=...)
// API 컨트롤러에서 이를 paramMap으로 받아서 쿼리에 넘겨줘야 함.
// 현재 selectHospitalHoliday 쿼리(WebHospitalSqlMap.xml)를 확인해보지 않았지만,
// 보통 날짜 조건이 없다면 전체를 가져옴.
formData.append("paramStartDate", info.startStr);
formData.append("paramEndDate", info.endStr);
formData.append("muHospitalId", $("#muHospitalId").val());
$.ajax({
url: encodeURI('/webhospital/selectHospitalHolidayList.do'),
data: formData,
dataType: "json",
processData: false,
contentType: false,
type: 'POST',
success: function (data) {
if ('0' == data.msgCode) {
let events = [];
let rows = data.rows;
if (rows) {
for (let i = 0; i < rows.length; i++) {
let row = rows[i];
let color = '#3985EA'; // 기본 파란색 (Theme Blue)
if (row.dateType === 'publicHoliday') {
color = '#FF5252'; // 공휴일 빨간색 (Vibrant Red)
} else if (row.dateType === 'hospitalHoliday') {
color = '#2ECC71'; // 병원휴일 초록색 (Vibrant Green)
}
events.push({
title: row.hospitalHolidayName || row.publicHolidayName || '휴일',
start: row.locDate, // yyyy.MM.dd 포맷이라면 yyyy-MM-dd로 변환 필요할 수 있음
color: color,
allDay: true
});
}
}
successCallback(events);
} else {
failureCallback(data.msgDesc);
}
},
error: function () {
failureCallback('실패');
}
});
}
});
calendar.render();
}
/**************************************************************************** /****************************************************************************
* 페이지 event * 페이지 event
****************************************************************************/ ****************************************************************************/

View File

@@ -1,10 +1,9 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{/web/layout/homeLayout}">
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="~{/web/layout/homeLayout}">
<th:block layout:fragment="layout_css"> <th:block layout:fragment="layout_css">
<link rel="stylesheet" href="/css/web/hospital_info.css?v1.1"> <link rel="stylesheet" href="/css/web/hospital_info.css?v1.1">
<script src='https://cdn.jsdelivr.net/npm/fullcalendar@6.1.10/index.global.min.js'></script>
</th:block> </th:block>
<th:block layout:fragment="layout_top_script"> <th:block layout:fragment="layout_top_script">
@@ -26,7 +25,40 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<p class="page_title">병원 기본정보</p> <p class="page_title">병원 기본정보</p>
<div class="info_box"> <div class="info_box">
<div class="info"> <div class="info_left">
<div class="form_box first">
<div class="hospital_box" style="margin-top: 0;">
<!-- 달력 영역 -->
<div id='calendar' style="margin-bottom: 20px;"></div>
<ul class="hospital_list" id="hospitalHolidayList">
<li class="list_title_li">
<span class="list_title">휴일명</span>
<span class="list_title">날짜</span>
<span class="list_title">일정반복</span>
<span class="list_title"></span>
</li>
</ul>
</div>
<div class="holiday_box">
<p class="holiday_title">법정 공휴일</p>
<div class="check_holiday_box">
<div class="check_box">
<label for="checkPublicHolidayUseYn">
<input class="select_check_hide" type="checkbox" id="checkPublicHolidayUseYn"
name="checkPublicHolidayUseYn" value="Y">
<div class="select_check_show"></div>
</label>
</div>
<span>법정 공휴일 반영</span>
</div>
</div><!--content_box-->
</div>
</div>
<div class="info_right">
<div class="form_box first"> <div class="form_box first">
<p class="title">운영시간</p> <p class="title">운영시간</p>
@@ -49,7 +81,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="monOpenStartTime"> <input type="hidden" id="monOpenStartTime">
<ul class="select_option_list dropdown-menu" id="selMonOpenStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selMonOpenStartTime"></ul>
@@ -60,7 +93,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="monOpenEndTime"> <input type="hidden" id="monOpenEndTime">
<ul class="select_option_list dropdown-menu" id="selMonOpenEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selMonOpenEndTime"></ul>
@@ -71,7 +105,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="monBreakStartTime"> <input type="hidden" id="monBreakStartTime">
<ul class="select_option_list dropdown-menu" id="selMonBreakStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selMonBreakStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -81,7 +116,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="monBreakEndTime"> <input type="hidden" id="monBreakEndTime">
<ul class="select_option_list dropdown-menu" id="selMonBreakEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selMonBreakEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -106,7 +142,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="tueOpenStartTime"> <input type="hidden" id="tueOpenStartTime">
<ul class="select_option_list dropdown-menu" id="selTueOpenStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selTueOpenStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -116,7 +153,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="tueOpenEndTime"> <input type="hidden" id="tueOpenEndTime">
<ul class="select_option_list dropdown-menu" id="selTueOpenEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selTueOpenEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -126,7 +164,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="tueBreakStartTime"> <input type="hidden" id="tueBreakStartTime">
<ul class="select_option_list dropdown-menu" id="selTueBreakStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selTueBreakStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -136,7 +175,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="tueBreakEndTime"> <input type="hidden" id="tueBreakEndTime">
<ul class="select_option_list dropdown-menu" id="selTueBreakEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selTueBreakEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -161,7 +201,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="wedOpenStartTime"> <input type="hidden" id="wedOpenStartTime">
<ul class="select_option_list dropdown-menu" id="selWedOpenStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selWedOpenStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -171,7 +212,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="wedOpenEndTime"> <input type="hidden" id="wedOpenEndTime">
<ul class="select_option_list dropdown-menu" id="selWedOpenEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selWedOpenEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -181,7 +223,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="wedBreakStartTime"> <input type="hidden" id="wedBreakStartTime">
<ul class="select_option_list dropdown-menu" id="selWedBreakStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selWedBreakStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -191,7 +234,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="wedBreakEndTime"> <input type="hidden" id="wedBreakEndTime">
<ul class="select_option_list dropdown-menu" id="selWedBreakEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selWedBreakEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -216,7 +260,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="thuOpenStartTime"> <input type="hidden" id="thuOpenStartTime">
<ul class="select_option_list dropdown-menu" id="selThuOpenStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selThuOpenStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -226,7 +271,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="thuOpenEndTime"> <input type="hidden" id="thuOpenEndTime">
<ul class="select_option_list dropdown-menu" id="selThuOpenEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selThuOpenEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -236,7 +282,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="thuBreakStartTime"> <input type="hidden" id="thuBreakStartTime">
<ul class="select_option_list dropdown-menu" id="selThuBreakStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selThuBreakStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -246,7 +293,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="thuBreakEndTime"> <input type="hidden" id="thuBreakEndTime">
<ul class="select_option_list dropdown-menu" id="selThuBreakEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selThuBreakEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -271,7 +319,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="friOpenStartTime"> <input type="hidden" id="friOpenStartTime">
<ul class="select_option_list dropdown-menu" id="selFriOpenStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selFriOpenStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -281,7 +330,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="friOpenEndTime"> <input type="hidden" id="friOpenEndTime">
<ul class="select_option_list dropdown-menu" id="selFriOpenEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selFriOpenEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -291,7 +341,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="friBreakStartTime"> <input type="hidden" id="friBreakStartTime">
<ul class="select_option_list dropdown-menu" id="selFriBreakStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selFriBreakStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -301,7 +352,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="friBreakEndTime"> <input type="hidden" id="friBreakEndTime">
<ul class="select_option_list dropdown-menu" id="selFriBreakEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selFriBreakEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -327,7 +379,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="satOpenStartTime"> <input type="hidden" id="satOpenStartTime">
<ul class="select_option_list dropdown-menu" id="selSatOpenStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selSatOpenStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -337,7 +390,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="satOpenEndTime"> <input type="hidden" id="satOpenEndTime">
<ul class="select_option_list dropdown-menu" id="selSatOpenEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selSatOpenEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -347,7 +401,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="satBreakStartTime"> <input type="hidden" id="satBreakStartTime">
<ul class="select_option_list dropdown-menu" id="selSatBreakStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selSatBreakStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -357,7 +412,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="satBreakEndTime"> <input type="hidden" id="satBreakEndTime">
<ul class="select_option_list dropdown-menu" id="selSatBreakEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selSatBreakEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -383,7 +439,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="sunOpenStartTime"> <input type="hidden" id="sunOpenStartTime">
<ul class="select_option_list dropdown-menu" id="selSunOpenStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selSunOpenStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -393,7 +450,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="sunOpenEndTime"> <input type="hidden" id="sunOpenEndTime">
<ul class="select_option_list dropdown-menu" id="selSunOpenEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selSunOpenEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -403,7 +461,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_time_list_box"> <div class="select_time_list_box">
<div class="select_list first"> <div class="select_list first">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="sunBreakStartTime"> <input type="hidden" id="sunBreakStartTime">
<ul class="select_option_list dropdown-menu" id="selSunBreakStartTime"></ul> <ul class="select_option_list dropdown-menu" id="selSunBreakStartTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -413,7 +472,8 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<div class="select_list"> <div class="select_list">
<div class="select_box dropdown"> <div class="select_box dropdown">
<button type="button" class="label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" disabled>00:00</button> <button type="button" class="label" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false" disabled>00:00</button>
<input type="hidden" id="sunBreakEndTime"> <input type="hidden" id="sunBreakEndTime">
<ul class="select_option_list dropdown-menu" id="selSunBreakEndTime"></ul> <ul class="select_option_list dropdown-menu" id="selSunBreakEndTime"></ul>
</div><!--select_box--> </div><!--select_box-->
@@ -432,32 +492,10 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
</ul> </ul>
</div> </div>
<div class="button_box">
<div class="holiday_box"> <button id="btnUpdateHospital">저장</button>
<p class="holiday_title">법정 공휴일</p>
<div class="check_holiday_box">
<div class="check_box">
<label for="checkPublicHolidayUseYn">
<input class="select_check_hide" type="checkbox" id="checkPublicHolidayUseYn" name="checkPublicHolidayUseYn" value="Y">
<div class="select_check_show"></div>
</label>
</div> </div>
<span>법정 공휴일 반영</span>
</div> </div>
</div><!--content_box-->
<div class="hospital_box">
<p class="hospital_title">운영시간</p>
<ul class="hospital_list" id="hospitalHolidayList">
<li class="list_title_li">
<span class="list_title">휴일명</span>
<span class="list_title">날짜</span>
<span class="list_title">일정반복</span>
<span class="list_title"></span>
</li>
</ul>
</div> </div>
</div> </div>
@@ -477,9 +515,7 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
</div> </div>
</div> --> </div> -->
<div class="button_box">
<button id="btnUpdateHospital">저장</button>
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -490,4 +526,5 @@ let downloadUseYn = "[[${downloadUseYn}]]"==""?"N":"[[${downloadUseYn}]]";
<th:block layout:fragment="layout_script"> <th:block layout:fragment="layout_script">
<script src="/js/web/hospital/hospitalUpdate.js"></script> <script src="/js/web/hospital/hospitalUpdate.js"></script>
</th:block> </th:block>
</html> </html>