From f82bf402dcf7c653dbb956be5aa09f5f67e37b77 Mon Sep 17 00:00:00 2001 From: rosewiper Date: Mon, 12 May 2025 14:36:41 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=20=EC=A0=84=EC=86=A1=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=EC=BD=94=EB=93=9C=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=97=91=EC=85=80=EB=8B=A4=EC=9A=B4=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80=20=EC=95=8C=EB=A6=BC=ED=86=A1/?= =?UTF-8?q?=EC=B9=9C=EA=B5=AC=ED=86=A1=20=EC=A0=84=EC=86=A1=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EC=BD=94=EB=93=9C=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=97=91=EC=85=80=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/MjonKakaoSendResultController.java | 118 ++++++++++++++++++ .../let/mjo/msg/web/MjonMsgController.java | 104 +++++++++++++++ .../sendresult/KakaoSendResultList.jsp | 7 ++ .../jsp/uss/ion/msg/MsgResultCodeList.jsp | 8 ++ 4 files changed, 237 insertions(+) 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 8c90b7e..caad601 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 @@ -1,10 +1,21 @@ package itn.let.kakao.admin.kakaoAt.web; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +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.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; @@ -25,6 +36,17 @@ public class MjonKakaoSendResultController { @Resource(name = "mjonMsgService") private MjonMsgService mjonMsgService; + //카카오알림톡 발송 결과 코드 리스트 엑셀 다운로드 + private String[][] kakaoResultCodeExcelValue ={ + {"0" ,"번호" , "1" , "" }, + {"1", "전송사" , "IHT" , ""}, + {"2", "결과코드1" , "결과코드", ""}, + {"3", "결과코드2" , "결과코드 ", ""}, + {"4", "코드설명" , "코드 내용", ""}, + {"5", "코드이름" , "코드이름", ""}, + {"6", "등록일자" , "2021-06-01 19:05:12", ""}, + }; + /** * 알림톡 발송 결과 리스트 * @param searchVO @@ -61,6 +83,102 @@ public class MjonKakaoSendResultController { } + /** + * 카카오 알림톡 발송 결과 코드 엑셀 다운로드 + * @param MjonMsgResultCodeVO + * @param model + * @return "" + * @throws Exception + */ + @RequestMapping(value= {"/uss/ion/kakaoat/sendresult/KakaoResultCodeExcelDownload.do"}) + public void kakaoResultCodeExcelDownload( MjonMsgResultCodeVO mjonMsgResultCodeVO, + HttpServletRequest request, + HttpServletResponse response , + ModelMap model) 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 sheetTitle = ""; + try{ + //List resultList = mjonMsgService.selectMjonMsgGroupList(mjonMsgVO); + mjonMsgResultCodeVO.setAgentCode("04"); + List resultList = mjonMsgService.selectKakaoResultCodeListPageing(mjonMsgResultCodeVO); + { //화면 리스트 + sheetTitle = "카카오 알림톡 발송 결과 코드 리스트(중계사별)" ; //제목 + Sheet sheet = wb.createSheet(sheetTitle); + row = sheet.createRow(0); + for(int i=0 ; i < kakaoResultCodeExcelValue.length ; i++) { + cell = row.createCell(i); + cell.setCellStyle(style); + cell.setCellValue(kakaoResultCodeExcelValue[i][1]); + } + + for(int i=0; i < resultList.size(); i++){ + row = sheet.createRow(i+1); + for(int j=0 ; j < kakaoResultCodeExcelValue.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) {} + } + } + + /** * 카카오 알림톡 발송 결과 코드 수정 * @param MjonMsgResultCodeVO 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 9cc4028..93b1225 100644 --- a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java +++ b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java @@ -212,6 +212,16 @@ public class MjonMsgController { {"9", "전송사" , "", ""} }; + //문자 발송 결과 코드 리스트 엑셀 다운로드 + private String[][] msgResultCodeExcelValue ={ + {"0" ,"번호" , "1" , "" }, + {"1", "전송사" , "IHT" , ""}, + {"2", "결과코드1" , "결과코드", ""}, + {"3", "결과코드2" , "결과코드 ", ""}, + {"4", "코드설명" , "코드 내용", ""}, + {"5", "코드이름" , "코드이름", ""}, + {"6", "등록일자" , "2021-06-01 19:05:12", ""}, + }; /** * 문자전송 리스트 @@ -2980,6 +2990,100 @@ public class MjonMsgController { return "/uss/ion/msg/MsgResultCodeList"; //문자결과 리스트 } + /** + * 문자발송 결과 코드 엑셀 다운로드 + * @param MjonMsgResultCodeVO + * @param model + * @return "" + * @throws Exception + */ + @RequestMapping(value= {"/uss/ion/msg/MsgResultCodeExcelDownload.do"}) + public void msgResultCodeExcelDownload( MjonMsgResultCodeVO mjonMsgResultCodeVO, + HttpServletRequest request, + HttpServletResponse response , + ModelMap model) 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 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) {} + } + } + /** * 전송사 발송 결과 코드 등록 화면 diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/sendresult/KakaoSendResultList.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/sendresult/KakaoSendResultList.jsp index 7e1a847..e4dc76c 100644 --- a/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/sendresult/KakaoSendResultList.jsp +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/sendresult/KakaoSendResultList.jsp @@ -52,6 +52,12 @@ function fn_modify(resultId){ frm.submit(); } +//엑셀 다운로드 +function rstCodeListExcelDownload(){ + document.listForm.method = "post"; + document.listForm.action = ""; + document.listForm.submit(); +}