package itn.let.fax.user.web; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import itn.com.cmm.LoginVO; import itn.com.cmm.util.FileUtil; import itn.com.cmm.util.PdfUtil; import itn.com.utl.fcc.service.EgovStringUtil; import itn.let.fax.addr.service.FaxAddrService; import itn.let.fax.addr.service.FaxAddrVO; import itn.let.fax.user.service.FaxConvertVO; import itn.let.fax.user.service.FaxGroupDataVO; import itn.let.fax.user.service.FaxService; import itn.let.mjo.msgdata.service.MjonMsgDataService; @Controller public class FaxController { private static final Logger logger = LoggerFactory.getLogger(FaxController.class); @Resource(name = "faxService") private FaxService faxService; @Resource (name = "FaxAddrService") private FaxAddrService faxAddrService; @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; /** fax 변환 파일 저장 경로*/ @Value("#{globalSettings['Globals.fax.file.convert.path']}") private String FAX_CONVERT_FILE_PATH; /** * @methodName : selectFaxDataView * @author : 이호영 * @date : 2023.02.07 * @description : * @param cateCode * @param request * @param model * @param redirectAttributes * @return * @throws Exception */ @RequestMapping(value= {"/web/mjon/fax/faxDataView.do"}) public String faxDataView(HttpServletRequest request, ModelMap model ,FaxAddrVO faxAddrVO, RedirectAttributes redirectAttributes) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(StringUtils.isEmpty(userId)) { return "redirect:/web/user/login/login.do"; } // TODO 미로그인 시 로그인 페이지로 이동 처리 model.addAttribute("loginVO", loginVO); //주소록에서 전달 받은 주소록 정보 조회하기 String moveAddrFlag = faxAddrVO.getMoveAddrFlag(); String moveAddrAllFlag = faxAddrVO.getMoveAddrAllFlag(); if(moveAddrFlag == null || moveAddrFlag.equals("")) { moveAddrFlag = "N"; } if(moveAddrAllFlag == null || moveAddrAllFlag.equals("")) { moveAddrAllFlag = "N"; } List addrIdList = faxAddrVO.getAddrIdList(); List tempList = new ArrayList(); List resultFaxAddrList = new ArrayList(); List addrNmList = new ArrayList(); List addrPhoneNoList = new ArrayList(); int listCnt = 0; //주소록 선택 전송시 if(moveAddrFlag.equals("Y")) { for(String seqStr : addrIdList) { String seqId = seqStr.replace("[", ""); seqId = seqId.replace("]", ""); tempList.add(seqId); } faxAddrVO.setAddrIdList(tempList); faxAddrVO.setMberId(userId); resultFaxAddrList = faxAddrService.selectFaxAddrDataList(faxAddrVO); for(FaxAddrVO tmp : resultFaxAddrList) { addrNmList.add(tmp.getAddrNm()); addrPhoneNoList.add(tmp.getAddrPhoneNo()); } listCnt = resultFaxAddrList.size(); } //주소록 전체 전송시 if(moveAddrAllFlag.equals("Y")) { FaxAddrVO faxAddrAllVO = new FaxAddrVO(); faxAddrAllVO.setMberId(userId); faxAddrAllVO.setRecordCountPerPage(100000); faxAddrAllVO.setFirstIndex(0); faxAddrAllVO.setSearchAddrGrpId(request.getParameter("searchAddrGrpId")); faxAddrAllVO.setSearchCondition(request.getParameter("searchCondition")); faxAddrAllVO.setSearchKeyword(request.getParameter("searchKeyword")); faxAddrAllVO.setStartKeyword(request.getParameter("startKeyword")); List reaultaddrAllList = faxAddrService.selectFaxAddrList(faxAddrAllVO); for(FaxAddrVO tmpAll : reaultaddrAllList) { addrNmList.add(tmpAll.getAddrNm()); addrPhoneNoList.add(tmpAll.getAddrPhoneNo()); } listCnt = reaultaddrAllList.size(); } /* 목록을 가져 온다 */ Map faxDataViewMap = faxService.selectFaxDataView(userId); //최근 전송내역 model.addAttribute("resultLatestMsgList", faxDataViewMap.get("resultLatestMsgList")); //자주보내는 번호 model.addAttribute("resultBookMarkMsgList", faxDataViewMap.get("resultBookMarkMsgList")); //사용자 보유 잔액 model.addAttribute("userMoney", faxDataViewMap.get("userMoney")); //단가 model.addAttribute("faxPrice", faxDataViewMap.get("faxPrice")); //주소록에서 전달 받은 주소록 정보 model.addAttribute("addrNmList", addrNmList); model.addAttribute("addrPhoneNoList", addrPhoneNoList); model.addAttribute("resultFaxAddrListCnt", listCnt); model.addAttribute("moveAddrFlag", moveAddrFlag); model.addAttribute("moveAddrAllFlag", moveAddrAllFlag); return "/web/fax/faxDataView"; } @RequestMapping(value= {"/web/mjon/fax/faxSendList.do"}) public String faxSendList(@ModelAttribute("searchVO") FaxGroupDataVO faxGroupDataVO , ModelMap model) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(StringUtils.isEmpty(userId)) { return "redirect:/web/user/login/login.do"; } model.addAttribute("loginVO", loginVO); try { /* 목록을 가져 온다 */ faxGroupDataVO.setUserId(userId); Map faxSendListMap = faxService.selectFaxSendList(faxGroupDataVO); // 전송내역 model.addAttribute("faxGroupListVO", faxSendListMap.get("faxGroupListVO")); model.addAttribute("searchKeyword", faxSendListMap.get("searchKeyword")); model.addAttribute("paginationInfo", faxSendListMap.get("paginationInfo")); } catch (Exception e) { e.printStackTrace(); // TODO: handle exception } return "/web/fax/faxSendList"; } /** * @methodName : faxSendDetailList * @author : 이호영 * @date : 2023.04.05 * @description : 상세 팝업 * @param faxGroupDataVO * @param model * @return * @throws Exception */ @RequestMapping(value= {"/web/mjon/fax/faxSendDetailPopup.do"}) public String faxSendDetailList(@ModelAttribute("searchVO") FaxGroupDataVO faxGroupDataVO , ModelMap model) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(StringUtils.isEmpty(userId)) { return "redirect:/web/user/login/login.do"; } model.addAttribute("loginVO", loginVO); /* 목록을 가져 온다 */ faxGroupDataVO.setUserId(userId); Map resultMap = faxService.selectFaxSendDetailList(faxGroupDataVO); // 전송내역 model.addAttribute("faxDetailListVO", resultMap.get("faxDetailListVO")); model.addAttribute("paginationInfo", resultMap.get("paginationInfo")); return "/web/fax/faxSendDetailPopup"; } /** * @methodName : pdfPreview * @author : 이호영 * @date : 2023.04.06 * @description : pdf 미리보기 / [상세 팝업]문서보기 * @param response * @param faxConvertVO * @throws Exception */ @RequestMapping(value= {"/web/mjon/fax/pdfPreview.do"}) public void pdfPreview(HttpServletResponse response, FaxConvertVO faxConvertVO) throws Exception{ String pdfFileName = faxConvertVO.getFaxConvertFilePath(); if(pdfFileName.indexOf("/") < 0) pdfFileName = FAX_CONVERT_FILE_PATH+"/" + pdfFileName; PdfUtil.showPdf(response, pdfFileName); } /** * @methodName : tifDownload * @author : 이호영 * @date : 2023.04.06 * @description : tif 파일 다운로드 * @param response * @param faxConvertVO * @throws Exception */ @RequestMapping(value= {"/web/mjon/fax/tifDownload.do"}) public void tifDownload(HttpServletResponse response, FaxConvertVO faxConvertVO) throws Exception{ String fileInfo = faxConvertVO.getFaxConvertFilePath(); if(fileInfo.indexOf("/") < 0) fileInfo = FAX_CONVERT_FILE_PATH+"/" + fileInfo; FileUtil.downLoad(response, fileInfo, ""); } /** * @methodName : getExcelForFaxSendList * @author : 이호영 * @date : 2023.04.07 * @description : 팩스 전송리스트 엑셀 다운로드 * @param faxGroupDataVO * @throws Exception */ @RequestMapping(value= {"/web/mjon/fax/getExcelForFaxSendList.do"}) public void getExcelForFaxSendList( FaxGroupDataVO faxGroupDataVO) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); /* 목록을 가져 온다 */ faxGroupDataVO.setUserId(userId); faxService.getExcelForFaxSendList(faxGroupDataVO); } /** * @methodName : printfaxSentDataAjax * @author : 이호영 * @date : 2023.04.07 * @description : 팩스 전송결과 출력하기 * @param faxGroupDataVO * @throws Exception */ @RequestMapping(value= {"/web/mjon/fax/printfaxSentDataAjax.do"}) public String printfaxSentDataAjax( FaxGroupDataVO faxGroupDataVO , ModelMap model) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); String userNm = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getName()); /* 목록을 가져 온다 */ faxGroupDataVO.setUserId(userId); Map resultMap = faxService.printfaxSentDataAjax(faxGroupDataVO); model.addAttribute("faxGroupListVO", resultMap.get("faxGroupListVO")); model.addAttribute("dateMap", resultMap.get("dateMap")); model.addAttribute("userNm", userNm); return "web/fax/faxSentPrintListPopUp"; } @RequestMapping(value= {"/web/mjon/fax/faxSendListAjax.do"}) public String faxSendListAjax(@ModelAttribute("searchVO") FaxGroupDataVO faxGroupDataVO , ModelMap model) throws Exception{ //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); if(StringUtils.isEmpty(userId)) { return "redirect:/web/user/login/login.do"; } model.addAttribute("loginVO", loginVO); /* 목록을 가져 온다 */ faxGroupDataVO.setUserId(userId); FaxGroupDataVO faxFileInfo = faxService.selectFaxSendDetailInfo(faxGroupDataVO); // 전송내역 model.addAttribute("faxFileInfo", faxFileInfo); return "/web/fax/faxSentListPopAjax"; } }