package itn.let.lett.web; import java.io.OutputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; 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.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.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; 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 org.springframework.web.servlet.support.RequestContextUtils; import egovframework.rte.fdl.idgnr.EgovIdGnrService; 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.EgovMessageSource; import itn.com.cmm.LoginVO; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.service.FileVO; import itn.com.cmm.util.EgovDoubleSubmitHelper; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.cmm.util.StringUtil; import itn.com.uss.ion.fms.service.FmsFileService; import itn.com.uss.ion.fms.service.FmsFileVO; import itn.let.lett.service.CateConfVO; import itn.let.lett.service.HashConfVO; import itn.let.lett.service.LetterService; import itn.let.lett.service.LetterVO; import itn.let.mjo.msgagent.service.MjonMsgAgentStsService; import itn.let.mjo.msgagent.service.MjonMsgAgentStsVO; import itn.let.sym.ccm.cde.service.CateCode; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.UserDefaultVO; @Controller public class LetterController { /** userManageService */ @Resource(name = "userManageService") private EgovUserManageService userManageService; @Resource(name = "LetterService") private LetterService letterService; /** EgovPropertyService */ @Resource(name = "propertiesService") protected EgovPropertyService propertiesService; @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; @Resource(name = "fmsFileService") private FmsFileService fmsFileService; @Resource(name="EgovFileMngUtil") private EgovFileMngUtil fileUtil; @Resource(name="EgovFileMngService") private EgovFileMngService fileMngService; @Resource(name = "egovFmsFileGnrService") private EgovIdGnrService idgenService; /** 첨부파일 저장경로 */ @Value("#{globalSettings['Globals.file.saveDir']}") private String fileSaveDir; @Resource(name = "mjonMsgAgentStsService") private MjonMsgAgentStsService mjonMsgAgentStsService; //카테고리 배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] categoryExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "카테고리 타입" , "ITN" , "[코드]"}, {"2", "카테고리 이름" , "선거", "[코드]"}, {"3", "순서" , "1", ""}, {"4", "사용 유무" , "사용", ""}, {"5", "등록일" ,"2019-10-31", ""} } ; //해쉬태그 배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] hashTagExcelValue ={ {"0" ,"번호" , "1" , "" }, {"1", "해쉬테그 이름" , "ITN" ,""}, {"2", "순서" , "1", ""}, {"3", "사용 유무" , "사용", ""}, {"4", "등록일" ,"2019-10-31", ""} } ; /** * * 단문/장문 문자 목록 화면 * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return letter/messages/letterMessagesList * @throws Exception */ @RequestMapping("/letter/messages/letterMessagesList.do") public String letterMessagesList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model, HttpServletRequest request, HttpSession session) throws Exception { Map flashMap =RequestContextUtils.getInputFlashMap(request); if(flashMap!=null && flashMap.get("userSearchVO") != null) { userSearchVO = (UserDefaultVO)flashMap.get("userSearchVO"); } if(userSearchVO.getPageUnit() != 10) { userSearchVO.setPageUnit(userSearchVO.getPageUnit()); } /** 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()); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //userSearchVO.setAdminYn("Y"); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("regdate"); userSearchVO.setSearchSortOrd("desc"); } if("".equals(userSearchVO.getSearchDiv()) || userSearchVO.getSearchDiv() == null){ userSearchVO.setSearchDiv("S"); } //2뎁스(상위카테고리) selectbox 검색 시 if(!"".equals(userSearchVO.getSearchTwoDptCategoryCode())) { userSearchVO.setSearchCategoryCode(userSearchVO.getSearchTwoDptCategoryCode()); } //3뎁스(상위카테고리) selectbox 검색 시 if(!"".equals(userSearchVO.getSearchThrDptCategoryCode())) { userSearchVO.setSearchCategoryCode(userSearchVO.getSearchThrDptCategoryCode()); } //List resultList = userManageService.selectUserList(userSearchVO) ; List resultList = letterService.selectLetterMessageList(userSearchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); //카테고리 미리만들기 selectbox 미리 만들기 CateCode cateCode = new CateCode(); //일반 카테고리(맞춤X)만 조회 cateCode.setCateType("N"); List cateCodeList = letterService.selectCateCodeTwoDptWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); return "letter/messages/LetterMessageList"; } /** * 단문/장문 문자 등록 화면 * * @param * @param * @return letter/messages/letterMessagesRegist * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/messages/letterMessagesRegist.do") public String letterMessagesRegist( LetterVO letterVO, CateCode cateCode, HttpServletRequest request, @RequestParam Map commandMap, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { // 권한 체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } // 그림문자 카테고리 리스트 불러오기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); return "letter/messages/LetterMessageRegist"; } /** * 단문/장문 문자 데이터 디비 입력 처리 * * @param * @param * @return letter/messages/letterMessagesList * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/messages/insertLetterMessages.do") public String insertLetterMessages( LetterVO letterVO, CateCode cateCode, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } //카테고리 뎁스 정보 불러오기 String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { letterVO.setCategoryCode(depth3); }else{ letterVO.setCategoryCode(depth2); } //장/단문 메세지 내용 저장하기 String resultSts = letterService.insertLetterMessages(letterVO); letterVO.setLetterId(resultSts); //우선순위 변경 if(!"".equals(letterVO.getPriNum()) && letterVO.getPriNum() != null) { String[] tmpArray = {letterVO.getLetterId()}; letterVO.setChkIds(tmpArray); letterVO.setChkIdsSize(tmpArray.length); //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int cnt = letterService.updateChkAfterPriorityPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 cnt += letterService.updateChkListPriority(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 cnt += letterService.updateOrderByPriority(letterVO); //4. 우선순위가 null인 값 우선순위 부여 cnt += letterService.updateNullPriority(letterVO); } if(StringUtil.isNotEmpty(resultSts)) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert")); } return "redirect:/letter/messages/letterMessagesList.do"; } /** * 단문/장문 문자 삭제후 목록조회 화면으로 이동한다. * @param checkedIdForDel 삭제대상아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/letter/messages/letterMessagesList.do * @throws Exception */ @RequestMapping("/letter/messages/letterMessageDelete.do") public String letterMessageDelete(@RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { return "redirect:/letter/messages/letterMessagesList.do"; } // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } // 단문/장문 문자 삭제 - USE_YN 값을 'N'으로 변경함 letterService.deleteLetterMessage(checkedIdForDel); redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); if(userSearchVO.getGnrlUser().equals("N")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/messages/letterMessagesList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/messages/letterMessagesList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 단문/장문 문자 데이터 디비 상세화면 이동 * * @param * @param * @return letter/messages/letterMessagesDetail * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/messages/letterMessagesDetail.do") public String letterMessagesDetail( @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, LetterVO letterVO, CateCode cateCode, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } // 그림문자 카테고리 리스트 불러오기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); //등록된 카테고리 정보 불러오기 List cateCodeRegList = new ArrayList(); String cateCodeId = commandMap.get("cateCodeId").toString(); cateCodeRegList = letterService.selectPhotoCateCodeListWithId(cateCodeId); model.addAttribute("cateCodeRegList", cateCodeRegList); String letterId = commandMap.get("selectedId").toString(); letterVO.setLetterId(letterId); //장/단문 메세지 내용 저장하기 LetterVO result = new LetterVO(); result = letterService.letterMessagesDetail(letterVO); model.addAttribute("result", result); return "letter/messages/LetterMessageDetail"; } /** * 단문/장문 문자 데이터 수정 처리 * * @param * @param * @return /letter/messages/updateLetterMessages.do * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/messages/updateLetterMessages.do") public String updateLetterMessages( LetterVO letterVO, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model, UserDefaultVO userSearchVO, RedirectAttributes rttr) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } //카테고리 뎁스 정보 불러오기 String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { letterVO.setCategoryCode(depth3); }else{ letterVO.setCategoryCode(depth2); } //장/단문 메세지 내용 수정하기 int result = letterService.updateLetterMessages(letterVO); //우선순위 변경 if(!"".equals(letterVO.getPriNum()) && letterVO.getPriNum() != null) { String[] tmpArray = {letterVO.getLetterId()}; letterVO.setChkIds(tmpArray); letterVO.setChkIdsSize(tmpArray.length); //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int cnt = letterService.updateChkAfterPriorityPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 cnt += letterService.updateChkListPriority(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 cnt += letterService.updateOrderByPriority(letterVO); //4. 우선순위가 null인 값 우선순위 부여 cnt += letterService.updateNullPriority(letterVO); } if(result > 0) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.update")); } rttr.addFlashAttribute("userSearchVO", userSearchVO); return "redirect:/letter/messages/letterMessagesList.do"; } /** * 그림 문자 등록화면 * * @param * @param * @return /letter/photo/letterPhotoList.do * @param model 화면모델 * @throws Exception */ @RequestMapping(value="/letter/photo/letterPhotosRegist.do") public String letterPhotosRegist(CateCode cateCode, Model model, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO) throws Exception { //카테고리 미리만들기 selectbox 미리 만들기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); return "letter/photo/LetterPhotoRegist"; } /** * 그림 문자 등록 프로세스 * * @param * @param * @return /letter/photo/letterPhotoList.do * @param model 화면모델 * @throws Exception */ @RequestMapping(value="/letter/photo/insertletterPhotosAjax.do") public ModelAndView insertletterPhotos(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, @ModelAttribute("fileVO") FileVO fileVO, LetterVO letterVO, RedirectAttributes redirectAttributes, final MultipartHttpServletRequest multiRequest, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { List result = null; String atchFileId = fmsFileVO.getFmsImageFile(); //수정일때 String isThumbFile = ""; final Map files = multiRequest.getFileMap(); String KeyStr = "PHO_"; if(!files.isEmpty()) { //카테고리 뎁스 정보 불러오기 String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //그림문자 일반 if(depth1.equals("13000")) { // 일반문자 letterVO.setMemberType("P"); }else if(depth1.equals("15000")) { // 기업 기업문자 letterVO.setMemberType("B"); }else { letterVO.setMemberType("C"); } //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { letterVO.setCategoryCode(depth3); }else{ letterVO.setCategoryCode(depth2); } //문자 타입 입력 //그림문자 일반 if(depth1.equals("11000")) { // 맞춤제작문자 letterVO.setLetterType("C"); }else { //일반그림문자 letterVO.setLetterType("P"); } if ("".equals(atchFileId)){ // 첨부 이미지 등록 String imagePath = ""; Date now = new Date(); SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd"); String fdlDate = formatDate.format(now); //로컬 과 개발서버의 이미지 저장 경로 분기처리 if(request.getServerName().equals("localhost")) { imagePath = fileSaveDir + "src/main/webapp/mjon/MMS/" + fdlDate; }else { /*imagePath = "/usr/local/tomcat_mjon/webapps/mjon/MMS/" + fdlDate;*/ imagePath = fileSaveDir+"/file/MMS/" + fdlDate; } //별도 이미지 저장 함수로 파일 처리함 result = fileUtil.parseImageFileInf(files, KeyStr, 0, atchFileId , imagePath, isThumbFile); atchFileId = fileMngService.insertFileInfs(result); FileVO vo = null; Iterator iter = result.iterator(); while (iter.hasNext()) { vo = iter.next(); letterVO.setOrignlFileNm(vo.getOrignlFileNm()); letterVO.setAttachFileId(vo.getAtchFileId()); } } } //그림문자 내용 입력 String resultSts = letterService.insertletterPhotosInfo(letterVO); letterVO.setLetterId(resultSts); //우선순위 변경 if(!"".equals(letterVO.getPriNum()) && letterVO.getPriNum() != null) { String[] tmpArray = {letterVO.getLetterId()}; letterVO.setChkIds(tmpArray); letterVO.setChkIdsSize(tmpArray.length); //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int cnt = letterService.updateChkAfterPriorityPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 cnt += letterService.updateChkListPriority(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 cnt += letterService.updateOrderByPriority(letterVO); //4. 우선순위가 null인 값 우선순위 부여 cnt += letterService.updateNullPriority(letterVO); } if(StringUtil.isNotEmpty(resultSts)) { modelAndView.addObject("result", "success"); }else { modelAndView.addObject("result", "fail"); } }catch (Exception e) { modelAndView.addObject("result", "fail"); } return modelAndView; } /*그림문자 리스트 화면 관리*/ @RequestMapping(value="/letter/photo/letterPhotosList.do") public String letterPhotosList(ModelMap model , @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, HttpSession session, HttpServletRequest request) throws Exception { Map flashMap =RequestContextUtils.getInputFlashMap(request); if(flashMap!=null && flashMap.get("userSearchVO") != null) { userSearchVO = (UserDefaultVO)flashMap.get("userSearchVO"); } if(userSearchVO.getPageUnit() != 10) { userSearchVO.setPageUnit(userSearchVO.getPageUnit()); } /** 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()); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //userSearchVO.setAdminYn("Y"); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("regdate"); userSearchVO.setSearchSortOrd("desc"); } //2뎁스(상위카테고리) selectbox 검색 시 if(!"".equals(userSearchVO.getSearchTwoDptCategoryCode())) { userSearchVO.setSearchCategoryCode(userSearchVO.getSearchTwoDptCategoryCode()); } //3뎁스(상위카테고리) selectbox 검색 시 if(!"".equals(userSearchVO.getSearchThrDptCategoryCode())) { userSearchVO.setSearchCategoryCode(userSearchVO.getSearchThrDptCategoryCode()); } List resultList = letterService.selectLetterPhotosList(userSearchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); //카테고리 미리만들기 selectbox 미리 만들기 CateCode cateCode = new CateCode(); cateCode.setCateType("N"); List cateCodeList = letterService.selectCateCodeTwoDptWithList(cateCode); /*List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode);*/ model.addAttribute("cateCodeList", cateCodeList); return "letter/photo/LetterPhotoList"; } /** * 그림 문자 삭제후 목록조회 화면으로 이동한다. * @param checkedIdForDel 삭제대상아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/letter/photo/letterPhotosList.do * @throws Exception */ @RequestMapping("/letter/photo/letterPhotosDelete.do") public String letterPhotosDelete(@RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { return "redirect:/letter/photo/letterPhotosList.do"; } // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } // 그림문자 문자 삭제 - USE_YN 값을 'N'으로 변경함 letterService.deleteLetterPhotos(checkedIdForDel); redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); if(userSearchVO.getGnrlUser().equals("N")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/photo/letterPhotosList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/photo/letterPhotosList.do"); return redirectUrlMaker.getRedirectUrl(); } /*그림문자 상세보기 화면*/ @RequestMapping(value="/letter/photo/letterPhotosDetail.do") public String letterPhotosDetail(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, CateCode cateCode, LetterVO letterVO, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, Model model, @ModelAttribute("userSearchVO")UserDefaultVO userSearchVO, HttpSession session) throws Exception { //카테고리 미리만들기 selectbox 미리 만들기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); //등록된 카테고리 정보 불러오기 List cateCodeRegList = new ArrayList(); String cateCodeId = commandMap.get("cateCodeId").toString(); cateCodeRegList = letterService.selectPhotoCateCodeListWithId(cateCodeId); model.addAttribute("cateCodeRegList", cateCodeRegList); letterVO.setLetterId(commandMap.get("selectedId").toString()); //그림문자 내용 불러오기 LetterVO resultPhotoList = letterService.selectPhotosDetail(letterVO); model.addAttribute("resultPhotoList", resultPhotoList); String attchFileId = resultPhotoList.getAttachFileId(); //그림문자 첨부파일 정보 불러오기 LetterVO resultFileList = letterService.selectPhotoFileList(attchFileId); model.addAttribute("resultFileList", resultFileList); return "letter/photo/LetterPhotoDetail"; } /* 그림문자 수정 처리 */ @RequestMapping(value="/letter/photo/updateLetterPhotosAjax.do") public ModelAndView updateLetterPhotosAjax(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, @ModelAttribute("fileVO") FileVO fileVO, LetterVO letterVO, final MultipartHttpServletRequest multiRequest, ModelMap model, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { modelAndView.addObject("result", "auth_fail"); //권한없음 팝업창 닫고, 오프너 창 리로드 return modelAndView; } try { //카테고리 뎁스 정보 불러오기 String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //그림문자 일반 if(depth1.equals("13000")) { letterVO.setMemberType("P"); }else if(depth1.equals("15000")) { // 기업 기업문자 letterVO.setMemberType("B"); }else {// 맞춤제작문자 letterVO.setMemberType("C"); } //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { letterVO.setCategoryCode(depth3); }else{ letterVO.setCategoryCode(depth2); } //문자 타입 입력 //그림문자 일반 if(depth1.equals("11000")) { // 맞춤제작문자 letterVO.setLetterType("C"); }else { //일반그림문자 letterVO.setLetterType("P"); } List result = null; String attachFileId = letterVO.getAttachFileId(); //수정일때 String orignlFileNm = letterVO.getOrignlFileNm(); String isThumbFile = ""; final Map files = multiRequest.getFileMap(); String KeyStr = "PHO_"; String imagePath = ""; Date now = new Date(); SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd"); String fdlDate = formatDate.format(now); //로컬 과 개발서버의 이미지 저장 경로 분기처리 if(request.getServerName().equals("localhost")) { imagePath = fileSaveDir + "src/main/webapp" + "/mjon/MMS/" + fdlDate; }else { /*imagePath = "/usr/local/tomcat_mjon/webapps/mjon/MMS/" + fdlDate;*/ imagePath = fileSaveDir+"/file/MMS/" + fdlDate; } if (!files.isEmpty()){ if ("".equals(attachFileId)){ //이미지 등록 result = fileUtil.parseImageFileInf(files, KeyStr, 0, attachFileId , imagePath, isThumbFile); attachFileId = fileMngService.insertFileInfs(result); FileVO vo = null; Iterator iter = result.iterator(); while (iter.hasNext()) { vo = iter.next(); orignlFileNm = vo.getOrignlFileNm(); attachFileId = vo.getAtchFileId(); } if (vo == null) { } else { letterVO.setOrignlFileNm(orignlFileNm); letterVO.setAttachFileId(attachFileId); } }else{ //파일 업데이트 FileVO fvo = new FileVO(); fvo.setAtchFileId(attachFileId); int cnt = fileMngService.getMaxFileSN(fvo); result = fileUtil.parseImageFileInf(files, KeyStr , cnt, attachFileId, imagePath, isThumbFile); fileMngService.updateFileInfs(result); } } //해당 매뉴 DB에 update int resultUpdateCnt = 0; if(result != null) { // 첨부파일이 수정되었다면 신규 파일 정보로 업데이트 letterVO.setAttachFileId(result.get(0).getAtchFileId()); letterVO.setOrignlFileNm(result.get(0).getOrignlFileNm()); resultUpdateCnt = letterService.updateLetterPhotosInfo(letterVO); }else { // 첨부파일 수정이 없다면 기존 파일 명으로 업데이트 처리 letterVO.setAttachFileId(attachFileId); letterVO.setOrignlFileNm(orignlFileNm); resultUpdateCnt = letterService.updateLetterPhotosInfo(letterVO); } //우선순위 변경 if(!"".equals(letterVO.getPriNum()) && letterVO.getPriNum() != null) { String[] tmpArray = {letterVO.getLetterId()}; letterVO.setChkIds(tmpArray); letterVO.setChkIdsSize(tmpArray.length); //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int cnt = letterService.updateChkAfterPriorityPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 cnt += letterService.updateChkListPriority(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 cnt += letterService.updateOrderByPriority(letterVO); //4. 우선순위가 null인 값 우선순위 부여 cnt += letterService.updateNullPriority(letterVO); } if(resultUpdateCnt > 0) { modelAndView.addObject("result", "success"); }else { modelAndView.addObject("result", "fail"); } }catch (Exception e) { modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 맞춤제작 그림 문자 등록화면 * * @param * @param * @return /letter/photo/letterPhotoCustomList.do * @param model 화면모델 * @throws Exception */ @RequestMapping(value="/letter/photo/letterPhotosCustomRegist.do") public String letterPhotosCustomRegist(CateCode cateCode, Model model) throws Exception { //카테고리 미리만들기 selectbox 미리 만들기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); return "letter/photo/custom/LetterPhotoCustomRegist"; } /** * 맞춤제작 그림 문자 등록 프로세스 * * @param * @param * @return /letter/photo/letterPhotoCustomList.do * @param model 화면모델 * @throws Exception */ @RequestMapping(value="/letter/photo/insertletterPhotosCustomAjax.do") public ModelAndView insertletterPhotosCustom(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, @ModelAttribute("fileVO") FileVO fileVO, LetterVO letterVO, RedirectAttributes redirectAttributes, final MultipartHttpServletRequest multiRequest, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { List result = null; String atchFileId = fmsFileVO.getFmsImageFile(); //수정일때 String isThumbFile = ""; final Map files = multiRequest.getFileMap(); String KeyStr = "PHO_"; if(!files.isEmpty()) { //카테고리 뎁스 정보 불러오기 String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //그림문자 일반 if(depth1.equals("13000")) { // 일반문자 letterVO.setMemberType("P"); }else if(depth1.equals("15000")) { // 기업 기업문자 letterVO.setMemberType("B"); }else { letterVO.setMemberType("C"); } //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { letterVO.setCategoryCode(depth3); }else{ letterVO.setCategoryCode(depth2); } //문자 타입 입력 //그림문자 일반 if(depth1.equals("11000")) { // 맞춤제작문자 letterVO.setLetterType("C"); }else { //일반그림문자 letterVO.setLetterType("P"); } if ("".equals(atchFileId)){ // 첨부 이미지 등록 String imagePath = ""; Date now = new Date(); SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd"); String fdlDate = formatDate.format(now); //로컬 과 개발서버의 이미지 저장 경로 분기처리 if(request.getServerName().equals("localhost")) { imagePath = fileSaveDir+"src/main/webapp/MMS/" + fdlDate; }else { /*imagePath = "/usr/local/tomcat_mjon/webapps/mjon/MMS/" + fdlDate;*/ imagePath = fileSaveDir+"/file/MMS/" + fdlDate; } //별도 이미지 저장 함수로 파일 처리함 result = fileUtil.parseImageFileInf(files, KeyStr, 0, atchFileId , imagePath, isThumbFile); atchFileId = fileMngService.insertFileInfs(result); FileVO vo = null; Iterator iter = result.iterator(); while (iter.hasNext()) { vo = iter.next(); letterVO.setOrignlFileNm(vo.getOrignlFileNm()); letterVO.setAttachFileId(vo.getAtchFileId()); } } } //그림문자 내용 입력 String resultSts = letterService.insertletterPhotosInfo(letterVO); letterVO.setLetterId(resultSts); //우선순위 변경 if(!"".equals(letterVO.getPriNum()) && letterVO.getPriNum() != null) { String[] tmpArray = {letterVO.getLetterId()}; letterVO.setChkIds(tmpArray); letterVO.setChkIdsSize(tmpArray.length); //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int cnt = letterService.updateChkAfterPriorityPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 cnt += letterService.updateChkListPriority(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 cnt += letterService.updateOrderByPriority(letterVO); //4. 우선순위가 null인 값 우선순위 부여 cnt += letterService.updateNullPriority(letterVO); } if(StringUtil.isNotEmpty(resultSts)) { modelAndView.addObject("result", "success"); }else { modelAndView.addObject("result", "fail"); } }catch (Exception e) { modelAndView.addObject("result", "fail"); } return modelAndView; } /*맞춤제작 그림문자 리스트 화면 관리*/ @RequestMapping(value="/letter/photo/letterPhotosCustomList.do") public String letterPhotosCustomList(ModelMap model , @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, HttpSession session, HttpServletRequest request) throws Exception { Map flashMap =RequestContextUtils.getInputFlashMap(request); if(flashMap!=null && flashMap.get("userSearchVO") != null) { userSearchVO = (UserDefaultVO)flashMap.get("userSearchVO"); } if(userSearchVO.getPageUnit() != 10) { userSearchVO.setPageUnit(userSearchVO.getPageUnit()); } /** 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()); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //userSearchVO.setAdminYn("Y"); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("regdate"); userSearchVO.setSearchSortOrd("desc"); } List resultList = letterService.selectLetterPhotosCustomList(userSearchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); //카테고리 미리만들기 selectbox 미리 만들기 CateCode cateCode = new CateCode(); List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); return "letter/photo/custom/LetterPhotoCustomList"; } /*마춤제작 그림문자 상세보기 화면*/ @RequestMapping(value="/letter/photo/letterPhotosCustomDetail.do") public String letterPhotosCustomDetail(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, CateCode cateCode, LetterVO letterVO, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, Model model, HttpSession session, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO) throws Exception { //카테고리 미리만들기 selectbox 미리 만들기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); //등록된 카테고리 정보 불러오기 List cateCodeRegList = new ArrayList(); String cateCodeId = commandMap.get("cateCodeId").toString(); cateCodeRegList = letterService.selectPhotoCateCodeListWithId(cateCodeId); model.addAttribute("cateCodeRegList", cateCodeRegList); letterVO.setLetterId(commandMap.get("selectedId").toString()); //그림문자 내용 불러오기 LetterVO resultPhotoList = letterService.selectPhotosDetail(letterVO); model.addAttribute("resultPhotoList", resultPhotoList); String attchFileId = resultPhotoList.getAttachFileId(); //그림문자 첨부파일 정보 불러오기 LetterVO resultFileList = letterService.selectPhotoFileList(attchFileId); model.addAttribute("resultFileList", resultFileList); return "letter/photo/custom/LetterPhotoCustomDetail"; } /* 맞춤제작 그림문자 수정 처리 */ @RequestMapping(value="/letter/photo/updateLetterPhotosCustomAjax.do") public ModelAndView updateLetterPhotosCustom(@RequestParam Map commandMap, @ModelAttribute("fmsFileVO") FmsFileVO fmsFileVO, @ModelAttribute("fileVO") FileVO fileVO, LetterVO letterVO, final MultipartHttpServletRequest multiRequest, ModelMap model, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { modelAndView.addObject("result", "auth_fail"); //권한없음 팝업창 닫고, 오프너 창 리로드 return modelAndView; } try { //카테고리 뎁스 정보 불러오기 String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //그림문자 일반 if(depth1.equals("13000")) { letterVO.setMemberType("P"); }else if(depth1.equals("15000")) { // 기업 기업문자 letterVO.setMemberType("B"); }else {// 맞춤제작문자 letterVO.setMemberType("C"); } //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { letterVO.setCategoryCode(depth3); }else{ letterVO.setCategoryCode(depth2); } //문자 타입 입력 //그림문자 일반 if(depth1.equals("11000")) { // 맞춤제작문자 letterVO.setLetterType("C"); }else { //일반그림문자 letterVO.setLetterType("P"); } List result = null; String attachFileId = letterVO.getAttachFileId(); //수정일때 String orignlFileNm = letterVO.getOrignlFileNm(); String isThumbFile = ""; final Map files = multiRequest.getFileMap(); String KeyStr = "PHO_"; String imagePath = ""; Date now = new Date(); SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMdd"); String fdlDate = formatDate.format(now); //로컬 과 개발서버의 이미지 저장 경로 분기처리 if(request.getServerName().equals("localhost")) { imagePath = fileSaveDir+"src/main/webapp/MMS/" + fdlDate; }else { /*imagePath = "/usr/local/tomcat_mjon/webapps/mjon/MMS/" + fdlDate;*/ imagePath = fileSaveDir+"/file/MMS/" + fdlDate; } if (!files.isEmpty()){ if ("".equals(attachFileId)){ //이미지 등록 result = fileUtil.parseImageFileInf(files, KeyStr, 0, attachFileId , imagePath, isThumbFile); attachFileId = fileMngService.insertFileInfs(result); FileVO vo = null; Iterator iter = result.iterator(); while (iter.hasNext()) { vo = iter.next(); orignlFileNm = vo.getOrignlFileNm(); attachFileId = vo.getAtchFileId(); } if (vo == null) { } else { letterVO.setOrignlFileNm(orignlFileNm); letterVO.setAttachFileId(attachFileId); } }else{ //파일 업데이트 FileVO fvo = new FileVO(); fvo.setAtchFileId(attachFileId); int cnt = fileMngService.getMaxFileSN(fvo); result = fileUtil.parseImageFileInf(files, KeyStr , cnt, attachFileId, imagePath, isThumbFile); fileMngService.updateFileInfs(result); } } //해당 매뉴 DB에 update int resultUpdateCnt = 0; if(result != null) { // 첨부파일이 수정되었다면 신규 파일 정보로 업데이트 letterVO.setAttachFileId(result.get(0).getAtchFileId()); letterVO.setOrignlFileNm(result.get(0).getOrignlFileNm()); resultUpdateCnt = letterService.updateLetterPhotosInfo(letterVO); }else { // 첨부파일 수정이 없다면 기존 파일 명으로 업데이트 처리 letterVO.setAttachFileId(attachFileId); letterVO.setOrignlFileNm(orignlFileNm); resultUpdateCnt = letterService.updateLetterPhotosInfo(letterVO); } //우선순위 변경 if(!"".equals(letterVO.getPriNum()) && letterVO.getPriNum() != null) { String[] tmpArray = {letterVO.getLetterId()}; letterVO.setChkIds(tmpArray); letterVO.setChkIdsSize(tmpArray.length); //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int cnt = letterService.updateChkAfterPriorityPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 cnt += letterService.updateChkListPriority(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 cnt += letterService.updateOrderByPriority(letterVO); //4. 우선순위가 null인 값 우선순위 부여 cnt += letterService.updateNullPriority(letterVO); } if(resultUpdateCnt > 0) { modelAndView.addObject("result", "success"); }else { modelAndView.addObject("result", "fail"); } }catch (Exception e) { modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 맞춤제작 그림 문자 삭제후 목록조회 화면으로 이동한다. * @param checkedIdForDel 삭제대상아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/letter/photo/letterPhotosCustomList.do * @throws Exception */ @RequestMapping("/letter/photo/letterPhotosCustomDelete.do") public String letterPhotosCustomDelete(@RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { return "redirect:/letter/photo/letterPhotosCustomList.do"; } // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } // 그림문자 문자 삭제 - USE_YN 값을 'N'으로 변경함 letterService.deleteLetterPhotos(checkedIdForDel); redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); if(userSearchVO.getGnrlUser().equals("N")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/photo/letterPhotosCustomList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/photo/letterPhotosCustomList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * * 문자 발송 카테고리 관리 리스트 화면 * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return letter/cateconf/categoryConfList * @throws Exception */ @RequestMapping("/letter/cateconf/categoryConfList.do") public String categoryConfList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model, HttpServletRequest request, HttpSession session) throws Exception { Map flashMap =RequestContextUtils.getInputFlashMap(request); if(flashMap!=null && flashMap.get("userSearchVO") != null) { userSearchVO = (UserDefaultVO)flashMap.get("userSearchVO"); model.addAttribute("userSearchVO", userSearchVO); } if(userSearchVO.getPageUnit() != 10) { userSearchVO.setPageUnit(userSearchVO.getPageUnit()); } /** 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()); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //userSearchVO.setAdminYn("Y"); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("regdate"); userSearchVO.setSearchSortOrd("desc"); } //List resultList = userManageService.selectUserList(userSearchVO) ; List resultList = letterService.selectCategoryConfList(userSearchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount(resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); return "letter/cateconf/CateConfList"; } /** * 문자 발송 카테고리 관리 등록 화면 * * @param * @param * @return letter/cateconf/categoryConfRegist * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/cateconf/categoryConfRegist.do") public String categoryConfRegist( CateConfVO cateConfVO, CateCode cateCode, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { // 권한 체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } // 그림문자 카테고리 리스트 불러오기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); return "letter/cateconf/CateConfRegist"; } /** * 문자 발송 카테고리 관리 디비 입력 처리 * * @param * @param * @return letter/cateconf/categoryConfList.do * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/cateconf/insertCategoryConf.do") public String insertCategoryConf( CateConfVO cateConfVO, CateCode cateCode, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } //카테고리 뎁스 정보 불러오기 //String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { cateConfVO.setCategoryCode(depth3); }else{ cateConfVO.setCategoryCode(depth2); } // 카테고리 내용 저장하기 int result = letterService.insertCategoryConf(cateConfVO); if(result > 0) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert")); } return "redirect:/letter/cateconf/categoryConfList.do"; } /** * 문자 발송 카테고리 관리 상세보기 화면 * * @param * @param * @return letter/cateconf/categoryConfDetail * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/cateconf/categoryConfDetail.do") public String categoryConfDetail( @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, CateConfVO cateConfVO, CateCode cateCode, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } // 그림문자 카테고리 리스트 불러오기 List cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode); model.addAttribute("cateCodeList", cateCodeList); //등록된 카테고리 정보 불러오기 List cateCodeRegList = new ArrayList(); String cateCodeId = commandMap.get("cateCodeId").toString(); cateCodeRegList = letterService.selectPhotoCateCodeListWithId(cateCodeId); model.addAttribute("cateCodeRegList", cateCodeRegList); String categoryId = commandMap.get("selectedId").toString(); cateConfVO.setCategoryId(categoryId); //장/단문 메세지 내용 저장하기 CateConfVO result = new CateConfVO(); result = letterService.categoryConfDetail(cateConfVO); model.addAttribute("result", result); return "letter/cateconf/CateConfDetail"; } /** * 문자 발송 카테고리 삭제후 목록조회 화면으로 이동한다. * @param checkedIdForDel 삭제대상아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/letter/cateconf/categoryConfList.do * @throws Exception */ @RequestMapping("/letter/cateconf/categoryConfDelete.do") public String categoryConfDelete(@RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { return "redirect:/letter/cateconf/categoryConfList.do"; } // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } // 문자 발송 카테고리 삭제 - letterService.deleteCategoryConf(checkedIdForDel); redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); if(userSearchVO.getGnrlUser().equals("N")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/cateconf/categoryConfList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/cateconf/categoryConfList.do"); return redirectUrlMaker.getRedirectUrl(); } /** * 문자 발송 카테고리 수정 처리 * * @param * @param * @return /letter/cateconf/categoryConfList.do * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/cateconf/updateCategoryConf.do") public String updateCategoryConf( UserDefaultVO userSearchVO, CateConfVO cateConfVO, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } //카테고리 뎁스 정보 불러오기 String depth1 = commandMap.get("cateCodeDepth_01").toString(); String depth2 = commandMap.get("cateCodeDepth_02").toString(); String depth3 = commandMap.get("cateCodeDepth_03").toString(); //카테고리 최종 코드 번호 저장 2 뎁스 혹은 3뎁스 번호를 저장함 if(depth3.length() > 0) { cateConfVO.setCategoryCode(depth3); }else{ cateConfVO.setCategoryCode(depth2); } //문자 발송 카테고리 내용 수정하기 int result = letterService.updateCategoryConf(cateConfVO); if(result > 0) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.update")); } redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); return "redirect:/letter/cateconf/categoryConfList.do"; } //카테고리 엑셀 다운로드 @RequestMapping(value="/letter/cateconf/categoryExcelDownload.do") public void categoryExcelDownload(UserDefaultVO userSearchVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { userSearchVO.setRecordCountPerPage(100000); userSearchVO.setFirstIndex(0); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("categoryId"); userSearchVO.setSearchSortOrd("ASC"); } LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ userSearchVO.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 categorySearchList = letterService.selectCategoryConfList(userSearchVO) ; { //화면 리스트 sheetTitle = "카테고리 리스트" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); for(int i=0 ; i < categoryExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(categoryExcelValue[i][1]); } for(int i=0; i < categorySearchList.size(); i++){ row = sheet.createRow(i+1); System.out.println("row : "+row); System.out.println("I : "+i); for(int j=0 ; j < categoryExcelValue.length ; j++) { System.out.println("J : "+ j); cell = row.createCell(j); cell.setCellStyle(style); if(j==0) { cell.setCellValue(i+1); //번호 } if(j==1) { String categoryType = "C".equals((String)((EgovMap)categorySearchList.get(i)).get("categoryType")) ? "맞춤제작" : "일반제작"; cell.setCellValue(categoryType); System.out.println("categoryType : "+ categoryType); } if(j==2) { cell.setCellValue((String)((EgovMap)categorySearchList.get(i)).get("categoryNm")); //카테고리 이름 System.out.println("categoryNm : "+ (String)((EgovMap)categorySearchList.get(i)).get("categoryNm")); } if(j==3) { BigDecimal sort = (BigDecimal)((EgovMap)categorySearchList.get(i)).get("sort"); cell.setCellValue(sort.toString()); //순서 System.out.println("sort : "+ ((EgovMap)categorySearchList.get(i)).get("sort")); } if(j==4) { cell.setCellValue((String)((EgovMap)categorySearchList.get(i)).get("useYn")); //사용 유무 System.out.println("useYn : "+ (String)((EgovMap)categorySearchList.get(i)).get("useYn")); } if(j==5) { cell.setCellValue((String)((EgovMap)categorySearchList.get(i)).get("regdate")); //등록일자 System.out.println("regdate : "+ ((EgovMap)categorySearchList.get(i)).get("regdate")); } } } } 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) {} } } /** * 문자 발송 해쉬태그 관리 등록 화면 * * @param * @param * @return letter/hashconf/hashTagConfRegist * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/hashconf/hashTagConfRegist.do") public String hashTagConfRegist( HashConfVO hashConfVO, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { // 권한 체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } return "letter/hashconf/HashConfRegist"; } /** * 문자 발송 해쉬태그 관리 디비 입력 처리 * * @param * @param * @return letter/cateconf/categoryConfList.do * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/hashconf/insertHashTagConf.do") public String insertHashTagConf( HashConfVO hashConfVO, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } // 해쉬태그 내용 저장하기 int result = letterService.insertHashTagConf(hashConfVO); if(result > 0) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert")); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.insert")); } return "redirect:/letter/hashconf/hashTagConfList.do"; } /** * * 문자 발송 해쉬태그 관리 리스트 화면 * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return letter/hashconf/hashTatgconfList * @throws Exception */ @RequestMapping("/letter/hashconf/hashTagConfList.do") public String hashTagConfList(@ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, ModelMap model, HttpServletRequest request, HttpSession session) throws Exception { Map flashMap =RequestContextUtils.getInputFlashMap(request); if(flashMap!=null && flashMap.get("userSearchVO") != null) { userSearchVO = (UserDefaultVO)flashMap.get("userSearchVO"); model.addAttribute("userSearchVO", userSearchVO); } if(userSearchVO.getPageUnit() != 10) { userSearchVO.setPageUnit(userSearchVO.getPageUnit()); } /** 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()); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); //userSearchVO.setAdminYn("Y"); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("regdate"); userSearchVO.setSearchSortOrd("desc"); } //List resultList = userManageService.selectUserList(userSearchVO) ; List resultList = letterService.selectHashTagConfList(userSearchVO); model.addAttribute("resultList", resultList); paginationInfo.setTotalRecordCount( resultList.size()> 0 ? ((Long)((EgovMap)resultList.get(0)).get("totCnt")).intValue() : 0); model.addAttribute("paginationInfo", paginationInfo); return "letter/hashconf/HashConfList"; } /** * 문자 발송 해쉬태그 관리 상세보기 화면 * * @param * @param * @return letter/cateconf/categoryConfDetail * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/hashconf/hashTagConfDetail.do") public String hashTagConfDetail( @ModelAttribute("userSearchVO") UserDefaultVO userSearchVO, HashConfVO hashConfVO, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } String hashId = commandMap.get("selectedId").toString(); hashConfVO.setHashId(hashId); //장/단문 메세지 내용 저장하기 HashConfVO result = new HashConfVO(); result = letterService.hashTagConfDetail(hashConfVO); model.addAttribute("result", result); return "letter/hashconf/HashConfDetail"; } /** * 문자 발송 해쉬태그 수정 처리 * * @param * @param * @return /letter/hashconf/hashTagConfList.do * @param model 화면모델 * @throws Exception */ @RequestMapping("/letter/hashconf/updateHashTagConf.do") public String updateHashTagConf( UserDefaultVO userSearchVO, HashConfVO hashConfVO, HttpServletRequest request, @RequestParam Map commandMap, RedirectAttributes redirectAttributes, Model model) throws Exception { //권한체크 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "redirect:/uat/uia/EgovLoginUsr.do"; } //문자 발송 해쉬태그 내용 수정하기 int result = letterService.updateHashTagConf(hashConfVO); if(result > 0) { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.update")); }else { redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("fail.common.update")); } redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); return "redirect:/letter/hashconf/hashTagConfList.do"; } //해쉬태그 엑셀 다운로드 @RequestMapping(value="/letter/hashconf/hashTagExcelDownload.do") public void hashTagExcelDownload(UserDefaultVO userSearchVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { userSearchVO.setRecordCountPerPage(100000); userSearchVO.setFirstIndex(0); if("".equals(userSearchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List userSearchVO.setSearchSortCnd("regdate"); userSearchVO.setSearchSortOrd("desc"); } LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ userSearchVO.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 hashTagSearchList = letterService.selectHashTagConfList(userSearchVO) ; { //화면 리스트 sheetTitle = "해쉬태그 리스트" ; //제목 Sheet sheet = wb.createSheet(sheetTitle); row = sheet.createRow(0); for(int i=0 ; i < hashTagExcelValue.length ; i++) { cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(hashTagExcelValue[i][1]); } for(int i=0; i < hashTagSearchList.size(); i++){ row = sheet.createRow(i+1); System.out.println("row : "+row); System.out.println("I : "+i); for(int j=0 ; j < hashTagExcelValue.length ; j++) { System.out.println("J : "+ j); cell = row.createCell(j); cell.setCellStyle(style); if(j==0) { cell.setCellValue(i+1); //번호 } if(j==1) { cell.setCellValue((String)((EgovMap)hashTagSearchList.get(i)).get("hashNm")); //카테고리 이름 System.out.println("categoryNm : "+ (String)((EgovMap)hashTagSearchList.get(i)).get("hashNm")); } if(j==2) { BigDecimal sort = (BigDecimal)((EgovMap)hashTagSearchList.get(i)).get("sort"); cell.setCellValue(sort.toString()); //순서 System.out.println("sort : "+ ((EgovMap)hashTagSearchList.get(i)).get("sort")); } if(j==3) { cell.setCellValue((String)((EgovMap)hashTagSearchList.get(i)).get("useYn")); //사용 유무 System.out.println("useYn : "+ (String)((EgovMap)hashTagSearchList.get(i)).get("useYn")); } if(j==4) { cell.setCellValue((String)((EgovMap)hashTagSearchList.get(i)).get("regdate")); //사용 유무 System.out.println("regdate : "+ (String)((EgovMap)hashTagSearchList.get(i)).get("regdate")); } } } } 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) {} } } /** * 문자 발송 해쉬태그 삭제후 목록조회 화면으로 이동한다. * @param checkedIdForDel 삭제대상아이디 정보 * @param userSearchVO 검색조건 * @param model 화면모델 * @return forward:/letter/hashconf/hashTagConfList.do * @throws Exception */ @RequestMapping("/letter/hashconf/deleteHashTagConf.do") public String deleteHashTagConf(@RequestParam("checkedIdForDel") String checkedIdForDel, @ModelAttribute("searchVO") UserDefaultVO userSearchVO, RedirectAttributes redirectAttributes, Model model) throws Exception { if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey")) { return "redirect:/letter/hashconf/hashTagConfList.do"; } // 미인증 사용자에 대한 보안처리 Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if(!isAuthenticated) { model.addAttribute("message", egovMessageSource.getMessage("fail.common.login")); return "uat/uia/EgovLoginUsr"; } // 문자 발송 해쉬태그 삭제 - letterService.deleteHashTagConf(checkedIdForDel); redirectAttributes.addFlashAttribute("userSearchVO", userSearchVO); redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete")); if(userSearchVO.getGnrlUser().equals("N")) { RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/hashconf/hashTagConfList.do"); return redirectUrlMaker.getRedirectUrl(); } RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/letter/hashconf/hashTagConfList.do"); return redirectUrlMaker.getRedirectUrl(); } /* 그림문자 letterIdgen 강제 업데이트 */ @RequestMapping(value="/letter/photo/updateLetterPhotosIdgenAjax.do") public ModelAndView updateLetterPhotosIdgenAjax(ModelMap model, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { modelAndView.addObject("result", "auth_fail"); //권한없음 return modelAndView; } try { //letterService.updateLetterIdgen(횟수) letterService.updateLetterIdgen(50); modelAndView.addObject("result", "success"); }catch (Exception e) { modelAndView.addObject("result", "fail"); } return modelAndView; } /* 첨부파일 atchFileIdgen 강제 업데이트 */ @RequestMapping(value="/letter/photo/updateAtchFileIdgenAjax.do") public ModelAndView updateAtchFileIdgenAjax(ModelMap model, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { modelAndView.addObject("result", "auth_fail"); //권한없음 return modelAndView; } try { //fileUtil.updateAtchFileIdgen(횟수) fileUtil.updateAtchFileIdgen(50); modelAndView.addObject("result", "success"); }catch (Exception e) { modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 그림 문자 리스트에서 우선순위 변경 * @param * @param userSearchVO 검색조건 * @param model 화면모델 * @return * @throws Exception */ @RequestMapping("/letter/photo/updateLetterPriorityChangeAjax.do") @ResponseBody public ModelAndView updateLetterPriorityChangeAjax(LetterVO letterVO, ModelMap model, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { modelAndView.addObject("result", "auth_fail"); return modelAndView; } letterVO.setChkIdsSize(letterVO.getChkIds().length); try { //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int result = letterService.updateChkAfterPriorityPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 result += letterService.updateChkListPriority(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 result += letterService.updateOrderByPriority(letterVO); //4. 우선순위가 null인 값 우선순위 부여 result += letterService.updateNullPriority(letterVO); modelAndView.addObject("result", "success"); } catch (Exception e) { System.out.println(e.getMessage()); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 카테고리 관리 리스트에서 우선순위 변경 * @param * @param userSearchVO 검색조건 * @param model 화면모델 * @return * @throws Exception */ @RequestMapping("/letter/cateconf/updateCateConfSortChangeAjax.do") @ResponseBody public ModelAndView updateCateConfPriorityChangeAjax(LetterVO letterVO, ModelMap model, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { modelAndView.addObject("result", "auth_fail"); return modelAndView; } letterVO.setChkIdsSize(letterVO.getChkIds().length); try { //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int result = letterService.updateChkCateAfterSortPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 result += letterService.updateChkCateListSort(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 result += letterService.updateCateOrderBySort(letterVO); //4. 우선순위가 null인 값 우선순위 부여 result += letterService.updateCateNullSort(letterVO); modelAndView.addObject("result", "success"); } catch (Exception e) { System.out.println(e.getMessage()); modelAndView.addObject("result", "fail"); } return modelAndView; } /** * 베스트 문자샘플 관리 리스트에서 우선순위 변경 * @param * @param userSearchVO 검색조건 * @param model 화면모델 * @return * @throws Exception */ @RequestMapping("/letter/messages/updateMainTagSortChangeAjax.do") @ResponseBody public ModelAndView updateMainTagSortChangeAjax(LetterVO letterVO, ModelMap model, HttpServletRequest request) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (!isAuthenticated) { modelAndView.addObject("result", "auth_fail"); return modelAndView; } letterVO.setChkIdsSize(letterVO.getChkIds().length); try { //1. 설정하고자 하는 우선순위를 포함한 뒷 우선순위들을 우선순위 + 체크한 리스트 크기만큼 증가시키기 int result = letterService.updateChkTagAfterSortPlus(letterVO); //2. 체크한 리스트들 우선순위 업데이트 result += letterService.updateChkTagListSort(letterVO); //3. 그림문자 전체 우선순위 빈값없이 정렬하기 result += letterService.updateTagOrderBySort(letterVO); //4. 우선순위가 null인 값 우선순위 부여 result += letterService.updateTagNullSort(letterVO); modelAndView.addObject("result", "success"); } catch (Exception e) { System.out.println(e.getMessage()); modelAndView.addObject("result", "fail"); } return modelAndView; } // 그림문자 해쉬태그 일괄 저장 @RequestMapping(value = "/letter/photo/hashTagMassUpdateAjax.do") public ModelAndView hashTagMassUpdateAjax( @ModelAttribute("letterVO") LetterVO letterVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; // 로그인VO에서 사용자 정보 가져오기 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String frstRegisterId = loginVO == null ? "" : loginVO.getId(); letterVO.setRegId(frstRegisterId); // 최초등록자ID try{ // 제목, 해쉬태그 일괄변경 letterService.updateHashTagList(letterVO); } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /** * * 단문/장문 문자 목록 화면 하위 카테고리 selectbox 조회 ajax * @param userSearchVO 검색조건정보 * @param model 화면모델 * @return letter/messages/selectCateTwoDptListAjax * @throws Exception */ @RequestMapping("/letter/messages/selectCateTwoDptListAjax.do") public ModelAndView selectCateTwoDptListAjax(CateCode cateCode) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); try { List cateCodeList = letterService.selectCateCodeThrDptWithList(cateCode); modelAndView.addObject("status", "success"); modelAndView.addObject("result", cateCodeList); }catch(Exception e) { modelAndView.addObject("status", "fail"); } return modelAndView; } /** * 메인태그 관리 (pageing) * @param searchVO * @param model * @return "letter/messages/MainTagList" * @throws Exception */ @RequestMapping(value="/letter/messages/selectMainTagList.do") public String selectMainTagList(@ModelAttribute("searchVO") LetterVO searchVO, ModelMap model) throws Exception { if(searchVO.getPageUnit() != 10) { searchVO.setPageUnit(searchVO.getPageUnit()); } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); paginationInfo.setPageSize(searchVO.getPageSize()); if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List searchVO.setSearchSortCnd("mainTagNo"); searchVO.setSearchSortOrd("desc"); } searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); List mainTagList = letterService.selectMainTagList(searchVO); model.addAttribute("resultList", mainTagList); paginationInfo.setTotalRecordCount(mainTagList.size() > 0 ? ((LetterVO)mainTagList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "letter/messages/MainTagList"; } /** * 메인태그 등록화면 * @param searchVO * @param model * @return "letter/messages/MainTagRegist" * @throws Exception */ @RequestMapping("/letter/messages/insertMainTagView.do") public String insertMainTagView( @ModelAttribute("searchVO") LetterVO searchVO , Model model) throws Exception { LetterVO letterVO = new LetterVO(); if(null != searchVO.getCrudMode() && "U".equals(searchVO.getCrudMode())) { //수정 letterVO = letterService.selectMainTagDetail(searchVO); //이전 로그인한 IP 까지 조회 } model.addAttribute("letterVO", letterVO); return "letter/messages/MainTagRegist"; } // 메인태그 정보 @RequestMapping(value = "/letter/messages/viewMainTagAjax.do") public ModelAndView viewMainTagAjax( @ModelAttribute("letterVO") LetterVO searchVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; LetterVO letterVO = new LetterVO(); try { if(null != searchVO.getCrudMode() && "U".equals(searchVO.getCrudMode())) { //수정 letterVO = letterService.selectMainTagDetail(searchVO); //이전 로그인한 IP 까지 조회 } } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("letterVO", letterVO); modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } // 메인태그 저장 @RequestMapping(value = "/letter/messages/saveMainTagAjax.do") public ModelAndView saveMainTagAjax( @ModelAttribute("letterVO") LetterVO letterVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; // 로그인VO에서 사용자 정보 가져오기 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String frstRegisterId = loginVO == null ? "" : loginVO.getId(); letterVO.setRegId(frstRegisterId); // 최초등록자ID try{ if(null != letterVO.getCrudMode() && "U".equals(letterVO.getCrudMode())) { //수정 letterService.updateMainTag(letterVO); } else { // 등록 letterService.insertMainTag(letterVO); } } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } /*-------------------------------------------*/ /** * @Method Name : selectBastMsgTagList * @작성일 : 2023. 9. 5. * @작성자 : WYH * @변경이력 : * @Method 설명 : 배스트 문자샘플 매인화면 */ @RequestMapping(value="/letter/messages/selectBastMsgTagList.do") public String selectBastMsgTagList(@ModelAttribute("searchVO") LetterVO searchVO, ModelMap model) throws Exception { if(searchVO.getPageUnit() != 10) { searchVO.setPageUnit(searchVO.getPageUnit()); } /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(searchVO.getPageIndex()); paginationInfo.setRecordCountPerPage(searchVO.getPageUnit()); paginationInfo.setPageSize(searchVO.getPageSize()); if("".equals(searchVO.getSearchSortCnd())){ //최초조회시 최신것 조회List searchVO.setSearchSortCnd("mainSearchTagNo"); searchVO.setSearchSortOrd("desc"); } searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); List mainTagList = letterService.selectBastMsgTagList(searchVO); model.addAttribute("resultList", mainTagList); paginationInfo.setTotalRecordCount(mainTagList.size() > 0 ? ((LetterVO)mainTagList.get(0)).getTotCnt() : 0); model.addAttribute("paginationInfo", paginationInfo); return "letter/messages/BastMsgTagList"; } /** * @Method Name : insertBastMsgTagView * @작성일 : 2023. 9. 5. * @작성자 : WYH * @변경이력 : * @Method 설명 : 베스트 문자샘플 등록화면 */ @RequestMapping("/letter/messages/insertBastMsgTagView.do") public String insertBastMsgTagView( @ModelAttribute("searchVO") LetterVO searchVO , Model model) throws Exception { LetterVO letterVO = new LetterVO(); if(null != searchVO.getMainSearchTagNo() && !"".equals(searchVO.getMainSearchTagNo())) { //수정 letterVO = letterService.selectBastMsgTagInfo(searchVO); //이전 로그인한 IP 까지 조회 } model.addAttribute("letterVO", letterVO); return "letter/messages/BastMsgTagInfo"; } /** * @Method Name : saveBastMsgTagAjax * @작성일 : 2023. 9. 5. * @작성자 : WYH * @변경이력 : * @Method 설명 : 베스트 문자샘플 등록 / 수정 */ @RequestMapping(value = "/letter/messages/saveBastMsgTagAjax.do") public ModelAndView saveBastMsgTagAjax( @ModelAttribute("letterVO") LetterVO letterVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; // 로그인VO에서 사용자 정보 가져오기 LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); String frstRegisterId = loginVO == null ? "" : loginVO.getId(); letterVO.setRegId(frstRegisterId); // 최초등록자ID try{ if(null != letterVO.getMainSearchTagNo() && !"".equals(letterVO.getMainSearchTagNo())) { //수정 letterService.updateBastMsgTag(letterVO); } else { // 등록 letterService.insertBastMsgTag(letterVO); } } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); return modelAndView; } @RequestMapping(value={"/letter/photo/updateMultiMjonMsgAgentStsDataAjax.do"}) public ModelAndView updateMultiMjonMsgAgentStsDataAjax(@ModelAttribute("mjonMsgAgentStsVO") MjonMsgAgentStsVO mjonMsgAgentStsVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); boolean isSuccess = true; String msg = ""; System.out.print("\n updateMultiMjonMsgAgentStsData 1==== \n"); System.out.print(" mjonMsgAgentStsVO.getAgentCodes().size(): " + mjonMsgAgentStsVO.getAgentCodes().size() + ":===end=== \n"); try{ System.out.print("==== updateMultiMjonMsgAgentStsDataAjax controller try start ==== \n"); mjonMsgAgentStsService.updateMjonMsgAgentStsDataList(mjonMsgAgentStsVO); System.out.print("==== updateMultiMjonMsgAgentStsDataAjax controller try catch end ==== \n"); } catch(Exception e) { isSuccess = false; msg = e.getMessage(); } modelAndView.addObject("isSuccess", isSuccess); modelAndView.addObject("msg", msg); System.out.println("modelAndView.getViewName(): " + modelAndView.getViewName()) ; return modelAndView; } }