package itn.let.cop.bbs.web; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.support.SessionStatus; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springmodules.validation.commons.DefaultBeanValidator; import egovframework.rte.fdl.property.EgovPropertyService; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.ComDefaultCodeVO; import itn.com.cmm.ComDefaultVO; import itn.com.cmm.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovCmmUseService; import itn.let.cop.bbs.service.BoardMaster; import itn.let.cop.bbs.service.BoardMasterVO; import itn.let.cop.bbs.service.BoardVO; import itn.let.cop.bbs.service.EgovBBSAttributeManageService; import itn.let.cop.bbs.service.EgovBBSManageService; import itn.let.cop.cmt.service.CommentVO; import itn.let.cop.cmt.service.EgovArticleCommentService; import itn.let.sec.ram.service.AuthorManageVO; import itn.let.sec.ram.service.EgovAuthorManageService; import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.UserDefaultVO; /** * 게시판 속성관리를 위한 컨트롤러 클래스 * @author 공통 서비스 개발팀 이삼섭 * @since 2009.03.12 * @version 1.0 * @see * *
 * << 개정이력(Modification Information) >>
 *
 *   수정일      수정자          수정내용
 *  -------    --------    ---------------------------
 *  2009.03.12  이삼섭          최초 생성
 *  2009.06.26	한성곤		2단계 기능 추가 (댓글관리, 만족도조사)
 *  2011.08.31  JJY            경량환경 템플릿 커스터마이징버전 생성
 *
 *  
*/ @Controller public class EgovBBSAttributeManageController { @Resource(name = "EgovBBSAttributeManageService") private EgovBBSAttributeManageService bbsAttrbService; @Resource(name = "EgovCmmUseService") private EgovCmmUseService cmmUseService; @Resource(name = "propertiesService") protected EgovPropertyService propertyService; @Autowired private DefaultBeanValidator beanValidator; @Resource(name = "egovAuthorManageService") private EgovAuthorManageService egovAuthorManageService; @Resource(name = "userManageService") private EgovUserManageService userManageService; @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; /** EgovPropertyService */ @Resource(name = "propertiesService") protected EgovPropertyService propertiesService; @Resource(name = "egovSiteManagerService") EgovSiteManagerService egovSiteManagerService; @Resource(name = "EgovBBSManageService") private EgovBBSManageService bbsMngService; /** 댓글 */ @Resource(name = "EgovArticleCommentService") protected EgovArticleCommentService egovArticleCommentService; //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] bbsMasterExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "사이트명" , "ITN" , "[코드]"}, {"2", "게시판명" , "testId", ""}, {"3", "새글/총글수" , "홍길동", ""}, {"4", "게시판유형" , "일반관리자", "[코드]"}, {"5", "사용여부" , "test@itn.co.kr", ""}, {"6", "생성일" , "02-123-4567", ""} } ; /** * 게시글 목록을 조회한다. * * @param boardMasterVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/SelectBbsContentsList.do") public String SelectBbsContentsList(@ModelAttribute("searchVO") BoardVO boardVO, ModelMap model , HttpSession session) throws Exception { List authorities = EgovUserDetailsHelper.getAuthorities(); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; for (String authority : authorities) { if (authority.equals("ROLE_ADMIN")) bbsAttrMngAuth = true; } if(boardVO.getPageUnit() != 10) { boardVO.setPageUnit(boardVO.getPageUnit()); } PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(boardVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardVO.getPageUnit()); paginationInfo.setPageSize(boardVO.getPageSize()); boardVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if("".equals(boardVO.getSearchSortCnd())){ //최초조회시 최신것 조회List boardVO.setSearchSortCnd("frstRegisterPnttm"); boardVO.setSearchSortOrd("desc"); } List adminBoardList = bbsMngService.selectAdminMainBoard(boardVO); int totCnt = 0; if(adminBoardList.size() > 0) { totCnt = adminBoardList.get(0).getTotcnt(); } paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("adminBoardList", adminBoardList); model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("searchVO", boardVO); model.addAttribute("pageUnit", boardVO.getPageUnit()); model.addAttribute("searchCnd", boardVO.getSearchCnd()); model.addAttribute("searchWrd", boardVO.getSearchWrd()); //답변 조회 CommentVO commentVO = new CommentVO(); commentVO.setBbsId(boardVO.getBbsId()); List commentList = egovArticleCommentService.selectArticleCommentListAllList(commentVO); int commentCnt = commentList.size(); model.addAttribute("commentCnt", commentCnt); model.addAttribute("commentList", commentList); return "cop/bbs/EgovBoardContentsList"; } /** * 게시판 마스터 목록을 조회한다. * * @param boardMasterVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/SelectBBSMasterInfs.do") public String selectBBSMasterInfs(@ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model , HttpSession session) throws Exception { List authorities = EgovUserDetailsHelper.getAuthorities(); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; for (String authority : authorities) { if (authority.equals("ROLE_ADMIN")) bbsAttrMngAuth = true; } if (!bbsAttrMngAuth) boardMasterVO.setBbsMngId(user.getId()); if(boardMasterVO.getPageUnit() != 10) { boardMasterVO.setPageUnit(boardMasterVO.getPageUnit()); } PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(boardMasterVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardMasterVO.getPageUnit()); paginationInfo.setPageSize(boardMasterVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); if(null != user && !"super".equals(user.getSiteId())){ boardMasterVO.setSiteId(user.getSiteId()) ; //사이트 아이디 } if("".equals(boardMasterVO.getSearchSortCnd())){ //최초조회시 최신것 조회List boardMasterVO.setSearchSortCnd("BBS_ID"); boardMasterVO.setSearchSortOrd("desc"); boardMasterVO.setUseAt("Y"); //사용하는 것만 조회 }else { if("".equals(boardMasterVO.getUseAt())){ //사용 boardMasterVO.setUseAt("Y"); } } Map map = bbsAttrbService.selectBBSMasterInfs(boardMasterVO); int totCnt = Integer.parseInt((String) map.get("resultCnt")); //게시판 관리자 정보 가져오기 List adminBbsList = (List)map.get("resultList"); //사용자 bbs url가져오기 String bbsHomeUrl = "/web/cop/bbsWeb/selectBoardList.do?bbsId="; //초기값 for (BoardMasterVO tempVO: adminBbsList){ List mngIdList = new ArrayList<>(); mngIdList = bbsAttrbService.selectBBSMngIdList(tempVO); tempVO.setMngIdList(mngIdList); tempVO.setBbsHomeUrl(getBbsUrl(tempVO.getBbsId(), bbsHomeUrl)); } paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("resultList", map.get("resultList")); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("bbsAttrMngAuth", bbsAttrMngAuth); model.addAttribute("paginationInfo", paginationInfo); return "cop/bbs/EgovBoardMstrList"; } /** * 게시판 마스터 정보를 삭제한다. * * @param boardMasterVO * @param boardMaster * @param status * @return * @throws Exception */ @RequestMapping("/cop/bbs/DeleteBBSMasterInf.do") public String deleteBBSMasterInf(@ModelAttribute("searchVO") BoardMasterVO boardMasterVO, @ModelAttribute("boardMaster") BoardMaster boardMaster, SessionStatus status , RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; List authorities = EgovUserDetailsHelper.getAuthorities(); for (String authority : authorities) { if (authority.equals("ROLE_ADMIN")) bbsAttrMngAuth = true; } if (!bbsAttrMngAuth) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.auth")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } boardMaster.setLastUpdusrId(user.getUniqId()); bbsAttrbService.deleteBBSMasterInf(boardMaster); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } /** * 신규 게시판 마스터 등록을 위한 등록페이지로 이동한다. * * @param boardMasterVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/addBBSMaster.do") public String addBBSMaster(@ModelAttribute("searchVO") BoardMasterVO boardMasterVO, @ModelAttribute("boardMaster") BoardMaster boardMaster, ModelMap model, BindingResult bindingResult, RedirectAttributes redirectAttributes, HttpSession session ) throws Exception { // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; List authorities = EgovUserDetailsHelper.getAuthorities(); for (String authority : authorities) { if (authority.equals("ROLE_ADMIN")) bbsAttrMngAuth = true; } if (!bbsAttrMngAuth) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.auth")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } // 게시판 공통코드 및 권한목록 Set setBBSModelInfo(model); return "cop/bbs/EgovBoardMstrRegist"; } /** * 신규 게시판 마스터 정보를 등록한다. * * @param boardMasterVO * @param boardMaster * @param status * @return * @throws Exception */ @RequestMapping("/cop/bbs/insertBBSMasterInf.do") public String insertBBSMasterInf(@ModelAttribute("searchVO") BoardMasterVO boardMasterVO, @ModelAttribute("boardMaster") BoardMaster boardMaster, BindingResult bindingResult, SessionStatus status, ModelMap model, RedirectAttributes redirectAttributes, HttpSession session) throws Exception { // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; List authorities = EgovUserDetailsHelper.getAuthorities(); for (String authority : authorities) { if (authority.equals("ROLE_ADMIN")) bbsAttrMngAuth = true; } if (!bbsAttrMngAuth) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.auth")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); beanValidator.validate(boardMaster, bindingResult); if (bindingResult.hasErrors()) { model.addAttribute("siteId", user.getSiteId()); // 게시판 공통코드 및 권한목록 Set setBBSModelInfo(model); return "cop/bbs/EgovBoardMstrRegist"; } boardMaster.setFrstRegisterId(user.getUniqId()); // eGov 게시판 유형 코드. BBSA03:기본게시판. (게시판 타입코드로 기본,웹진,포토 사용중. 유형 코드 필요 유무 확인필요) boardMaster.setBbsAttrbCode("BBSA03"); if(null != user && !"super".equals(user.getSiteId())){ //리스트, 수정, 입력 boardMaster.setSiteId(user.getSiteId());//사이트 아이디 } bbsAttrbService.insertBBSMastetInf(boardMaster); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } /** * 게시판 마스터 상세내용을 조회한다. * * @param boardMasterVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/SelectBBSMasterInf.do") public String selectBBSMasterInf(@ModelAttribute("searchVO") BoardMasterVO searchVO, ModelMap model, RedirectAttributes redirectAttributes, HttpSession session) throws Exception { // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; List authorities = EgovUserDetailsHelper.getAuthorities(); for (String authority : authorities) { if (authority.equals("ROLE_ADMIN") || authority.equals("ROLE_USER_MEMBER")) bbsAttrMngAuth = true; } if (!bbsAttrMngAuth) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.auth")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } BoardMasterVO vo = bbsAttrbService.selectBBSMasterInf(searchVO); model.addAttribute("boardMaster", vo); // 게시판 관리자ID 조회 List mngIdList = bbsAttrbService.selectBBSMngIdList(searchVO); model.addAttribute("mngIdList", mngIdList); // 게시판 공통코드 및 권한목록 Set setBBSModelInfo(model); BoardMaster siteMainNbsVO = new BoardMaster(); siteMainNbsVO = bbsAttrbService.getSiteMainNbsVO(searchVO); model.addAttribute("siteMainNbsVO", siteMainNbsVO); if(EgovUserDetailsHelper.getAuthorities().contains("ROLE_ADMIN")){ model.addAttribute("ROLE_ADMIN", "ROLE_ADMIN"); } return "cop/bbs/EgovBoardMstrUpdt"; } /** * 게시판 마스터 정보를 수정한다. * * @param boardMasterVO * @param boardMaster * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/UpdateBBSMasterInf.do") public String updateBBSMasterInf(@ModelAttribute("searchVO") BoardMasterVO boardMasterVO, @ModelAttribute("boardMaster") BoardMaster boardMaster, BindingResult bindingResult, ModelMap model, RedirectAttributes redirectAttributes) throws Exception { LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; List authorities = EgovUserDetailsHelper.getAuthorities(); for (String authority : authorities) { if (authority.equals("ROLE_ADMIN")) bbsAttrMngAuth = true; } if (!bbsAttrMngAuth) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.auth")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } beanValidator.validate(boardMaster, bindingResult); if (bindingResult.hasErrors()) { model.addAttribute("siteId", user.getSiteId()); // 게시판 공통코드 및 권한목록 Set setBBSModelInfo(model); return "cop/bbs/EgovBoardMstrUpdt"; } if(null != user && !"super".equals(user.getSiteId())){ boardMaster.setSiteId(user.getSiteId()); } boardMaster.setLastUpdusrId(user.getUniqId()); bbsAttrbService.updateBBSMasterInf(boardMaster); //BBST07 사전정보공표 //매인 bbs 등록 LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ //리스트, 수정, 입력 boardMaster.setSiteId(loginVO.getSiteId()); boardMasterVO.setSiteId(loginVO.getSiteId()); } //변경이 되면 업데이트 함. BoardMaster siteMainNbsVO = new BoardMaster(); siteMainNbsVO = bbsAttrbService.getSiteMainNbsVO(boardMasterVO); if(boardMaster.getNoticeBbsid().equals("") && siteMainNbsVO !=null){//체크안했을 경우 이전 값이 있을때 변경 if(boardMasterVO.getBbsId().equals(siteMainNbsVO.getNoticeBbsid())){ bbsAttrbService.insupNoticeBbsid(boardMaster) ; } }else{ bbsAttrbService.insupNoticeBbsid(boardMaster) ; } if(boardMaster.getQnaBbsid().equals("")){//체크안했을 경우 이전 값이 있을때 변경 if(siteMainNbsVO !=null && boardMasterVO.getBbsId().equals(siteMainNbsVO.getQnaBbsid())){ bbsAttrbService.insupQnaBbsid(boardMaster) ; } }else{ bbsAttrbService.insupQnaBbsid(boardMaster) ; } if(boardMaster.getNewsBbsid().equals("")){//체크안했을 경우 이전 값이 있을때 변경 if(siteMainNbsVO !=null && boardMasterVO.getBbsId().equals(siteMainNbsVO.getNewsBbsid())){ bbsAttrbService.insupNewsBbsid(boardMaster) ; } }else{ bbsAttrbService.insupNewsBbsid(boardMaster) ; } if(boardMaster.getLibraryBbsid().equals("")){//체크안했을 경우 이전 값이 있을때 변경 if(siteMainNbsVO !=null && boardMasterVO.getBbsId().equals(siteMainNbsVO.getLibraryBbsid())){ bbsAttrbService.insupLibraryBbsid(boardMaster) ; } }else{ bbsAttrbService.insupLibraryBbsid(boardMaster) ; } redirectAttributes.addAttribute("pageIndex", boardMasterVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardMasterVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardMasterVO.getSearchWrd()); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } /** * 팝업을 위한 게시판 관리자 목록을 조회한다. * * @param boardMasterVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/selectBBSMngInfsPop.do") public String selectBBSmngInfsPop(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, @RequestParam Map commandMap, ModelMap model) throws Exception { /** EgovPropertyService */ userSearchVO.setPageUnit(propertyService.getInt("pageUnit")); userSearchVO.setPageSize(propertyService.getInt("pageSize")); /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(userSearchVO.getPageIndex()); paginationInfo.setRecordCountPerPage(userSearchVO.getPageUnit()); paginationInfo.setPageSize(userSearchVO.getPageSize()); userSearchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); userSearchVO.setLastIndex(paginationInfo.getLastRecordIndex()); userSearchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); model.addAttribute("resultList", userManageService.selectUserList(userSearchVO)); int totCnt = userManageService.selectUserListTotCnt(userSearchVO); model.addAttribute("resultCnt", totCnt); paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("paginationInfo", paginationInfo); return "cop/bbs/EgovBoardMngInfsPop"; } /** * 게시판 관리자 추가 등록 * @param commandMap 파라메터전달용 commandMap * @param model 화면모델 * @throws Exception */ @RequestMapping(value = "/cop/bbs/insertBBSMngInfAjax.do") public ModelAndView insertBBSMngInfAjax(@RequestParam Map commandMap) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); String bbsMngId = (String) commandMap.get("bbsMngId"); String bbsId = (String) commandMap.get("bbsId"); BoardMaster vo = new BoardMaster(); vo.setBbsId(bbsId); vo.setBbsMngId(bbsMngId); int mngId = bbsAttrbService.insertBBSMngInf(vo); modelAndView.addObject("bbsMngId", bbsMngId); modelAndView.addObject("mngId", mngId); return modelAndView; } /** * 게시판 관리자 삭제 * @param commandMap 파라메터전달용 commandMap * @throws Exception */ @RequestMapping(value = "/cop/bbs/deleteBBSMngInfAjax.do") public ModelAndView deleteBBSMngInfAjax(@RequestParam Map commandMap) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); String mngId = (String) commandMap.get("mngId"); BoardMaster vo = new BoardMaster(); vo.setMngId(Integer.parseInt(mngId)); bbsAttrbService.deleteBBSMngInf(vo); modelAndView.addObject("mngId", mngId); return modelAndView; } /** * 게시판 관리 권한 여부 체크 * @param manageAuth 게시판 관리권한 * @param mngIdList 게시판 관리자 목록 (없을 시 null) * @param bbsId 게시판Id (게시판 관리자ID 목록 없을 시 조회하기 위한 게시판ID. 게시판 관리자 목록 있을 시 null) * @return boolean * @throws Exception */ private boolean isBBSManageAuthFlag(String manageAuth, List mngIdList, String bbsId) throws Exception { boolean authFlag = false; List authorities = EgovUserDetailsHelper.getAuthorities(); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); if (manageAuth == null) { BoardMasterVO vo = new BoardMasterVO(); vo.setBbsId(bbsId); vo = bbsAttrbService.selectBBSMasterInf(vo); manageAuth = vo.getManageAuth(); } // 게시판 관리권한 체크 for (String authority : authorities) { if (authority.equals(manageAuth)) authFlag = true; } // 게시판 관리자 체크 if (!authFlag) { if (mngIdList == null) { BoardMaster vo = new BoardMaster(); vo.setBbsId(bbsId); mngIdList = (List)bbsAttrbService.selectBBSMngIdList(vo); } int mngYn = 0; for(int i = 0; i < mngIdList.size(); i++) { String emplyrId = (String) mngIdList.get(i).get("emplyrId"); if (emplyrId.equals(user.getId())) mngYn++; } if (mngYn != 0) authFlag = true; } return authFlag; } /** * 게시판 공통코드 및 권한목록 Set * @param model * @throws Exception */ private void setBBSModelInfo(ModelMap model) throws Exception { ComDefaultCodeVO comDefaultCodeVO = new ComDefaultCodeVO(); comDefaultCodeVO.setCodeId("COM004"); List codeResult = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("typeList", codeResult); comDefaultCodeVO.setCodeId("COM009"); codeResult = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("attrbList", codeResult); comDefaultCodeVO.setCodeId("COM005"); codeResult = cmmUseService.selectCmmCodeDetail(comDefaultCodeVO); model.addAttribute("tmptList", codeResult); AuthorManageVO authorManageVO = new AuthorManageVO(); authorManageVO.setAuthorManageList(egovAuthorManageService.selectAuthorAllList(authorManageVO)); model.addAttribute("authorList", authorManageVO.getAuthorManageList()); } /** * @@@@@@사용자 Test 용. 추후 삭제 @@@@@ * 게시판 마스터 목록을 조회한다. * * @param boardMasterVO * @param model * @return * @throws Exception */ @RequestMapping("/cop/bbs/SelectBBSMasterInfsUsr.do") public String selectBBSMasterInfsUsr(@ModelAttribute("searchVO") BoardMasterVO boardMasterVO, ModelMap model) throws Exception { boardMasterVO.setPageUnit(propertyService.getInt("pageUnit")); boardMasterVO.setPageSize(propertyService.getInt("pageSize")); PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(boardMasterVO.getPageIndex()); paginationInfo.setRecordCountPerPage(boardMasterVO.getPageUnit()); paginationInfo.setPageSize(boardMasterVO.getPageSize()); boardMasterVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); boardMasterVO.setLastIndex(paginationInfo.getLastRecordIndex()); boardMasterVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); Map map = bbsAttrbService.selectBBSMasterInfs(boardMasterVO); int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("resultList", map.get("resultList")); model.addAttribute("resultCnt", map.get("resultCnt")); model.addAttribute("paginationInfo", paginationInfo); return "cop/bbs/EgovBoardMstrList"; } /** * 게시판 ID를 조회한다. * @param searchVO ComDefaultVO * @return 출력페이지정보 "cop/bbs/EgovBoardIdSearch" * @exception Exception */ @RequestMapping(value = "/cop/bbs/EgovBBSIdListSearch.do") public String selectBBSIdListSearch(@ModelAttribute("searchVO") ComDefaultVO searchVO, ModelMap model) throws Exception { // 0. Spring Security 사용자권한 처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } // 내역 조회 searchVO.setPageUnit(propertiesService.getInt("pageUnit")); searchVO.setPageSize(propertiesService.getInt("pageSize")); /** 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()); Map map = bbsAttrbService.selectBBSIdList(searchVO); int totCnt = Integer.parseInt((String) map.get("resultCnt")); paginationInfo.setTotalRecordCount(totCnt); model.addAttribute("resultList", map.get("resultList")); model.addAttribute("paginationInfo", paginationInfo); return "cop/bbs/EgovBoardIdSearch"; } /** * 선택된 게시판을 삭제한다. * @param bbsIds String * @param boardMasterVO BoardMasterVO * @return String * @exception Exception */ @RequestMapping(value = "/cop/bbs/DeleteBBSMasterInfs.do") public String deleteBBSMasterInfs(@RequestParam("bbsIds") String bbsIds, @ModelAttribute("BoardMasterVO") BoardMasterVO boardMasterVO, RedirectAttributes redirectAttributes) throws Exception { // 게시판 설정 관리권한 체크 boolean bbsAttrMngAuth = false; LoginVO loginVo = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser() ; if("ROLE_ADMIN".equals(loginVo.getAuthority())){ bbsAttrMngAuth = true; } if (!bbsAttrMngAuth) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.auth")); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } String[] strBbsIds = bbsIds.split(";"); for (int i = 0; i < strBbsIds.length; i++) { boardMasterVO.setBbsId(strBbsIds[i]); bbsAttrbService.deleteBBSMasterInf(boardMasterVO); } // status.setComplete(); // ? boardMasterVO.setPageIndex(1); redirectAttributes.addAttribute("pageIndex", boardMasterVO.getPageIndex()); redirectAttributes.addAttribute("searchCnd", boardMasterVO.getSearchCnd()); redirectAttributes.addAttribute("searchWrd", boardMasterVO.getSearchWrd()); redirectAttributes.addFlashAttribute("message", "정상적으로 처리 되었습니다."); return "redirect:/cop/bbs/SelectBBSMasterInfs.do"; } public String getBbsUrl(String bbsId , String bbsHomeUrl){ //원자력소식 if("BBSMSTR_000000000411".equals(bbsId) ||"BBSMSTR_000000000412".equals(bbsId) ){bbsHomeUrl = "/web/cop/bbs/NewsList.do"; return bbsHomeUrl ;} //자료실 if("BBSMSTR_000000000493".equals(bbsId) ||"BBSMSTR_000000000477".equals(bbsId) ||"BBSMSTR_000000000476".equals(bbsId) ||"BBSMSTR_000000000475".equals(bbsId) ||"BBSMSTR_000000000474".equals(bbsId) ||"BBSMSTR_000000000473".equals(bbsId) ||"BBSMSTR_000000000472".equals(bbsId) ||"BBSMSTR_000000000471".equals(bbsId) ||"BBSMSTR_000000000461".equals(bbsId) ){bbsHomeUrl = "/web/cop/bbs/LibList.do?bbsId="+bbsId; return bbsHomeUrl ;} //자주하는질문 if("BBSMSTR_000000000429".equals(bbsId) ||"BBSMSTR_000000000428".equals(bbsId) ||"BBSMSTR_000000000427".equals(bbsId) ||"BBSMSTR_000000000426".equals(bbsId) ||"BBSMSTR_000000000425".equals(bbsId) ||"BBSMSTR_000000000424".equals(bbsId) ||"BBSMSTR_000000000423".equals(bbsId) ||"BBSMSTR_000000000422".equals(bbsId) ||"BBSMSTR_000000000421".equals(bbsId) ){bbsHomeUrl = "/web/cop/bbs/FaqList.do"; return bbsHomeUrl ;} //묻고답하기 if("BBSMSTR_000000000528".equals(bbsId) ||"BBSMSTR_000000000527".equals(bbsId) ||"BBSMSTR_000000000526".equals(bbsId) ||"BBSMSTR_000000000525".equals(bbsId) ||"BBSMSTR_000000000524".equals(bbsId) ||"BBSMSTR_000000000523".equals(bbsId) ||"BBSMSTR_000000000522".equals(bbsId) ||"BBSMSTR_000000000521".equals(bbsId) ||"BBSMSTR_000000000490".equals(bbsId) ){bbsHomeUrl = "/web/cop/bbs/QnaList.do"; return bbsHomeUrl ;} //사전정보공표 if("BBSMSTR_000000000541".equals(bbsId) ||"BBSMSTR_000000000456".equals(bbsId) ||"BBSMSTR_000000000455".equals(bbsId) ||"BBSMSTR_000000000454".equals(bbsId) ||"BBSMSTR_000000000453".equals(bbsId) ||"BBSMSTR_000000000452".equals(bbsId) ||"BBSMSTR_000000000451".equals(bbsId) ||"BBSMSTR_000000000445".equals(bbsId) ||"BBSMSTR_000000000444".equals(bbsId) ||"BBSMSTR_000000000443".equals(bbsId) ||"BBSMSTR_000000000442".equals(bbsId) ){bbsHomeUrl = "/web/cop/bbs/PubOperList.do?bbsId="+bbsId; return bbsHomeUrl ;} //통합경영공시 if("BBSMSTR_000000000581".equals(bbsId) ||"BBSMSTR_000000000582".equals(bbsId) ||"BBSMSTR_000000000583".equals(bbsId) ||"BBSMSTR_000000000584".equals(bbsId) ){bbsHomeUrl = "/web/content.do?proFn=9640000"; return bbsHomeUrl ;} //사전정보공표(하단 리스트 게시판 ) BBSMSTR_000000000442 ~ if("BBSMSTR_000000000599".equals(bbsId) ||"BBSMSTR_000000000551".equals(bbsId) ||"BBSMSTR_000000000598".equals(bbsId) ||"BBSMSTR_000000000597".equals(bbsId) ||"BBSMSTR_000000000596".equals(bbsId) ||"BBSMSTR_000000000595".equals(bbsId) ||"BBSMSTR_000000000594".equals(bbsId) ||"BBSMSTR_000000000593".equals(bbsId) ||"BBSMSTR_000000000571".equals(bbsId) ||"BBSMSTR_000000000602".equals(bbsId) ||"BBSMSTR_000000000601".equals(bbsId) ||"BBSMSTR_000000000600".equals(bbsId) ||"BBSMSTR_000000000592".equals(bbsId) ||"BBSMSTR_000000000591".equals(bbsId) ||"BBSMSTR_000000000608".equals(bbsId) ||"BBSMSTR_000000000607".equals(bbsId) ||"BBSMSTR_000000000606".equals(bbsId) ||"BBSMSTR_000000000605".equals(bbsId) ||"BBSMSTR_000000000604".equals(bbsId) ||"BBSMSTR_000000000603".equals(bbsId) ||"BBSMSTR_000000000614".equals(bbsId) ||"BBSMSTR_000000000613".equals(bbsId) ||"BBSMSTR_000000000612".equals(bbsId) ||"BBSMSTR_000000000611".equals(bbsId) ||"BBSMSTR_000000000610".equals(bbsId) ||"BBSMSTR_000000000609".equals(bbsId) ||"BBSMSTR_000000000632".equals(bbsId) ||"BBSMSTR_000000000631".equals(bbsId) ||"BBSMSTR_000000000630".equals(bbsId) ||"BBSMSTR_000000000616".equals(bbsId) ||"BBSMSTR_000000000615".equals(bbsId) ||"BBSMSTR_000000000618".equals(bbsId) ||"BBSMSTR_000000000617".equals(bbsId) ||"BBSMSTR_000000000621".equals(bbsId) ||"BBSMSTR_000000000620".equals(bbsId) ||"BBSMSTR_000000000619".equals(bbsId) ||"BBSMSTR_000000000625".equals(bbsId) ||"BBSMSTR_000000000622".equals(bbsId) ||"BBSMSTR_000000000629".equals(bbsId) ){bbsHomeUrl = "/web/cop/bbs/PubOperList.do?pubDetail=Y&bbsId="+bbsId; return bbsHomeUrl ;} return bbsHomeUrl+bbsId; } //게시판 마스터 리스트 엑셀 다운로드 @RequestMapping(value="/cop/bbs/bbsMasterExcelDownload.do") public void bbsMasterExcelDownload( BoardMasterVO boardMasterVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { boardMasterVO.setRecordCountPerPage(100000); boardMasterVO.setFirstIndex(0); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ boardMasterVO.setSiteId(loginVO.getSiteId()); } // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. SXSSFWorkbook wb = new SXSSFWorkbook(100); CellStyle style = wb.createCellStyle(); style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); Font font = wb.createFont(); font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold Cell cell = null; Row row = null; String fileName ="게시판 마스터 리스트"; String sheetTitle = ""; try{ //List userSearchList = userManageService.selectUserList(userSearchVO) ; boardMasterVO.setDelSttus("Y"); Map bbsMasterList = bbsAttrbService.selectBBSMasterInfs(boardMasterVO); { //화면 리스트 sheetTitle = "게시판 마스터 리스트(화면)" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); for(int i=0 ; i < bbsMasterExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(bbsMasterExcelValue[i][1]); } List bbsMasterCastList = (List)bbsMasterList.get("resultList") ; for(int i=0; i < bbsMasterCastList.size(); i++){ row = sheet.createRow(i+1); for(int j=0 ; j < bbsMasterExcelValue.length ; j++) { cell = row.createCell(j); cell.setCellStyle(style); if(j==0) cell.setCellValue(i+1); //번호 if(j==1) cell.setCellValue(((BoardMasterVO)bbsMasterCastList.get(i)).getSiteNm()); //사이트명 if(j==2) cell.setCellValue(((BoardMasterVO)bbsMasterCastList.get(i)).getBbsNm()); //게시판명 if(j==3) cell.setCellValue(((BoardMasterVO)bbsMasterCastList.get(i)).getNewCnt()+"/"+ ((BoardMasterVO)bbsMasterCastList.get(i)).getTotCnt()); //새글/총글수 if(j==4) cell.setCellValue(((BoardMasterVO)bbsMasterCastList.get(i)).getBbsTyCodeNm()); //게시판유형 if(j==5) cell.setCellValue(((BoardMasterVO)bbsMasterCastList.get(i)).getUseAtTxt()); //사용여부 if(j==6) cell.setCellValue(((BoardMasterVO)bbsMasterCastList.get(i)).getFrstRegisterPnttm()); //생성일 } } } response.setHeader("Set-Cookie", "fileDownload=true; path=/"); SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); Date currentTime = new Date (); String mTime = mSimpleDateFormat.format ( currentTime ); fileName = fileName+"("+mTime+")"; response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx")); wb.write(response.getOutputStream()); }catch(Exception e) { response.setHeader("Set-Cookie", "fileDownload=false; path=/"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Content-Type","text/html; charset=utf-8"); OutputStream out = null; try { out = response.getOutputStream(); byte[] data = new String("fail..").getBytes(); out.write(data, 0, data.length); } catch(Exception ignore) { ignore.printStackTrace(); } finally { if(out != null) try { out.close(); } catch(Exception ignore) {} } }finally { // 디스크 적었던 임시파일을 제거합니다. wb.dispose(); try { wb.close(); } catch(Exception ignore) {} } } }