diff --git a/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoSendResultController.java b/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoSendResultController.java index caad601..3fba914 100644 --- a/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoSendResultController.java +++ b/src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoSendResultController.java @@ -90,8 +90,8 @@ public class MjonKakaoSendResultController { * @return "" * @throws Exception */ - @RequestMapping(value= {"/uss/ion/kakaoat/sendresult/KakaoResultCodeExcelDownload.do"}) - public void kakaoResultCodeExcelDownload( MjonMsgResultCodeVO mjonMsgResultCodeVO, + @RequestMapping(value= {"/uss/ion/kakaoat/sendresult/KakaoResultCodeExcelDownload_back.do"}) + public void kakaoResultCodeExcelDownload_back( MjonMsgResultCodeVO mjonMsgResultCodeVO, HttpServletRequest request, HttpServletResponse response , ModelMap model) throws Exception { @@ -177,6 +177,30 @@ public class MjonKakaoSendResultController { try { wb.close(); } catch(Exception ignore) {} } } + + /** + * 카카오 알림톡 발송 결과 코드 엑셀 다운로드 + * @param MjonMsgResultCodeVO + * @param model + * @return "" + * @throws Exception + */ + @RequestMapping(value= {"/uss/ion/kakaoat/sendresult/KakaoResultCodeExcelDownload.do"}) + public void kakaoResultCodeExcelDownload( MjonMsgResultCodeVO mjonMsgResultCodeVO, + HttpServletRequest request, + HttpServletResponse response) throws Exception { + + + LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); + if(null != loginVO && !"super".equals(loginVO.getSiteId())){ + mjonMsgResultCodeVO.setSiteId(loginVO.getSiteId()); + } + + //발송결과 코드 엑셀다운로드 요청 + String menuType = "Kakao"; + mjonMsgService.getMsgResultCodeExcelDownload(menuType, kakaoResultCodeExcelValue, mjonMsgResultCodeVO, request, response); + + } /** diff --git a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java index 7503e1f..b2b5ddb 100644 --- a/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java +++ b/src/main/java/itn/let/mjo/msg/service/MjonMsgService.java @@ -2,6 +2,9 @@ package itn.let.mjo.msg.service; import java.util.List; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import itn.let.mjo.reservmsg.service.MjonResvMsgVO; public interface MjonMsgService { @@ -236,4 +239,8 @@ public interface MjonMsgService { List selectMjonHoliMsgList(MjonMsgVO mjonMsgVO) throws Exception; void updateHoliMsgResultYn(MjonMsgVO mjonMsgVO) throws Exception; + + //관리자 문자/알림톡 전송 결과 코드 엑셀다운로드 + void getMsgResultCodeExcelDownload(String menuType, String[][] msgResultCodeExcelValue, MjonMsgResultCodeVO mjonMsgResultCodeVO, HttpServletRequest request, HttpServletResponse response); + } diff --git a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java index 68424bc..f49cbaf 100644 --- a/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java +++ b/src/main/java/itn/let/mjo/msg/service/impl/MjonMsgServiceImpl.java @@ -1,13 +1,22 @@ package itn.let.mjo.msg.service.impl; +import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Locale; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +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.stereotype.Service; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -1180,4 +1189,98 @@ public class MjonMsgServiceImpl extends EgovAbstractServiceImpl implements MjonM mjonMsgDAO.updateHoliMsgResultYn(mjonMsgVO); } + @Override + public void getMsgResultCodeExcelDownload(String menuType, String[][] msgResultCodeExcelValue, MjonMsgResultCodeVO mjonMsgResultCodeVO, HttpServletRequest request, HttpServletResponse response) { + + mjonMsgResultCodeVO.setRecordCountPerPage(100000); + mjonMsgResultCodeVO.setFirstIndex(0); + + // 메모리에 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 = "문자 발송 결과 코드 리스트(중계사별)"; + + if(menuType.equals("Kakao")) { + fileName ="카카오 알림톡 발송 결과 코드 리스트(중계사별)"; + sheetTitle = "카카오 알림톡 발송 결과 코드 리스트(중계사별)" ; + } + + try{ + List resultList = new ArrayList(); + + if(menuType.equals("Msg")) { + resultList = mjonMsgDAO.selectMsgResultCodeListPageing(mjonMsgResultCodeVO); + }else{ + mjonMsgResultCodeVO.setAgentCode("04"); + resultList = mjonMsgDAO.selectKakaoResultCodeListPageing(mjonMsgResultCodeVO); + } + + { //화면 리스트 + + Sheet sheet = wb.createSheet(sheetTitle); + row = sheet.createRow(0); + for(int i=0 ; i < msgResultCodeExcelValue.length ; i++) { + cell = row.createCell(i); + cell.setCellStyle(style); + cell.setCellValue(msgResultCodeExcelValue[i][1]); + } + + for(int i=0; i < resultList.size(); i++){ + row = sheet.createRow(i+1); + for(int j=0 ; j < msgResultCodeExcelValue.length ; j++) { + cell = row.createCell(j); + cell.setCellStyle(style); + + if(j==0) cell.setCellValue(i+1); //번호 + if(j==1) cell.setCellValue(resultList.get(i).getAgentCodeTxt()); //전송사 코드 + if(j==2) cell.setCellValue(resultList.get(i).getResultCode()); //결과코드1 + if(j==3) cell.setCellValue(resultList.get(i).getResultCode2()); //결과코드2 + if(j==4) cell.setCellValue(resultList.get(i).getResultCodeTxt()); //코드설명 + if(j==5) cell.setCellValue(resultList.get(i).getResultCodeNm()); //코드이름 + if(j==6) cell.setCellValue(resultList.get(i).getLastUpdtPnttm()); //등록일자 + } + } + } + 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) {} + } + + } + } diff --git a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java index 82642da..a222cd5 100644 --- a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java +++ b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java @@ -12,7 +12,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Random; import java.util.stream.Collectors; import javax.annotation.Resource; @@ -40,8 +39,6 @@ import org.springframework.web.servlet.HandlerMapping; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; -import com.hanju.util.Authentication; - import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; import itn.com.cmm.ComDefaultCodeVO; @@ -72,14 +69,11 @@ import itn.let.mjo.msgsent.service.MjonMsgRecvTestService; import itn.let.mjo.msgsent.service.MjonMsgRecvTestVO; import itn.let.mjo.msgsent.service.MjonMsgSentTestService; import itn.let.mjo.msgsent.service.MjonMsgSentTestVO; -import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.payva.service.VacsVactService; import itn.let.mjo.payva.service.VacsVactVO; import itn.let.mjo.reservmsg.service.MjonReservMsgService; import itn.let.mjo.reservmsg.service.MjonResvMsgVO; import itn.let.sts.com.StatsVO; -import itn.let.uat.uia.service.AuthCertVO; -import itn.let.uat.uia.web.ClientIP; import itn.let.uat.uia.web.EmailVO; import itn.let.uat.uia.web.SendLogVO; import itn.let.uat.uia.web.SendMail; @@ -2701,88 +2695,17 @@ public class MjonMsgController { @RequestMapping(value= {"/uss/ion/msg/MsgResultCodeExcelDownload.do"}) public void msgResultCodeExcelDownload( MjonMsgResultCodeVO mjonMsgResultCodeVO, HttpServletRequest request, - HttpServletResponse response , - ModelMap model) throws Exception { + HttpServletResponse response ) throws Exception { - mjonMsgResultCodeVO.setRecordCountPerPage(100000); - mjonMsgResultCodeVO.setFirstIndex(0); LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); if(null != loginVO && !"super".equals(loginVO.getSiteId())){ mjonMsgResultCodeVO.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 menuType = "Msg"; + mjonMsgService.getMsgResultCodeExcelDownload(menuType, msgResultCodeExcelValue, mjonMsgResultCodeVO, request, response); - String sheetTitle = ""; - try{ - //List resultList = mjonMsgService.selectMjonMsgGroupList(mjonMsgVO); - List resultList = mjonMsgService.selectMsgResultCodeListPageing(mjonMsgResultCodeVO); - { //화면 리스트 - sheetTitle = "문자 발송 결과 코드 리스트(중계사별)" ; //제목 - Sheet sheet = wb.createSheet(sheetTitle); - row = sheet.createRow(0); - for(int i=0 ; i < msgResultCodeExcelValue.length ; i++) { - cell = row.createCell(i); - cell.setCellStyle(style); - cell.setCellValue(msgResultCodeExcelValue[i][1]); - } - - for(int i=0; i < resultList.size(); i++){ - row = sheet.createRow(i+1); - for(int j=0 ; j < msgResultCodeExcelValue.length ; j++) { - cell = row.createCell(j); - cell.setCellStyle(style); - - if(j==0) cell.setCellValue(i+1); //번호 - if(j==1) cell.setCellValue(resultList.get(i).getAgentCodeTxt()); //전송사 코드 - if(j==2) cell.setCellValue(resultList.get(i).getResultCode()); //결과코드1 - if(j==3) cell.setCellValue(resultList.get(i).getResultCode2()); //결과코드2 - if(j==4) cell.setCellValue(resultList.get(i).getResultCodeTxt()); //코드설명 - if(j==5) cell.setCellValue(resultList.get(i).getResultCodeNm()); //코드이름 - if(j==6) cell.setCellValue(resultList.get(i).getLastUpdtPnttm()); //등록일자 - } - } - } - 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) {} - } }