package kcc.web; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.stream.Collectors; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.annotation.Resource; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.ibatis.annotations.Case; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; 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.bind.annotation.SessionAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import egovframework.rte.fdl.property.EgovPropertyService; import egovframework.rte.fdl.security.intercept.EgovReloadableFilterInvocationSecurityMetadataSource; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.psl.dataaccess.util.EgovMap; import kcc.com.cmm.CmmUtil; import kcc.com.cmm.ComDefaultVO; import kcc.com.cmm.LoginVO; import kcc.com.cmm.service.EgovCmmUseService; import kcc.com.cmm.service.EgovFileMngUtil; import kcc.com.cmm.service.FileVO; import kcc.com.cmm.util.WebUtil; import kcc.com.uss.ion.bnr.service.BannerVO; import kcc.com.uss.ion.bnr.service.EgovBannerService; import kcc.com.uss.ion.cnf.service.MetaTagManageService; import kcc.com.uss.ion.cyb.service.CyberAlertManageService; import kcc.com.uss.ion.fms.service.FmsFileVO; import kcc.com.uss.ion.pwm.service.EgovPopupManageService; import kcc.com.uss.ion.pwm.service.MainzoneVO; import kcc.com.uss.ion.pwm.service.PopupManageVO; import kcc.com.uss.ion.pwm.service.PopupzoneVO; import kcc.com.utl.fcc.service.EgovStringUtil; import kcc.let.cop.bbs.service.BoardMasterVO; import kcc.let.cop.bbs.service.BoardVO; import kcc.let.cop.bbs.service.EgovBBSAttributeManageService; import kcc.let.cop.bbs.service.EgovBBSManageService; import kcc.let.sts.cst.service.EgovConectStatsService; import kcc.let.sym.ccm.cde.service.EgovCcmCmmnDetailCodeManageService; import kcc.let.sym.log.clg.service.EgovLoginLogService; import kcc.let.sym.log.clg.service.LoginLog; import kcc.let.sym.mnu.mcm.service.EgovMenuCreateManageService; import kcc.let.sym.mnu.mpm.service.EgovMenuManageService; import kcc.let.sym.mnu.mpm.service.MenuManageJTreeVO; import kcc.let.sym.mnu.mpm.service.MenuManageVO; import kcc.let.sym.prm.service.EgovProgrmManageService; import kcc.let.sym.prm.service.ProgrmManageVO; import kcc.let.sym.site.service.EgovSiteManagerService; import kcc.let.sym.site.service.SiteManagerVO; import seed.com.gtm.board.CaseBoardService; import seed.com.gtm.exam.ExamBoardService; import seed.com.gtm.faqbbs.faqBpardService; import seed.utils.SeedConstants; /** * 템플릿 메인 페이지 컨트롤러 클래스(Sample 소스) * * @author 실행환경 개발팀 JJY * @since 2011.08.31 * @version 1.0 * @see * *
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자           수정내용
 *  -------    --------    ---------------------------
 *   2011.08.31  JJY            최초 생성
 *
 *      
*/ @Controller @SessionAttributes(types = ComDefaultVO.class) public class MainController { /** EgovProgrmManageService */ @Resource(name = "progrmManageService") private EgovProgrmManageService progrmManageService; /** EgovPropertyService */ @Resource(name = "propertiesService") protected EgovPropertyService propertiesService; /** * EgovBBSManageService */ @Resource(name = "EgovBBSManageService") private EgovBBSManageService bbsMngService; /** EgovMenuManageService */ @Resource(name = "meunManageService") private EgovMenuManageService menuManageService; @Resource(name = "egovBannerService") private EgovBannerService egovBannerService; /** EgovPopupManageService */ @Resource(name = "egovPopupManageService") private EgovPopupManageService egovPopupManageService; /** cyberAlertManageService */ @Resource(name = "cyberAlertManageService") private CyberAlertManageService cyberAlertManageService; @Resource(name = "EgovLoginLogService") private EgovLoginLogService loginLogService; @Resource(name = "conectStatsService") private EgovConectStatsService conectStatsService; @Resource(name = "databaseSecurityMetadataSource") EgovReloadableFilterInvocationSecurityMetadataSource databaseSecurityMetadataSource; /** cmmUseService */ @Resource(name = "EgovCmmUseService") private EgovCmmUseService cmmUseService; /** EgovMenuManageService */ @Resource(name = "meunCreateManageService") private EgovMenuCreateManageService menuCreateManageService; @Resource(name = "egovSiteManagerService") EgovSiteManagerService egovSiteManagerService; @Resource(name = "EgovBBSAttributeManageService") private EgovBBSAttributeManageService bbsAttrbService; /** metaTagManageService 메타태그 */ @Resource(name = "metaTagManageService") private MetaTagManageService metaTagManageService; @Resource(name = "EgovFileMngUtil") private EgovFileMngUtil fileUtil; @Value("#{globalSettings['Globals.email.host']}") private String Globals_email_host; @Value("#{globalSettings['Globals.email.port']}") private String Globals_email_port; @Value("#{globalSettings['Globals.email.fromUser']}") private String Globals_email_fromUser; @Value("#{globalSettings['Globals.email.fromEmail']}") private String Globals_email_fromEmail; @Value("#{globalSettings['Globals.email.fromEmail.password']}") private String Globals_email_fromEmail_password; @Value("#{globalSettings['Globals.email.toEmail']}") private String Globals_email_toEmail; @Value("#{globalSettings['Globals.email.toEmail.BCC']}") private String Globals_email_toEmail_BCC; @Resource(name = "CmmnDetailCodeManageService") private EgovCcmCmmnDetailCodeManageService cmmnDetailCodeManageService; @Autowired private CaseBoardService caseBoardService; @Autowired private faqBpardService faqBoardservice; @Autowired private ExamBoardService examBoardService; @RequestMapping(value = "/web/main/mainPage.do") public String siteMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception { /** 메인비주얼 */ model.addAttribute("mainzoneImg", this.mainzone()); // PC /** 팝업 괸리 */ model.addAttribute("popupList", this.Popup()); /** 알림창괸리 */ model.addAttribute("popupzoneImg", this.popupzone()); /** 배너괸리 */ model.addAttribute("bannerList", this.banner()); /** 공지사항 */ model.addAttribute("noticeList", this.bbsList("notice", 0, 5)); /** 뉴스레터 */ model.addAttribute("newsLetterList", this.bbsList("news", 0, 2)); /** 뉴스레터 */ model.addAttribute("faqList", this.faqList()); model.addAttribute("examList", this.examList()); return "web/main/mainPage"; } /** * 사용자 상단 매뉴 */ @RequestMapping(value = "/web/com/webCommonHeader.do") public String siteWebCommonHeader(@RequestParam Map commandMap, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model, HttpServletRequest request, HttpSession session) throws Exception { // 로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); // 권한별 메뉴표시 if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") { menuManageVO.setAuthorCode(userAuthority); } else if (userAuthority.equals("ROLE_ADMIN")) { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } else { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO); menuDepth2ChildCnt(menuResultList); model.addAttribute("menuResultList", menuResultList); return "web/com/webCommonHeader"; } /** * 사용자 footer */ @RequestMapping(value = "/web/com/webCommonFooter.do") public String siteWebCommonFooter(@RequestParam Map commandMap, HttpServletRequest request, ModelMap model) throws Exception { LoginLog loginLog = new LoginLog(); if (request.getRequestURI().contains("/web/main/mainPage.do")) { // 사용자 메인 loginLog.setProgrmFileNm("mainPage"); loginLog.setMenuNm("사용자메인"); } else if (request.getRequestURI().contains("/web/survey/surveyList")) { // 설문조사 loginLog.setProgrmFileNm("surveyList"); loginLog.setMenuNm("설문조사"); } else if (request.getRequestURI().contains("/web/content.do")) { // 컨텐츠 if (commandMap.get("proFn") != null) { MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("proFn"); tempMenuManageVO.setAuthorCode((String) commandMap.get("proFn")); MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO); loginLog.setProgrmFileNm((String) commandMap.get("proFn")); if (resultVO != null) { loginLog.setMenuNm(resultVO.getMenuNm()); } } } else if (commandMap.get("bbsId") != null) { // 나머지 모든 게시판 MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId")); tempMenuManageVO.setSearchCondition("bbsId"); MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO); loginLog.setProgrmFileNm((String) commandMap.get("bbsId")); if (resultVO != null) { loginLog.setMenuNm(resultVO.getMenuNm()); } } else { loginLog.setProgrmFileNm(null); } // 사용자 방문수 insert { // if(null == loginLogService.selectLoginUserLog(loginLog)){ //오늘날짜의 IP조회 SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyyMMdd", Locale.KOREA); Date currentTime = new Date(); String mTime = mSimpleDateFormat.format(currentTime); HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()) .getRequest(); String ip = req.getHeader("X-FORWARDED-FOR"); if (ip == null) { ip = req.getRemoteAddr(); } loginLog.setLoginIp(ip); loginLog.setCreatDt(mTime); loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); loginLog.setErrorCode(""); loginLog.setUserAt("U"); Object obj = EgovUserDetailsHelper.getAuthenticatedUser(); if (obj != null && !"anonymousUser".equals(obj)) { LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); loginLog.setLoginId(loginVO.getId()); } else { loginLog.setLoginId(""); } if (isMobile(request)) { loginLog.setDeviceType("M"); } else { loginLog.setDeviceType("P"); } if (null != request.getQueryString() && !"".equals(request.getQueryString())) { loginLog.setUrl(request.getRequestURI() + "?" + request.getQueryString()); } else { loginLog.setUrl(request.getRequestURI()); } // loginLogService.logInsertLoginLog(loginLog); // loginLogService.logInsertLoginLogNewStep1(loginLog); // } // 오늘 접속 / 최종접속 // LoginLog footerLog = new LoginLog(); // footerLog = loginLogService.selectLogCnt(footerLog); // model.addAttribute("footerLog", footerLog); } // model.addAttribute("loginLog", loginLog); return "web/com/webCommonFooter"; } /** * 사용자 만족도 관리/매뉴 담당자 가져오기 */ @RequestMapping(value = "/web/com/webSatisCommonFooter.do") public String siteWebSatisCommonFooter(@RequestParam Map commandMap, HttpServletRequest request, ModelMap model, Model model2) throws Exception { MenuManageVO tempMenuManageVO = new MenuManageVO(); String url = request.getRequestURI(); String AuthorCode = "ROLE_ANONYMOUS"; // 해당 푸터는 데코레이트에서 */web/*만 타므로 무조건 사용자 메뉴이다. if (request.getRequestURI().contains("/web/content.do")) { tempMenuManageVO.setSearchCondition("proFn"); tempMenuManageVO.setAuthorCode(AuthorCode); tempMenuManageVO.setSearchKeyword((String) commandMap.get("proFn")); url += "?proFn=" + commandMap.get("proFn"); } else if (commandMap.get("bbsId") != null) { tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId")); tempMenuManageVO.setSearchCondition("bbsId"); tempMenuManageVO.setAuthorCode(AuthorCode); url += "?" + commandMap.get("bbsId"); } else { String tempUrl = request.getRequestURI(); ComDefaultVO searchVO = new ComDefaultVO(); searchVO.setSearchKeyword(tempUrl); ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO); if (null != progrmManageVO) { tempMenuManageVO.setSearchCondition("Y"); tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm()); } } MenuManageVO resultVO = menuManageService.selectMenuManage_Satis(tempMenuManageVO); model.addAttribute("resultVO", resultVO); model.addAttribute("url", url); return "web/com/webSatisCommonFooter"; } /** * 사용자 footer */ @RequestMapping(value = "/{siteId}/web/com/webThemeCommonFooter.do") public String webThemeCommonFooter(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, ModelMap model) throws Exception { LoginLog loginLog = new LoginLog(); if (request.getRequestURI().contains("/web/main/mainPage.do")) { // 사용자 메인 loginLog.setProgrmFileNm("mainPage"); loginLog.setMenuNm("사용자메인"); } else if (request.getRequestURI().contains("/web/survey/surveyList")) { // 설문조사 loginLog.setProgrmFileNm("surveyList"); loginLog.setMenuNm("설문조사"); } else if (request.getRequestURI().contains("/web/content.do")) { // 컨텐츠 if (commandMap.get("proFn") != null) { MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("proFn"); tempMenuManageVO.setAuthorCode((String) commandMap.get("proFn")); MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO); loginLog.setProgrmFileNm((String) commandMap.get("proFn")); if (resultVO != null) { loginLog.setMenuNm(resultVO.getMenuNm()); } } } else if (commandMap.get("bbsId") != null) { // 나머지 모든 게시판 MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchKeyword((String) commandMap.get("bbsId")); tempMenuManageVO.setSearchCondition("bbsId"); /* * ComDefaultVO searchVO = new ComDefaultVO(); * searchVO.setSearchCondition("bbsId"); * searchVO.setSearchKeyword((String)commandMap.get("bbsId")); */ MenuManageVO resultVO = menuManageService.selectMenuManage(tempMenuManageVO); loginLog.setProgrmFileNm((String) commandMap.get("bbsId")); if (resultVO != null) { loginLog.setMenuNm(resultVO.getMenuNm()); } } else { loginLog.setProgrmFileNm(null); } // 사용자 방문수 insert { if (loginLog.getProgrmFileNm() != null) { // 미리보기 경우가 아닌경우 SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat("yyyyMMdd", Locale.KOREA); Date currentTime = new Date(); String mTime = mSimpleDateFormat.format(currentTime); HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()) .getRequest(); String ip = req.getHeader("X-FORWARDED-FOR"); if (ip == null) { ip = req.getRemoteAddr(); } loginLog.setLoginIp(ip); loginLog.setCreatDt(mTime); loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N"); loginLog.setErrorCode(""); loginLog.setUserAt("U"); loginLog.setLoginId(""); // connnect_id if (isMobile(request)) { loginLog.setDeviceType("M"); } else { loginLog.setDeviceType("P"); } loginLogService.logInsertLoginLog(loginLog); } } model.addAttribute("loginLog", loginLog); model.addAttribute("siteId", siteId); String siteFolder = "site/" + siteId; if (siteId.equals("linc") || siteId.equals("klc")) { return "web/" + siteFolder + "/com/webCommonFooter"; } else { SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); setSiteinfo(siteManagerVO, model, request); // return // "web/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()+"/com/webCommonFooter"; return "web/site/" + siteId + "/" + siteManagerVO.getIsMobile() + "/com/webCommonFooter"; } } /* 모바일접속 유무 */ private boolean isMobile(HttpServletRequest request) { String userAgent = request.getHeader("user-agent"); boolean mobile1 = userAgent.matches( ".*(iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson).*"); boolean mobile2 = userAgent.matches(".*(LG|SAMSUNG|Samsung).*"); if (mobile1 || mobile2) { return true; } return false; } /* 최초 사이트 체크와 동시에 session 설정, 점검중 페이지 적용 */ @RequestMapping(value = "/com/firstSiteCheck.do") public String firstSiteCheck(@ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, HttpServletRequest request, @RequestParam Map commandMap, ModelMap model) throws Exception { // 로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); // 권한별 메뉴표시 if (!userAuthority.equals("ROLE_ADMIN") /* && !userAuthority.equals("ROLE_ADR_ADMIN") */ && userAuthority != "") { menuManageVO.setAuthorCode(userAuthority); } else if (userAuthority.equals("ROLE_ADMIN") || userAuthority.equals("ROLE_ADR_ADMIN")) { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } else { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } // 대국민, 조정위원일 경우 원뎁스 메뉴에 대시보드 링크를 걸기위해 권한 넘겨줌 model.addAttribute("auth", menuManageVO.getAuthorCode()); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO); List menuTwoExist = new ArrayList<>(); // 2뎁스의 하위 매뉴가 있는것 조회 HashSet underMenuEmpty = new HashSet(); // 2뎁스의 하위매뉴 없는것 조회 for (MenuManageJTreeVO menuManage : menuResultList) { if (menuManage.getDepths().equals("3")) { menuTwoExist.add(menuManage.getUpperMenuId()); } if (menuManage.getDepths().equals("2")) { underMenuEmpty.add(menuManage.getMenuNo()); } } HashSet underMenuExist = new HashSet(menuTwoExist); // 하위매뉴가 있는것 underMenuEmpty.removeAll(underMenuExist); // 하위매뉴가 없는것 MenuManageJTreeVO menuManageTopVO = new MenuManageJTreeVO(); menuManageTopVO.setUpperMenuId("#"); menuManageTopVO.setMenuNo("0"); model.addAttribute("menuResultList", menuResultList); model.addAttribute("underMenuExist", underMenuExist); model.addAttribute("underMenuEmpty", underMenuEmpty); // 자신의 위치 정보 List menuCurrentResultList = new ArrayList(); // 자신의 위치 MenuManageVO resultVO = new MenuManageVO(); MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("Y"); setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO); menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO); Collections.reverse(menuCurrentResultList); // 타이틀 역순을 위해 model.addAttribute("menuCurrentResultList", menuCurrentResultList); // SiteManagerVO siteManagerVO = new SiteManagerVO(); // 점검중 페이지 체크 // siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO); // if("Y".equals(siteManagerVO.getInspFlag() )){ //점검중 // return "web/com/insp"; // } // SSO 토큰 유효시간 timeout 시 메인페이지로 이동 // if(!"".equals(request.getSession().getAttribute("SsoLogout"))) { // if(request.getSession().getAttribute("SsoLogout") != null) { // request.removeAttribute("SsoLogout"); // return "redirect:/"; // } // } // model.addAttribute("siteManagerVO", siteManagerVO); return "web/com/webLayout"; } /* 사이트 체크 유무 */ @RequestMapping(value = "/{siteId}/web/siteCheck.do") private String siteCheck(@PathVariable("siteId") String siteId, SiteManagerVO siteManagerVO, HttpServletRequest request, RedirectAttributes redirectAttributes) { int totCnt = 0; siteManagerVO.setSiteId(siteId); try { totCnt = egovSiteManagerService.selectSiteManagerListTotCnt(siteManagerVO); } catch (Exception e) { System.out.println("Exception Occured!!!"); } if (totCnt == 0) { return "web/com/alert_site"; /* * redirectAttributes.addFlashAttribute("message", "등록된 사이트가 없습니다."); * RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/blank"); return * redirectUrlMaker.getRedirectUrl(); */ } else { return "blank"; } // return "web/main/mainPage"; } private void setViewMenu(HttpServletRequest request, Map commandMap, MenuManageVO tempMenuManageVO, MenuManageVO resultVO, MenuManageJTreeVO menuManageVO) throws Exception { if (request.getRequestURI().contains("/web/survey_back")) {// 설문조사(각 사이트 마다 이름이 달라) survey > survey_back 으로 사용한 tempMenuManageVO.setSearchKeyword("surveyList"); } else if (request.getRequestURI().contains("schdlr")) { // 스케줄러 경우(일,월,년 url이 달라 tempMenuManageVO.setSearchKeyword("schdlrManage"); } else if (null != (String) commandMap.get("proFn") || null != (String) commandMap.get("bbsId") || null != (String) commandMap.get("nttId")) { // 컨텐츠 타입, 게시판 타입의 경우 if (null != (String) commandMap.get("proFn")) { // 컨텐츠 tempMenuManageVO.setSearchKeyword((String) commandMap.get("proFn")); } else if (null != (String) commandMap.get("bbsId")) { // 게시판 ComDefaultVO searchVO = new ComDefaultVO(); String url = progrmManageService.getBbsUrlByNttId((String) commandMap.get("bbsId")); searchVO.setSearchKeyword(url); ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO); if (null != progrmManageVO) { tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm()); } } else { // nttId 통합검색시 BoardVO tempBoardVO = new BoardVO(); tempBoardVO.setNttId(Integer.parseInt((String) commandMap.get("nttId"))); BoardMasterVO bmVO = bbsAttrbService.selectBbsIdByNttId(tempBoardVO); ComDefaultVO searchVO = new ComDefaultVO(); String url = progrmManageService.getBbsUrlByNttId(bmVO == null ? "" : bmVO.getBbsId()); searchVO.setSearchKeyword(url); ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO); if (null != progrmManageVO) { tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm()); } } } else { // ajax 로 검색시 // 일반 프로그램시 if (commandMap.get("url") != null) { String menuUrl = request.getRequestURI(); if (menuUrl.equals("/web/cop/org/selectOrgDetail.do")) { menuUrl = "/web/cop/org/selectOrgList.do"; } /* 메뉴에 표시되는 방법 */ else if (menuUrl.equals("/web/kccadr/adjstExpDetail/adjstReqStatusDetail.do") // 체험하기 || menuUrl.equals("/web/kccadr/adjstExp/adjstIncidentList.do") || menuUrl.equals("/web/kccadr/adjstExpDetail/adjstIncidentEndDetail.do")) { // 체험하기 menuUrl = "/web/kccadr/adjstExp/adjstExpMainPage.do"; } /* 분쟁조정 상담 > 무료법률 상담 */ else if(menuUrl.contains("/web/user/lawCounsel/case/02/159/step")) { menuUrl = "/web/user/lawCounsel/case/02/159/step01.do"; } // 상세화면 URL로 메뉴화면 매핑이 안되어, 문자열 치환으로 매핑... String strUrl = menuUrl/* .replace("Info", "List") */ .replace("Detail", "List") /* .replace("Regist", "List") */ .replace("Article", "List").replace("Inqire", "List").replace("addFcltMgr", "fcltMgrList") .replace("mainzoneModify", "mainzoneList"); menuUrl = strUrl; ComDefaultVO searchVO = new ComDefaultVO(); searchVO.setSearchKeyword(menuUrl); ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO); if (null != progrmManageVO) { tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm()); } } else { // 조직도 상세 String menuUrl = request.getRequestURI(); if (menuUrl.equals("/web/cop/org/selectOrgDetail.do")) { menuUrl = "/web/cop/org/selectOrgList.do"; ComDefaultVO searchVO = new ComDefaultVO(); searchVO.setSearchKeyword(menuUrl); ProgrmManageVO progrmManageVO = progrmManageService.selectProgrmUrl(searchVO); if (null != progrmManageVO) { tempMenuManageVO.setSearchKeyword(progrmManageVO.getProgrmFileNm()); } } } } if (!"dir".equals(tempMenuManageVO.getSearchKeyword())) { resultVO = menuManageService.selectMenuManage(tempMenuManageVO); } // menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); if (resultVO != null) { menuManageVO.setMenuNo(resultVO.getMenuNo() + ""); } } /** * 사용자 페이지의 네비 상단 매뉴 */ @RequestMapping(value = "/web/com/naviWrap.do") public String siteWebCommonNaviWrap(@RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { // 전자조정 시작 // 아래 처리중 중간네비 메뉴 조회를 위해 with recurseive 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요 // 로그인 권한 정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; String auth = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); if (auth.equals("")) { auth = "ROLE_ANONYMOUS"; } // 현재 로그인한 권한으로 셋팅해준다. menuManageVO.setAuthorCode(auth); // 자신의 위치 정보 List menuCurrentResultList = new ArrayList(); // 자신의 위치 List menuLeftResultList = new ArrayList(); // 자신이 속한 위치 MenuManageVO resultVO = new MenuManageVO(); MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("Y"); setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO); menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO); // 최상단 매뉴 가져오기 : 상단 그림 변화 menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO); List showOneDepthMenu = new ArrayList(); List showTwoDepthMenu = new ArrayList(); for (MenuManageJTreeVO tempLeftMenu : menuLeftResultList) { if (tempLeftMenu.getDepths().equals("2")) { for (MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList) { if (tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())) { showTwoDepthMenu.add(tempLeftMenu); } } } } menuManageVO.setAuthorCode(auth); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO); for (MenuManageJTreeVO tempResultVo : menuResultList) { // 1 뎁스 if (tempResultVo.getDepths().equals("1")) { showOneDepthMenu.add(tempResultVo); } } // model.addAttribute("topMenuId", topMenuId); // model.addAttribute("subMenuFile", subMenuFile); // model.addAttribute("pozNmText", pozNmText); // // model.addAttribute("menuText", menuText); model.addAttribute("showOneDepthMenu", showOneDepthMenu); model.addAttribute("showTwoDepthMenu", showTwoDepthMenu); // model.addAttribute("showThreeDepthMenu", showThreeDepthMenu); // model.addAttribute("showFourDepthMenu", showFourDepthMenu); // model.addAttribute("menuUnderResultList", menuUnderResultList); //하단매뉴 model.addAttribute("menuCurrentResultList", menuCurrentResultList); model.addAttribute("menuLeftResultList", menuLeftResultList); // model.addAttribute("menuResultList", menuResultList); // 아래 처리중 중간네비 메뉴 조회를 위해 with recurseive 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요 // 전자조정 종료 return "web/com/webCommonNaviWrap"; } /** * 사용자 좌측 매뉴 */ @RequestMapping(value = "/web/com/leftMenu.do") public String webCommonLeftMenu(HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model, @RequestParam Map commandMap) throws Exception { // 로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); // 권한별 메뉴표시 if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") { menuManageVO.setAuthorCode(userAuthority); } else if (userAuthority.equals("ROLE_ADMIN")) { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } else { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } // 자신의 위치 정보 List menuCurrentResultList = new ArrayList(); List whereAmIList = new ArrayList(); MenuManageVO resultVO = new MenuManageVO(); MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("Y"); setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO); menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWebCustom(menuManageVO); MenuManageJTreeVO whereAmIVO = new MenuManageJTreeVO(); if (menuCurrentResultList != null && menuCurrentResultList.size() > 0) { whereAmIVO = menuCurrentResultList.get(0); whereAmIVO.setAuthorCode(menuManageVO.getAuthorCode()); whereAmIList = menuCreateManageService.selectMenuListJtreeWebCustom(whereAmIVO); } List> depth2CntList = new ArrayList>(); for(MenuManageJTreeVO tmpVO : whereAmIList.stream().filter(t -> "2".equals(t.getDepth())).collect(Collectors.toList())) { Map depth2Cnt = new HashMap(); Integer tmpInt = 0; tmpInt = (int) whereAmIList.stream().filter(t -> t.getDepth().equals("3") && tmpVO.getMenuNo().equals(t.getUpperMenuId()) ).count(); depth2Cnt.put("menuNo", tmpVO.getMenuNo()); depth2Cnt.put("cnt", tmpInt); depth2CntList.add(depth2Cnt); } model.addAttribute("depth2CntList", depth2CntList); model.addAttribute("whereAmIVO", whereAmIVO); MenuManageJTreeVO whereAmIVO_dep2 = new MenuManageJTreeVO(); if (whereAmIList != null && whereAmIList.size() > 0) { whereAmIVO_dep2 = whereAmIList.stream().filter(t -> menuManageVO.getMenuNo().equals(t.getMenuNo()) ).findFirst().get(); if("2".equals(whereAmIVO_dep2.getDepth())) { model.addAttribute("whereAmIVO_dep2", whereAmIVO_dep2.getMenuNo()); }else { model.addAttribute("whereAmIVO_dep2", whereAmIVO_dep2.getUpperMenuId()); } } model.addAttribute("whereAmIList", whereAmIList); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO); model.addAttribute("menuResultList", menuResultList); return "web/com/webCommonLeftMenu"; } private void setSiteinfo(SiteManagerVO siteManagerVO, ModelMap model, HttpServletRequest request) throws Exception { SiteManagerVO tempSiteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO); if (tempSiteManagerVO != null) { siteManagerVO.setIsMobile("pc"); siteManagerVO.setTheme(tempSiteManagerVO.getTheme()); siteManagerVO.setSiteNm(tempSiteManagerVO.getSiteNm()); } else { siteManagerVO.setTheme("01"); siteManagerVO.setSiteNm("타이틀"); } WebUtil util = new WebUtil(); if (util.isMobile(request)) { siteManagerVO.setIsMobile("mobile"); } model.addAttribute("siteId", siteManagerVO.getSiteId()); model.addAttribute("siteNm", siteManagerVO.getSiteNm()); // model.addAttribute("site_path" , // "/site/theme_"+siteManagerVO.getTheme()+"/"+siteManagerVO.getIsMobile()); model.addAttribute("site_path", "/site/" + siteManagerVO.getSiteId() + "/" + siteManagerVO.getIsMobile()); } /* * @RequestMapping(value="/{siteId}/web/siteMap.do") public String * siteMap(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest * request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, * ModelMap model) throws Exception { * * model.addAttribute("siteId", siteId); String siteFolder = "site/"+siteId ; * * model.addAttribute("site_path", "/"+siteFolder); return * "web/"+siteFolder+"/member/sitemap"; * * } */ // 사이트맵 개발 @RequestMapping(value = "/{siteId}/web/siteMap.do") public String siteMap(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); // List menuResultList = // menuCreateManageService.selectMenuListJtree(menuManageVO) ; menuManageVO.setSiteId(siteId); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO); List menuTwoExist = new ArrayList<>(); // 2뎁스의 하위 매뉴가 있는것 조회 HashSet underMenuEmpty = new HashSet(); // 2뎁스의 하위매뉴 없는것 조회 for (MenuManageJTreeVO menuManage : menuResultList) { if (menuManage.getDepths().equals("3")) { menuTwoExist.add(menuManage.getUpperMenuId()); } if (menuManage.getDepths().equals("2")) { underMenuEmpty.add(menuManage.getMenuNo()); } } HashSet underMenuExist = new HashSet(menuTwoExist); // 하위매뉴가 있는것 underMenuEmpty.removeAll(underMenuExist); // 하위매뉴가 없는것 MenuManageJTreeVO menuManageTopVO = new MenuManageJTreeVO(); menuManageTopVO.setUpperMenuId("#"); menuManageTopVO.setMenuNo("0"); model.addAttribute("menuResultList", menuResultList); model.addAttribute("underMenuExist", underMenuExist); model.addAttribute("underMenuEmpty", underMenuEmpty); model.addAttribute("siteId", siteId); String siteFolder = "site/" + siteId; model.addAttribute("site_path", "/" + siteFolder); // 샘플테마사용시 고정 이미지 가져오기 SiteManagerVO siteManagerVO = new SiteManagerVO(); siteManagerVO.setSiteId(siteId); siteManagerVO = egovSiteManagerService.selectSiteManagerVO(siteManagerVO); if (!"".equals(siteManagerVO.getTheme()) && null != siteManagerVO.getTheme()) { model.addAttribute("siteManagerVO", siteManagerVO); } return "web/" + siteFolder + "/member/sitemap"; } /** * 사용자 페이지의 네비 상단 매뉴 */ @RequestMapping(value = "/{siteId}/web/com/naviWrapAjax.do") public String ajaxSiteWebCommonNaviWrap(@PathVariable("siteId") String siteId, @RequestParam Map commandMap, HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model) throws Exception { // 자신의 위치 정보 List menuCurrentResultList = new ArrayList(); // 자신의 위치 List menuLeftResultList = new ArrayList(); // 자신이 속한 위치 List menuUnderResultList = new ArrayList(); // 한단계 하위 위치 MenuManageVO resultVO = new MenuManageVO(); MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("Y"); setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO); menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWeb(menuManageVO); // 최상단 매뉴 가져오기 : 상단 그림 변화 menuLeftResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO); menuUnderResultList = menuCreateManageService.selectMenuUnderListJtreeWeb(menuManageVO); List showOneDepthMenu = new ArrayList(); List showTwoDepthMenu = new ArrayList(); List showThreeDepthMenu = new ArrayList(); List showFourDepthMenu = new ArrayList(); for (MenuManageJTreeVO tempLeftMenu : menuLeftResultList) { if (tempLeftMenu.getDepths().equals("2")) { for (MenuManageJTreeVO tempCurrentTwoMenu : menuCurrentResultList) { if (tempLeftMenu.getUpperMenuId().equals(tempCurrentTwoMenu.getMenuNo())) { showTwoDepthMenu.add(tempLeftMenu); } } } if (tempLeftMenu.getDepths().equals("3")) { for (MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList) { if (tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())) { showThreeDepthMenu.add(tempLeftMenu); } } } if (tempLeftMenu.getDepths().equals("4")) { for (MenuManageJTreeVO tempCurrentThreeMenu : menuCurrentResultList) { if (tempLeftMenu.getUpperMenuId().equals(tempCurrentThreeMenu.getMenuNo())) { showFourDepthMenu.add(tempLeftMenu); } } } } menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); menuManageVO.setMenuUserType(menuManageVO.getMenuUserType()); List menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO); for (MenuManageJTreeVO tempResultVo : menuResultList) { // 1 뎁스 if (tempResultVo.getDepths().equals("1")) { showOneDepthMenu.add(tempResultVo); } } model.addAttribute("showOneDepthMenu", showOneDepthMenu); model.addAttribute("showTwoDepthMenu", showTwoDepthMenu); model.addAttribute("showThreeDepthMenu", showThreeDepthMenu); model.addAttribute("showFourDepthMenu", showFourDepthMenu); model.addAttribute("menuUnderResultList", menuUnderResultList); // 하단매뉴 model.addAttribute("menuCurrentResultList", menuCurrentResultList); model.addAttribute("menuLeftResultList", menuLeftResultList); model.addAttribute("menuResultList", menuResultList); model.addAttribute("siteId", siteId); String siteFolder = "site/" + siteId; model.addAttribute("site_path", "/" + siteFolder); return "web/" + siteFolder + "/com/webCommonNaviWrapAjax"; } /* 메일전송 첨부파일등록/수정 view */ @RequestMapping(value = "/kcc/mail/itnSendMailForm.do") public String intSendMailForm(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, Model model, HttpSession session) throws Exception { List fmsFileList = new ArrayList(); model.addAttribute("fmsFileList", fmsFileList); // fms파일정보 List fileList = new ArrayList<>(); model.addAttribute("fileList", fileList); return "uss/ion/fms/ItnSendMailForm"; } /* 메일전송 process */ @RequestMapping(value = "/kcc/mail/itnSendMailPro.do") public ModelAndView insertFmsFileOrg(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, final MultipartHttpServletRequest multiRequest, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); String recipient = Globals_email_toEmail; // 받는 사람의 메일주소를 입력해주세요. Properties props = System.getProperties(); // SMTP 서버 정보 설정 props.put("mail.smtp.host", Globals_email_host); props.put("mail.smtp.port", Globals_email_port); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.trust", Globals_email_host); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { // Session 생성 protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(Globals_email_fromUser, Globals_email_fromEmail_password); } }); // 테스트용 String revRecipient = (String) commandMap.get("emailAddrRev"); try { Message message = new MimeMessage(session); // MimeMessage 생성 message.setFrom(new InternetAddress(Globals_email_fromEmail)); // 발신자 셋팅 , 보내는 사람의 이메일주소를 한번 더 입력합니다. 이때는 // 이메일 풀 주소를 다 작성해주세요. message.setRecipient(Message.RecipientType.TO, new InternetAddress(revRecipient)); // 수신자셋팅 message.addRecipient(Message.RecipientType.BCC, new InternetAddress(Globals_email_toEmail_BCC)); // 숨은참조자 message.setSubject((String) commandMap.get("subject")); // 제목셋팅 // 메일 내용을 설정을 위한 클래스를 설정합니다. message.setContent(new MimeMultipart()); // 메일 내용을 위한 Multipart클래스를 받아온다. (위 new MimeMultipart()로 넣은 클래스입니다.) Multipart multipart = (Multipart) message.getContent(); // html 형식으로 본문을 작성해서 바운더리에 넣습니다. StringBuffer contentBf = new StringBuffer(); contentBf.append("<작성자 메일주소 >: " + (String) commandMap.get("emailAddr")); contentBf.append("\r\n"); contentBf.append("\r\n"); contentBf.append("\r\n"); contentBf.append("<내용> "); contentBf.append("\r\n"); contentBf.append((String) commandMap.get("content")); multipart.addBodyPart(getContents(contentBf.toString())); /* 파일등록 */ List result = null; String uploadFolder = ""; final Map files = multiRequest.getFileMap(); FileVO vo = null; String realFileLoc = ""; if (!files.isEmpty()) { result = fileUtil.parseFileInf(files, "MAIL_", 0, "", uploadFolder, ""); Iterator iter = result.iterator(); while (iter.hasNext()) { vo = iter.next(); realFileLoc = vo.getFileStreCours() + vo.getStreFileNm(); // addMulitAttachment(multipart , "C:"+realFileLoc , vo.getOrignlFileNm()); addMulitAttachment(multipart, realFileLoc, vo.getOrignlFileNm()); } if (vo == null) { } else { } } Transport.send(message); } catch (Exception e) { System.out.println("file Exception Error"); } return modelAndView; } @RequestMapping(value = "/web/kccadr/kccadrCom/kccadrConstantsJsp.do") public String kccadrConstantsJsp() throws Exception { return "web/kccadr/kccadrCom/kccadrConstantsJsp"; } /** * 사용자 퀵 매뉴 */ @RequestMapping(value = "/web/com/quickWrap.do") public String webCommonQuickMenu(ModelMap model) throws Exception { return "web/com/webCommonQuickMenu"; } /** * 사용자 좌측 매뉴 */ @RequestMapping(value = "/web/com/subVisual.do") public String webCommonSubVisual(HttpServletRequest request, @ModelAttribute("menuManageVO") MenuManageJTreeVO menuManageVO, ModelMap model, @RequestParam Map commandMap) throws Exception { // 로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated() ? (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser() : null; String userAuthority = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority()); if (!userAuthority.equals("ROLE_ADMIN") && userAuthority != "") { menuManageVO.setAuthorCode(userAuthority); } else if (userAuthority.equals("ROLE_ADMIN")) { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } else { menuManageVO.setAuthorCode("ROLE_ANONYMOUS"); } // 자신의 위치 정보 List menuCurrentResultList = new ArrayList(); List whereAmIList = new ArrayList(); MenuManageVO resultVO = new MenuManageVO(); MenuManageVO tempMenuManageVO = new MenuManageVO(); tempMenuManageVO.setSearchCondition("Y"); setViewMenu(request, commandMap, tempMenuManageVO, resultVO, menuManageVO); menuCurrentResultList = menuCreateManageService.selectMenuListCurrentJtreeWebCustom(menuManageVO); MenuManageJTreeVO whereAmIVO = new MenuManageJTreeVO(); if (menuCurrentResultList != null && menuCurrentResultList.size() > 0) { whereAmIVO = menuCurrentResultList.get(0); whereAmIVO.setAuthorCode(menuManageVO.getAuthorCode()); whereAmIList = menuCreateManageService.selectMenuListJtreeWebCustom(whereAmIVO); } model.addAttribute("whereAmIVO", whereAmIVO); return "web/com/webCommonSubVisual"; } // 다수의 파일 첨부 파일을 로컬로 부터 읽어와서 BodyPart 클래스로 만든다. (바운더리 변환) private void addMulitAttachment(Multipart multipart, String realFileLoc, String filename) throws MessagingException { try { DataSource source = new FileDataSource(realFileLoc); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(MimeUtility.encodeText(filename)); // 한글깨짐방지 multipart.addBodyPart(messageBodyPart); } catch (UnsupportedEncodingException e) { System.out.println("UnsupportedEncodingException Occured!!!"); } } // 메일의 본문 내용 설정 private BodyPart getContents(String html) throws MessagingException { BodyPart mbp = new MimeBodyPart(); mbp.setText(html); // setText를 이용할 경우 일반 텍스트 내용으로 설정된다. // html 형식으로 설정(줄개행 > br로) // mbp.setContent(html.replaceAll("(\r\n|\n)", "
"), "text/html; // charset=utf-8"); //줄바꿈이 필요해서 return mbp; } private void menuDepth2ChildCnt(List menuResultList) { List list = new ArrayList(menuResultList.stream().filter(t -> "2".equals(t.getDepths())).collect(Collectors.toList())); for(MenuManageJTreeVO tmpVO : list) { tmpVO.setChildMenuCnt( new Long(menuResultList.stream() .filter( t -> tmpVO.getMenuNo().equals(t.getUpperMenuId()) ) .count() ).intValue() ); } } /** * @methodName : mainzone * @author : JunHo Lee * @date : 2024.10.10 * @description : * @return */ private EgovMap mainzone(){ /** EgovPropertyService.sample */ MainzoneVO mainzoneVO = new MainzoneVO(); mainzoneVO.setPageUnit(propertiesService.getInt("pageUnit")); mainzoneVO.setPageSize(propertiesService.getInt("pageSize")); CmmUtil.getPageing(mainzoneVO, 10); /** pageing */ mainzoneVO.setUseYn("Y"); // 사용하는것만 mainzoneVO.setDeviceType("P"); // PC List mainzoneList = new ArrayList<>(); try { mainzoneList = (List)egovPopupManageService.selectMainzoneList(mainzoneVO); } catch (Exception e) { } // 상단메인 이미지 if(mainzoneList.size() > 0) { mainzoneList.sort(Comparator.comparing((EgovMap map) -> Integer.valueOf(((BigDecimal) map.get("sort")).intValue()))); } return mainzoneList.stream().findFirst().orElse(null); } /** * @methodName : Popup * @author : JunHo Lee * @date : 2024.10.10 * @description : * @return */ private List Popup(){ PopupManageVO popupManageVO = new PopupManageVO(); popupManageVO.setRecordCountPerPage(10); // 10개만 popupManageVO.setNtceAt("Y"); // 사용만 popupManageVO.setMainPageFlag("Y"); // 메인화면의 용도(시작일 종료일 사이 조회) List popupList = new ArrayList<>(); try { popupList = egovPopupManageService.selectPopupMainList(popupManageVO); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return popupList; } /** * @methodName : popupzone * @author : JunHo Lee * @date : 2024.10.10 * @description : * @return */ private EgovMap popupzone(){ /** 알림창괸리 */ PopupzoneVO popupzoneVo = new PopupzoneVO(); popupzoneVo.setFirstIndex(0); popupzoneVo.setSeCd("02"); // 좌측팝업 popupzoneVo.setUseYn("Y"); popupzoneVo.setSearchSortCnd("MB.sort"); popupzoneVo.setSearchSortOrd("ASC"); List popupzoneList = new ArrayList<>(); try { popupzoneList = (List)egovPopupManageService.selectPopupzoneList(popupzoneVo); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if(popupzoneList.size() > 0) { popupzoneList.sort(Comparator.comparing((EgovMap map) -> Integer.valueOf(((BigDecimal) map.get("sort")).intValue()))); } return popupzoneList.stream().findFirst().orElse(null); } /** * @methodName : banner * @author : JunHo Lee * @date : 2024.10.10 * @description : * @return */ private List banner(){ BannerVO bannerVO = new BannerVO(); bannerVO.setFirstIndex(0); bannerVO.setRecordCountPerPage(999); List bannerList = new ArrayList<>(); try { bannerList = egovBannerService.selectBannerList(bannerVO); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return bannerList; } /** * @methodName : bbsNoticeNews * @author : JunHo Lee * @date : 2024.10.10 * @description : * @param boardIdx * @param pageStart * @param perPageNum * @return */ private List> bbsList(String boardIdx, int pageStart, int perPageNum){ Map paramMap = new HashMap(); //페이징 관련 paramMap.put("pageStart", pageStart); paramMap.put("perPageNum", perPageNum); paramMap.put("boardIdx", boardIdx); List> bbsList = caseBoardService.boardList(paramMap); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // 공지로 등록된 항목 맨 위로 // 시간 변환 bbsList = bbsList.stream() .sorted((map1, map2) -> { String noticeYn1 = (String) map1.get("noticeYn"); String noticeYn2 = (String) map2.get("noticeYn"); if (noticeYn1 == null && noticeYn2 == null) return 0; // 둘 다 null인 경우 if (noticeYn1 == null) return 1; // noticeYn1이 null이면 뒤로 보냄 if (noticeYn2 == null) return -1; // noticeYn2가 null이면 뒤로 보냄 return noticeYn2.compareTo(noticeYn1); }) .peek(map -> { Timestamp regTimestamp = (Timestamp) map.get("BBS_REG_DATE"); if (regTimestamp != null) { LocalDate date = regTimestamp.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); map.put("BBS_REG_DATE", date.format(formatter)); } }) .collect(Collectors.toList()); return bbsList; } private List> faqList(){ Map paramMap = new HashMap(); paramMap.put("PAGESTART", 0); paramMap.put("PERPAGENUM", 5); List> bbsList = faqBoardservice.boardListAllFaq(paramMap); bbsList.stream() .forEach(t -> { String faqSetIdx = t.get("FAQ_SETIDX").toString(); //조정신청 if(SeedConstants.FAQ_JOJUNGSINCHUNG.equals(faqSetIdx)) { t.put("bbsTypeNm", "조정신청"); t.put("bbsTypeUrl", "/web/user/faqBbs/case/101/147/faq101Detail.do?faqSeq="+ t.get("FAQ_SEQ_NUMBER").toString() +"&page=1&searchType=title&searchTilte="); } //절차진행 else if(SeedConstants.FAQ_JULCHAJINHENG.equals(faqSetIdx)) { t.put("bbsTypeNm", "절차진행"); t.put("bbsTypeUrl", "/web/user/faqBbs/case/102/148/faq102Detail.do?faqSeq="+ t.get("FAQ_SEQ_NUMBER").toString() +"&page=1&searchType=title&searchTilte="); } //절차종료 else if(SeedConstants.FAQ_JULCHAJONGRYO.equals(faqSetIdx)) { t.put("bbsTypeNm", "절차종료"); t.put("bbsTypeUrl", "/web/user/faqBbs/case/103/149/faq103Detail.do?faqSeq="+ t.get("FAQ_SEQ_NUMBER").toString() +"&page=1&searchType=title&searchTilte="); } }); return bbsList; } private List> examList(){ List> bbsList = new ArrayList<>(); for( int i = Integer.valueOf(SeedConstants.EXAM_GONGJUNG) ; i < Integer.valueOf(SeedConstants.EXAM_DAERIJUM)+1 ; i ++ ) { Map paramMap = new HashMap(); paramMap.put("pageStart", 0); paramMap.put("perPageNum", 1); paramMap.put("boardIdx", String.valueOf(i)); List> tmpList = new ArrayList<>(examBoardService.boardList(paramMap)); if(tmpList.size() > 0) { bbsList.add(tmpList.get(0)); } } bbsList.stream().forEach(t -> { String examId = t.get("EXAM_ID").toString(); if(SeedConstants.EXAM_GONGJUNG.equals(examId)){ t.put("menuNm", "공정거래"); t.put("titleColor", "orange"); t.put("url", "/web/user/exam/case/402/162/exam402Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte="); } else if(SeedConstants.EXAM_GAMENG.equals(examId)){ t.put("menuNm", "가맹사업거래"); t.put("titleColor", "red"); t.put("url", "/web/user/exam/case/403/163/exam403Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte="); } else if(SeedConstants.EXAM_HADO.equals(examId)){ t.put("menuNm", "하도급거래"); t.put("titleColor", "yellow"); t.put("url", "/web/user/exam/case/404/164/exam404Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte="); } else if(SeedConstants.EXAM_DAEGYUMO.equals(examId)){ t.put("menuNm", "대규모유통업거래"); t.put("titleColor", "darkorange"); t.put("url", "/web/user/exam/case/405/165/exam405Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte="); } else if(SeedConstants.EXAM_BULGONGJUNG.equals(examId)){ t.put("menuNm", "불공정약관"); t.put("titleColor", "darkred"); t.put("url", "/web/user/exam/case/406/166/exam406Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte="); } else if(SeedConstants.EXAM_DAERIJUM.equals(examId)){ t.put("menuNm", "대리점거래"); t.put("titleColor", "darkyellow"); t.put("url", "/web/user/exam/case/407/282/exam407Detail.do?examNo="+ t.get("EXAM_NO") +"&page=1&titleName=&fileFuncType=exam&searchMenu=ALL&searchType=title&searchTilte="); }else { t.put("menuNm", "공정거래"); t.put("titleColor", "orange"); t.put("url", "/web/user/exam/case/402/162/exam402List.do"); } }); return bbsList; } }