--- src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoSendResultController.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoSendResultController.java
... | ... | @@ -1,10 +1,21 @@ |
| 1 | 1 |
package itn.let.kakao.admin.kakaoAt.web; |
| 2 | 2 |
|
| 3 |
+import java.io.OutputStream; |
|
| 4 |
+import java.text.SimpleDateFormat; |
|
| 5 |
+import java.util.Date; |
|
| 3 | 6 |
import java.util.List; |
| 7 |
+import java.util.Locale; |
|
| 4 | 8 |
|
| 5 | 9 |
import javax.annotation.Resource; |
| 6 | 10 |
import javax.servlet.http.HttpServletRequest; |
| 11 |
+import javax.servlet.http.HttpServletResponse; |
|
| 7 | 12 |
|
| 13 |
+import org.apache.poi.ss.usermodel.Cell; |
|
| 14 |
+import org.apache.poi.ss.usermodel.CellStyle; |
|
| 15 |
+import org.apache.poi.ss.usermodel.Font; |
|
| 16 |
+import org.apache.poi.ss.usermodel.Row; |
|
| 17 |
+import org.apache.poi.ss.usermodel.Sheet; |
|
| 18 |
+import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
|
| 8 | 19 |
import org.springframework.stereotype.Controller; |
| 9 | 20 |
import org.springframework.ui.ModelMap; |
| 10 | 21 |
import org.springframework.web.bind.annotation.ModelAttribute; |
... | ... | @@ -24,6 +35,17 @@ |
| 24 | 35 |
|
| 25 | 36 |
@Resource(name = "mjonMsgService") |
| 26 | 37 |
private MjonMsgService mjonMsgService; |
| 38 |
+ |
|
| 39 |
+ //카카오알림톡 발송 결과 코드 리스트 엑셀 다운로드 |
|
| 40 |
+ private String[][] kakaoResultCodeExcelValue ={
|
|
| 41 |
+ {"0" ,"번호" , "1" , "" },
|
|
| 42 |
+ {"1", "전송사" , "IHT" , ""},
|
|
| 43 |
+ {"2", "결과코드1" , "결과코드", ""},
|
|
| 44 |
+ {"3", "결과코드2" , "결과코드 ", ""},
|
|
| 45 |
+ {"4", "코드설명" , "코드 내용", ""},
|
|
| 46 |
+ {"5", "코드이름" , "코드이름", ""},
|
|
| 47 |
+ {"6", "등록일자" , "2021-06-01 19:05:12", ""},
|
|
| 48 |
+ }; |
|
| 27 | 49 |
|
| 28 | 50 |
/** |
| 29 | 51 |
* 알림톡 발송 결과 리스트 |
... | ... | @@ -62,6 +84,101 @@ |
| 62 | 84 |
} |
| 63 | 85 |
|
| 64 | 86 |
/** |
| 87 |
+ * 카카오 알림톡 발송 결과 코드 엑셀 다운로드 |
|
| 88 |
+ * @param MjonMsgResultCodeVO |
|
| 89 |
+ * @param model |
|
| 90 |
+ * @return "" |
|
| 91 |
+ * @throws Exception |
|
| 92 |
+ */ |
|
| 93 |
+ @RequestMapping(value= {"/uss/ion/kakaoat/sendresult/KakaoResultCodeExcelDownload.do"})
|
|
| 94 |
+ public void kakaoResultCodeExcelDownload( MjonMsgResultCodeVO mjonMsgResultCodeVO, |
|
| 95 |
+ HttpServletRequest request, |
|
| 96 |
+ HttpServletResponse response , |
|
| 97 |
+ ModelMap model) throws Exception {
|
|
| 98 |
+ |
|
| 99 |
+ mjonMsgResultCodeVO.setRecordCountPerPage(100000); |
|
| 100 |
+ mjonMsgResultCodeVO.setFirstIndex(0); |
|
| 101 |
+ LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 102 |
+ if(null != loginVO && !"super".equals(loginVO.getSiteId())){
|
|
| 103 |
+ mjonMsgResultCodeVO.setSiteId(loginVO.getSiteId()); |
|
| 104 |
+ } |
|
| 105 |
+ // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. |
|
| 106 |
+ SXSSFWorkbook wb = new SXSSFWorkbook(100); |
|
| 107 |
+ CellStyle style = wb.createCellStyle(); |
|
| 108 |
+ style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 |
|
| 109 |
+ style.setBorderLeft(CellStyle.BORDER_THIN); |
|
| 110 |
+ style.setBorderRight(CellStyle.BORDER_THIN); |
|
| 111 |
+ style.setBorderTop(CellStyle.BORDER_THIN); |
|
| 112 |
+ Font font = wb.createFont(); |
|
| 113 |
+ font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold |
|
| 114 |
+ |
|
| 115 |
+ Cell cell = null; |
|
| 116 |
+ Row row = null; |
|
| 117 |
+ |
|
| 118 |
+ String fileName ="카카오 알림톡 발송 결과 코드 리스트(중계사별)"; |
|
| 119 |
+ |
|
| 120 |
+ String sheetTitle = ""; |
|
| 121 |
+ try{
|
|
| 122 |
+ //List<MjonMsgVO> resultList = mjonMsgService.selectMjonMsgGroupList(mjonMsgVO); |
|
| 123 |
+ mjonMsgResultCodeVO.setAgentCode("04");
|
|
| 124 |
+ List<MjonMsgResultCodeVO> resultList = mjonMsgService.selectKakaoResultCodeListPageing(mjonMsgResultCodeVO); |
|
| 125 |
+ { //화면 리스트
|
|
| 126 |
+ sheetTitle = "카카오 알림톡 발송 결과 코드 리스트(중계사별)" ; //제목 |
|
| 127 |
+ Sheet sheet = wb.createSheet(sheetTitle); |
|
| 128 |
+ row = sheet.createRow(0); |
|
| 129 |
+ for(int i=0 ; i < kakaoResultCodeExcelValue.length ; i++) {
|
|
| 130 |
+ cell = row.createCell(i); |
|
| 131 |
+ cell.setCellStyle(style); |
|
| 132 |
+ cell.setCellValue(kakaoResultCodeExcelValue[i][1]); |
|
| 133 |
+ } |
|
| 134 |
+ |
|
| 135 |
+ for(int i=0; i < resultList.size(); i++){
|
|
| 136 |
+ row = sheet.createRow(i+1); |
|
| 137 |
+ for(int j=0 ; j < kakaoResultCodeExcelValue.length ; j++) {
|
|
| 138 |
+ cell = row.createCell(j); |
|
| 139 |
+ cell.setCellStyle(style); |
|
| 140 |
+ |
|
| 141 |
+ if(j==0) cell.setCellValue(i+1); //번호 |
|
| 142 |
+ if(j==1) cell.setCellValue(resultList.get(i).getAgentCodeTxt()); //전송사 코드 |
|
| 143 |
+ if(j==2) cell.setCellValue(resultList.get(i).getResultCode()); //결과코드1 |
|
| 144 |
+ if(j==3) cell.setCellValue(resultList.get(i).getResultCode2()); //결과코드2 |
|
| 145 |
+ if(j==4) cell.setCellValue(resultList.get(i).getResultCodeTxt()); //코드설명 |
|
| 146 |
+ if(j==5) cell.setCellValue(resultList.get(i).getResultCodeNm()); //코드이름 |
|
| 147 |
+ if(j==6) cell.setCellValue(resultList.get(i).getLastUpdtPnttm()); //등록일자 |
|
| 148 |
+ } |
|
| 149 |
+ } |
|
| 150 |
+ } |
|
| 151 |
+ response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
|
| 152 |
+ SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); |
|
| 153 |
+ Date currentTime = new Date (); |
|
| 154 |
+ String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 155 |
+ fileName = fileName+"("+mTime+")";
|
|
| 156 |
+ |
|
| 157 |
+ response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
|
|
| 158 |
+ wb.write(response.getOutputStream()); |
|
| 159 |
+ |
|
| 160 |
+ }catch(Exception e) {
|
|
| 161 |
+ response.setHeader("Set-Cookie", "fileDownload=false; path=/");
|
|
| 162 |
+ response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
| 163 |
+ response.setHeader("Content-Type","text/html; charset=utf-8");
|
|
| 164 |
+ OutputStream out = null; |
|
| 165 |
+ try {
|
|
| 166 |
+ out = response.getOutputStream(); |
|
| 167 |
+ byte[] data = new String("fail..").getBytes();
|
|
| 168 |
+ out.write(data, 0, data.length); |
|
| 169 |
+ } catch(Exception ignore) {
|
|
| 170 |
+ ignore.printStackTrace(); |
|
| 171 |
+ } finally {
|
|
| 172 |
+ if(out != null) try { out.close(); } catch(Exception ignore) {}
|
|
| 173 |
+ } |
|
| 174 |
+ }finally {
|
|
| 175 |
+ // 디스크 적었던 임시파일을 제거합니다. |
|
| 176 |
+ wb.dispose(); |
|
| 177 |
+ try { wb.close(); } catch(Exception ignore) {}
|
|
| 178 |
+ } |
|
| 179 |
+ } |
|
| 180 |
+ |
|
| 181 |
+ /** |
|
| 65 | 182 |
* 카카오 알림톡 발송 결과 코드 수정 |
| 66 | 183 |
* @param MjonMsgResultCodeVO |
| 67 | 184 |
* @param model |
--- src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
+++ src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
... | ... | @@ -211,6 +211,17 @@ |
| 211 | 211 |
{"8", "발송결과" , "", ""},
|
| 212 | 212 |
{"9", "전송사" , "", ""}
|
| 213 | 213 |
}; |
| 214 |
+ |
|
| 215 |
+ //문자 발송 결과 코드 리스트 엑셀 다운로드 |
|
| 216 |
+ private String[][] msgResultCodeExcelValue ={
|
|
| 217 |
+ {"0" ,"번호" , "1" , "" },
|
|
| 218 |
+ {"1", "전송사" , "IHT" , ""},
|
|
| 219 |
+ {"2", "결과코드1" , "결과코드", ""},
|
|
| 220 |
+ {"3", "결과코드2" , "결과코드 ", ""},
|
|
| 221 |
+ {"4", "코드설명" , "코드 내용", ""},
|
|
| 222 |
+ {"5", "코드이름" , "코드이름", ""},
|
|
| 223 |
+ {"6", "등록일자" , "2021-06-01 19:05:12", ""},
|
|
| 224 |
+ }; |
|
| 214 | 225 |
|
| 215 | 226 |
|
| 216 | 227 |
/** |
... | ... | @@ -2980,6 +2991,100 @@ |
| 2980 | 2991 |
return "/uss/ion/msg/MsgResultCodeList"; //문자결과 리스트 |
| 2981 | 2992 |
} |
| 2982 | 2993 |
|
| 2994 |
+ /** |
|
| 2995 |
+ * 문자발송 결과 코드 엑셀 다운로드 |
|
| 2996 |
+ * @param MjonMsgResultCodeVO |
|
| 2997 |
+ * @param model |
|
| 2998 |
+ * @return "" |
|
| 2999 |
+ * @throws Exception |
|
| 3000 |
+ */ |
|
| 3001 |
+ @RequestMapping(value= {"/uss/ion/msg/MsgResultCodeExcelDownload.do"})
|
|
| 3002 |
+ public void msgResultCodeExcelDownload( MjonMsgResultCodeVO mjonMsgResultCodeVO, |
|
| 3003 |
+ HttpServletRequest request, |
|
| 3004 |
+ HttpServletResponse response , |
|
| 3005 |
+ ModelMap model) throws Exception {
|
|
| 3006 |
+ |
|
| 3007 |
+ mjonMsgResultCodeVO.setRecordCountPerPage(100000); |
|
| 3008 |
+ mjonMsgResultCodeVO.setFirstIndex(0); |
|
| 3009 |
+ LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 3010 |
+ if(null != loginVO && !"super".equals(loginVO.getSiteId())){
|
|
| 3011 |
+ mjonMsgResultCodeVO.setSiteId(loginVO.getSiteId()); |
|
| 3012 |
+ } |
|
| 3013 |
+ // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. |
|
| 3014 |
+ SXSSFWorkbook wb = new SXSSFWorkbook(100); |
|
| 3015 |
+ CellStyle style = wb.createCellStyle(); |
|
| 3016 |
+ style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 |
|
| 3017 |
+ style.setBorderLeft(CellStyle.BORDER_THIN); |
|
| 3018 |
+ style.setBorderRight(CellStyle.BORDER_THIN); |
|
| 3019 |
+ style.setBorderTop(CellStyle.BORDER_THIN); |
|
| 3020 |
+ Font font = wb.createFont(); |
|
| 3021 |
+ font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold |
|
| 3022 |
+ |
|
| 3023 |
+ Cell cell = null; |
|
| 3024 |
+ Row row = null; |
|
| 3025 |
+ |
|
| 3026 |
+ String fileName ="문자 발송 결과 코드 리스트(중계사별)"; |
|
| 3027 |
+ |
|
| 3028 |
+ String sheetTitle = ""; |
|
| 3029 |
+ try{
|
|
| 3030 |
+ //List<MjonMsgVO> resultList = mjonMsgService.selectMjonMsgGroupList(mjonMsgVO); |
|
| 3031 |
+ List<MjonMsgResultCodeVO> resultList = mjonMsgService.selectMsgResultCodeListPageing(mjonMsgResultCodeVO); |
|
| 3032 |
+ { //화면 리스트
|
|
| 3033 |
+ sheetTitle = "문자 발송 결과 코드 리스트(중계사별)" ; //제목 |
|
| 3034 |
+ Sheet sheet = wb.createSheet(sheetTitle); |
|
| 3035 |
+ row = sheet.createRow(0); |
|
| 3036 |
+ for(int i=0 ; i < msgResultCodeExcelValue.length ; i++) {
|
|
| 3037 |
+ cell = row.createCell(i); |
|
| 3038 |
+ cell.setCellStyle(style); |
|
| 3039 |
+ cell.setCellValue(msgResultCodeExcelValue[i][1]); |
|
| 3040 |
+ } |
|
| 3041 |
+ |
|
| 3042 |
+ for(int i=0; i < resultList.size(); i++){
|
|
| 3043 |
+ row = sheet.createRow(i+1); |
|
| 3044 |
+ for(int j=0 ; j < msgResultCodeExcelValue.length ; j++) {
|
|
| 3045 |
+ cell = row.createCell(j); |
|
| 3046 |
+ cell.setCellStyle(style); |
|
| 3047 |
+ |
|
| 3048 |
+ if(j==0) cell.setCellValue(i+1); //번호 |
|
| 3049 |
+ if(j==1) cell.setCellValue(resultList.get(i).getAgentCodeTxt()); //전송사 코드 |
|
| 3050 |
+ if(j==2) cell.setCellValue(resultList.get(i).getResultCode()); //결과코드1 |
|
| 3051 |
+ if(j==3) cell.setCellValue(resultList.get(i).getResultCode2()); //결과코드2 |
|
| 3052 |
+ if(j==4) cell.setCellValue(resultList.get(i).getResultCodeTxt()); //코드설명 |
|
| 3053 |
+ if(j==5) cell.setCellValue(resultList.get(i).getResultCodeNm()); //코드이름 |
|
| 3054 |
+ if(j==6) cell.setCellValue(resultList.get(i).getLastUpdtPnttm()); //등록일자 |
|
| 3055 |
+ } |
|
| 3056 |
+ } |
|
| 3057 |
+ } |
|
| 3058 |
+ response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
|
| 3059 |
+ SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); |
|
| 3060 |
+ Date currentTime = new Date (); |
|
| 3061 |
+ String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 3062 |
+ fileName = fileName+"("+mTime+")";
|
|
| 3063 |
+ |
|
| 3064 |
+ response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
|
|
| 3065 |
+ wb.write(response.getOutputStream()); |
|
| 3066 |
+ |
|
| 3067 |
+ }catch(Exception e) {
|
|
| 3068 |
+ response.setHeader("Set-Cookie", "fileDownload=false; path=/");
|
|
| 3069 |
+ response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
| 3070 |
+ response.setHeader("Content-Type","text/html; charset=utf-8");
|
|
| 3071 |
+ OutputStream out = null; |
|
| 3072 |
+ try {
|
|
| 3073 |
+ out = response.getOutputStream(); |
|
| 3074 |
+ byte[] data = new String("fail..").getBytes();
|
|
| 3075 |
+ out.write(data, 0, data.length); |
|
| 3076 |
+ } catch(Exception ignore) {
|
|
| 3077 |
+ ignore.printStackTrace(); |
|
| 3078 |
+ } finally {
|
|
| 3079 |
+ if(out != null) try { out.close(); } catch(Exception ignore) {}
|
|
| 3080 |
+ } |
|
| 3081 |
+ }finally {
|
|
| 3082 |
+ // 디스크 적었던 임시파일을 제거합니다. |
|
| 3083 |
+ wb.dispose(); |
|
| 3084 |
+ try { wb.close(); } catch(Exception ignore) {}
|
|
| 3085 |
+ } |
|
| 3086 |
+ } |
|
| 3087 |
+ |
|
| 2983 | 3088 |
|
| 2984 | 3089 |
/** |
| 2985 | 3090 |
* 전송사 발송 결과 코드 등록 화면 |
--- src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/sendresult/KakaoSendResultList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/sendresult/KakaoSendResultList.jsp
... | ... | @@ -52,6 +52,13 @@ |
| 52 | 52 |
frm.submit(); |
| 53 | 53 |
} |
| 54 | 54 |
|
| 55 |
+//엑셀 다운로드 |
|
| 56 |
+function rstCodeListExcelDownload(){
|
|
| 57 |
+ document.listForm.method = "post"; |
|
| 58 |
+ document.listForm.action = "<c:url value='/uss/ion/kakaoat/sendresult/KakaoResultCodeExcelDownload.do'/>"; |
|
| 59 |
+ document.listForm.submit(); |
|
| 60 |
+} |
|
| 61 |
+ |
|
| 55 | 62 |
|
| 56 | 63 |
</script> |
| 57 | 64 |
<style> |
... | ... | @@ -97,6 +104,7 @@ |
| 97 | 104 |
<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
|
| 98 | 105 |
<div class="rightWrap"> |
| 99 | 106 |
<!-- <input type="button" class="printBtn"> --> |
| 107 |
+ <input type="button" class="excelBtn" onclick="javascript:rstCodeListExcelDownload();" style="cursor:pointer;"> |
|
| 100 | 108 |
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);"> |
| 101 | 109 |
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
|
| 102 | 110 |
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
|
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgResultCodeList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgResultCodeList.jsp
... | ... | @@ -52,6 +52,13 @@ |
| 52 | 52 |
frm.submit(); |
| 53 | 53 |
} |
| 54 | 54 |
|
| 55 |
+//엑셀 다운로드 |
|
| 56 |
+function rstCodeListExcelDownload(){
|
|
| 57 |
+ document.listForm.method = "post"; |
|
| 58 |
+ document.listForm.action = "<c:url value='/uss/ion/msg/MsgResultCodeExcelDownload.do'/>"; |
|
| 59 |
+ document.listForm.submit(); |
|
| 60 |
+} |
|
| 61 |
+ |
|
| 55 | 62 |
|
| 56 | 63 |
</script> |
| 57 | 64 |
<style> |
... | ... | @@ -97,6 +104,7 @@ |
| 97 | 104 |
<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
|
| 98 | 105 |
<div class="rightWrap"> |
| 99 | 106 |
<!-- <input type="button" class="printBtn"> --> |
| 107 |
+ <input type="button" class="excelBtn" onclick="javascript:rstCodeListExcelDownload();" style="cursor:pointer;"> |
|
| 100 | 108 |
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);"> |
| 101 | 109 |
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
|
| 102 | 110 |
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?