package itn.let.mjo.msgholiday.web; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.List; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.LoginVO; import itn.com.cmm.util.MJUtil; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.mail.service.StatusResponse; import itn.let.mjo.mjocommon.MjonHolidayApi; import itn.let.mjo.msgholiday.service.MsgAlarmSetVO; import itn.let.mjo.msgholiday.service.MsgHolidayService; import itn.let.mjo.msgholiday.service.MsgHolidayVO; @Controller public class MsgHolidayController { @Resource(name = "MsgHolidayService") private MsgHolidayService msgHolidayService; @Autowired MjonHolidayApi mjonHolidayApi; /** * 공휴일 관리 리스트 화면 * @param searchVO * @param model * @return "/let/mjo/holiday/selectHolidayList.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/selectHolidayList.do") public String selectHolidayList(@ModelAttribute("searchVO") MsgHolidayVO searchVO, ModelMap model) throws Exception{ /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); paginationInfo.setPageSize(searchVO.getPageSize()); searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List searchVO.setSearchSortCnd("holidayDate"); searchVO.setSearchSortOrd("desc"); } /* * 2024.01.26 우영두 변경 * 기존 한달전 시작일자 지정에서 하루전으로 변경 * 데이터 양이 너무 많이 검색되어 하루전으로 변경해 달라는 기획팀 요청 * */ String toDay = MJUtil.getTodayDate(); //오늘 String endDay = ""; if (null == searchVO.getNtceBgnde() || searchVO.getNtceBgnde().equals("")) { searchVO.setNtceBgnde(toDay); //현재년도의 12월 31일로 종료일을 셋팅 Calendar cal = Calendar.getInstance(); String year = Integer.toString(cal.get(Calendar.YEAR)); endDay = year +"-"+"12-31"; searchVO.setNtceEndde(endDay); } List resultList = msgHolidayService.selectMsgHolidayList(searchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MsgHolidayVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "/holiday/MsgHolidayList"; } /** * 공휴일 관리 리스트 삭제 처리 * @param String * @param model * @return "/let/mjo/holiday/deleteHolidayList.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/deleteHolidayList.do") public String deleteHolidayList(@RequestParam("checkedIdForDel") String checkedIdForUpt, ModelMap model) throws Exception{ try { String[] idArr = checkedIdForUpt.split(","); MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); List idList = Arrays.asList(idArr); msgHolidayVO.setHolidayIdList(idList); int resultCnt = msgHolidayService.deleteHolidayData(msgHolidayVO); } catch (Exception e) { System.out.println("+++++++++++++++++++++++++++++ deleteHolidayList Error !!! "); } return "redirect:/let/mjo/holiday/selectHolidayList.do"; } /** * 공휴일 관리 공공데이터 포털에서 공휴일 정보 받아오기 API * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/getHolidayApiDataAjax.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/getHolidayApiDataAjax.do") public String getHolidayApiDataAjax(MsgHolidayVO msgHolidayVO, RedirectAttributes redirectAttributes) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do"); return redirectUrlMaker.getRedirectUrl(); } String searchHoliYear = msgHolidayVO.getSearchHoliYear(); if(searchHoliYear == null) {//년도 파라미터가 없으면 현재 년도를 넘겨준다. Calendar cal = Calendar.getInstance(); String year = Integer.toString(cal.get(Calendar.YEAR)); msgHolidayVO.setSearchHoliYear(year); } //공휴일 등록요청한 아이디를 셋팅 msgHolidayVO.setFrstRegisterId(userId); //공공데이터 포털에서 공휴일 API를 통하여 정보를 받아온다. List msgHolidayList = mjonHolidayApi.getYearHolidayApiData(msgHolidayVO); int resultCnt = msgHolidayService.insertHolidayData(msgHolidayList); } catch (Exception e) { System.out.println("+++++++++++++++++++++++++++++++++ getHolidayApiDataAjax Controller Error!!!! " + e); redirectAttributes.addFlashAttribute("message", "오류가 발생하였습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do"); return redirectUrlMaker.getRedirectUrl(); } redirectAttributes.addFlashAttribute("message", "공휴일 등록이 완료 되었습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 공휴일 관리 공휴일 정보 등록 팝업 화면 * @param MsgHolidayVO * @param model * @return "/uss/umt/holiday/selectHolidayModifyPopupAjax.do" * @throws Exception */ @RequestMapping("/uss/umt/holiday/selectHolidayModifyPopupAjax.do") public String selectHolidayModifyPopupAjax(MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ String toDay = MJUtil.getTodayDate(); //오늘 msgHolidayVO.setHolidayDate(toDay); model.addAttribute("result", msgHolidayVO); return "/holiday/popup/MsgHolidayModifyPopup"; } /** * 공휴일 관리 공휴일 정보 신규 등록 처리 * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/insertHolidayRegistAjax.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/insertHolidayRegistAjax.do") public ResponseEntity insertHolidayRegistAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { return ResponseEntity.ok( new StatusResponse(HttpStatus.UNAUTHORIZED , "로그인을 하셔야 이용 가능합니다." , LocalDateTime.now() ) ); } //공공데이터 포털이 아닌 일반 등록 타입으로 등록해 준다. msgHolidayVO.setApiType("N"); msgHolidayVO.setFrstRegisterId(userId); //캘린더에서 넘어오는 날짜에서 하이픈을 삭제해준다. String holidayDate = msgHolidayVO.getHolidayDate().replace("-", ""); msgHolidayVO.setHolidayDate(holidayDate); List msgHolidayList = new ArrayList(); msgHolidayList.add(msgHolidayVO); int resultCnt = msgHolidayService.insertHolidayData(msgHolidayList); } catch (Exception e) { System.out.println("++++++++++++++++++++++++ insertHolidayRegistAjax Controller Error!!!! "); return ResponseEntity.ok( new StatusResponse(HttpStatus.BAD_REQUEST , "공휴일 등록 중 오류가 발생하였습니다.." , LocalDateTime.now() ) ); } return ResponseEntity.ok( new StatusResponse(HttpStatus.OK , "공휴일 등록을 완료하였습니다." , LocalDateTime.now() ) ); } /** * 공휴일 관리 공휴일 정보 신규 등록 처리 * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/insertHolidayRegistAjax.do" * @throws Exception */ @RequestMapping("/uss/umt/holiday/selectHolidayDetailPopupAjax.do") public String selectHolidayDetailPopupAjax(MsgHolidayVO msgHolidayVO, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do"); return redirectUrlMaker.getRedirectUrl(); } MsgHolidayVO resultVO = msgHolidayService.selectHolidayDetail(msgHolidayVO); model.addAttribute("result", resultVO); } catch (Exception e) { System.out.println("+++++++++++++++++++++++++++++ selectHolidayDetailPopupAjax Error !!!! "); redirectAttributes.addFlashAttribute("message", "오류가 발생하였습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/let/mjo/holiday/selectHolidayList.do"); return redirectUrlMaker.getRedirectUrl(); } return "/holiday/popup/MsgHolidayModifyPopup"; } /** * 공휴일 관리 공휴일 정보 수정 처리 * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/updateHolidayDataAjax.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/updateHolidayDataAjax.do") public ResponseEntity updateHolidayDataAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { return ResponseEntity.ok( new StatusResponse(HttpStatus.UNAUTHORIZED , "로그인을 하셔야 이용 가능합니다." , LocalDateTime.now() ) ); } //공공데이터 포털이 아닌 일반 등록 타입으로 등록해 준다. msgHolidayVO.setApiType("N"); msgHolidayVO.setLastUpdusrId(userId); //캘린더에서 넘어오는 날짜에서 하이픈을 삭제해준다. String holidayDate = msgHolidayVO.getHolidayDate().replace("-", ""); msgHolidayVO.setHolidayDate(holidayDate); int resultCnt = msgHolidayService.updateHolidayData(msgHolidayVO); } catch (Exception e) { System.out.println("++++++++++++++++++++++++ updateHolidayDataAjax Controller Error!!!! "); return ResponseEntity.ok( new StatusResponse(HttpStatus.BAD_REQUEST , "공휴일 수정 중 오류가 발생하였습니다.." , LocalDateTime.now() ) ); } return ResponseEntity.ok( new StatusResponse(HttpStatus.OK , "공휴일 수정을 완료하였습니다." , LocalDateTime.now() ) ); } /** * 공휴일 관리 공휴일 정보 삭제 처리(상세 팝업화면에서 삭제 요청시 처리) * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/deleteHolidayDataAjax.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/deleteHolidayDataAjax.do") public ResponseEntity deleteHolidayDataAjax(@RequestBody MsgHolidayVO msgHolidayVO, ModelMap model) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { return ResponseEntity.ok( new StatusResponse(HttpStatus.UNAUTHORIZED , "로그인을 하셔야 이용 가능합니다." , LocalDateTime.now() ) ); } List idList = new ArrayList(); String holiId = Integer.toString(msgHolidayVO.getHolidayId()); idList.add(holiId); msgHolidayVO.setHolidayIdList(idList); int resultCnt = msgHolidayService.deleteHolidayData(msgHolidayVO); } catch (Exception e) { System.out.println("++++++++++++++++++++++++ deleteHolidayDataAjax Controller Error!!!! "); return ResponseEntity.ok( new StatusResponse(HttpStatus.BAD_REQUEST , "공휴일 삭제 중 오류가 발생하였습니다.." , LocalDateTime.now() ) ); } return ResponseEntity.ok( new StatusResponse(HttpStatus.OK , "공휴일이 삭제 되었습니다." , LocalDateTime.now() ) ); } /** * 관리자 알림 설정 - 야간스미싱알림 설정 팝업 화면 * @param MsgHolidayVO * @param model * @return "/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do" * @throws Exception */ @RequestMapping("/uss/umt/holiday/alarmSet/selectAlarmSettingPopupAjax.do") public String selectAlarmSettingPopupAjax(MsgAlarmSetVO msgAlarmSetVO, RedirectAttributes redirectAttributes, ModelMap model) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { redirectAttributes.addFlashAttribute("message", "로그인 후 사용하실 수 있습니다."); RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uia/EgovLoginUsr.do"); return redirectUrlMaker.getRedirectUrl(); } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(msgAlarmSetVO.getPageIndex()); paginationInfo.setRecordCountPerPage(msgAlarmSetVO.getPageUnit()); paginationInfo.setPageSize(msgAlarmSetVO.getPageSize()); msgAlarmSetVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); msgAlarmSetVO.setLastIndex(paginationInfo.getLastRecordIndex()); msgAlarmSetVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(msgAlarmSetVO.getSearchSortCnd())){ //최초조회시 최신것 조회List msgAlarmSetVO.setSearchSortCnd("ALARM_START"); msgAlarmSetVO.setSearchSortOrd("desc"); } List resultList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); model.addAttribute("resultList", resultList); model.addAttribute("msgAlarmSetVO", msgAlarmSetVO); paginationInfo.setTotalRecordCount(resultList.size() > 0 ? ((MsgAlarmSetVO)resultList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); } catch (Exception e) { System.out.println("+++++++++++++++++++++++++++++ selectAlarmSettingPopupAjax Error !!!! "); } return "/holiday/alarmset/MsgHolidayAlarmSettingListPop"; } /** * 관리자 알림 설정 - 야간스미싱알림 일정 추가 처리 * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/alarmSet/insertAlarmSettinDataAjax.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/alarmSet/insertAlarmSettingDataAjax.do") public ResponseEntity insertAlarmSettingDataAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO, ModelMap model) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { return ResponseEntity.ok( new StatusResponse(HttpStatus.UNAUTHORIZED , "로그인을 하셔야 이용 가능합니다." , LocalDateTime.now() ) ); } //등록자 아이디 셋팅 msgAlarmSetVO.setFrstRegisterId(userId); int resultCnt = msgHolidayService.insertAlarmSettingData(msgAlarmSetVO); } catch (Exception e) { System.out.println("++++++++++++++++++++++++ insertAlimSettingDataAjax Controller Error!!!! "); return ResponseEntity.ok( new StatusResponse(HttpStatus.BAD_REQUEST , "알림 일정 등록 중 오류가 발생하였습니다.." , LocalDateTime.now() ) ); } return ResponseEntity.ok( new StatusResponse(HttpStatus.OK , "알림 일정이 등록 되었습니다." , LocalDateTime.now() ) ); } /** * 관리자 알림 설정 - 야간스미싱알림 일정 사용상태 변경 * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do") public ResponseEntity updateAlarmSettingDataUseYnAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO, ModelMap model) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { return ResponseEntity.ok( new StatusResponse(HttpStatus.UNAUTHORIZED , "로그인을 하셔야 이용 가능합니다." , LocalDateTime.now() ) ); } System.out.println(msgAlarmSetVO.getAlarmId()); System.out.println(msgAlarmSetVO.getUseYn()); msgAlarmSetVO.setLastUpdusrId(userId); int resultCnt = msgHolidayService.updateAlarmSettingDataUseYn(msgAlarmSetVO); } catch (Exception e) { System.out.println("++++++++++++++++++++++++ updateAlarmSettingDataUseYnAjax Controller Error!!!! "); return ResponseEntity.ok( new StatusResponse(HttpStatus.BAD_REQUEST , "사용여부 변경 중 오류가 발생하였습니다.." , LocalDateTime.now() ) ); } return ResponseEntity.ok( new StatusResponse(HttpStatus.OK , "변경이 완료 되었습니다." , LocalDateTime.now() ) ); } /** * 관리자 알림 설정 - 야간스미싱알림 일정 삭제 처리 * @param MsgHolidayVO * @param model * @return "/let/mjo/holiday/alarmSet/updateAlarmSettingDataUseYnAjax.do" * @throws Exception */ @RequestMapping("/let/mjo/holiday/alarmSet/deleteAlarmSettingDataAjax.do") public ResponseEntity deleteAlarmSettingDataAjax(@RequestBody MsgAlarmSetVO msgAlarmSetVO) throws Exception{ try { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(userId.equals("")) { return ResponseEntity.ok( new StatusResponse(HttpStatus.UNAUTHORIZED , "로그인을 하셔야 이용 가능합니다." , LocalDateTime.now() ) ); } String[] splitId = msgAlarmSetVO.getAlarmIds().split(","); List idList = Arrays.asList(splitId); msgAlarmSetVO.setAlarmIdList(idList); int resultCnt = msgHolidayService.deleteAlarmSettingData(msgAlarmSetVO); } catch (Exception e) { System.out.println("++++++++++++++++++++++++ deleteAlarmSettingDataAjax Controller Error!!!! " + e); return ResponseEntity.ok( new StatusResponse(HttpStatus.BAD_REQUEST , "사용여부 변경 중 오류가 발생하였습니다.." , LocalDateTime.now() ) ); } return ResponseEntity.ok( new StatusResponse(HttpStatus.OK , "변경이 완료 되었습니다." , LocalDateTime.now() ) ); } @RequestMapping("/let/mjo/holiday/alarmSet/selectAlarmSettingDataCheckAjax.do") public ResponseEntity selectAlarmSettingDataCheckAjax() throws Exception{ MsgAlarmSetVO msgAlarmSetVO = new MsgAlarmSetVO(); msgAlarmSetVO.setUseYn("Y"); msgAlarmSetVO.setFirstIndex(0); List resultAlarmList = msgHolidayService.selectAlarmSettingList(msgAlarmSetVO); Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); MsgHolidayVO msgHolidayVO = new MsgHolidayVO(); msgHolidayVO.setFirstIndex(0); msgHolidayVO.setRecordCountPerPage(100); msgHolidayVO.setSearchHoliYear(Integer.toString(year)); List resultHolidayList = msgHolidayService.selectMsgHolidayList(msgHolidayVO); MjonHolidayApi mjonHolidayApi = new MjonHolidayApi(); boolean smishingAlarmPassSts = mjonHolidayApi.getHolidaySmishingPassStatus(resultAlarmList, resultHolidayList); System.out.println("+++++++++ 스미싱을 패스 시킬건지 ::: "+smishingAlarmPassSts); return ResponseEntity.ok( new StatusResponse(HttpStatus.OK , "변경이 완료 되었습니다." , LocalDateTime.now() ) ); } }