package itn.let.schdlr.service.web; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import egovframework.rte.fdl.property.EgovPropertyService; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovCmmUseService; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.service.FileVO; import itn.let.schdlr.service.SchdlrManageService; import itn.let.schdlr.service.SchdlrVO; /** * 민원 관리를 처리하는 Controller Class 구현 * * @since 2009.04.10 * @see *
 * << 개정이력(Modification Information) >>
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *  2019.06.28  신명섭          최초 생성
 * 
* @author 신명섭 * @version 1.0 */ @Controller public class SchdlrManageController { /** userManageService */ @Resource(name = "SchdlrManageService") private SchdlrManageService schdlrManageService; /** EgovPropertyService */ @Resource(name = "propertiesService") protected EgovPropertyService propertiesService; /** EgovMessageSource */ @Resource(name = "egovMessageSource") EgovMessageSource egovMessageSource; @Resource(name="EgovFileMngUtil") private EgovFileMngUtil fileUtil; @Resource(name="EgovFileMngService") private EgovFileMngService fileMngService; /** cmmUseService */ @Resource(name = "EgovCmmUseService") private EgovCmmUseService cmmUseService; // 스케줄관리 메뉴 클릭 @RequestMapping(value="/web/uss/itsm/schdlr/SchdlrManage.do") public String SchdlrManage(@RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); //schdlrVO.setSchdlrCfgUserId(loginVO.getId()); SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO); // 스케줄 환경설정 String schdlrOpenCd = configVO.getSchdlrOpenCd(); String returnUrl = ""; // 관리자 유무 List authorities = EgovUserDetailsHelper.getAuthorities(); String tmpCmplntUserTy = "U"; for (String authority : authorities) if (authority.equals("ROLE_ADMIN")) tmpCmplntUserTy = "A"; String logCmd = ""; if (("U").equals(tmpCmplntUserTy)) logCmd = "USR"; else logCmd = "ADM"; // 스케줄 메뉴 첫화면 if (schdlrOpenCd == null) schdlrOpenCd = "01"; if (schdlrOpenCd.equals("01")) returnUrl = "/web/uss/itsm/schdlr/selectSchdlrList.do"; // 월별 else if (schdlrOpenCd.equals("02")) returnUrl = "/web/uss/itsm/schdlr/schdlrWeekList.do"; // 주별 else if (schdlrOpenCd.equals("03")) returnUrl = "/web/uss/itsm/schdlr/schdlrDayList.do"; // 일별 return "redirect:" + returnUrl + "?logCmd=" + logCmd; } // 스케줄관리 일정화면(월) @RequestMapping(value="/web/uss/itsm/schdlr/selectSchdlrList.do") public String selectSchdlrList(@RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setSchdlrCfgUserId(loginVO.getId()); SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO); model.addAttribute("configVO", configVO); return "/uss/itsm/schdlr/schdlrList"; } // 스케줄관리 일정화면(주별) @RequestMapping(value="/web/uss/itsm/schdlr/schdlrWeekList.do") public String selectSchdlrWeekList(@RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setSchdlrCfgUserId(loginVO.getId()); SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO); model.addAttribute("configVO", configVO); return "/uss/itsm/schdlr/schdlrWeekList"; } // 스케줄관리 일정화면(일별 ) @RequestMapping(value="/web/uss/itsm/schdlr/schdlrDayList.do") public String selectSchdlrDayList(@RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setSchdlrCfgUserId(loginVO.getId()); SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO); model.addAttribute("configVO", configVO); return "/uss/itsm/schdlr/schdlrDayList"; } // 스케줄관리 일정목록 @RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrSchList.do") public String selectSchdlrSchList(@PathVariable("siteId") String siteId, @RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setFrstRegisterId(loginVO.getId()); schdlrVO.setSchdlrCfgUserId(loginVO.getId()); SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO); model.addAttribute("configVO", configVO); if (("").equals(schdlrVO.getSchdlrBgnDatetime()) || ("").equals(schdlrVO.getSchdlrEndDatetime())) { Calendar cal = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); schdlrVO.setSchdlrBgnDatetime(dateFormat.format(cal.getTime()) + "-" + "01"); schdlrVO.setSchdlrEndDatetime(dateFormat.format(cal.getTime()) + "-" + cal.getActualMaximum(Calendar.DAY_OF_MONTH)); } /** pageing */ schdlrVO.setPageUnit(10); PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(schdlrVO.getPageIndex()); paginationInfo.setRecordCountPerPage(schdlrVO.getPageUnit()); paginationInfo.setPageSize(schdlrVO.getPageSize()); schdlrVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); schdlrVO.setLastIndex(paginationInfo.getLastRecordIndex()); schdlrVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); // 일정 목록 조회 List schList = schdlrManageService.selectSchList(schdlrVO); int totCnt = 0; if (schList.size() > 0 ) totCnt = schList.get(0).getTotCnt(); paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("schList", schList); String siteIdUrl = "/" + siteId + "/web"; model.addAttribute("siteId", siteId); return "/uss/itsm/schdlr/schdlrSchList"; } // 스케줄관리 일정 데이터를 조회한다.(월) @SuppressWarnings("unchecked") @RequestMapping(value="/web/uss/itsm/schdlr/selectSchdlrListAjax.do") public ModelAndView selectSchdlrListAjax(@RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setFrstRegisterId(loginVO.getId()); schdlrVO.setSchdlrDeptId(loginVO.getId()); // !부서 ID set 필요 // 관리자 유무 List authorities = EgovUserDetailsHelper.getAuthorities(); String userAuthTy = "U"; for (String authority : authorities) if (authority.equals("ROLE_ADMIN")) userAuthTy = "A"; schdlrVO.setUserAuthTy(userAuthTy); String searchYear = (String) commandMap.get("searchYear"); String searchMonth = (String) commandMap.get("searchMonth"); if (("").equals(searchYear) || ("").equals(searchMonth)) { Calendar cal = Calendar.getInstance(); int iYear = cal.get(java.util.Calendar.YEAR); int iMonth = cal.get(java.util.Calendar.MONTH); searchYear = Integer.toString(iYear); searchMonth = (iMonth+1) < 10 ? "0" + Integer.toString(iMonth+1) : Integer.toString(iMonth+1); } // !개인 스케줄러 설정 조회 필요 // bgnDayOfWeek 주시작요일 // 스케줄조회 월별 // schdlrVO.setSearchDate("20191001"); // 임시 화면단에서 전송 필요 List selectSchdlrList = schdlrManageService.selectSchdlrList(schdlrVO); // 조회 결과 파싱 JSONObject resultList = new JSONObject(); resultList.put("searchYear", searchYear); resultList.put("searchMonth", searchMonth); // 날짜별 for (SchdlrVO vo : selectSchdlrList) { JSONArray infoArr = new JSONArray(); // StringTokenizer strTk = new StringTokenizer(exRoomArr[i], "//"); // String tmpExRoom = strTk.hasMoreTokens() ? strTk.nextToken() : ""; String[] testa = ("").split("\\|"); String[] testb = ("aa").split("\\|"); //System.out.println(testa.length); //System.out.println(testb.length); String[] schdlrIdArr = vo.getSchdlrIds().split("\\|"); String[] schdlrTyCdArr = vo.getSchdlrTyCd().split("\\|"); String[] schdlrTitleArr = vo.getSchdlrTitles().split("\\|"); String[] schdlrBgnDatetimeArr = vo.getSchdlrBgnDatetimes().split("\\|"); String[] schdlrEndDatetimeArr = vo.getSchdlrEndDatetimes().split("\\|"); String[] schdlrDtSecArr = vo.getSchdlrDtSecs().split("\\|"); // 날짜 해당 일정별 for (int i=0; i < schdlrIdArr.length; i++) { JSONObject infoJson = new JSONObject(); infoJson.put("schdlrId", schdlrIdArr[i]); infoJson.put("schdlrTyCd", schdlrTyCdArr[i]); infoJson.put("schdlrTitle", schdlrTitleArr[i]); infoJson.put("schdlrBgnDatetime", schdlrBgnDatetimeArr[i]); infoJson.put("schdlrEndDatetime", schdlrEndDatetimeArr[i]); infoJson.put("schdlrDtSec", schdlrDtSecArr[i]); infoArr.add(infoJson); } resultList.put(vo.getStrDate(), infoArr); } ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); modelAndView.addObject("resultList", resultList); return modelAndView; } // 스케줄관리 일정 데이터를 조회한다.(주별, 일별) @SuppressWarnings("unchecked") @RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrWeekListAjax.do") public ModelAndView schdlrWeekListAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setFrstRegisterId(loginVO.getId()); schdlrVO.setSchdlrDeptId(loginVO.getId()); // !부서 ID set 필요 // 관리자 유무 List authorities = EgovUserDetailsHelper.getAuthorities(); String userAuthTy = "U"; for (String authority : authorities) if (authority.equals("ROLE_ADMIN")) userAuthTy = "A"; schdlrVO.setUserAuthTy(userAuthTy); String searchYear = (String) commandMap.get("searchYear"); String searchMonth = (String) commandMap.get("searchMonth"); String searchDay = (String) commandMap.get("searchDay"); String searchBgnDt = (String) commandMap.get("searchBgnDt"); String searchEndDt = (String) commandMap.get("searchEndDt"); if (("").equals(searchYear) || ("").equals(searchMonth)) { Calendar cal = Calendar.getInstance(); int iYear = cal.get(java.util.Calendar.YEAR); int iMonth = cal.get(java.util.Calendar.MONTH); searchYear = Integer.toString(iYear); searchMonth = (iMonth+1) < 10 ? "0" + Integer.toString(iMonth+1) : Integer.toString(iMonth+1); } // 스케줄조회 월별 // schdlrVO.setSearchDate("20191001"); // 임시 화면단에서 전송 필요 List selectSchdlrList = schdlrManageService.selectSchdlrList(schdlrVO); // 조회 결과 파싱 JSONObject resultList = new JSONObject(); resultList.put("searchYear", searchYear); resultList.put("searchMonth", searchMonth); resultList.put("searchDay", searchDay); resultList.put("searchBgnDt", searchBgnDt); resultList.put("searchEndDt", searchEndDt); // 날짜별 for (SchdlrVO vo : selectSchdlrList) { JSONArray infoArr = new JSONArray(); // StringTokenizer strTk = new StringTokenizer(exRoomArr[i], "//"); // String tmpExRoom = strTk.hasMoreTokens() ? strTk.nextToken() : ""; String[] testa = ("").split("\\|"); String[] testb = ("aa").split("\\|"); //System.out.println(testa.length); //System.out.println(testb.length); String[] schdlrIdArr = vo.getSchdlrIds().split("\\|"); String[] schdlrTyCdArr = vo.getSchdlrTyCd().split("\\|"); String[] schdlrTitleArr = vo.getSchdlrTitles().split("\\|"); String[] schdlrBgnDatetimeArr = vo.getSchdlrBgnDatetimes().split("\\|"); String[] schdlrEndDatetimeArr = vo.getSchdlrEndDatetimes().split("\\|"); String[] schdlrBgnTimeArr = vo.getSchdlrBgnTimes().split("\\|"); String[] schdlrEndTimeArr = vo.getSchdlrEndTimes().split("\\|"); String[] schdlrDtSecArr = vo.getSchdlrDtSecs().split("\\|"); // 날짜 해당 일정별 for (int i=0; i < schdlrIdArr.length; i++) { JSONObject infoJson = new JSONObject(); infoJson.put("schdlrId", schdlrIdArr[i]); infoJson.put("schdlrTyCd", schdlrTyCdArr[i]); infoJson.put("schdlrTitle", schdlrTitleArr[i]); infoJson.put("schdlrBgnDatetime", schdlrBgnDatetimeArr[i]); infoJson.put("schdlrEndDatetime", schdlrEndDatetimeArr[i]); infoJson.put("schdlrBgnTime", schdlrBgnTimeArr[i]); infoJson.put("schdlrEndTime", schdlrEndTimeArr[i]); infoJson.put("schdlrDtSec", schdlrDtSecArr[i]); infoArr.add(infoJson); } resultList.put(vo.getStrDate(), infoArr); } ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); modelAndView.addObject("resultList", resultList); return modelAndView; } // 스케줄 상세 화면 @RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrDetail.do") public String selectSchdlrDetail(@PathVariable("siteId") String siteId, @RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setSchdlrCfgUserId(loginVO.getId()); model.addAttribute("loginId", loginVO.getId()); SchdlrVO configVO = schdlrManageService.selectSchConfigDetail(schdlrVO); model.addAttribute("configVO", configVO); SchdlrVO result = schdlrManageService.selectSchdlrDetail(schdlrVO); model.addAttribute("result", result); List share = schdlrManageService.selectSchdlrShare(schdlrVO); model.addAttribute("share", share); if (!("").equals(result.getSchdlrAtchFileId())) { // 기 첨부파일 FileVO fileVO = new FileVO(); fileVO.setAtchFileId(result.getSchdlrAtchFileId()); List cmplntReqFileList = fileMngService.selectFileInfs(fileVO); model.addAttribute("schdlrReqFileList", cmplntReqFileList); } return "/uss/itsm/schdlr/schdlrDetail"; } // 스케줄관리 등록/수정 화면 @RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/schdlrUpdate.do") public String schdlrUpdate(@PathVariable("siteId") String siteId, @RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); String siteIdUrl = "/" + siteId + "/web"; if (!("").equals(schdlrVO.getSchdlrId())) { // 상세 SchdlrVO result = schdlrManageService.selectSchdlrDetail(schdlrVO); model.addAttribute("result", result); if (!result.getFrstRegisterId().equals(loginVO.getId())) { // 본인 확인 model.addAttribute("resultMsg", "self_fail"); return "forward:"+siteIdUrl+"/uss/itsm/schdlr/schdlrDetail.do"; } List share = schdlrManageService.selectSchdlrShare(schdlrVO); model.addAttribute("share", share); if (!("").equals(result.getSchdlrAtchFileId())) { // 기 첨부파일 FileVO fileVO = new FileVO(); fileVO.setAtchFileId(result.getSchdlrAtchFileId()); List cmplntReqFileList = fileMngService.selectFileInfs(fileVO); model.addAttribute("schdlrReqFileList", cmplntReqFileList); } } model.addAttribute("siteId", siteId); return "/uss/itsm/schdlr/schdlrUpdate"; } // 스케줄 등록 @RequestMapping("/{siteId}/web/uss/itsm/schdlr/schdlrInsertAjax.do") public ModelAndView insertSchdlrInsertAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, SchdlrVO schdlrVO ,final MultipartHttpServletRequest multiRequest) throws Exception { List authorities = EgovUserDetailsHelper.getAuthorities(); LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setFrstRegisterId(loginVO.getId()); schdlrVO.setFrstRegisterNm(loginVO.getId()); schdlrVO.setLastUpdusrId(loginVO.getId()); schdlrVO.setLastUpdusrNm(loginVO.getName()); String result = "success"; ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); // 첨부파일 String atchFileId = schdlrVO.getSchdlrAtchFileId(); final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { if ("".equals(atchFileId)) { List fileResult = fileUtil.parseFileInf(files, "SCHDLR_", 0, atchFileId, "", ""); atchFileId = fileMngService.insertFileInfs(fileResult); } else { FileVO fvo = new FileVO(); fvo.setAtchFileId(atchFileId); int cnt = fileMngService.getMaxFileSN(fvo); List fileResult = fileUtil.parseFileInf(files, "SCHDLR_", cnt, atchFileId, "", ""); fileMngService.updateFileInfs(fileResult); } } schdlrVO.setSchdlrAtchFileId(atchFileId); try { schdlrManageService.schdlrInsert(schdlrVO); } catch (Exception e) { result = "fail"; } modelAndView.addObject("result", result); return modelAndView; } // 스케줄 수정 @RequestMapping("/{siteId}/web/uss/itsm/schdlr/schdlrUpdateAjax.do") public ModelAndView updateSchdlrUpdateAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, SchdlrVO schdlrVO ,final MultipartHttpServletRequest multiRequest) throws Exception { List authorities = EgovUserDetailsHelper.getAuthorities(); LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setLastUpdusrId(loginVO.getId()); schdlrVO.setLastUpdusrNm(loginVO.getName()); String result = "success"; ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); SchdlrVO resultVO = schdlrManageService.selectSchdlrDetail(schdlrVO); if (!resultVO.getFrstRegisterId().equals(loginVO.getId())) { // 본인 확인 result = "self_fail"; modelAndView.addObject("result", result); return modelAndView; } // 첨부파일 String atchFileId = schdlrVO.getSchdlrAtchFileId(); final Map files = multiRequest.getFileMap(); if (!files.isEmpty()) { if ("".equals(atchFileId)) { List fileResult = fileUtil.parseFileInf(files, "SCHDLR_", 0, atchFileId, "", ""); atchFileId = fileMngService.insertFileInfs(fileResult); } else { FileVO fvo = new FileVO(); fvo.setAtchFileId(atchFileId); int cnt = fileMngService.getMaxFileSN(fvo); List fileResult = fileUtil.parseFileInf(files, "SCHDLR_", cnt, atchFileId, "", ""); fileMngService.updateFileInfs(fileResult); } } schdlrVO.setSchdlrAtchFileId(atchFileId); try { schdlrManageService.schdlrUpdate(schdlrVO); } catch (Exception e) { result = "fail"; } modelAndView.addObject("result", result); return modelAndView; } // 환경설정 상세 화면 @RequestMapping(value="/{siteId}/web/uss/itsm/schdlr/selectSchConfigDetail.do") public String selectSchConfigDetail(@PathVariable("siteId") String siteId, @RequestParam Map commandMap ,@ModelAttribute("schdlrVO") SchdlrVO schdlrVO, ModelMap model) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setSchdlrCfgUserId(loginVO.getId()); // 관리자 유무 List authorities = EgovUserDetailsHelper.getAuthorities(); String authTy = "U"; for (String authority : authorities) if (authority.equals("ROLE_ADMIN")) authTy = "A"; SchdlrVO result = schdlrManageService.selectSchConfigDetail(schdlrVO); model.addAttribute("result", result); model.addAttribute("result", result); model.addAttribute("authTy", authTy); String siteIdUrl = "/" + siteId + "/web"; model.addAttribute("siteId", siteId); return "/uss/itsm/schdlr/schConfigDetail"; } // 환경설정 수정 @RequestMapping("/{siteId}/web/uss/itsm/schdlr/updateSchConfigAjax.do") public ModelAndView updateSchConfigAjax(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, SchdlrVO schdlrVO ,final MultipartHttpServletRequest multiRequest) throws Exception { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); schdlrVO.setSchdlrCfgUserId(loginVO.getId()); String result = "success"; ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); SchdlrVO resultVO = schdlrManageService.selectSchConfigDetail(schdlrVO); if (!resultVO.getSchdlrCfgUserId().equals(loginVO.getId())) { // 본인 확인 result = "self_fail"; modelAndView.addObject("result", result); return modelAndView; } try { schdlrManageService.updateSchConfig(schdlrVO); } catch (Exception e) { result = "fail"; } modelAndView.addObject("result", result); return modelAndView; } }