mjon_git/src/main/java/itn/let/lett/web/LetterController.java

2678 lines
92 KiB
Java

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<String, ?> 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<CateCode> 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<String, Object> 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<CateCode> 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<String, Object> 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<String, Object> 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<CateCode> cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode);
model.addAttribute("cateCodeList", cateCodeList);
//등록된 카테고리 정보 불러오기
List<CateCode> cateCodeRegList = new ArrayList<CateCode>();
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<String, Object> 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<CateCode> 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<FileVO> result = null;
String atchFileId = fmsFileVO.getFmsImageFile(); //수정일때
String isThumbFile = "";
final Map<String, MultipartFile> 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<FileVO> 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<String, ?> 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<CateCode> cateCodeList = letterService.selectCateCodeTwoDptWithList(cateCode);
/*List<CateCode> 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<CateCode> cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode);
model.addAttribute("cateCodeList", cateCodeList);
//등록된 카테고리 정보 불러오기
List<CateCode> cateCodeRegList = new ArrayList<CateCode>();
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<FileVO> result = null;
String attachFileId = letterVO.getAttachFileId(); //수정일때
String orignlFileNm = letterVO.getOrignlFileNm();
String isThumbFile = "";
final Map<String, MultipartFile> 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<FileVO> 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<CateCode> 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<FileVO> result = null;
String atchFileId = fmsFileVO.getFmsImageFile(); //수정일때
String isThumbFile = "";
final Map<String, MultipartFile> 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<FileVO> 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<String, ?> 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<CateCode> 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<CateCode> cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode);
model.addAttribute("cateCodeList", cateCodeList);
//등록된 카테고리 정보 불러오기
List<CateCode> cateCodeRegList = new ArrayList<CateCode>();
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<FileVO> result = null;
String attachFileId = letterVO.getAttachFileId(); //수정일때
String orignlFileNm = letterVO.getOrignlFileNm();
String isThumbFile = "";
final Map<String, MultipartFile> 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<FileVO> 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<String, ?> 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<String, Object> 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<CateCode> 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<String, Object> 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<String, Object> 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<CateCode> cateCodeList = letterService.selectPhotoCateCodeWithList(cateCode);
model.addAttribute("cateCodeList", cateCodeList);
//등록된 카테고리 정보 불러오기
List<CateCode> cateCodeRegList = new ArrayList<CateCode>();
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<String, Object> 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<String, Object> 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<String, Object> 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<String, ?> 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<String, Object> 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<String, Object> 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<CateCode> 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<LetterVO> 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<LetterVO> 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;
}
}