Merge branch 'master' into kakaoFT
@bda2447d475a64349faf2172b9635983907c65d3
--- src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
... | ... | @@ -768,7 +768,7 @@ |
| 768 | 768 |
channelIDVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
| 769 | 769 |
|
| 770 | 770 |
if("".equals(channelIDVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
| 771 |
- channelIDVO.setSearchSortCnd("profileId");
|
|
| 771 |
+ channelIDVO.setSearchSortCnd("lastUpdtPnttm");
|
|
| 772 | 772 |
channelIDVO.setSearchSortOrd("desc");
|
| 773 | 773 |
} |
| 774 | 774 |
|
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
... | ... | @@ -18,12 +18,22 @@ |
| 18 | 18 |
import javax.servlet.http.HttpServletRequest; |
| 19 | 19 |
import javax.servlet.http.HttpServletResponse; |
| 20 | 20 |
|
| 21 |
+import org.apache.commons.lang3.StringUtils; |
|
| 22 |
+import org.apache.poi.hssf.usermodel.HSSFCell; |
|
| 23 |
+import org.apache.poi.hssf.usermodel.HSSFRow; |
|
| 24 |
+import org.apache.poi.hssf.usermodel.HSSFSheet; |
|
| 25 |
+import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
|
| 26 |
+import org.apache.poi.openxml4j.opc.OPCPackage; |
|
| 21 | 27 |
import org.apache.poi.ss.usermodel.Cell; |
| 22 | 28 |
import org.apache.poi.ss.usermodel.CellStyle; |
| 23 | 29 |
import org.apache.poi.ss.usermodel.Row; |
| 24 | 30 |
import org.apache.poi.ss.usermodel.Sheet; |
| 25 | 31 |
import org.apache.poi.xssf.streaming.SXSSFWorkbook; |
| 32 |
+import org.apache.poi.xssf.usermodel.XSSFCell; |
|
| 26 | 33 |
import org.apache.poi.xssf.usermodel.XSSFDataFormat; |
| 34 |
+import org.apache.poi.xssf.usermodel.XSSFRow; |
|
| 35 |
+import org.apache.poi.xssf.usermodel.XSSFSheet; |
|
| 36 |
+import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
| 27 | 37 |
import org.springframework.beans.factory.annotation.Autowired; |
| 28 | 38 |
import org.springframework.stereotype.Controller; |
| 29 | 39 |
import org.springframework.ui.ModelMap; |
... | ... | @@ -31,15 +41,20 @@ |
| 31 | 41 |
import org.springframework.web.bind.annotation.RequestMapping; |
| 32 | 42 |
import org.springframework.web.bind.annotation.RequestMethod; |
| 33 | 43 |
import org.springframework.web.bind.annotation.RequestParam; |
| 44 |
+import org.springframework.web.bind.annotation.ResponseBody; |
|
| 45 |
+import org.springframework.web.multipart.MultipartFile; |
|
| 46 |
+import org.springframework.web.multipart.MultipartHttpServletRequest; |
|
| 34 | 47 |
import org.springframework.web.servlet.ModelAndView; |
| 35 | 48 |
|
| 36 | 49 |
import egovframework.rte.fdl.idgnr.EgovIdGnrService; |
| 37 | 50 |
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; |
| 38 | 51 |
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo; |
| 39 | 52 |
import itn.com.cmm.EgovMessageSource; |
| 53 |
+import itn.com.cmm.JsonResult; |
|
| 40 | 54 |
import itn.com.cmm.LoginVO; |
| 41 | 55 |
import itn.com.cmm.service.EgovCmmUseService; |
| 42 | 56 |
import itn.com.cmm.util.MJUtil; |
| 57 |
+import itn.com.cmm.util.StringUtil; |
|
| 43 | 58 |
import itn.com.utl.fcc.service.EgovStringUtil; |
| 44 | 59 |
import itn.let.kakao.kakaoComm.KakaoReturnVO; |
| 45 | 60 |
import itn.let.kakao.kakaoComm.KakaoSendUtil; |
... | ... | @@ -200,6 +215,569 @@ |
| 200 | 215 |
|
| 201 | 216 |
return "web/kakao/msgdata/at/KakaoAlimtalkMsgDataView"; |
| 202 | 217 |
} |
| 218 |
+ |
|
| 219 |
+ |
|
| 220 |
+ /* |
|
| 221 |
+ * 20240829 신규 추가 우영두 |
|
| 222 |
+ * 기존 Script에서 처리하던 방식 변경 |
|
| 223 |
+ * 카카오 알림톡 엑셀 불러오기 엑셀 처리 |
|
| 224 |
+ * |
|
| 225 |
+ * */ |
|
| 226 |
+ @RequestMapping(value = "/web/mjon/alimtalk/sendAlimtalkExelFilePhoneNumAjax.do") |
|
| 227 |
+ @ResponseBody |
|
| 228 |
+ public Object sendAlimtalkExelFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
|
|
| 229 |
+ |
|
| 230 |
+ JsonResult jr = new JsonResult(); |
|
| 231 |
+ jr.setSuccess(false); |
|
| 232 |
+ jr.setMessage("엑셀 파일만 업로드할 수 있습니다.");
|
|
| 233 |
+ |
|
| 234 |
+ try {
|
|
| 235 |
+ |
|
| 236 |
+ //final Map<String, MultipartFile> files = multiRequest.getFileMap(); |
|
| 237 |
+ List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
|
|
| 238 |
+ |
|
| 239 |
+ // 파일명에 .이 있을경우 오류 => Ex) 테스트6.20.xlsx |
|
| 240 |
+ int fileNameSplitCnt = 0; |
|
| 241 |
+ |
|
| 242 |
+ if(!files.isEmpty()) {
|
|
| 243 |
+ fileNameSplitCnt = files.get(0).getOriginalFilename().split("[.]").length;
|
|
| 244 |
+ |
|
| 245 |
+ if (files.get(0).getSize() > 0 |
|
| 246 |
+ && (files.get(0).getContentType().indexOf("spreadsheetml") > -1)
|
|
| 247 |
+ || files.get(0).getContentType().indexOf("ms-excel") > -1
|
|
| 248 |
+ || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xlsx") > -1
|
|
| 249 |
+ || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xls") > -1) {
|
|
| 250 |
+ |
|
| 251 |
+ // 엑셀 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생 |
|
| 252 |
+ long fileSize = multiRequest.getFile("file0").getSize();
|
|
| 253 |
+ |
|
| 254 |
+ String Ext = files.get(0).getOriginalFilename().split("[.]")[1];
|
|
| 255 |
+ String errMessage = ""; |
|
| 256 |
+ String cellValue = ""; |
|
| 257 |
+ String errPhoneLine = ""; |
|
| 258 |
+ int errPhoneCnt = 0; |
|
| 259 |
+ |
|
| 260 |
+ //수신번호 유효성 체크 |
|
| 261 |
+ String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 262 |
+ |
|
| 263 |
+ if(Ext.equals("xls")) {
|
|
| 264 |
+ |
|
| 265 |
+ HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream()); |
|
| 266 |
+ HSSFSheet sheet = workbook.getSheetAt(0); |
|
| 267 |
+ |
|
| 268 |
+ if(sheet.getLastRowNum() > 501) {
|
|
| 269 |
+ errMessage = "한번에 전송 가능한 최대 발송건은 500건 입니다."; |
|
| 270 |
+ jr.setSuccess(false); |
|
| 271 |
+ jr.setMessage(errMessage); |
|
| 272 |
+ return jr; |
|
| 273 |
+ } |
|
| 274 |
+ |
|
| 275 |
+ List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 276 |
+ for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 277 |
+ HSSFRow row = sheet.getRow(i); //열읽기 |
|
| 278 |
+ if(null == row) {
|
|
| 279 |
+ continue; |
|
| 280 |
+ } |
|
| 281 |
+ |
|
| 282 |
+ HashMap<String, String> jm = new HashMap<>(); |
|
| 283 |
+ // 행의 두번째 열(이름부터 받아오기) |
|
| 284 |
+ HSSFCell cell = null; |
|
| 285 |
+ boolean errSts = true; |
|
| 286 |
+ for(int j = 0 ; j < 1; j++){ //행읽기(첫번째 컬럼만 필요)
|
|
| 287 |
+ |
|
| 288 |
+ cellValue = ""; |
|
| 289 |
+ cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 |
|
| 290 |
+ if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
|
| 291 |
+ if(j == 1) {
|
|
| 292 |
+ if (sheet.getLastRowNum() == i) {
|
|
| 293 |
+ continue; |
|
| 294 |
+ } |
|
| 295 |
+ |
|
| 296 |
+ break; |
|
| 297 |
+ } |
|
| 298 |
+ |
|
| 299 |
+ } |
|
| 300 |
+ if(null != cell){
|
|
| 301 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 302 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 303 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 304 |
+ } |
|
| 305 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 306 |
+ |
|
| 307 |
+ if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 308 |
+ jm.put("phone", cellValue);
|
|
| 309 |
+ }else {
|
|
| 310 |
+ errPhoneCnt++; |
|
| 311 |
+ errPhoneLine += (i+1) + "행 "; |
|
| 312 |
+ errSts = false; |
|
| 313 |
+ break; |
|
| 314 |
+ } |
|
| 315 |
+ } |
|
| 316 |
+ |
|
| 317 |
+ } |
|
| 318 |
+ |
|
| 319 |
+ if(null != jm.get("phone") && errSts) {
|
|
| 320 |
+ json.add(jm); |
|
| 321 |
+ } |
|
| 322 |
+ } |
|
| 323 |
+ |
|
| 324 |
+ int resultErrCnt = errPhoneCnt; |
|
| 325 |
+ |
|
| 326 |
+ jr.setData(json); |
|
| 327 |
+ jr.setSuccess(true); |
|
| 328 |
+ |
|
| 329 |
+ if(resultErrCnt > 0) {
|
|
| 330 |
+ if (errPhoneCnt <= 10) {
|
|
| 331 |
+ if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
|
|
| 332 |
+ errPhoneLine = "[" + errPhoneLine.trim() + "]"; |
|
| 333 |
+ } |
|
| 334 |
+ } |
|
| 335 |
+ else {
|
|
| 336 |
+ errPhoneLine = ""; |
|
| 337 |
+ } |
|
| 338 |
+ |
|
| 339 |
+ jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건" + errPhoneLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 340 |
+ }else {
|
|
| 341 |
+ jr.setMessage("");
|
|
| 342 |
+ } |
|
| 343 |
+ |
|
| 344 |
+ }else {//xlsx 확장자 처리
|
|
| 345 |
+ |
|
| 346 |
+ OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream()); |
|
| 347 |
+ XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); |
|
| 348 |
+ XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기 |
|
| 349 |
+ opcPackage.close(); |
|
| 350 |
+ |
|
| 351 |
+ int totRowDataCnt = 0; |
|
| 352 |
+ for(int r=1; r<sheet.getPhysicalNumberOfRows(); r++) {
|
|
| 353 |
+ |
|
| 354 |
+ XSSFRow tmpRow = sheet.getRow(r); |
|
| 355 |
+ //System.out.println("=================r:"+r);
|
|
| 356 |
+ XSSFCell cell = null; |
|
| 357 |
+ if(tmpRow.getCell(0) != null) {
|
|
| 358 |
+ |
|
| 359 |
+ cell = tmpRow.getCell(0); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 |
|
| 360 |
+ if(cell != null && !cell.toString().trim().equals("")) {
|
|
| 361 |
+ //System.out.println("value-" + r + ":" +cell.getStringCellValue());
|
|
| 362 |
+ totRowDataCnt++; |
|
| 363 |
+ //System.out.println("tmpRowCnt:"+totRowDataCnt);
|
|
| 364 |
+ } |
|
| 365 |
+ |
|
| 366 |
+ } |
|
| 367 |
+ |
|
| 368 |
+ } |
|
| 369 |
+ |
|
| 370 |
+ if(totRowDataCnt > 501) { //
|
|
| 371 |
+ errMessage = "한번에 전송 가능한 최대 발송건은 500건 입니다."; |
|
| 372 |
+ jr.setSuccess(false); |
|
| 373 |
+ jr.setMessage(errMessage); |
|
| 374 |
+ return jr; |
|
| 375 |
+ } |
|
| 376 |
+ |
|
| 377 |
+ List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 378 |
+ |
|
| 379 |
+ for(int i=2; i< sheet.getLastRowNum() + 2; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 380 |
+ XSSFRow row = sheet.getRow(i); //열읽기 |
|
| 381 |
+ if(null == row) {
|
|
| 382 |
+ continue; |
|
| 383 |
+ } |
|
| 384 |
+ |
|
| 385 |
+ HashMap<String, String> jm = new HashMap<>(); |
|
| 386 |
+ // 행의 두번째 열(이름부터 받아오기) |
|
| 387 |
+ XSSFCell cell = null; |
|
| 388 |
+ boolean errSts = true; |
|
| 389 |
+ |
|
| 390 |
+ for(int j = 0 ; j < 1; j++){ //행읽기(첫번째 컬럼만 필요)
|
|
| 391 |
+ |
|
| 392 |
+ cellValue = ""; |
|
| 393 |
+ cell = row.getCell(j); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 |
|
| 394 |
+ if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
|
| 395 |
+ //System.out.println("Cell 데이터가 없습니다.");
|
|
| 396 |
+ if(j == 1) {
|
|
| 397 |
+ if (sheet.getLastRowNum() == i) {
|
|
| 398 |
+ continue; |
|
| 399 |
+ } |
|
| 400 |
+ |
|
| 401 |
+ break; |
|
| 402 |
+ |
|
| 403 |
+ } |
|
| 404 |
+ } |
|
| 405 |
+ if(null != cell){
|
|
| 406 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 407 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 408 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 409 |
+ } |
|
| 410 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 411 |
+ } |
|
| 412 |
+ |
|
| 413 |
+ if(j == 0) {
|
|
| 414 |
+ |
|
| 415 |
+ if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 416 |
+ jm.put("phone", cellValue);
|
|
| 417 |
+ }else {
|
|
| 418 |
+ errPhoneCnt++; |
|
| 419 |
+ errPhoneLine += (i+1) + "행 "; |
|
| 420 |
+ errSts = false; |
|
| 421 |
+ break; |
|
| 422 |
+ } |
|
| 423 |
+ |
|
| 424 |
+ } |
|
| 425 |
+ |
|
| 426 |
+ } |
|
| 427 |
+ |
|
| 428 |
+ if(null != jm.get("phone") && errSts) {
|
|
| 429 |
+ json.add(jm); |
|
| 430 |
+ } |
|
| 431 |
+ |
|
| 432 |
+ } |
|
| 433 |
+ |
|
| 434 |
+ int resultErrCnt = errPhoneCnt; |
|
| 435 |
+ |
|
| 436 |
+ jr.setData(json); |
|
| 437 |
+ jr.setSuccess(true); |
|
| 438 |
+ |
|
| 439 |
+ if(resultErrCnt > 0) {
|
|
| 440 |
+ if (errPhoneCnt <= 10) {
|
|
| 441 |
+ if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
|
|
| 442 |
+ errPhoneLine = "[" + errPhoneLine.trim() + "]"; |
|
| 443 |
+ } |
|
| 444 |
+ } |
|
| 445 |
+ else {
|
|
| 446 |
+ errPhoneLine = ""; |
|
| 447 |
+ } |
|
| 448 |
+ |
|
| 449 |
+ jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건" + errPhoneLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 450 |
+ }else {
|
|
| 451 |
+ jr.setMessage("");
|
|
| 452 |
+ } |
|
| 453 |
+ |
|
| 454 |
+ } |
|
| 455 |
+ |
|
| 456 |
+ } |
|
| 457 |
+ } |
|
| 458 |
+ |
|
| 459 |
+ } catch (Exception e) {
|
|
| 460 |
+ // TODO: handle exception |
|
| 461 |
+ System.out.println("+++++++++++++++++ sendAlimtalkExelFilePhoneNumAjax Controller Error !!! "+e);
|
|
| 462 |
+ jr.setSuccess(false); |
|
| 463 |
+ jr.setMessage("엑셀 데이터에 오류가 있습니다. 엑셀 데이터를 확인해 주세요.");
|
|
| 464 |
+ return jr; |
|
| 465 |
+ } |
|
| 466 |
+ |
|
| 467 |
+ return jr; |
|
| 468 |
+ } |
|
| 469 |
+ |
|
| 470 |
+ |
|
| 471 |
+ /* |
|
| 472 |
+ * 20240829 신규 추가 우영두 |
|
| 473 |
+ * 기존 Script에서 처리하던 방식 변경 |
|
| 474 |
+ * 카카오 알림톡 엑셀 불러오기 엑셀 처리 |
|
| 475 |
+ * |
|
| 476 |
+ * */ |
|
| 477 |
+ @RequestMapping(value = "/web/mjon/alimtalk/sendAlimtalkExelVarFilePhoneNumAjax.do") |
|
| 478 |
+ @ResponseBody |
|
| 479 |
+ public Object sendAlimtalkExelVarFilePhoneNumAjax(final MultipartHttpServletRequest multiRequest) throws Exception {
|
|
| 480 |
+ |
|
| 481 |
+ JsonResult jr = new JsonResult(); |
|
| 482 |
+ jr.setSuccess(false); |
|
| 483 |
+ jr.setMessage("엑셀 파일만 업로드할 수 있습니다.");
|
|
| 484 |
+ |
|
| 485 |
+ |
|
| 486 |
+ try {
|
|
| 487 |
+ |
|
| 488 |
+ //final Map<String, MultipartFile> files = multiRequest.getFileMap(); |
|
| 489 |
+ List<MultipartFile> files = (List<MultipartFile>) multiRequest.getFiles("file0");
|
|
| 490 |
+ |
|
| 491 |
+ // 파일명에 .이 있을경우 오류 => Ex) 테스트6.20.xlsx |
|
| 492 |
+ int fileNameSplitCnt = 0; |
|
| 493 |
+ int excelVarCnt = Integer.parseInt(multiRequest.getParameter("excelVarCnt"));// 알림톡 템플릿 변수 갯수 데이터
|
|
| 494 |
+ String [] excelVarArr = multiRequest.getParameter("excelVarList").split(",");
|
|
| 495 |
+ |
|
| 496 |
+ |
|
| 497 |
+ if(!files.isEmpty()) {
|
|
| 498 |
+ fileNameSplitCnt = files.get(0).getOriginalFilename().split("[.]").length;
|
|
| 499 |
+ |
|
| 500 |
+ if (files.get(0).getSize() > 0 |
|
| 501 |
+ && (files.get(0).getContentType().indexOf("spreadsheetml") > -1)
|
|
| 502 |
+ || files.get(0).getContentType().indexOf("ms-excel") > -1
|
|
| 503 |
+ || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xlsx") > -1
|
|
| 504 |
+ || files.get(0).getOriginalFilename().split("[.]")[fileNameSplitCnt-1].indexOf("xls") > -1) {
|
|
| 505 |
+ |
|
| 506 |
+ // 엑셀 파일 용량 3MB이상 시 10만건 이상으로 서버가 다운되는 증상 발생 |
|
| 507 |
+ long fileSize = multiRequest.getFile("file0").getSize();
|
|
| 508 |
+ |
|
| 509 |
+ String Ext = files.get(0).getOriginalFilename().split("[.]")[1];
|
|
| 510 |
+ String errMessage = ""; |
|
| 511 |
+ String cellValue = ""; |
|
| 512 |
+ String errPhoneLine = ""; |
|
| 513 |
+ int errPhoneCnt = 0; |
|
| 514 |
+ |
|
| 515 |
+ //수신번호 유효성 체크 |
|
| 516 |
+ String phoneRegExp = "^(050[2345678]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$";
|
|
| 517 |
+ |
|
| 518 |
+ if(Ext.equals("xls")) {
|
|
| 519 |
+ HSSFWorkbook workbook = new HSSFWorkbook(files.get(0).getInputStream()); |
|
| 520 |
+ HSSFSheet sheet = workbook.getSheetAt(0); |
|
| 521 |
+ |
|
| 522 |
+ if(sheet.getLastRowNum() > 501) {
|
|
| 523 |
+ errMessage = "한번에 전송 가능한 최대 발송건은 500건 입니다."; |
|
| 524 |
+ jr.setSuccess(false); |
|
| 525 |
+ jr.setMessage(errMessage); |
|
| 526 |
+ return jr; |
|
| 527 |
+ } |
|
| 528 |
+ |
|
| 529 |
+ List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 530 |
+ for(int i=1; i< sheet.getLastRowNum() + 1; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 531 |
+ HSSFRow row = sheet.getRow(i); //열읽기 |
|
| 532 |
+ if(null == row) {
|
|
| 533 |
+ continue; |
|
| 534 |
+ } |
|
| 535 |
+ |
|
| 536 |
+ HashMap<String, String> jm = new HashMap<>(); |
|
| 537 |
+ // 행의 두번째 열(이름부터 받아오기) |
|
| 538 |
+ HSSFCell cell = null; |
|
| 539 |
+ boolean errSts = true; |
|
| 540 |
+ String rtnValueStr = ""; |
|
| 541 |
+ for(int j = 0 ; j < excelVarCnt + 1; j++){ //행읽기(변수갯수 +1 개 만큼 컬럼을 읽음 수신번호 + 변수들)
|
|
| 542 |
+ |
|
| 543 |
+ cellValue = ""; |
|
| 544 |
+ cell = row.getCell(j); //수신번호 , 변수들 |
|
| 545 |
+ if(null == cell || "".equals(cell.toString().trim())) { //수신번호 셀에 값이 없으면
|
|
| 546 |
+ if(j == 0) {
|
|
| 547 |
+ if (sheet.getLastRowNum() == i) {
|
|
| 548 |
+ continue; |
|
| 549 |
+ } |
|
| 550 |
+ |
|
| 551 |
+ break; |
|
| 552 |
+ } |
|
| 553 |
+ |
|
| 554 |
+ } |
|
| 555 |
+ |
|
| 556 |
+ if(j == 0) {
|
|
| 557 |
+ |
|
| 558 |
+ if(null != cell){
|
|
| 559 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 560 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 561 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 562 |
+ } |
|
| 563 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 564 |
+ |
|
| 565 |
+ if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 566 |
+ jm.put("phone", cellValue);
|
|
| 567 |
+ }else {
|
|
| 568 |
+ errPhoneCnt++; |
|
| 569 |
+ errPhoneLine += (i+1) + "행 "; |
|
| 570 |
+ errSts = false; |
|
| 571 |
+ break; |
|
| 572 |
+ } |
|
| 573 |
+ } |
|
| 574 |
+ }else {
|
|
| 575 |
+ |
|
| 576 |
+ if(cell != null) {
|
|
| 577 |
+ |
|
| 578 |
+ if(j <= excelVarCnt) {//등록 변수 갯수 까지만 입력
|
|
| 579 |
+ |
|
| 580 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 581 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 582 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 583 |
+ } |
|
| 584 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 585 |
+ |
|
| 586 |
+ if(cellValue != null && !cellValue.equals("")) {
|
|
| 587 |
+ rtnValueStr += cellValue + "§"; |
|
| 588 |
+ }else {//변ㅅ
|
|
| 589 |
+ rtnValueStr += "" + "§"; |
|
| 590 |
+ } |
|
| 591 |
+ |
|
| 592 |
+ } |
|
| 593 |
+ |
|
| 594 |
+ }else {
|
|
| 595 |
+ rtnValueStr += "" + "§"; |
|
| 596 |
+ |
|
| 597 |
+ } |
|
| 598 |
+ |
|
| 599 |
+ } |
|
| 600 |
+ |
|
| 601 |
+ } |
|
| 602 |
+ |
|
| 603 |
+ jm.put("varVal", rtnValueStr.replaceFirst(".$", ""));//변수 데이터 추가
|
|
| 604 |
+ if(null != jm.get("phone") && errSts) {
|
|
| 605 |
+ json.add(jm); |
|
| 606 |
+ } |
|
| 607 |
+ } |
|
| 608 |
+ |
|
| 609 |
+ int resultErrCnt = errPhoneCnt; |
|
| 610 |
+ |
|
| 611 |
+ jr.setData(json); |
|
| 612 |
+ jr.setSuccess(true); |
|
| 613 |
+ |
|
| 614 |
+ if(resultErrCnt > 0) {
|
|
| 615 |
+ if (errPhoneCnt <= 10) {
|
|
| 616 |
+ if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
|
|
| 617 |
+ errPhoneLine = "[" + errPhoneLine.trim() + "]"; |
|
| 618 |
+ } |
|
| 619 |
+ } |
|
| 620 |
+ else {
|
|
| 621 |
+ errPhoneLine = ""; |
|
| 622 |
+ } |
|
| 623 |
+ |
|
| 624 |
+ jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건" + errPhoneLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 625 |
+ }else {
|
|
| 626 |
+ jr.setMessage("");
|
|
| 627 |
+ } |
|
| 628 |
+ |
|
| 629 |
+ }else {//xlsx 엑셀 자료 처리
|
|
| 630 |
+ |
|
| 631 |
+ OPCPackage opcPackage = OPCPackage.open(files.get(0).getInputStream()); |
|
| 632 |
+ XSSFWorkbook workbook = new XSSFWorkbook(opcPackage); |
|
| 633 |
+ XSSFSheet sheet = workbook.getSheetAt(0); // 첫번째 시트 불러오기 |
|
| 634 |
+ opcPackage.close(); |
|
| 635 |
+ |
|
| 636 |
+ int totRowDataCnt = 0; |
|
| 637 |
+ for(int r=1; r<sheet.getPhysicalNumberOfRows(); r++) {
|
|
| 638 |
+ |
|
| 639 |
+ XSSFRow tmpRow = sheet.getRow(r); |
|
| 640 |
+ //System.out.println("=================r:"+r);
|
|
| 641 |
+ XSSFCell cell = null; |
|
| 642 |
+ if(tmpRow.getCell(0) != null) {
|
|
| 643 |
+ |
|
| 644 |
+ cell = tmpRow.getCell(0); //이름/핸드폰/변환1/변환2/변환3/변환4/변환5 |
|
| 645 |
+ if(cell != null && !cell.toString().trim().equals("")) {
|
|
| 646 |
+ //System.out.println("value-" + r + ":" +cell.getStringCellValue());
|
|
| 647 |
+ totRowDataCnt++; |
|
| 648 |
+ //System.out.println("tmpRowCnt:"+totRowDataCnt);
|
|
| 649 |
+ } |
|
| 650 |
+ |
|
| 651 |
+ } |
|
| 652 |
+ |
|
| 653 |
+ } |
|
| 654 |
+ |
|
| 655 |
+ if(totRowDataCnt > 501) { //
|
|
| 656 |
+ errMessage = "한번에 전송 가능한 최대 발송건은 500건 입니다."; |
|
| 657 |
+ jr.setSuccess(false); |
|
| 658 |
+ jr.setMessage(errMessage); |
|
| 659 |
+ return jr; |
|
| 660 |
+ } |
|
| 661 |
+ |
|
| 662 |
+ List<HashMap<String, String>> json = new ArrayList<HashMap<String, String>>(); |
|
| 663 |
+ |
|
| 664 |
+ for(int i=1; i< sheet.getLastRowNum() + 1; i++){ //먼저 밸리데이션 체크(1줄은 생략)
|
|
| 665 |
+ XSSFRow row = sheet.getRow(i); //열읽기 |
|
| 666 |
+ if(null == row) {
|
|
| 667 |
+ continue; |
|
| 668 |
+ } |
|
| 669 |
+ |
|
| 670 |
+ HashMap<String, String> jm = new HashMap<>(); |
|
| 671 |
+ // 행의 두번째 열(이름부터 받아오기) |
|
| 672 |
+ XSSFCell cell = null; |
|
| 673 |
+ boolean errSts = true; |
|
| 674 |
+ String rtnValueStr = ""; |
|
| 675 |
+ for(int j = 0 ; j < excelVarCnt + 1; j++){ //행읽기(변수갯수 +1 개 만큼 컬럼을 읽음 수신번호 + 변수들)
|
|
| 676 |
+ |
|
| 677 |
+ cellValue = ""; |
|
| 678 |
+ cell = row.getCell(j); //수신번호 , 변수들 |
|
| 679 |
+ if(null == cell || "".equals(cell.toString().trim())) { //셀에 값이 없으면
|
|
| 680 |
+ //System.out.println("Cell 데이터가 없습니다.");
|
|
| 681 |
+ if(j == 1) {
|
|
| 682 |
+ if (sheet.getLastRowNum() == i) {
|
|
| 683 |
+ continue; |
|
| 684 |
+ } |
|
| 685 |
+ |
|
| 686 |
+ break; |
|
| 687 |
+ |
|
| 688 |
+ } |
|
| 689 |
+ } |
|
| 690 |
+ if(null != cell){
|
|
| 691 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 692 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 693 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 694 |
+ } |
|
| 695 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 696 |
+ } |
|
| 697 |
+ |
|
| 698 |
+ if(j == 0) {//수신번호 추가
|
|
| 699 |
+ |
|
| 700 |
+ if(cellValue.matches(phoneRegExp) && errSts) {
|
|
| 701 |
+ jm.put("phone", cellValue);
|
|
| 702 |
+ }else {
|
|
| 703 |
+ errPhoneCnt++; |
|
| 704 |
+ errPhoneLine += (i+1) + "행 "; |
|
| 705 |
+ errSts = false; |
|
| 706 |
+ break; |
|
| 707 |
+ } |
|
| 708 |
+ |
|
| 709 |
+ }else {//변수 데이터 추가
|
|
| 710 |
+ |
|
| 711 |
+ if(cell != null) {
|
|
| 712 |
+ |
|
| 713 |
+ if(j <= excelVarCnt) {//등록 변수 갯수 까지만 입력
|
|
| 714 |
+ |
|
| 715 |
+ switch(cell.getCellType()){ //숫자타임을 문자로 변환
|
|
| 716 |
+ case Cell.CELL_TYPE_NUMERIC: |
|
| 717 |
+ cell.setCellType(Cell.CELL_TYPE_STRING); |
|
| 718 |
+ } |
|
| 719 |
+ cellValue = StringUtil.getString(cell.getStringCellValue().trim()) ; |
|
| 720 |
+ |
|
| 721 |
+ if(cellValue != null && !cellValue.equals("")) {
|
|
| 722 |
+ rtnValueStr += cellValue + "§"; |
|
| 723 |
+ }else {
|
|
| 724 |
+ rtnValueStr += "" + "§"; |
|
| 725 |
+ } |
|
| 726 |
+ |
|
| 727 |
+ } |
|
| 728 |
+ |
|
| 729 |
+ }else {
|
|
| 730 |
+ rtnValueStr += "" + "§"; |
|
| 731 |
+ |
|
| 732 |
+ } |
|
| 733 |
+ |
|
| 734 |
+ } |
|
| 735 |
+ |
|
| 736 |
+ } |
|
| 737 |
+ |
|
| 738 |
+ jm.put("varVal", rtnValueStr.replaceFirst(".$", ""));//변수 데이터 추가
|
|
| 739 |
+ if(null != jm.get("phone") && errSts) {
|
|
| 740 |
+ json.add(jm); |
|
| 741 |
+ } |
|
| 742 |
+ |
|
| 743 |
+ } |
|
| 744 |
+ |
|
| 745 |
+ int resultErrCnt = errPhoneCnt; |
|
| 746 |
+ |
|
| 747 |
+ jr.setData(json); |
|
| 748 |
+ jr.setSuccess(true); |
|
| 749 |
+ |
|
| 750 |
+ if(resultErrCnt > 0) {
|
|
| 751 |
+ if (errPhoneCnt <= 10) {
|
|
| 752 |
+ if (StringUtils.isNotEmpty(errPhoneLine.trim())) {
|
|
| 753 |
+ errPhoneLine = "[" + errPhoneLine.trim() + "]"; |
|
| 754 |
+ } |
|
| 755 |
+ } |
|
| 756 |
+ else {
|
|
| 757 |
+ errPhoneLine = ""; |
|
| 758 |
+ } |
|
| 759 |
+ |
|
| 760 |
+ jr.setMessage("유효하지 않은 형식의 전화번호 "+ errPhoneCnt +"건" + errPhoneLine.trim() + " 있습니다.\n해당 건을 제외하고 문자 발송됩니다.");
|
|
| 761 |
+ }else {
|
|
| 762 |
+ jr.setMessage("");
|
|
| 763 |
+ } |
|
| 764 |
+ |
|
| 765 |
+ } |
|
| 766 |
+ |
|
| 767 |
+ } |
|
| 768 |
+ } |
|
| 769 |
+ |
|
| 770 |
+ } catch (Exception e) {
|
|
| 771 |
+ // TODO: handle exception |
|
| 772 |
+ System.out.println("+++++++++++++++++ sendAlimtalkExelVarFilePhoneNumAjax Controller Error !!! "+e);
|
|
| 773 |
+ jr.setSuccess(false); |
|
| 774 |
+ jr.setMessage("엑셀 데이터에 오류가 있습니다. 엑셀 데이터를 확인해 주세요.");
|
|
| 775 |
+ return jr; |
|
| 776 |
+ |
|
| 777 |
+ } |
|
| 778 |
+ |
|
| 779 |
+ return jr; |
|
| 780 |
+ } |
|
| 203 | 781 |
|
| 204 | 782 |
|
| 205 | 783 |
// 카카오 템플릿 목록 조회 |
--- src/main/java/itn/let/kakao/user/sent/service/KakaoSentVO.java
+++ src/main/java/itn/let/kakao/user/sent/service/KakaoSentVO.java
... | ... | @@ -99,6 +99,10 @@ |
| 99 | 99 |
private String callToComma; |
| 100 | 100 |
private String callFromComma; |
| 101 | 101 |
|
| 102 |
+ private String atDelayYn; //알림톡 30분 지연 유무 |
|
| 103 |
+ private String atDelayCompleteYn; //알림톡 30분 지연 승인/취소 처리 여부 |
|
| 104 |
+ private Date atDelayOrgTime; //알림톡 30분 지연에 대한 원래 시간 (-30분 처리된 시간) |
|
| 105 |
+ |
|
| 102 | 106 |
public String getCallToComma() {
|
| 103 | 107 |
return callToComma; |
| 104 | 108 |
} |
... | ... | @@ -545,6 +549,24 @@ |
| 545 | 549 |
public void setFailCount(int failCount) {
|
| 546 | 550 |
this.failCount = failCount; |
| 547 | 551 |
} |
| 552 |
+ public String getAtDelayYn() {
|
|
| 553 |
+ return atDelayYn; |
|
| 554 |
+ } |
|
| 555 |
+ public void setAtDelayYn(String atDelayYn) {
|
|
| 556 |
+ this.atDelayYn = atDelayYn; |
|
| 557 |
+ } |
|
| 558 |
+ public String getAtDelayCompleteYn() {
|
|
| 559 |
+ return atDelayCompleteYn; |
|
| 560 |
+ } |
|
| 561 |
+ public void setAtDelayCompleteYn(String atDelayCompleteYn) {
|
|
| 562 |
+ this.atDelayCompleteYn = atDelayCompleteYn; |
|
| 563 |
+ } |
|
| 564 |
+ public Date getAtDelayOrgTime() {
|
|
| 565 |
+ return atDelayOrgTime; |
|
| 566 |
+ } |
|
| 567 |
+ public void setAtDelayOrgTime(Date atDelayOrgTime) {
|
|
| 568 |
+ this.atDelayOrgTime = atDelayOrgTime; |
|
| 569 |
+ } |
|
| 548 | 570 |
|
| 549 | 571 |
|
| 550 | 572 |
|
--- src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java
+++ src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java
... | ... | @@ -73,6 +73,7 @@ |
| 73 | 73 |
private String msgKind; //문자종류(일반:N, 광고:A , 선거:C, 관리자:S, 이벤트:E) |
| 74 | 74 |
private String delayYn; //지연 문자 유무 |
| 75 | 75 |
private String delayCompleteYn; //지연문자 처리 완료 여부 |
| 76 |
+ private Date delayOrgTime; //30분 딜레이된 발송시간에서 -30분 처리하여 원래 보내려던 발송시간 처리 |
|
| 76 | 77 |
|
| 77 | 78 |
private String msgId; //문자아이디 |
| 78 | 79 |
private String atchFiles; // 그림문자 파일정보 |
... | ... | @@ -83,6 +84,9 @@ |
| 83 | 84 |
private String callToComma; |
| 84 | 85 |
private String msgSentType; |
| 85 | 86 |
private String successCount; |
| 87 |
+ |
|
| 88 |
+ private String resultSValue; |
|
| 89 |
+ private String resultWFValue; |
|
| 86 | 90 |
|
| 87 | 91 |
public String getSuccessCount() {
|
| 88 | 92 |
return successCount; |
... | ... | @@ -458,5 +462,23 @@ |
| 458 | 462 |
public void setSendKind(String sendKind) {
|
| 459 | 463 |
this.sendKind = sendKind; |
| 460 | 464 |
} |
| 465 |
+ public String getResultSValue() {
|
|
| 466 |
+ return resultSValue; |
|
| 467 |
+ } |
|
| 468 |
+ public void setResultSValue(String resultSValue) {
|
|
| 469 |
+ this.resultSValue = resultSValue; |
|
| 470 |
+ } |
|
| 471 |
+ public String getResultWFValue() {
|
|
| 472 |
+ return resultWFValue; |
|
| 473 |
+ } |
|
| 474 |
+ public void setResultWFValue(String resultWFValue) {
|
|
| 475 |
+ this.resultWFValue = resultWFValue; |
|
| 476 |
+ } |
|
| 477 |
+ public Date getDelayOrgTime() {
|
|
| 478 |
+ return delayOrgTime; |
|
| 479 |
+ } |
|
| 480 |
+ public void setDelayOrgTime(Date delayOrgTime) {
|
|
| 481 |
+ this.delayOrgTime = delayOrgTime; |
|
| 482 |
+ } |
|
| 461 | 483 |
|
| 462 | 484 |
} |
--- src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java
+++ src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java
... | ... | @@ -1280,7 +1280,7 @@ |
| 1280 | 1280 |
cell.setCellStyle(style); |
| 1281 | 1281 |
|
| 1282 | 1282 |
cell = row.createCell(10); |
| 1283 |
- cell.setCellValue("실패");
|
|
| 1283 |
+ cell.setCellValue("실패/대기");
|
|
| 1284 | 1284 |
cell.setCellStyle(style); |
| 1285 | 1285 |
|
| 1286 | 1286 |
cell = row.createCell(11); |
... | ... | @@ -1380,11 +1380,26 @@ |
| 1380 | 1380 |
|
| 1381 | 1381 |
|
| 1382 | 1382 |
double eachPrice = Float.parseFloat(resultAllSentList.get(i).getEachPrice()); |
| 1383 |
+ int resultSValue = 0; |
|
| 1384 |
+ int resultWFValue = 0; |
|
| 1385 |
+ |
|
| 1386 |
+ if(resultAllSentList.get(i).getResultSValue() != null) {
|
|
| 1387 |
+ resultSValue = Integer.parseInt(resultAllSentList.get(i).getResultSValue()); |
|
| 1388 |
+ }else {
|
|
| 1389 |
+ resultSValue = 1; |
|
| 1390 |
+ } |
|
| 1391 |
+ |
|
| 1392 |
+ if(resultAllSentList.get(i).getResultWFValue() != null) {
|
|
| 1393 |
+ resultWFValue = Integer.parseInt(resultAllSentList.get(i).getResultWFValue()); |
|
| 1394 |
+ }else {
|
|
| 1395 |
+ resultWFValue = 1; |
|
| 1396 |
+ } |
|
| 1397 |
+ |
|
| 1383 | 1398 |
|
| 1384 | 1399 |
if("S".equals(resultAllSentList.get(i).getMsgResult())) {
|
| 1385 |
- resSucCnt = 1; |
|
| 1400 |
+ resSucCnt = resultSValue; |
|
| 1386 | 1401 |
} else {
|
| 1387 |
- resFailCnt = 1; |
|
| 1402 |
+ resFailCnt = resultWFValue; |
|
| 1388 | 1403 |
} |
| 1389 | 1404 |
|
| 1390 | 1405 |
resSucPrice = eachPrice * resSucCnt; |
--- src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
+++ src/main/java/itn/let/mjo/pay/service/MjonPayVO.java
... | ... | @@ -207,6 +207,7 @@ |
| 207 | 207 |
private String amtCellSum; //휴대폰 결제 금액 |
| 208 | 208 |
private String amtBankSum; //즉시이체 결제 금액 |
| 209 | 209 |
private String amtVbankSum; //전용계좌 결제 금액 |
| 210 |
+ private String amtAfterPaySum; //전용계좌 결제 금액 |
|
| 210 | 211 |
private String amtRefundSum; //환불 금액 |
| 211 | 212 |
private String amtTotSum; //결제 금액 총액 |
| 212 | 213 |
|
... | ... | @@ -215,6 +216,7 @@ |
| 215 | 216 |
private String amtCellSumTot; //전체 휴대폰 결제 금액 |
| 216 | 217 |
private String amtBankSumTot; //전체 즉시이체 결제 금액 |
| 217 | 218 |
private String amtVbankSumTot; //전체 전용계좌 결제 금액 |
| 219 |
+ private String amtAfterPaySumTot; //전체 전용계좌 결제 금액 |
|
| 218 | 220 |
private String amtRefundSumTot; //환불 금액 |
| 219 | 221 |
private String amtTotSumTot; //전체 결제 금액 총액 |
| 220 | 222 |
|
... | ... | @@ -223,6 +225,7 @@ |
| 223 | 225 |
private String amtCellCnt; //휴대폰 결제 수 |
| 224 | 226 |
private String amtBankCnt; //즉시이체 결제 수 |
| 225 | 227 |
private String amtVbankCnt; //전용계좌 결제 수 |
| 228 |
+ private String amtAfterPayCnt; //전용계좌 결제 수 |
|
| 226 | 229 |
private String amtRefundCnt; //환불 수 |
| 227 | 230 |
private String amtTotCnt; //결제 수 총수 |
| 228 | 231 |
|
... | ... | @@ -1708,6 +1711,30 @@ |
| 1708 | 1711 |
public void setTrdNo(String trdNo) {
|
| 1709 | 1712 |
this.trdNo = trdNo; |
| 1710 | 1713 |
} |
| 1714 |
+ |
|
| 1715 |
+ public String getAmtAfterPaySum() {
|
|
| 1716 |
+ return amtAfterPaySum; |
|
| 1717 |
+ } |
|
| 1718 |
+ |
|
| 1719 |
+ public void setAmtAfterPaySum(String amtAfterPaySum) {
|
|
| 1720 |
+ this.amtAfterPaySum = amtAfterPaySum; |
|
| 1721 |
+ } |
|
| 1722 |
+ |
|
| 1723 |
+ public String getAmtAfterPaySumTot() {
|
|
| 1724 |
+ return amtAfterPaySumTot; |
|
| 1725 |
+ } |
|
| 1726 |
+ |
|
| 1727 |
+ public void setAmtAfterPaySumTot(String amtAfterPaySumTot) {
|
|
| 1728 |
+ this.amtAfterPaySumTot = amtAfterPaySumTot; |
|
| 1729 |
+ } |
|
| 1730 |
+ |
|
| 1731 |
+ public String getAmtAfterPayCnt() {
|
|
| 1732 |
+ return amtAfterPayCnt; |
|
| 1733 |
+ } |
|
| 1734 |
+ |
|
| 1735 |
+ public void setAmtAfterPayCnt(String amtAfterPayCnt) {
|
|
| 1736 |
+ this.amtAfterPayCnt = amtAfterPayCnt; |
|
| 1737 |
+ } |
|
| 1711 | 1738 |
|
| 1712 | 1739 |
|
| 1713 | 1740 |
} |
--- src/main/java/itn/let/mjo/pay/web/MjonPayController.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayController.java
... | ... | @@ -5352,7 +5352,7 @@ |
| 5352 | 5352 |
|
| 5353 | 5353 |
if("".equals(mjonPayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
| 5354 | 5354 |
mjonPayVO.setSearchSortCnd("regDate");
|
| 5355 |
- mjonPayVO.setSearchSortOrd("desc");
|
|
| 5355 |
+ mjonPayVO.setSearchSortOrd("asc");
|
|
| 5356 | 5356 |
} |
| 5357 | 5357 |
|
| 5358 | 5358 |
List<MjonPayVO> resultList = mjonPayService.selectPayDayChart(mjonPayVO); |
... | ... | @@ -5363,7 +5363,7 @@ |
| 5363 | 5363 |
mjonPayVO.setRecordCountPerPage(10000); |
| 5364 | 5364 |
if("".equals(mjonPayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
| 5365 | 5365 |
mjonPayVO.setSearchSortCnd("regDate");
|
| 5366 |
- mjonPayVO.setSearchSortOrd("desc");
|
|
| 5366 |
+ mjonPayVO.setSearchSortOrd("asc");
|
|
| 5367 | 5367 |
} |
| 5368 | 5368 |
|
| 5369 | 5369 |
List<MjonPayVO> resultList2 = mjonPayService.selectPayDayChart(mjonPayVO); |
... | ... | @@ -5373,6 +5373,7 @@ |
| 5373 | 5373 |
long amtCellSumTot = 0; //전체 휴대폰 결제 금액 |
| 5374 | 5374 |
long amtBankSumTot = 0; //전체 즉시이체 결제 금액 |
| 5375 | 5375 |
long amtVbankSumTot = 0; //전체 전용계좌 결제 금액 |
| 5376 |
+ long amtAfterPaySumTot = 0; //전체 전용계좌 결제 금액 |
|
| 5376 | 5377 |
long amtRefundSumTot = 0; //전체 환불 금액 |
| 5377 | 5378 |
long amtTotSumTot = 0; //전체 결제 금액 총액 |
| 5378 | 5379 |
|
... | ... | @@ -5382,6 +5383,7 @@ |
| 5382 | 5383 |
amtCellSumTot += Long.parseLong(item.getAmtCellSum()); |
| 5383 | 5384 |
amtBankSumTot += Long.parseLong(item.getAmtBankSum()); |
| 5384 | 5385 |
amtVbankSumTot += Long.parseLong(item.getAmtVbankSum()); |
| 5386 |
+ amtAfterPaySumTot += Long.parseLong(item.getAmtAfterPaySum()); |
|
| 5385 | 5387 |
amtRefundSumTot += Long.parseLong(item.getAmtRefundSum()); |
| 5386 | 5388 |
amtTotSumTot += Long.parseLong(item.getAmtTotSum()); |
| 5387 | 5389 |
} |
... | ... | @@ -5391,6 +5393,7 @@ |
| 5391 | 5393 |
mjonPayVO.setAmtCellSumTot(amtCellSumTot + ""); |
| 5392 | 5394 |
mjonPayVO.setAmtBankSumTot(amtBankSumTot + ""); |
| 5393 | 5395 |
mjonPayVO.setAmtVbankSumTot(amtVbankSumTot + ""); |
| 5396 |
+ mjonPayVO.setAmtAfterPaySumTot(amtAfterPaySumTot + ""); |
|
| 5394 | 5397 |
mjonPayVO.setAmtRefundSumTot(amtRefundSumTot + ""); |
| 5395 | 5398 |
mjonPayVO.setAmtTotSumTot(amtTotSumTot + ""); |
| 5396 | 5399 |
|
... | ... | @@ -5402,8 +5405,217 @@ |
| 5402 | 5405 |
|
| 5403 | 5406 |
return "/uss/ion/pay/PayDayChart"; |
| 5404 | 5407 |
} |
| 5408 |
+ |
|
| 5409 |
+ /* |
|
| 5410 |
+ * 일별 매출 통계 엑셀 다운로드 |
|
| 5411 |
+ * |
|
| 5412 |
+ * */ |
|
| 5413 |
+ @RequestMapping(value= {"/uss/ion/pay/payDayChartExcelDownload.do"})
|
|
| 5414 |
+ public void payDayChartExcelDownload( MjonPayVO mjonPayVO, |
|
| 5415 |
+ HttpServletRequest request, |
|
| 5416 |
+ HttpServletResponse response , |
|
| 5417 |
+ ModelMap model) throws Exception {
|
|
| 5418 |
+ |
|
| 5419 |
+ mjonPayVO.setRecordCountPerPage(mjonPayVO.getPageUnit()); |
|
| 5420 |
+ mjonPayVO.setFirstIndex(0); |
|
| 5421 |
+ LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 5422 |
+ if(null != loginVO && !"super".equals(loginVO.getSiteId())){
|
|
| 5423 |
+ mjonPayVO.setSiteId(loginVO.getSiteId()); |
|
| 5424 |
+ } |
|
| 5425 |
+ // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. |
|
| 5426 |
+ SXSSFWorkbook wb = new SXSSFWorkbook(100); |
|
| 5427 |
+ CellStyle style = wb.createCellStyle(); |
|
| 5428 |
+ style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 |
|
| 5429 |
+ style.setBorderLeft(CellStyle.BORDER_THIN); |
|
| 5430 |
+ style.setBorderRight(CellStyle.BORDER_THIN); |
|
| 5431 |
+ style.setBorderTop(CellStyle.BORDER_THIN); |
|
| 5432 |
+ Font font = wb.createFont(); |
|
| 5433 |
+ font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold |
|
| 5434 |
+ |
|
| 5435 |
+ Cell cell = null; |
|
| 5436 |
+ Row row = null; |
|
| 5437 |
+ |
|
| 5438 |
+ String fileName ="일별 매출 통계"; |
|
| 5439 |
+ |
|
| 5440 |
+ String sheetTitle = ""; |
|
| 5441 |
+ try{
|
|
| 5442 |
+ List<MjonPayVO> resultList = mjonPayService.selectPayDayChart(mjonPayVO); |
|
| 5443 |
+ { //화면 리스트
|
|
| 5444 |
+ sheetTitle = "일별 매출 통계" ; //제목 |
|
| 5445 |
+ Sheet sheet = wb.createSheet(sheetTitle); |
|
| 5446 |
+ row = sheet.createRow(0); |
|
| 5447 |
+ |
|
| 5448 |
+ cell = row.createCell(0); |
|
| 5449 |
+ cell.setCellValue("결제일");
|
|
| 5450 |
+ cell.setCellStyle(style); |
|
| 5451 |
+ |
|
| 5452 |
+ cell = row.createCell(1); |
|
| 5453 |
+ cell.setCellValue("신용카드");
|
|
| 5454 |
+ cell.setCellStyle(style); |
|
| 5455 |
+ |
|
| 5456 |
+ cell = row.createCell(2); |
|
| 5457 |
+ cell.setCellValue("휴대폰");
|
|
| 5458 |
+ cell.setCellStyle(style); |
|
| 5459 |
+ |
|
| 5460 |
+ cell = row.createCell(3); |
|
| 5461 |
+ cell.setCellValue("즉시이체");
|
|
| 5462 |
+ cell.setCellStyle(style); |
|
| 5463 |
+ |
|
| 5464 |
+ cell = row.createCell(4); |
|
| 5465 |
+ cell.setCellValue("전용계좌");
|
|
| 5466 |
+ cell.setCellStyle(style); |
|
| 5467 |
+ |
|
| 5468 |
+ cell = row.createCell(5); |
|
| 5469 |
+ cell.setCellValue("간편결제");
|
|
| 5470 |
+ cell.setCellStyle(style); |
|
| 5471 |
+ |
|
| 5472 |
+ cell = row.createCell(6); |
|
| 5473 |
+ cell.setCellValue("후불결제");
|
|
| 5474 |
+ cell.setCellStyle(style); |
|
| 5475 |
+ |
|
| 5476 |
+ cell = row.createCell(7); |
|
| 5477 |
+ cell.setCellValue("환불");
|
|
| 5478 |
+ cell.setCellStyle(style); |
|
| 5479 |
+ |
|
| 5480 |
+ cell = row.createCell(8); |
|
| 5481 |
+ cell.setCellValue("합계(VAT포함)");
|
|
| 5482 |
+ cell.setCellStyle(style); |
|
| 5483 |
+ |
|
| 5484 |
+ long amtCardSumTot = 0; //전체 신용카드 결제 금액 |
|
| 5485 |
+ long amtCellSumTot = 0; //전체 휴대폰 결제 금액 |
|
| 5486 |
+ long amtBankSumTot = 0; //전체 즉시이체 결제 금액 |
|
| 5487 |
+ long amtVbankSumTot = 0; //전체 전용계좌 결제 금액 |
|
| 5488 |
+ long amtSpaySumTot = 0; //전체 간편결제 결제 금액 |
|
| 5489 |
+ long amtAfterPaySumTot = 0; //전체 후불결제 금액 |
|
| 5490 |
+ long amtRefundSumTot = 0; //전체 환불 금액 |
|
| 5491 |
+ long amtTotSumTot = 0; //전체 결제 금액 총액 |
|
| 5492 |
+ |
|
| 5493 |
+ for(int i=0; i < resultList.size(); i++){
|
|
| 5494 |
+ row = sheet.createRow(i+1); |
|
| 5495 |
+ for(int j=0 ; j < 9 ; j++) {
|
|
| 5496 |
+ cell = row.createCell(j); |
|
| 5497 |
+ cell.setCellStyle(style); |
|
| 5498 |
+ |
|
| 5499 |
+ String regDate = (resultList.get(i)).getRegDate(); |
|
| 5500 |
+ String amtCardSum = (resultList.get(i)).getAmtCardSum(); |
|
| 5501 |
+ String amtCellSum = (resultList.get(i)).getAmtCellSum(); |
|
| 5502 |
+ String amtBankSum = (resultList.get(i)).getAmtBankSum(); |
|
| 5503 |
+ String amtVbankSum = (resultList.get(i)).getAmtVbankSum(); |
|
| 5504 |
+ String amtSpaySum = (resultList.get(i)).getAmtSpaySum(); |
|
| 5505 |
+ String amtAfterPaySum = (resultList.get(i)).getAmtAfterPaySum(); |
|
| 5506 |
+ String amtRefundSum = (resultList.get(i)).getAmtRefundSum(); |
|
| 5507 |
+ String amtTotSum = (resultList.get(i)).getAmtTotSum(); |
|
| 5508 |
+ |
|
| 5509 |
+ if(j==0) cell.setCellValue(regDate); //결제월 |
|
| 5510 |
+ if(j==1) {
|
|
| 5511 |
+ cell.setCellValue(amtCardSum); //신용카드 |
|
| 5512 |
+ amtCardSumTot += Long.parseLong(amtCardSum); |
|
| 5513 |
+ } |
|
| 5514 |
+ if(j==2) {
|
|
| 5515 |
+ cell.setCellValue(amtCellSum); //휴대폰 |
|
| 5516 |
+ amtCellSumTot += Long.parseLong(amtCellSum); |
|
| 5517 |
+ } |
|
| 5518 |
+ if(j==3) {
|
|
| 5519 |
+ cell.setCellValue(amtBankSum); //즉시이체 |
|
| 5520 |
+ amtBankSumTot += Long.parseLong(amtBankSum); |
|
| 5521 |
+ } |
|
| 5522 |
+ if(j==4) {
|
|
| 5523 |
+ cell.setCellValue(amtVbankSum); //전용계좌 |
|
| 5524 |
+ amtVbankSumTot += Long.parseLong(amtVbankSum); |
|
| 5525 |
+ } |
|
| 5526 |
+ if(j==5) {
|
|
| 5527 |
+ cell.setCellValue(amtSpaySum); //간편결제 |
|
| 5528 |
+ amtSpaySumTot += Long.parseLong(amtSpaySum); |
|
| 5529 |
+ } |
|
| 5530 |
+ if(j==6) {
|
|
| 5531 |
+ cell.setCellValue(amtAfterPaySum); //후불결제 |
|
| 5532 |
+ amtAfterPaySumTot += Long.parseLong(amtAfterPaySum); |
|
| 5533 |
+ } |
|
| 5534 |
+ if(j==7) {
|
|
| 5535 |
+ cell.setCellValue(amtRefundSum); //환불 |
|
| 5536 |
+ amtRefundSumTot += Long.parseLong(amtRefundSum); |
|
| 5537 |
+ } |
|
| 5538 |
+ if(j==8) {
|
|
| 5539 |
+ cell.setCellValue(amtTotSum); //합계(VAT포함) |
|
| 5540 |
+ amtTotSumTot += Long.parseLong(amtTotSum); |
|
| 5541 |
+ } |
|
| 5542 |
+ |
|
| 5543 |
+ } |
|
| 5544 |
+ } |
|
| 5545 |
+ |
|
| 5546 |
+ //전체 합계 행 추가 |
|
| 5547 |
+ row = sheet.createRow(resultList.size()+1); |
|
| 5548 |
+ cell = row.createCell(0); |
|
| 5549 |
+ cell.setCellStyle(style); |
|
| 5550 |
+ cell.setCellValue("합계"); //결제월
|
|
| 5551 |
+ |
|
| 5552 |
+ cell = row.createCell(1); |
|
| 5553 |
+ cell.setCellStyle(style); |
|
| 5554 |
+ cell.setCellValue(amtCardSumTot); //신용카드 |
|
| 5555 |
+ |
|
| 5556 |
+ cell = row.createCell(2); |
|
| 5557 |
+ cell.setCellStyle(style); |
|
| 5558 |
+ cell.setCellValue(amtCellSumTot); //휴대폰 |
|
| 5559 |
+ |
|
| 5560 |
+ cell = row.createCell(3); |
|
| 5561 |
+ cell.setCellStyle(style); |
|
| 5562 |
+ cell.setCellValue(amtBankSumTot); //즉시이체 |
|
| 5563 |
+ |
|
| 5564 |
+ cell = row.createCell(4); |
|
| 5565 |
+ cell.setCellStyle(style); |
|
| 5566 |
+ cell.setCellValue(amtVbankSumTot); //전용계좌 |
|
| 5567 |
+ |
|
| 5568 |
+ cell = row.createCell(5); |
|
| 5569 |
+ cell.setCellStyle(style); |
|
| 5570 |
+ cell.setCellValue(amtSpaySumTot); //간편결제 |
|
| 5571 |
+ |
|
| 5572 |
+ cell = row.createCell(6); |
|
| 5573 |
+ cell.setCellStyle(style); |
|
| 5574 |
+ cell.setCellValue(amtAfterPaySumTot); //후불결제 |
|
| 5575 |
+ |
|
| 5576 |
+ cell = row.createCell(7); |
|
| 5577 |
+ cell.setCellStyle(style); |
|
| 5578 |
+ cell.setCellValue(amtRefundSumTot); //환불 |
|
| 5579 |
+ |
|
| 5580 |
+ cell = row.createCell(8); |
|
| 5581 |
+ cell.setCellStyle(style); |
|
| 5582 |
+ cell.setCellValue(amtTotSumTot); //합계(VAT포함) |
|
| 5583 |
+ |
|
| 5584 |
+ } |
|
| 5585 |
+ response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
|
| 5586 |
+ SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); |
|
| 5587 |
+ Date currentTime = new Date (); |
|
| 5588 |
+ String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 5589 |
+ fileName = fileName+"("+mTime+")";
|
|
| 5590 |
+ |
|
| 5591 |
+ response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
|
|
| 5592 |
+ wb.write(response.getOutputStream()); |
|
| 5593 |
+ |
|
| 5594 |
+ }catch(Exception e) {
|
|
| 5595 |
+ response.setHeader("Set-Cookie", "fileDownload=false; path=/");
|
|
| 5596 |
+ response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
| 5597 |
+ response.setHeader("Content-Type","text/html; charset=utf-8");
|
|
| 5598 |
+ OutputStream out = null; |
|
| 5599 |
+ try {
|
|
| 5600 |
+ out = response.getOutputStream(); |
|
| 5601 |
+ byte[] data = new String("fail..").getBytes();
|
|
| 5602 |
+ out.write(data, 0, data.length); |
|
| 5603 |
+ } catch(Exception ignore) {
|
|
| 5604 |
+ ignore.printStackTrace(); |
|
| 5605 |
+ } finally {
|
|
| 5606 |
+ if(out != null) try { out.close(); } catch(Exception ignore) {}
|
|
| 5607 |
+ if(wb != null) try { wb.dispose(); wb.close(); } catch(Exception ignore) {}
|
|
| 5608 |
+ } |
|
| 5609 |
+ }finally {
|
|
| 5610 |
+ // 디스크 적었던 임시파일을 제거합니다. |
|
| 5611 |
+ wb.dispose(); |
|
| 5612 |
+ try { wb.close(); } catch(Exception ignore) {}
|
|
| 5613 |
+ } |
|
| 5614 |
+ } |
|
| 5615 |
+ |
|
| 5616 |
+ |
|
| 5405 | 5617 |
/** |
| 5406 |
- * 월별 결제 통계 |
|
| 5618 |
+ * 월별 매출 통계 |
|
| 5407 | 5619 |
* @param searchVO |
| 5408 | 5620 |
* @param model |
| 5409 | 5621 |
* @return "/uss/ion/pay/payDayChart" |
... | ... | @@ -5434,7 +5646,7 @@ |
| 5434 | 5646 |
} |
| 5435 | 5647 |
if("".equals(mjonPayVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
| 5436 | 5648 |
mjonPayVO.setSearchSortCnd("regDate");
|
| 5437 |
- mjonPayVO.setSearchSortOrd("desc");
|
|
| 5649 |
+ mjonPayVO.setSearchSortOrd("asc");
|
|
| 5438 | 5650 |
} |
| 5439 | 5651 |
|
| 5440 | 5652 |
mjonPayVO.setFirstIndex(0); |
... | ... | @@ -5447,6 +5659,7 @@ |
| 5447 | 5659 |
long amtCellSumTot = 0; //전체 휴대폰 결제 금액 |
| 5448 | 5660 |
long amtBankSumTot = 0; //전체 즉시이체 결제 금액 |
| 5449 | 5661 |
long amtVbankSumTot = 0; //전체 전용계좌 결제 금액 |
| 5662 |
+ long amtAfterPaySumTot = 0; //전체 후불결제 금액 |
|
| 5450 | 5663 |
long amtRefundSumTot = 0; //전체 환불 금액 |
| 5451 | 5664 |
long amtTotSumTot = 0; //전체 결제 금액 총액 |
| 5452 | 5665 |
|
... | ... | @@ -5456,6 +5669,7 @@ |
| 5456 | 5669 |
amtCellSumTot += Long.parseLong(item.getAmtCellSum()); |
| 5457 | 5670 |
amtBankSumTot += Long.parseLong(item.getAmtBankSum()); |
| 5458 | 5671 |
amtVbankSumTot += Long.parseLong(item.getAmtVbankSum()); |
| 5672 |
+ amtAfterPaySumTot += Long.parseLong(item.getAmtAfterPaySum()); |
|
| 5459 | 5673 |
amtRefundSumTot += Long.parseLong(item.getAmtRefundSum()); |
| 5460 | 5674 |
amtTotSumTot += Long.parseLong(item.getAmtTotSum()); |
| 5461 | 5675 |
} |
... | ... | @@ -5465,6 +5679,7 @@ |
| 5465 | 5679 |
mjonPayVO.setAmtCellSumTot(amtCellSumTot + ""); |
| 5466 | 5680 |
mjonPayVO.setAmtBankSumTot(amtBankSumTot + ""); |
| 5467 | 5681 |
mjonPayVO.setAmtVbankSumTot(amtVbankSumTot + ""); |
| 5682 |
+ mjonPayVO.setAmtAfterPaySumTot(amtAfterPaySumTot + ""); |
|
| 5468 | 5683 |
mjonPayVO.setAmtRefundSumTot(amtRefundSumTot + ""); |
| 5469 | 5684 |
mjonPayVO.setAmtTotSumTot(amtTotSumTot + ""); |
| 5470 | 5685 |
|
... | ... | @@ -5478,6 +5693,214 @@ |
| 5478 | 5693 |
return "/uss/ion/pay/PayMonthChart"; |
| 5479 | 5694 |
} |
| 5480 | 5695 |
|
| 5696 |
+ |
|
| 5697 |
+ /* |
|
| 5698 |
+ * 월별 매출 통계 엑셀 다운로드 |
|
| 5699 |
+ * |
|
| 5700 |
+ * */ |
|
| 5701 |
+ @RequestMapping(value= {"/uss/ion/pay/payMonthChartExcelDownload.do"})
|
|
| 5702 |
+ public void payMonthChartExcelDownload( MjonPayVO mjonPayVO, |
|
| 5703 |
+ HttpServletRequest request, |
|
| 5704 |
+ HttpServletResponse response , |
|
| 5705 |
+ ModelMap model) throws Exception {
|
|
| 5706 |
+ |
|
| 5707 |
+ mjonPayVO.setRecordCountPerPage(mjonPayVO.getPageUnit()); |
|
| 5708 |
+ mjonPayVO.setFirstIndex(0); |
|
| 5709 |
+ LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 5710 |
+ if(null != loginVO && !"super".equals(loginVO.getSiteId())){
|
|
| 5711 |
+ mjonPayVO.setSiteId(loginVO.getSiteId()); |
|
| 5712 |
+ } |
|
| 5713 |
+ // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. |
|
| 5714 |
+ SXSSFWorkbook wb = new SXSSFWorkbook(100); |
|
| 5715 |
+ CellStyle style = wb.createCellStyle(); |
|
| 5716 |
+ style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게 |
|
| 5717 |
+ style.setBorderLeft(CellStyle.BORDER_THIN); |
|
| 5718 |
+ style.setBorderRight(CellStyle.BORDER_THIN); |
|
| 5719 |
+ style.setBorderTop(CellStyle.BORDER_THIN); |
|
| 5720 |
+ Font font = wb.createFont(); |
|
| 5721 |
+ font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold |
|
| 5722 |
+ |
|
| 5723 |
+ Cell cell = null; |
|
| 5724 |
+ Row row = null; |
|
| 5725 |
+ |
|
| 5726 |
+ String fileName ="월별 매출 통계"; |
|
| 5727 |
+ |
|
| 5728 |
+ String sheetTitle = ""; |
|
| 5729 |
+ try{
|
|
| 5730 |
+ List<MjonPayVO> resultList = mjonPayService.selectPayMonthChart(mjonPayVO); |
|
| 5731 |
+ { //화면 리스트
|
|
| 5732 |
+ sheetTitle = "월별 매출 통계" ; //제목 |
|
| 5733 |
+ Sheet sheet = wb.createSheet(sheetTitle); |
|
| 5734 |
+ row = sheet.createRow(0); |
|
| 5735 |
+ |
|
| 5736 |
+ cell = row.createCell(0); |
|
| 5737 |
+ cell.setCellValue("결제월");
|
|
| 5738 |
+ cell.setCellStyle(style); |
|
| 5739 |
+ |
|
| 5740 |
+ cell = row.createCell(1); |
|
| 5741 |
+ cell.setCellValue("신용카드");
|
|
| 5742 |
+ cell.setCellStyle(style); |
|
| 5743 |
+ |
|
| 5744 |
+ cell = row.createCell(2); |
|
| 5745 |
+ cell.setCellValue("휴대폰");
|
|
| 5746 |
+ cell.setCellStyle(style); |
|
| 5747 |
+ |
|
| 5748 |
+ cell = row.createCell(3); |
|
| 5749 |
+ cell.setCellValue("즉시이체");
|
|
| 5750 |
+ cell.setCellStyle(style); |
|
| 5751 |
+ |
|
| 5752 |
+ cell = row.createCell(4); |
|
| 5753 |
+ cell.setCellValue("전용계좌");
|
|
| 5754 |
+ cell.setCellStyle(style); |
|
| 5755 |
+ |
|
| 5756 |
+ cell = row.createCell(5); |
|
| 5757 |
+ cell.setCellValue("간편결제");
|
|
| 5758 |
+ cell.setCellStyle(style); |
|
| 5759 |
+ |
|
| 5760 |
+ cell = row.createCell(6); |
|
| 5761 |
+ cell.setCellValue("후불결제");
|
|
| 5762 |
+ cell.setCellStyle(style); |
|
| 5763 |
+ |
|
| 5764 |
+ cell = row.createCell(7); |
|
| 5765 |
+ cell.setCellValue("환불");
|
|
| 5766 |
+ cell.setCellStyle(style); |
|
| 5767 |
+ |
|
| 5768 |
+ cell = row.createCell(8); |
|
| 5769 |
+ cell.setCellValue("합계(VAT포함)");
|
|
| 5770 |
+ cell.setCellStyle(style); |
|
| 5771 |
+ |
|
| 5772 |
+ long amtCardSumTot = 0; //전체 신용카드 결제 금액 |
|
| 5773 |
+ long amtCellSumTot = 0; //전체 휴대폰 결제 금액 |
|
| 5774 |
+ long amtBankSumTot = 0; //전체 즉시이체 결제 금액 |
|
| 5775 |
+ long amtVbankSumTot = 0; //전체 전용계좌 결제 금액 |
|
| 5776 |
+ long amtSpaySumTot = 0; //전체 간편결제 결제 금액 |
|
| 5777 |
+ long amtAfterPaySumTot = 0; //전체 후불결제 금액 |
|
| 5778 |
+ long amtRefundSumTot = 0; //전체 환불 금액 |
|
| 5779 |
+ long amtTotSumTot = 0; //전체 결제 금액 총액 |
|
| 5780 |
+ |
|
| 5781 |
+ for(int i=0; i < resultList.size(); i++){
|
|
| 5782 |
+ row = sheet.createRow(i+1); |
|
| 5783 |
+ for(int j=0 ; j < 9 ; j++) {
|
|
| 5784 |
+ cell = row.createCell(j); |
|
| 5785 |
+ cell.setCellStyle(style); |
|
| 5786 |
+ |
|
| 5787 |
+ String regDate = (resultList.get(i)).getRegDate(); |
|
| 5788 |
+ String amtCardSum = (resultList.get(i)).getAmtCardSum(); |
|
| 5789 |
+ String amtCellSum = (resultList.get(i)).getAmtCellSum(); |
|
| 5790 |
+ String amtBankSum = (resultList.get(i)).getAmtBankSum(); |
|
| 5791 |
+ String amtVbankSum = (resultList.get(i)).getAmtVbankSum(); |
|
| 5792 |
+ String amtSpaySum = (resultList.get(i)).getAmtSpaySum(); |
|
| 5793 |
+ String amtAfterPaySum = (resultList.get(i)).getAmtAfterPaySum(); |
|
| 5794 |
+ String amtRefundSum = (resultList.get(i)).getAmtRefundSum(); |
|
| 5795 |
+ String amtTotSum = (resultList.get(i)).getAmtTotSum(); |
|
| 5796 |
+ |
|
| 5797 |
+ if(j==0) cell.setCellValue(regDate); //결제월 |
|
| 5798 |
+ if(j==1) {
|
|
| 5799 |
+ cell.setCellValue(amtCardSum); //신용카드 |
|
| 5800 |
+ amtCardSumTot += Long.parseLong(amtCardSum); |
|
| 5801 |
+ } |
|
| 5802 |
+ if(j==2) {
|
|
| 5803 |
+ cell.setCellValue(amtCellSum); //휴대폰 |
|
| 5804 |
+ amtCellSumTot += Long.parseLong(amtCellSum); |
|
| 5805 |
+ } |
|
| 5806 |
+ if(j==3) {
|
|
| 5807 |
+ cell.setCellValue(amtBankSum); //즉시이체 |
|
| 5808 |
+ amtBankSumTot += Long.parseLong(amtBankSum); |
|
| 5809 |
+ } |
|
| 5810 |
+ if(j==4) {
|
|
| 5811 |
+ cell.setCellValue(amtVbankSum); //전용계좌 |
|
| 5812 |
+ amtVbankSumTot += Long.parseLong(amtVbankSum); |
|
| 5813 |
+ } |
|
| 5814 |
+ if(j==5) {
|
|
| 5815 |
+ cell.setCellValue(amtSpaySum); //간편결제 |
|
| 5816 |
+ amtSpaySumTot += Long.parseLong(amtSpaySum); |
|
| 5817 |
+ } |
|
| 5818 |
+ if(j==6) {
|
|
| 5819 |
+ cell.setCellValue(amtAfterPaySum); //후불결제 |
|
| 5820 |
+ amtAfterPaySumTot += Long.parseLong(amtAfterPaySum); |
|
| 5821 |
+ } |
|
| 5822 |
+ if(j==7) {
|
|
| 5823 |
+ cell.setCellValue(amtRefundSum); //환불 |
|
| 5824 |
+ amtRefundSumTot += Long.parseLong(amtRefundSum); |
|
| 5825 |
+ } |
|
| 5826 |
+ if(j==8) {
|
|
| 5827 |
+ cell.setCellValue(amtTotSum); //합계(VAT포함) |
|
| 5828 |
+ amtTotSumTot += Long.parseLong(amtTotSum); |
|
| 5829 |
+ } |
|
| 5830 |
+ |
|
| 5831 |
+ } |
|
| 5832 |
+ } |
|
| 5833 |
+ |
|
| 5834 |
+ //총합계 행 추가 |
|
| 5835 |
+ row = sheet.createRow(resultList.size()+1); |
|
| 5836 |
+ cell = row.createCell(0); |
|
| 5837 |
+ cell.setCellStyle(style); |
|
| 5838 |
+ cell.setCellValue("합계"); //결제월
|
|
| 5839 |
+ |
|
| 5840 |
+ cell = row.createCell(1); |
|
| 5841 |
+ cell.setCellStyle(style); |
|
| 5842 |
+ cell.setCellValue(amtCardSumTot); //신용카드 |
|
| 5843 |
+ |
|
| 5844 |
+ cell = row.createCell(2); |
|
| 5845 |
+ cell.setCellStyle(style); |
|
| 5846 |
+ cell.setCellValue(amtCellSumTot); //휴대폰 |
|
| 5847 |
+ |
|
| 5848 |
+ cell = row.createCell(3); |
|
| 5849 |
+ cell.setCellStyle(style); |
|
| 5850 |
+ cell.setCellValue(amtBankSumTot); //즉시이체 |
|
| 5851 |
+ |
|
| 5852 |
+ cell = row.createCell(4); |
|
| 5853 |
+ cell.setCellStyle(style); |
|
| 5854 |
+ cell.setCellValue(amtVbankSumTot); //전용계좌 |
|
| 5855 |
+ |
|
| 5856 |
+ cell = row.createCell(5); |
|
| 5857 |
+ cell.setCellStyle(style); |
|
| 5858 |
+ cell.setCellValue(amtSpaySumTot); //간편결제 |
|
| 5859 |
+ |
|
| 5860 |
+ cell = row.createCell(6); |
|
| 5861 |
+ cell.setCellStyle(style); |
|
| 5862 |
+ cell.setCellValue(amtAfterPaySumTot); //후불결제 |
|
| 5863 |
+ |
|
| 5864 |
+ cell = row.createCell(7); |
|
| 5865 |
+ cell.setCellStyle(style); |
|
| 5866 |
+ cell.setCellValue(amtRefundSumTot); //환불 |
|
| 5867 |
+ |
|
| 5868 |
+ cell = row.createCell(8); |
|
| 5869 |
+ cell.setCellStyle(style); |
|
| 5870 |
+ cell.setCellValue(amtTotSumTot); //합계(VAT포함) |
|
| 5871 |
+ |
|
| 5872 |
+ } |
|
| 5873 |
+ response.setHeader("Set-Cookie", "fileDownload=true; path=/");
|
|
| 5874 |
+ SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA ); |
|
| 5875 |
+ Date currentTime = new Date (); |
|
| 5876 |
+ String mTime = mSimpleDateFormat.format ( currentTime ); |
|
| 5877 |
+ fileName = fileName+"("+mTime+")";
|
|
| 5878 |
+ |
|
| 5879 |
+ response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
|
|
| 5880 |
+ wb.write(response.getOutputStream()); |
|
| 5881 |
+ |
|
| 5882 |
+ }catch(Exception e) {
|
|
| 5883 |
+ response.setHeader("Set-Cookie", "fileDownload=false; path=/");
|
|
| 5884 |
+ response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
| 5885 |
+ response.setHeader("Content-Type","text/html; charset=utf-8");
|
|
| 5886 |
+ OutputStream out = null; |
|
| 5887 |
+ try {
|
|
| 5888 |
+ out = response.getOutputStream(); |
|
| 5889 |
+ byte[] data = new String("fail..").getBytes();
|
|
| 5890 |
+ out.write(data, 0, data.length); |
|
| 5891 |
+ } catch(Exception ignore) {
|
|
| 5892 |
+ ignore.printStackTrace(); |
|
| 5893 |
+ } finally {
|
|
| 5894 |
+ if(out != null) try { out.close(); } catch(Exception ignore) {}
|
|
| 5895 |
+ if(wb != null) try { wb.dispose(); wb.close(); } catch(Exception ignore) {}
|
|
| 5896 |
+ } |
|
| 5897 |
+ }finally {
|
|
| 5898 |
+ // 디스크 적었던 임시파일을 제거합니다. |
|
| 5899 |
+ wb.dispose(); |
|
| 5900 |
+ try { wb.close(); } catch(Exception ignore) {}
|
|
| 5901 |
+ } |
|
| 5902 |
+ } |
|
| 5903 |
+ |
|
| 5481 | 5904 |
/* @RequestMapping(value= {"/web/main/vacTest.do"})
|
| 5482 | 5905 |
public void vacTest() throws Exception {
|
| 5483 | 5906 |
|
--- src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java
+++ src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java
... | ... | @@ -61,6 +61,11 @@ |
| 61 | 61 |
private String callFromComma; |
| 62 | 62 |
private String callToComma; |
| 63 | 63 |
|
| 64 |
+ private String delayYn; //30분 딜레이 유무 |
|
| 65 |
+ private String delayCompleteYn; //30분 딜레이 문자 처리 완료 유무 |
|
| 66 |
+ |
|
| 67 |
+ private Date delayOrgTime; //30분 딜레이된 발송시간에서 -30분 처리하여 원래 보내려던 발송시간 처리 |
|
| 68 |
+ |
|
| 64 | 69 |
public String getCallFromComma() {
|
| 65 | 70 |
return callFromComma; |
| 66 | 71 |
} |
... | ... | @@ -319,6 +324,25 @@ |
| 319 | 324 |
public void setSendKind(String sendKind) {
|
| 320 | 325 |
this.sendKind = sendKind; |
| 321 | 326 |
} |
| 327 |
+ public String getDelayYn() {
|
|
| 328 |
+ return delayYn; |
|
| 329 |
+ } |
|
| 330 |
+ public void setDelayYn(String delayYn) {
|
|
| 331 |
+ this.delayYn = delayYn; |
|
| 332 |
+ } |
|
| 333 |
+ public String getDelayCompleteYn() {
|
|
| 334 |
+ return delayCompleteYn; |
|
| 335 |
+ } |
|
| 336 |
+ public void setDelayCompleteYn(String delayCompleteYn) {
|
|
| 337 |
+ this.delayCompleteYn = delayCompleteYn; |
|
| 338 |
+ } |
|
| 339 |
+ public Date getDelayOrgTime() {
|
|
| 340 |
+ return delayOrgTime; |
|
| 341 |
+ } |
|
| 342 |
+ public void setDelayOrgTime(Date delayOrgTime) {
|
|
| 343 |
+ this.delayOrgTime = delayOrgTime; |
|
| 344 |
+ } |
|
| 345 |
+ |
|
| 322 | 346 |
|
| 323 | 347 |
|
| 324 | 348 |
|
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
... | ... | @@ -1532,12 +1532,30 @@ |
| 1532 | 1532 |
public String sendNumberManageRegister( |
| 1533 | 1533 |
@ModelAttribute MberManageVO mberManageVO |
| 1534 | 1534 |
, HttpServletRequest request |
| 1535 |
+ , RedirectAttributes redirectAttributes |
|
| 1535 | 1536 |
, ModelMap model) throws Exception {
|
| 1536 | 1537 |
/*LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();*/ |
| 1537 | 1538 |
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
| 1538 |
- |
|
| 1539 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 1539 | 1540 |
if(loginVO == null) {
|
| 1540 | 1541 |
return "redirect:/web/user/login/login.do"; |
| 1542 |
+ }else {
|
|
| 1543 |
+ |
|
| 1544 |
+ /** |
|
| 1545 |
+ * 회원 정지된 상태이면 문자 발송이 안되도록 처리함 |
|
| 1546 |
+ * 현재 로그인 세션도 만료 처리함 |
|
| 1547 |
+ * */ |
|
| 1548 |
+ boolean mberSttus = userManageService.selectUserStatusInfo(userId); |
|
| 1549 |
+ |
|
| 1550 |
+ if(!mberSttus) {
|
|
| 1551 |
+ |
|
| 1552 |
+ request.getSession().invalidate(); |
|
| 1553 |
+ redirectAttributes.addFlashAttribute("message", "현재 고객님께서는 문자온 서비스 이용이 정지된 상태로 발신번호 등록을 할 수 없습니다. 이용정지 해제를 원하시면 고객센터로 연락주시기 바랍니다.");
|
|
| 1554 |
+ |
|
| 1555 |
+ RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/web/main/mainPage.do");
|
|
| 1556 |
+ return redirectUrlMaker.getRedirectUrl(); |
|
| 1557 |
+ } |
|
| 1558 |
+ |
|
| 1541 | 1559 |
} |
| 1542 | 1560 |
model.addAttribute("loginVO", loginVO);
|
| 1543 | 1561 |
model.addAttribute("pageTab", "sendNumberManage");
|
--- src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/kakao/KakaoSent_SQL_Mysql.xml
... | ... | @@ -211,6 +211,7 @@ |
| 211 | 211 |
M2.subject , |
| 212 | 212 |
M2.regDate , |
| 213 | 213 |
M2.reqDate , |
| 214 |
+ IF(atDelayYn = 'Y' and atDelayCompleteYn = 'N', DATE_ADD(M2.reqdate, INTERVAL -30 MINUTE), M2.reqdate) AS atDelayOrgTime , |
|
| 214 | 215 |
M2.rsltDate , |
| 215 | 216 |
M2.callFrom , |
| 216 | 217 |
M2.callTo , |
... | ... | @@ -222,6 +223,8 @@ |
| 222 | 223 |
M2.curState , |
| 223 | 224 |
M2.rsltCode , |
| 224 | 225 |
M2.rsltCode2 , |
| 226 |
+ M2.atDelayYn , |
|
| 227 |
+ M2.atDelayCompleteYn , |
|
| 225 | 228 |
M2.orderByrsltCode , |
| 226 | 229 |
M2.delFlag , |
| 227 | 230 |
M2.msgType , |
... | ... | @@ -306,6 +309,8 @@ |
| 306 | 309 |
CUR_STATE AS curState , |
| 307 | 310 |
RSLT_CODE AS rsltCode , |
| 308 | 311 |
RSLT_CODE2 AS rsltCode2 , |
| 312 |
+ AT_DELAY_YN AS atDelayYn , |
|
| 313 |
+ AT_DELAY_COMPLETE_YN AS atDelayCompleteYn , |
|
| 309 | 314 |
IF((RSLT_CODE != '7000'),'1','0') AS orderByrsltCode , |
| 310 | 315 |
DEL_FLAG AS delFlag , |
| 311 | 316 |
M.MSG_TYPE AS msgType , |
... | ... | @@ -344,6 +349,8 @@ |
| 344 | 349 |
MD.CUR_STATE , |
| 345 | 350 |
MD.RSLT_CODE , |
| 346 | 351 |
MD.RSLT_CODE2 , |
| 352 |
+ MG.AT_DELAY_YN, |
|
| 353 |
+ MG.AT_DELAY_COMPLETE_YN, |
|
| 347 | 354 |
CASE |
| 348 | 355 |
WHEN MG.MSG_TYPE = '8' |
| 349 | 356 |
THEN '알림톡' |
... | ... | @@ -1080,6 +1087,7 @@ |
| 1080 | 1087 |
M2.subject , |
| 1081 | 1088 |
M2.regDate , |
| 1082 | 1089 |
M2.reqDate , |
| 1090 |
+ IF(atDelayYn = 'Y' and atDelayCompleteYn = 'N', DATE_ADD(M2.reqdate, INTERVAL -30 MINUTE), M2.reqdate) AS atDelayOrgTime , |
|
| 1083 | 1091 |
M2.rsltDate , |
| 1084 | 1092 |
M2.diffMin, |
| 1085 | 1093 |
M2.callFrom , |
... | ... | @@ -1092,6 +1100,8 @@ |
| 1092 | 1100 |
M2.curState , |
| 1093 | 1101 |
M2.rsltCode , |
| 1094 | 1102 |
M2.rsltCode2 , |
| 1103 |
+ M2.atDelayYn , |
|
| 1104 |
+ M2.atDelayCompleteYn , |
|
| 1095 | 1105 |
M2.orderByrsltCode , |
| 1096 | 1106 |
M2.delFlag , |
| 1097 | 1107 |
M2.msgType , |
... | ... | @@ -1177,6 +1187,8 @@ |
| 1177 | 1187 |
CUR_STATE AS curState , |
| 1178 | 1188 |
RSLT_CODE AS rsltCode , |
| 1179 | 1189 |
RSLT_CODE2 AS rsltCode2 , |
| 1190 |
+ AT_DELAY_YN AS atDelayYn , |
|
| 1191 |
+ AT_DELAY_COMPLETE_YN AS atDelayCompleteYn , |
|
| 1180 | 1192 |
IF((RSLT_CODE != '7000'),'1','0') AS orderByrsltCode , |
| 1181 | 1193 |
DEL_FLAG AS delFlag , |
| 1182 | 1194 |
M.MSG_TYPE AS msgType , |
... | ... | @@ -1215,6 +1227,8 @@ |
| 1215 | 1227 |
MD.CUR_STATE , |
| 1216 | 1228 |
MD.RSLT_CODE , |
| 1217 | 1229 |
MD.RSLT_CODE2 , |
| 1230 |
+ MG.AT_DELAY_YN , |
|
| 1231 |
+ MG.AT_DELAY_COMPLETE_YN , |
|
| 1218 | 1232 |
CASE |
| 1219 | 1233 |
WHEN MG.MSG_TYPE = '8' |
| 1220 | 1234 |
THEN '알림톡' |
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
... | ... | @@ -202,6 +202,7 @@ |
| 202 | 202 |
M2.subject, |
| 203 | 203 |
M2.regdate, |
| 204 | 204 |
M2.reqdate, |
| 205 |
+ IF(delayYn = 'Y' and delayCompleteYn = 'N', DATE_ADD(M2.reqdate, INTERVAL -30 MINUTE), M2.reqdate) AS delayOrgTime, |
|
| 205 | 206 |
M2.diffMin, |
| 206 | 207 |
M2.callFrom, |
| 207 | 208 |
FN_GETHYPHEN(M2.callFrom) AS callFromComma, |
... | ... | @@ -218,6 +219,8 @@ |
| 218 | 219 |
M2.cancelDate, |
| 219 | 220 |
M2.sendKind, |
| 220 | 221 |
M2.shipmentStatus, |
| 222 |
+ M2.delayYn, |
|
| 223 |
+ M2.delayCompleteYn, |
|
| 221 | 224 |
M2.orderByCode |
| 222 | 225 |
FROM ( |
| 223 | 226 |
SELECT COUNT(USER_ID) OVER() AS totMsgCnt, |
... | ... | @@ -241,7 +244,9 @@ |
| 241 | 244 |
AGENT_CODE AS agentCode, |
| 242 | 245 |
RESERVE_C_YN AS reserveCYn, |
| 243 | 246 |
CANCELDATE AS cancelDate, |
| 244 |
- SEND_KIND as sendKind, |
|
| 247 |
+ SEND_KIND AS sendKind, |
|
| 248 |
+ DELAY_YN AS delayYn, |
|
| 249 |
+ DELAY_COMPLETE_YN AS delayCompleteYn, |
|
| 245 | 250 |
CASE |
| 246 | 251 |
WHEN RESERVE_C_YN = 'Y' |
| 247 | 252 |
THEN '예약취소' |
... | ... | @@ -282,6 +287,8 @@ |
| 282 | 287 |
MD.CUR_STATE, |
| 283 | 288 |
MD.RSLT_CODE, |
| 284 | 289 |
MD.RSLT_CODE2, |
| 290 |
+ MGD.DELAY_YN, |
|
| 291 |
+ MGD.DELAY_COMPLETE_YN, |
|
| 285 | 292 |
MGD.SEND_KIND |
| 286 | 293 |
FROM mj_msg_data MD |
| 287 | 294 |
INNER JOIN MJ_MSG_GROUP_DATA MGD |
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml
... | ... | @@ -233,6 +233,7 @@ |
| 233 | 233 |
, M2.subject |
| 234 | 234 |
, M2.regdate |
| 235 | 235 |
, M2.reqdate |
| 236 |
+ , IF(delayYn = 'Y' and delayCompleteYn = 'N', DATE_ADD(M2.reqdate, INTERVAL -30 MINUTE), M2.reqdate) AS delayOrgTime |
|
| 236 | 237 |
, M2.callFrom |
| 237 | 238 |
, M2.callTo |
| 238 | 239 |
, FN_GETHYPHEN(M2.callFrom) AS callFromComma |
... | ... | @@ -256,6 +257,10 @@ |
| 256 | 257 |
, M2.msgResult |
| 257 | 258 |
, M2.sendKind |
| 258 | 259 |
, M2.msgKind |
| 260 |
+ , M2.resultSValue |
|
| 261 |
+ , M2.resultWFValue |
|
| 262 |
+ , M2.delayYn |
|
| 263 |
+ , M2.delayCompleteYn |
|
| 259 | 264 |
FROM |
| 260 | 265 |
( |
| 261 | 266 |
SELECT |
... | ... | @@ -297,8 +302,12 @@ |
| 297 | 302 |
, msgTypeName AS msgTypeName |
| 298 | 303 |
, orderByCode AS orderByCode |
| 299 | 304 |
, RESULT AS msgResult |
| 305 |
+ , SUM(IF(RESULT = 'S', 1, 0 )) AS resultSValue |
|
| 306 |
+ , SUM(IF(RESULT = 'W' OR RESULT = 'F', 1, 0 )) AS resultWFValue |
|
| 300 | 307 |
, sendKind AS sendKind |
| 301 | 308 |
, MSG_KIND AS msgKind |
| 309 |
+ , DELAY_YN AS delayYn |
|
| 310 |
+ , DELAY_COMPLETE_YN AS delayCompleteYn |
|
| 302 | 311 |
FROM |
| 303 | 312 |
( SELECT |
| 304 | 313 |
B.USER_ID |
... | ... | @@ -324,6 +333,8 @@ |
| 324 | 333 |
, A.RSLT_CODE2 |
| 325 | 334 |
, B.SEND_KIND as sendKind |
| 326 | 335 |
, B.MSG_KIND |
| 336 |
+ , B.DELAY_YN |
|
| 337 |
+ , B.DELAY_COMPLETE_YN |
|
| 327 | 338 |
, CASE |
| 328 | 339 |
WHEN B.MSG_TYPE = '6' |
| 329 | 340 |
AND B.FILE_CNT > 0 |
... | ... | @@ -618,6 +629,7 @@ |
| 618 | 629 |
, M2.subject |
| 619 | 630 |
, M2.regdate |
| 620 | 631 |
, M2.reqdate |
| 632 |
+ , IF(delayYn = 'Y' and delayCompleteYn = 'N', DATE_ADD(M2.reqdate, INTERVAL -30 MINUTE), M2.reqdate) AS delayOrgTime |
|
| 621 | 633 |
, M2.callFrom |
| 622 | 634 |
, M2.callTo |
| 623 | 635 |
, FN_GETHYPHEN(M2.callFrom) AS callFromComma |
... | ... | @@ -637,6 +649,8 @@ |
| 637 | 649 |
, M2.msgId |
| 638 | 650 |
, M2.msgResult |
| 639 | 651 |
, M2.sendKind |
| 652 |
+ , M2.delayYn |
|
| 653 |
+ , M2.delayCompleteYn |
|
| 640 | 654 |
FROM |
| 641 | 655 |
( |
| 642 | 656 |
SELECT |
... | ... | @@ -657,6 +671,8 @@ |
| 657 | 671 |
, CUR_STATE AS curState |
| 658 | 672 |
, RSLT_CODE AS rsltCode |
| 659 | 673 |
, RSLT_CODE2 AS rsltCode2 |
| 674 |
+ , DELAY_YN AS delayYn |
|
| 675 |
+ , DELAY_COMPLETE_YN AS delayCompleteYn |
|
| 660 | 676 |
, IF( (RSLT_CODE != '0' |
| 661 | 677 |
AND RSLT_CODE != '100' |
| 662 | 678 |
AND RSLT_CODE != '101' |
... | ... | @@ -703,6 +719,8 @@ |
| 703 | 719 |
, MD.CUR_STATE |
| 704 | 720 |
, MD.RSLT_CODE |
| 705 | 721 |
, MD.RSLT_CODE2 |
| 722 |
+ , MGD.DELAY_YN |
|
| 723 |
+ , MGD.DELAY_COMPLETE_YN |
|
| 706 | 724 |
, MGD.SEND_KIND AS sendKind |
| 707 | 725 |
,(<include refid="MjonMsgSentDAO.selectAgentResultQuery_MD"/>) AS RESULT |
| 708 | 726 |
FROM |
--- src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/pay/MjonPay_SQL_mysql.xml
... | ... | @@ -1651,7 +1651,9 @@ |
| 1651 | 1651 |
ROUND(IFNULL(S6.AMT, 0)) AS amtRefundSum, |
| 1652 | 1652 |
IFNULL(S6.CNT, 0) AS amtRefundCnt, |
| 1653 | 1653 |
ROUND(IFNULL(S7.AMT, 0)) AS amtSpaySum, |
| 1654 |
- IFNULL(S7.CNT, 0) AS amtSpayCnt |
|
| 1654 |
+ IFNULL(S7.CNT, 0) AS amtSpayCnt, |
|
| 1655 |
+ ROUND(IFNULL(S8.AMT, 0)) AS amtAfterPaySum, |
|
| 1656 |
+ IFNULL(S8.CNT, 0) AS amtAfterPayCnt |
|
| 1655 | 1657 |
FROM (SELECT DATE_FORMAT(t1.REG_DATE, '%Y-%m-%d') AS REG_DATE , |
| 1656 | 1658 |
SUM(t1.AMT) AS AMT, |
| 1657 | 1659 |
COUNT(0) AS CNT, |
... | ... | @@ -1768,6 +1770,23 @@ |
| 1768 | 1770 |
) |
| 1769 | 1771 |
S7 |
| 1770 | 1772 |
ON S7.REG_DATE = S1.REG_DATE |
| 1773 |
+ LEFT JOIN |
|
| 1774 |
+ ( SELECT DATE_FORMAT(t8.REG_DATE, '%Y-%m-%d') AS REG_DATE , |
|
| 1775 |
+ SUM(t8.AMT) AS AMT, |
|
| 1776 |
+ COUNT(0) AS CNT |
|
| 1777 |
+ FROM MJ_PG t8 |
|
| 1778 |
+ WHERE t8.PG_STATUS = 1 |
|
| 1779 |
+ AND t8.pay_method ='AFTERPAY' |
|
| 1780 |
+ <isNotEmpty property="ntceBgnde"> |
|
| 1781 |
+ AND <![CDATA[ DATE_FORMAT(t8.REG_DATE, '%Y-%m-%d') >= #ntceBgnde# ]]> |
|
| 1782 |
+ </isNotEmpty> |
|
| 1783 |
+ <isNotEmpty property="ntceEndde"> |
|
| 1784 |
+ AND <![CDATA[ DATE_FORMAT(t8.REG_DATE, '%Y-%m-%d') <= #ntceEndde# ]]> |
|
| 1785 |
+ </isNotEmpty> |
|
| 1786 |
+ GROUP BY DATE_FORMAT(t8.REG_DATE, '%Y-%m-%d') |
|
| 1787 |
+ ) |
|
| 1788 |
+ S8 |
|
| 1789 |
+ ON S8.REG_DATE = S1.REG_DATE |
|
| 1771 | 1790 |
ORDER BY 1=1 |
| 1772 | 1791 |
<isNotEmpty property="searchSortCnd"> |
| 1773 | 1792 |
,$searchSortCnd$ |
... | ... | @@ -1790,7 +1809,8 @@ |
| 1790 | 1809 |
ROUND(IFNULL(S4.AMT, 0)) AS amtBankSum, |
| 1791 | 1810 |
ROUND(IFNULL(S5.AMT, 0)) AS amtVbankSum, |
| 1792 | 1811 |
ROUND(IFNULL(S6.AMT, 0)) AS amtRefundSum, |
| 1793 |
- ROUND(IFNULL(S7.AMT, 0)) AS amtSpaySum |
|
| 1812 |
+ ROUND(IFNULL(S7.AMT, 0)) AS amtSpaySum, |
|
| 1813 |
+ ROUND(IFNULL(S8.AMT, 0)) AS amtAfterPaySum |
|
| 1794 | 1814 |
FROM (SELECT DATE_FORMAT(t1.REG_DATE, '%Y-%m') AS REG_DATE , |
| 1795 | 1815 |
SUM(t1.AMT) AS AMT, |
| 1796 | 1816 |
t1.moid AS MOID |
... | ... | @@ -1879,6 +1899,19 @@ |
| 1879 | 1899 |
) |
| 1880 | 1900 |
S7 |
| 1881 | 1901 |
ON S7.REG_DATE = S1.REG_DATE |
| 1902 |
+ LEFT JOIN |
|
| 1903 |
+ ( SELECT DATE_FORMAT(t8.REG_DATE, '%Y-%m') AS REG_DATE , |
|
| 1904 |
+ SUM(t8.AMT) AS AMT |
|
| 1905 |
+ FROM MJ_PG t8 |
|
| 1906 |
+ WHERE t8.PG_STATUS = 1 |
|
| 1907 |
+ AND t8.pay_method ='AFTERPAY' |
|
| 1908 |
+ <isNotEmpty property="ntceBgnde"> |
|
| 1909 |
+ AND <![CDATA[ DATE_FORMAT(t8.REG_DATE, '%Y') = #ntceBgnde# ]]> |
|
| 1910 |
+ </isNotEmpty> |
|
| 1911 |
+ GROUP BY DATE_FORMAT(t8.REG_DATE, '%Y-%m') |
|
| 1912 |
+ ) |
|
| 1913 |
+ S8 |
|
| 1914 |
+ ON S8.REG_DATE = S1.REG_DATE |
|
| 1882 | 1915 |
ORDER BY 1=1 |
| 1883 | 1916 |
<isNotEmpty property="searchSortCnd"> |
| 1884 | 1917 |
,$searchSortCnd$ |
--- src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
+++ src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp
... | ... | @@ -1535,7 +1535,7 @@ |
| 1535 | 1535 |
var mberSttus = $('#mberSttus').val();
|
| 1536 | 1536 |
mberSttus = "B"; //이용자 정지 처리 |
| 1537 | 1537 |
var smiMemo = $('#smiContents').val();
|
| 1538 |
- smiMemo = "관리자가 최근 문자 지연 내역에서 스미싱의심으로 판단하여 발송취소를 한 후 이용자 정지 처리함"; |
|
| 1538 |
+ smiMemo = "시스템 스팸 필터링에 의한 이용정지"; |
|
| 1539 | 1539 |
|
| 1540 | 1540 |
fn_SpamMberUpdt(mberSttus, smiMemo, "이용자 정지를 진행하시겠습니까?"); |
| 1541 | 1541 |
/* |
--- src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoATChannelIDList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/KakaoATChannelIDList.jsp
... | ... | @@ -205,7 +205,7 @@ |
| 205 | 205 |
<th>채널명<input type="button" class="sort sortBtn" id="sort_yellowId"></th> |
| 206 | 206 |
<th>등록상태</th> |
| 207 | 207 |
<th>채널생성일</th> |
| 208 |
- <th>채널등록일</th> |
|
| 208 |
+ <th>채널등록일<input type="button" class="sort sortBtn" id="sort_lastUpdtPnttm"></th> |
|
| 209 | 209 |
<th>삭제여부<input type="button" class="sort sortBtn" id="sort_deleteYn"></th> |
| 210 | 210 |
</tr> |
| 211 | 211 |
</thead> |
--- src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/kakaoat/SendKakaoATList.jsp
... | ... | @@ -476,7 +476,7 @@ |
| 476 | 476 |
function fn_MsgDelayCancel_after(userId){
|
| 477 | 477 |
var mberSttus = $('#mberSttus').val();
|
| 478 | 478 |
mberSttus = "B"; //이용자 정지 처리 |
| 479 |
- var smiMemo = "관리자가 최근 문자 지연 내역에서 스미싱의심으로 판단하여 발송취소를 한 후 이용자 정지 처리함"; |
|
| 479 |
+ var smiMemo = "시스템 스팸 필터링에 의한 이용정지"; |
|
| 480 | 480 |
|
| 481 | 481 |
fn_SpamMberUpdt(userId, mberSttus, smiMemo, "이용자 정지를 진행하시겠습니까?"); |
| 482 | 482 |
} |
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/SendMsgList.jsp
... | ... | @@ -499,11 +499,11 @@ |
| 499 | 499 |
function fn_MsgDelayCancel_after(userId){
|
| 500 | 500 |
var mberSttus = $('#mberSttus').val();
|
| 501 | 501 |
mberSttus = "B"; //이용자 정지 처리 |
| 502 |
- var smiMemo = "관리자가 최근 문자 지연 내역에서 스미싱의심으로 판단하여 발송취소를 한 후 이용자 정지 처리함"; |
|
| 502 |
+ var smiMemo = "시스템 스팸 필터링에 의한 이용정지"; |
|
| 503 | 503 |
|
| 504 | 504 |
fn_SpamMberUpdt(userId, mberSttus, smiMemo, "이용자 정지를 진행하시겠습니까?"); |
| 505 | 505 |
} |
| 506 |
- |
|
| 506 |
+ |
|
| 507 | 507 |
//회원 이용정지 처리 |
| 508 | 508 |
function fn_SpamMberUpdt(userId, p_mberSttus, p_smiMemo, p_confirm_msg) {
|
| 509 | 509 |
url = "/uss/umt/user/EgovGnrlUpdateUserMsttusAjax.do"; |
... | ... | @@ -781,9 +781,9 @@ |
| 781 | 781 |
|
| 782 | 782 |
<c:if test="${result.reserveCYn eq 'N' && result.delayYn eq 'Y' && result.delayCompleteYn eq 'N'}">
|
| 783 | 783 |
<br /> |
| 784 |
- <fmt:formatDate value="${now}" pattern="yyyyMMddhhmm" var="nowDate" />
|
|
| 784 |
+ <fmt:formatDate value="${now}" pattern="yyyyMMddHHmm" var="nowDate" />
|
|
| 785 | 785 |
<fmt:parseDate value="${result.reqFullDate}" pattern="yyyy-MM-dd HH:mm" var="checkValue" />
|
| 786 |
- <fmt:formatDate value="${checkValue}" pattern="yyyyMMddhhmm" var="checkDate"/>
|
|
| 786 |
+ <fmt:formatDate value="${checkValue}" pattern="yyyyMMddHHmm" var="checkDate"/>
|
|
| 787 | 787 |
<c:if test="${nowDate < checkDate}">
|
| 788 | 788 |
<button type="button" class="fillBlue" onclick="fnMsgDelaySendArray('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.userId}"/>'); return false;">발송승인</button>
|
| 789 | 789 |
<button type="button" class="fillRed" onclick="fnMsgDelayCancelArray('<c:out value="${result.msgGroupId}"/>','<c:out value="${result.userId}"/>'); return false;">발송취소</button>
|
--- src/main/webapp/WEB-INF/jsp/uss/ion/pay/PayDayChart.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/PayDayChart.jsp
... | ... | @@ -105,6 +105,44 @@ |
| 105 | 105 |
form.ntceEnddeYYYMMDD.value = year + "-" + month + "-" + date; |
| 106 | 106 |
|
| 107 | 107 |
} |
| 108 |
+ |
|
| 109 |
+function fnGoPayList(payType, payDate){
|
|
| 110 |
+ |
|
| 111 |
+ var form = document.payParamForm; |
|
| 112 |
+ form.searchCondition2.value = payType; |
|
| 113 |
+ form.searchStartDate.value= payDate; |
|
| 114 |
+ form.searchEndDate.value= payDate; |
|
| 115 |
+ |
|
| 116 |
+ form.action="<c:url value='/uss/ion/pay/PayList.do'/>"; |
|
| 117 |
+ form.submit(); |
|
| 118 |
+ |
|
| 119 |
+} |
|
| 120 |
+ |
|
| 121 |
+function fnGoPayRefundList(refundType, refundDate){
|
|
| 122 |
+ |
|
| 123 |
+ var form = document.payRefParamForm; |
|
| 124 |
+ |
|
| 125 |
+ form.searchCondition2.value = refundType; |
|
| 126 |
+ form.searchStartDate.value= refundDate; |
|
| 127 |
+ form.searchEndDate.value= refundDate; |
|
| 128 |
+ |
|
| 129 |
+ form.action="<c:url value='/uss/ion/pay/RefundList.do'/>"; |
|
| 130 |
+ form.submit(); |
|
| 131 |
+ |
|
| 132 |
+} |
|
| 133 |
+ |
|
| 134 |
+function payDayExcelDownload(){
|
|
| 135 |
+ |
|
| 136 |
+ var form = document.payExcelDwnForm; |
|
| 137 |
+ |
|
| 138 |
+ $('#excelNtceBgnde').val($('#ntceBgndeYYYMMDD').val()) ;
|
|
| 139 |
+ $('#excelNtceEndde').val($('#ntceEnddeYYYMMDD').val()) ;
|
|
| 140 |
+ |
|
| 141 |
+ form.action="<c:url value='/uss/ion/pay/payDayChartExcelDownload.do'/>"; |
|
| 142 |
+ form.submit(); |
|
| 143 |
+ |
|
| 144 |
+} |
|
| 145 |
+ |
|
| 108 | 146 |
</script> |
| 109 | 147 |
<style> |
| 110 | 148 |
.calBtn {
|
... | ... | @@ -169,34 +207,28 @@ |
| 169 | 207 |
</div> |
| 170 | 208 |
<div class="listTop"> |
| 171 | 209 |
<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
|
| 172 |
- <div style="float: right;"> |
|
| 173 |
- 카드 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCardSumTot}" pattern="#,###" /></span>원,
|
|
| 174 |
- 휴대폰 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCellSumTot}" pattern="#,###" /></span>원,
|
|
| 175 |
- 이체 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtBankSumTot}" pattern="#,###" /></span>원,
|
|
| 176 |
- 전용 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtVbankSumTot}" pattern="#,###" /></span>원,
|
|
| 177 |
- 간편 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtSpaySumTot}" pattern="#,###" /></span>원,
|
|
| 178 |
- 환불 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtRefundSumTot}" pattern="#,###" /></span>원,
|
|
| 179 |
- 합계 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtTotSumTot}" pattern="#,###" /></span>원
|
|
| 180 |
- <%-- |
|
| 181 |
- |
|
| 182 |
- <select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);" style="height: 30px !important; min-width: 40px !important;"> |
|
| 210 |
+ |
|
| 211 |
+ <div class="rightWrap"> |
|
| 212 |
+ <p style="vertical-align: bottom; margin-right:10px; margin-bottom:4px;"> (단위 : 원)</p> |
|
| 213 |
+ <input type="button" class="excelBtn" onclick="javascript:payDayExcelDownload();" style="cursor: pointer;" /> |
|
| 214 |
+ <select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);"> |
|
| 183 | 215 |
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
|
| 184 |
- <option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
|
|
| 185 |
- <option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
|
|
| 216 |
+ <option value='50' <c:if test="${searchVO.pageUnit == '50'}">selected</c:if>>50줄</option>
|
|
| 217 |
+ <option value='100' <c:if test="${searchVO.pageUnit == '100'}">selected</c:if>>100줄</option>
|
|
| 186 | 218 |
</select> |
| 187 |
- --%> |
|
| 188 | 219 |
</div> |
| 189 | 220 |
</div> |
| 190 | 221 |
<div class="tableWrap"> |
| 191 | 222 |
<table class="tbType1"> |
| 192 | 223 |
<colgroup> |
| 193 | 224 |
<col style="width: auto;"> |
| 194 |
- <col style="width: 12.5%"> |
|
| 195 |
- <col style="width: 12.5%"> |
|
| 196 |
- <col style="width: 12.5%"> |
|
| 197 |
- <col style="width: 12.5%"> |
|
| 198 |
- <col style="width: 12.5%"> |
|
| 199 |
- <col style="width: 12.5%"> |
|
| 225 |
+ <col style="width: 11%"> |
|
| 226 |
+ <col style="width: 11%"> |
|
| 227 |
+ <col style="width: 11%"> |
|
| 228 |
+ <col style="width: 11%"> |
|
| 229 |
+ <col style="width: 11%"> |
|
| 230 |
+ <col style="width: 11%"> |
|
| 231 |
+ <col style="width: 11%"> |
|
| 200 | 232 |
<col style="width: 13%"> |
| 201 | 233 |
</colgroup> |
| 202 | 234 |
<thead> |
... | ... | @@ -207,6 +239,7 @@ |
| 207 | 239 |
<th>즉시이체<input type="button" class="sort sortBtn" id="sort_amtBankSum"></th> |
| 208 | 240 |
<th>전용계좌<input type="button" class="sort sortBtn" id="sort_amtVbankSum"></th> |
| 209 | 241 |
<th>간편결제<input type="button" class="sort sortBtn" id="sort_amtSpaySum"></th> |
| 242 |
+ <th>후불결제<input type="button" class="sort sortBtn" id="sort_amtAfterPaySum"></th> |
|
| 210 | 243 |
<th>환불<input type="button" class="sort sortBtn" id="sort_amtRefundSum"></th> |
| 211 | 244 |
<th>합계(VAT 포함)<input type="button" class="sort sortBtn" id="sort_amtTotSum"></th> |
| 212 | 245 |
</tr> |
... | ... | @@ -215,7 +248,7 @@ |
| 215 | 248 |
<c:forEach var="result" items="${resultList}" varStatus="status">
|
| 216 | 249 |
<tr> |
| 217 | 250 |
<td><c:out value="${result.regDate}"/></td>
|
| 218 |
- <td> |
|
| 251 |
+ <td <c:if test="${result.amtCardCnt > 0}"> onclick="fnGoPayList('CARD', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 219 | 252 |
<fmt:formatNumber value="${result.amtCardSum}" pattern="#,###" />
|
| 220 | 253 |
<c:choose> |
| 221 | 254 |
<c:when test="${result.amtCardCnt > 0}">
|
... | ... | @@ -223,7 +256,7 @@ |
| 223 | 256 |
</c:when> |
| 224 | 257 |
</c:choose> |
| 225 | 258 |
</td> |
| 226 |
- <td> |
|
| 259 |
+ <td <c:if test="${result.amtCellCnt > 0}"> onclick="fnGoPayList('CELLPHONE', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 227 | 260 |
<fmt:formatNumber value="${result.amtCellSum}" pattern="#,###" />
|
| 228 | 261 |
<c:choose> |
| 229 | 262 |
<c:when test="${result.amtCellCnt > 0}">
|
... | ... | @@ -231,7 +264,7 @@ |
| 231 | 264 |
</c:when> |
| 232 | 265 |
</c:choose> |
| 233 | 266 |
</td> |
| 234 |
- <td> |
|
| 267 |
+ <td <c:if test="${result.amtBankCnt > 0}"> onclick="fnGoPayList('BANK', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 235 | 268 |
<fmt:formatNumber value="${result.amtBankSum}" pattern="#,###" />
|
| 236 | 269 |
<c:choose> |
| 237 | 270 |
<c:when test="${result.amtBankCnt > 0}">
|
... | ... | @@ -239,7 +272,7 @@ |
| 239 | 272 |
</c:when> |
| 240 | 273 |
</c:choose> |
| 241 | 274 |
</td> |
| 242 |
- <td> |
|
| 275 |
+ <td <c:if test="${result.amtVbankCnt > 0}"> onclick="fnGoPayList('VBANK', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 243 | 276 |
<fmt:formatNumber value="${result.amtVbankSum}" pattern="#,###" />
|
| 244 | 277 |
<c:choose> |
| 245 | 278 |
<c:when test="${result.amtVbankCnt > 0}">
|
... | ... | @@ -247,7 +280,7 @@ |
| 247 | 280 |
</c:when> |
| 248 | 281 |
</c:choose> |
| 249 | 282 |
</td> |
| 250 |
- <td> |
|
| 283 |
+ <td <c:if test="${result.amtSpayCnt > 0}"> onclick="fnGoPayList('SPAY', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 251 | 284 |
<fmt:formatNumber value="${result.amtSpaySum}" pattern="#,###" />
|
| 252 | 285 |
<c:choose> |
| 253 | 286 |
<c:when test="${result.amtSpayCnt > 0}">
|
... | ... | @@ -255,7 +288,15 @@ |
| 255 | 288 |
</c:when> |
| 256 | 289 |
</c:choose> |
| 257 | 290 |
</td> |
| 258 |
- <td> |
|
| 291 |
+ <td <c:if test="${result.amtAfterPayCnt > 0}"> onclick="fnGoPayList('AFTERPAY', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 292 |
+ <fmt:formatNumber value="${result.amtAfterPaySum}" pattern="#,###" />
|
|
| 293 |
+ <c:choose> |
|
| 294 |
+ <c:when test="${result.amtAfterPayCnt > 0}">
|
|
| 295 |
+ (<fmt:formatNumber value="${result.amtAfterPayCnt}" pattern="#,###" />)
|
|
| 296 |
+ </c:when> |
|
| 297 |
+ </c:choose> |
|
| 298 |
+ </td> |
|
| 299 |
+ <td <c:if test="${result.amtRefundCnt > 0}"> onclick="fnGoPayRefundList('1', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 259 | 300 |
<fmt:formatNumber value="${result.amtRefundSum}" pattern="#,###" />
|
| 260 | 301 |
<c:choose> |
| 261 | 302 |
<c:when test="${result.amtRefundCnt > 0}">
|
... | ... | @@ -273,8 +314,38 @@ |
| 273 | 314 |
</td> |
| 274 | 315 |
</tr> |
| 275 | 316 |
</c:forEach> |
| 317 |
+ <tr> |
|
| 318 |
+ <td> |
|
| 319 |
+ 합 계 |
|
| 320 |
+ </td> |
|
| 321 |
+ <td> |
|
| 322 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCardSumTot}" pattern="#,###" /></span>
|
|
| 323 |
+ </td> |
|
| 324 |
+ <td> |
|
| 325 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCellSumTot}" pattern="#,###" /></span>
|
|
| 326 |
+ </td> |
|
| 327 |
+ <td> |
|
| 328 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtBankSumTot}" pattern="#,###" /></span>
|
|
| 329 |
+ </td> |
|
| 330 |
+ <td> |
|
| 331 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtVbankSumTot}" pattern="#,###" /></span>
|
|
| 332 |
+ </td> |
|
| 333 |
+ <td> |
|
| 334 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtSpaySumTot}" pattern="#,###" /></span>
|
|
| 335 |
+ </td> |
|
| 336 |
+ <td> |
|
| 337 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtAfterPaySumTot}" pattern="#,###" /></span>
|
|
| 338 |
+ </td> |
|
| 339 |
+ <td> |
|
| 340 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtRefundSumTot}" pattern="#,###" /></span>
|
|
| 341 |
+ </td> |
|
| 342 |
+ <td> |
|
| 343 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtTotSumTot}" pattern="#,###" /></span>
|
|
| 344 |
+ </td> |
|
| 345 |
+ |
|
| 346 |
+ </tr> |
|
| 276 | 347 |
<c:if test="${empty resultList}">
|
| 277 |
- <tr><td colspan="8"><spring:message code="common.nodata.msg" /></td></tr> |
|
| 348 |
+ <tr><td colspan="9"><spring:message code="common.nodata.msg" /></td></tr> |
|
| 278 | 349 |
</c:if> |
| 279 | 350 |
</tbody> |
| 280 | 351 |
</table> |
... | ... | @@ -294,5 +365,27 @@ |
| 294 | 365 |
</div> |
| 295 | 366 |
</form> |
| 296 | 367 |
</compress:html> |
| 368 |
+ |
|
| 369 |
+<form id="payParamForm" name="payParamForm" method="post"> |
|
| 370 |
+ <input type="hidden" id="searchCondition2" name="searchCondition2" value=""/><!-- 결제방식 --> |
|
| 371 |
+ <input type="hidden" id="searchCondition3" name="searchCondition3" value="1"/><!-- 결제상태 : 결제완료 --> |
|
| 372 |
+ <input type="hidden" id="searchStartDate" name="searchStartDate" value=""/><!-- 결제검색 시작일자 --> |
|
| 373 |
+ <input type="hidden" id="searchEndDate" name="searchEndDate" value=""/><!-- 결제검색 종료일자 --> |
|
| 374 |
+ <input type="hidden" id="baseMenuNo" name="baseMenuNo" value="4520000"/><!-- 결제상세 메뉴 번호 --> |
|
| 375 |
+</form> |
|
| 376 |
+ |
|
| 377 |
+<form id="payRefParamForm" name="payRefParamForm" method="post"> |
|
| 378 |
+ <input type="hidden" id="searchCondition2" name="searchCondition2" value=""/><!-- 구분방식 --> |
|
| 379 |
+ <input type="hidden" id="searchRefundStatus" name="searchRefundStatus" value="3"/><!-- 처리상태 : 처리완료 --> |
|
| 380 |
+ <input type="hidden" id="searchStartDate" name="searchStartDate" value=""/><!-- 환불검색 시작일자 --> |
|
| 381 |
+ <input type="hidden" id="searchEndDate" name="searchEndDate" value=""/><!-- 환불검색 종료일자 --> |
|
| 382 |
+ <input type="hidden" id="baseMenuNo" name="baseMenuNo" value="4550000"/><!-- 결제상세 메뉴 번호 --> |
|
| 383 |
+</form> |
|
| 384 |
+ |
|
| 385 |
+<form id="payExcelDwnForm" name="payExcelDwnForm" method="post"> |
|
| 386 |
+ <input type="hidden" name="ntceBgnde" id="excelNtceBgnde" value="<c:out value="${searchVO.ntceBgnde}" />">
|
|
| 387 |
+ <input type="hidden" name="ntceEndde" id="excelNtceEndde" value="<c:out value="${searchVO.ntceEndde}" />">
|
|
| 388 |
+</form> |
|
| 389 |
+ |
|
| 297 | 390 |
</body> |
| 298 | 391 |
</html> |
--- src/main/webapp/WEB-INF/jsp/uss/ion/pay/PayList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/PayList.jsp
... | ... | @@ -311,8 +311,8 @@ |
| 311 | 311 |
<input type="button" class="excelBtn" onclick="javascript:sendMsgExcelDownload();" style="cursor: pointer;" /> |
| 312 | 312 |
<select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);"> |
| 313 | 313 |
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
|
| 314 |
- <option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
|
|
| 315 |
- <option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
|
|
| 314 |
+ <option value='50' <c:if test="${searchVO.pageUnit == '50'}">selected</c:if>>50줄</option>
|
|
| 315 |
+ <option value='100' <c:if test="${searchVO.pageUnit == '100'}">selected</c:if>>100줄</option>
|
|
| 316 | 316 |
</select> |
| 317 | 317 |
</div> |
| 318 | 318 |
</div> |
--- src/main/webapp/WEB-INF/jsp/uss/ion/pay/PayMonthChart.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/PayMonthChart.jsp
... | ... | @@ -58,6 +58,80 @@ |
| 58 | 58 |
$('#ntceBgnde').val($('#searchYear option:selected').val());
|
| 59 | 59 |
listForm.submit(); |
| 60 | 60 |
} |
| 61 |
+ |
|
| 62 |
+function fnGoPayList(payType, payDate){
|
|
| 63 |
+ var form = document.payParamForm; |
|
| 64 |
+ |
|
| 65 |
+ //월의 시작/마지막일 받아오기 |
|
| 66 |
+ var FLDate = getFLDate(payDate); |
|
| 67 |
+ |
|
| 68 |
+ form.searchCondition2.value = payType; |
|
| 69 |
+ form.searchStartDate.value= FLDate[0]; |
|
| 70 |
+ form.searchEndDate.value= FLDate[1]; |
|
| 71 |
+ |
|
| 72 |
+ console.log(form.searchCondition2.value); |
|
| 73 |
+ |
|
| 74 |
+ form.action="<c:url value='/uss/ion/pay/PayList.do'/>"; |
|
| 75 |
+ form.submit(); |
|
| 76 |
+ |
|
| 77 |
+} |
|
| 78 |
+ |
|
| 79 |
+function fnGoPayRefundList(refundType, refundDate){
|
|
| 80 |
+ |
|
| 81 |
+ var form = document.payRefParamForm; |
|
| 82 |
+ |
|
| 83 |
+ //월의 시작/마지막일 받아오기 |
|
| 84 |
+ var FLDate = getFLDate(refundDate); |
|
| 85 |
+ |
|
| 86 |
+ form.searchCondition2.value = refundType; |
|
| 87 |
+ form.searchStartDate.value= FLDate[0]; |
|
| 88 |
+ form.searchEndDate.value= FLDate[1]; |
|
| 89 |
+ |
|
| 90 |
+ form.action="<c:url value='/uss/ion/pay/RefundList.do'/>"; |
|
| 91 |
+ form.submit(); |
|
| 92 |
+ |
|
| 93 |
+} |
|
| 94 |
+ |
|
| 95 |
+ |
|
| 96 |
+function payMonthExcelDownload(){
|
|
| 97 |
+ |
|
| 98 |
+ var frm = document.payExcelDwnForm; |
|
| 99 |
+ $('#excelNtceBgnde').val($('#searchYear option:selected').val());
|
|
| 100 |
+ frm.action = "<c:url value='/uss/ion/pay/payMonthChartExcelDownload.do'/>"; |
|
| 101 |
+ frm.submit(); |
|
| 102 |
+ |
|
| 103 |
+} |
|
| 104 |
+ |
|
| 105 |
+ |
|
| 106 |
+//날짜 월의 첫번째 날짜와 마지막 날짜 생성하기 |
|
| 107 |
+function getFLDate(date){
|
|
| 108 |
+ |
|
| 109 |
+ var splitDate = []; |
|
| 110 |
+ splitDate = date.split("-");
|
|
| 111 |
+ |
|
| 112 |
+ var year = splitDate[0]; |
|
| 113 |
+ var month = Number(splitDate[1]-1); |
|
| 114 |
+ |
|
| 115 |
+ //해당월의 첫째날 구하기 |
|
| 116 |
+ var firstDate = new Date(year, Number(month), 1); |
|
| 117 |
+ |
|
| 118 |
+ //해당 월의 마지막날 구하기 |
|
| 119 |
+ var lastDate = new Date(year, Number(month)+1, 0); |
|
| 120 |
+ |
|
| 121 |
+ //날짜 포맷 변환하기 |
|
| 122 |
+ var fDate = firstDate.getFullYear() + |
|
| 123 |
+ "-" + ((firstDate.getMonth() + 1) > 9 ? (firstDate.getMonth() + 1).toString() : "0" + (firstDate.getMonth() + 1)) + |
|
| 124 |
+ "-" + (firstDate.getDate() > 9 ? firstDate.getDate().toString() : "0" + firstDate.getDate().toString()); |
|
| 125 |
+ var lDate = lastDate.getFullYear() + |
|
| 126 |
+ "-" + ((lastDate.getMonth() + 1) > 9 ? (lastDate.getMonth() + 1).toString() : "0" + (lastDate.getMonth() + 1)) + |
|
| 127 |
+ "-" + (lastDate.getDate() > 9 ? lastDate.getDate().toString() : "0" + lastDate.getDate().toString()); |
|
| 128 |
+ |
|
| 129 |
+ var rtnDate = []; |
|
| 130 |
+ rtnDate[0] = fDate; |
|
| 131 |
+ rtnDate[1] = lDate; |
|
| 132 |
+ return rtnDate; |
|
| 133 |
+ |
|
| 134 |
+} |
|
| 61 | 135 |
|
| 62 | 136 |
</script> |
| 63 | 137 |
<style> |
... | ... | @@ -117,14 +191,14 @@ |
| 117 | 191 |
<div class="listTop"> |
| 118 | 192 |
<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
|
| 119 | 193 |
|
| 120 |
- <div style="float: right;"> |
|
| 121 |
- 카드 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCardSumTot}" pattern="#,###" /></span>원,
|
|
| 122 |
- 휴대폰 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCellSumTot}" pattern="#,###" /></span>원,
|
|
| 123 |
- 이체 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtBankSumTot}" pattern="#,###" /></span>원,
|
|
| 124 |
- 전용 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtVbankSumTot}" pattern="#,###" /></span>원,
|
|
| 125 |
- 간편 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtSpaySumTot}" pattern="#,###" /></span>원,
|
|
| 126 |
- 환불 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtRefundSumTot}" pattern="#,###" /></span>원,
|
|
| 127 |
- 합계 : <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtTotSumTot}" pattern="#,###" /></span>원
|
|
| 194 |
+ <div class="rightWrap"> |
|
| 195 |
+ <p style="vertical-align: bottom; margin-right:10px; margin-bottom:4px;"> (단위 : 원)</p> |
|
| 196 |
+ <input type="button" class="excelBtn" onclick="javascript:payMonthExcelDownload();" style="cursor: pointer;" /> |
|
| 197 |
+ <%-- <select name="pageUnit" id="pageUnit" class="select" title="검색조건선택" onchange="linkPage(1);"> |
|
| 198 |
+ <option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
|
|
| 199 |
+ <option value='50' <c:if test="${searchVO.pageUnit == '50'}">selected</c:if>>50줄</option>
|
|
| 200 |
+ <option value='100' <c:if test="${searchVO.pageUnit == '100'}">selected</c:if>>100줄</option>
|
|
| 201 |
+ </select> --%> |
|
| 128 | 202 |
</div> |
| 129 | 203 |
</div> |
| 130 | 204 |
|
... | ... | @@ -133,12 +207,13 @@ |
| 133 | 207 |
<table class="tbType1"> |
| 134 | 208 |
<colgroup> |
| 135 | 209 |
<col style="width: auto;"> |
| 136 |
- <col style="width: 12.5%"> |
|
| 137 |
- <col style="width: 12.5%"> |
|
| 138 |
- <col style="width: 12.5%"> |
|
| 139 |
- <col style="width: 12.5%"> |
|
| 140 |
- <col style="width: 12.5%"> |
|
| 141 |
- <col style="width: 12.5%"> |
|
| 210 |
+ <col style="width: 11%"> |
|
| 211 |
+ <col style="width: 11%"> |
|
| 212 |
+ <col style="width: 11%"> |
|
| 213 |
+ <col style="width: 11%"> |
|
| 214 |
+ <col style="width: 11%"> |
|
| 215 |
+ <col style="width: 11%"> |
|
| 216 |
+ <col style="width: 11%"> |
|
| 142 | 217 |
<col style="width: 13%"> |
| 143 | 218 |
</colgroup> |
| 144 | 219 |
<thead> |
... | ... | @@ -149,6 +224,7 @@ |
| 149 | 224 |
<th>즉시이체<input type="button" class="sort sortBtn" id="sort_amtBankSum"></th> |
| 150 | 225 |
<th>전용계좌<input type="button" class="sort sortBtn" id="sort_amtVbankSum"></th> |
| 151 | 226 |
<th>간편결제<input type="button" class="sort sortBtn" id="sort_amtSpaySum"></th> |
| 227 |
+ <th>후불결제<input type="button" class="sort sortBtn" id="sort_amtAfterPaySum"></th> |
|
| 152 | 228 |
<th>환불<input type="button" class="sort sortBtn" id="sort_amtRefundSum"></th> |
| 153 | 229 |
<th>합계(VAT 포함)<input type="button" class="sort sortBtn" id="sort_amtTotSum"></th> |
| 154 | 230 |
</tr> |
... | ... | @@ -156,13 +232,30 @@ |
| 156 | 232 |
<tbody> |
| 157 | 233 |
<c:forEach var="result" items="${resultList}" varStatus="status">
|
| 158 | 234 |
<tr> |
| 159 |
- <td><c:out value="${result.regDate}"/></td>
|
|
| 160 |
- <td><fmt:formatNumber value="${result.amtCardSum}" pattern="#,###" /></td>
|
|
| 161 |
- <td><fmt:formatNumber value="${result.amtCellSum}" pattern="#,###" /></td>
|
|
| 162 |
- <td><fmt:formatNumber value="${result.amtBankSum}" pattern="#,###" /></td>
|
|
| 163 |
- <td><fmt:formatNumber value="${result.amtVbankSum}" pattern="#,###" /></td>
|
|
| 164 |
- <td><fmt:formatNumber value="${result.amtSpaySum}" pattern="#,###" /></td>
|
|
| 165 |
- <td><fmt:formatNumber value="${result.amtRefundSum}" pattern="#,###" /></td>
|
|
| 235 |
+ <td> |
|
| 236 |
+ <c:out value="${result.regDate}"/>
|
|
| 237 |
+ </td> |
|
| 238 |
+ <td <c:if test="${result.amtCardSum > 0}"> onclick="fnGoPayList('CARD', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 239 |
+ <fmt:formatNumber value="${result.amtCardSum}" pattern="#,###" />
|
|
| 240 |
+ </td> |
|
| 241 |
+ <td <c:if test="${result.amtCellSum > 0}"> onclick="fnGoPayList('CELLPHONE', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 242 |
+ <fmt:formatNumber value="${result.amtCellSum}" pattern="#,###" />
|
|
| 243 |
+ </td> |
|
| 244 |
+ <td <c:if test="${result.amtBankSum > 0}"> onclick="fnGoPayList('BANK', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 245 |
+ <fmt:formatNumber value="${result.amtBankSum}" pattern="#,###" />
|
|
| 246 |
+ </td> |
|
| 247 |
+ <td <c:if test="${result.amtVbankSum > 0}"> onclick="fnGoPayList('VBANK', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 248 |
+ <fmt:formatNumber value="${result.amtVbankSum}" pattern="#,###" />
|
|
| 249 |
+ </td> |
|
| 250 |
+ <td <c:if test="${result.amtSpaySum > 0}"> onclick="fnGoPayList('SPAY', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 251 |
+ <fmt:formatNumber value="${result.amtSpaySum}" pattern="#,###" />
|
|
| 252 |
+ </td> |
|
| 253 |
+ <td <c:if test="${result.amtAfterPaySum > 0}"> onclick="fnGoPayList('AFTERPAY', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 254 |
+ <fmt:formatNumber value="${result.amtAfterPaySum}" pattern="#,###" />
|
|
| 255 |
+ </td> |
|
| 256 |
+ <td <c:if test="${result.amtRefundSum >= 0}"> onclick="fnGoPayRefundList('1', '<c:out value="${result.regDate}"/>');" style="cursor:pointer;" </c:if> >
|
|
| 257 |
+ <fmt:formatNumber value="${result.amtRefundSum}" pattern="#,###" />
|
|
| 258 |
+ </td> |
|
| 166 | 259 |
<td> |
| 167 | 260 |
<c:choose> |
| 168 | 261 |
<c:when test="${result.amtTotSum > 0}">
|
... | ... | @@ -175,8 +268,37 @@ |
| 175 | 268 |
</td> |
| 176 | 269 |
</tr> |
| 177 | 270 |
</c:forEach> |
| 271 |
+ <tr> |
|
| 272 |
+ <td> |
|
| 273 |
+ 합 계 |
|
| 274 |
+ </td> |
|
| 275 |
+ <td> |
|
| 276 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCardSumTot}" pattern="#,###" /></span>
|
|
| 277 |
+ </td> |
|
| 278 |
+ <td> |
|
| 279 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtCellSumTot}" pattern="#,###" /></span>
|
|
| 280 |
+ </td> |
|
| 281 |
+ <td> |
|
| 282 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtBankSumTot}" pattern="#,###" /></span>
|
|
| 283 |
+ </td> |
|
| 284 |
+ <td> |
|
| 285 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtVbankSumTot}" pattern="#,###" /></span>
|
|
| 286 |
+ </td> |
|
| 287 |
+ <td> |
|
| 288 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtSpaySumTot}" pattern="#,###" /></span>
|
|
| 289 |
+ </td> |
|
| 290 |
+ <td> |
|
| 291 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtAfterPaySumTot}" pattern="#,###" /></span>
|
|
| 292 |
+ </td> |
|
| 293 |
+ <td> |
|
| 294 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtRefundSumTot}" pattern="#,###" /></span>
|
|
| 295 |
+ </td> |
|
| 296 |
+ <td> |
|
| 297 |
+ <span class="tType5 c_456ded"><fmt:formatNumber value="${mjonPayVO.amtTotSumTot}" pattern="#,###" /></span>
|
|
| 298 |
+ </td> |
|
| 299 |
+ </tr> |
|
| 178 | 300 |
<c:if test="${empty resultList}">
|
| 179 |
- <tr><td colspan="8"><spring:message code="common.nodata.msg" /></td></tr> |
|
| 301 |
+ <tr><td colspan="9"><spring:message code="common.nodata.msg" /></td></tr> |
|
| 180 | 302 |
</c:if> |
| 181 | 303 |
</tbody> |
| 182 | 304 |
</table> |
... | ... | @@ -185,5 +307,25 @@ |
| 185 | 307 |
</div> |
| 186 | 308 |
</form> |
| 187 | 309 |
</compress:html> |
| 310 |
+<form id="payParamForm" name="payParamForm" method="post"> |
|
| 311 |
+ <input type="hidden" id="searchCondition2" name="searchCondition2" value=""/><!-- 결제방식 --> |
|
| 312 |
+ <input type="hidden" id="searchCondition3" name="searchCondition3" value="1"/><!-- 결제상태 : 결제완료 --> |
|
| 313 |
+ <input type="hidden" id="searchStartDate" name="searchStartDate" value=""/><!-- 결제검색 시작일자 --> |
|
| 314 |
+ <input type="hidden" id="searchEndDate" name="searchEndDate" value=""/><!-- 결제검색 종료일자 --> |
|
| 315 |
+ <input type="hidden" id="baseMenuNo" name="baseMenuNo" value="4520000"/><!-- 결제상세 메뉴 번호 --> |
|
| 316 |
+</form> |
|
| 317 |
+ |
|
| 318 |
+<form id="payRefParamForm" name="payRefParamForm" method="post"> |
|
| 319 |
+ <input type="hidden" id="searchCondition2" name="searchCondition2" value=""/><!-- 구분방식 --> |
|
| 320 |
+ <input type="hidden" id="searchRefundStatus" name="searchRefundStatus" value="3"/><!-- 처리상태 : 처리완료 --> |
|
| 321 |
+ <input type="hidden" id="searchStartDate" name="searchStartDate" value=""/><!-- 환불검색 시작일자 --> |
|
| 322 |
+ <input type="hidden" id="searchEndDate" name="searchEndDate" value=""/><!-- 환불검색 종료일자 --> |
|
| 323 |
+ <input type="hidden" id="baseMenuNo" name="baseMenuNo" value="4550000"/><!-- 결제상세 메뉴 번호 --> |
|
| 324 |
+</form> |
|
| 325 |
+ |
|
| 326 |
+<form id="payExcelDwnForm" name="payExcelDwnForm" method="post"> |
|
| 327 |
+ <input type="hidden" name="ntceBgnde" id="excelNtceBgnde" value="<c:out value="${searchVO.ntceBgnde}" />">
|
|
| 328 |
+</form> |
|
| 329 |
+ |
|
| 188 | 330 |
</body> |
| 189 | 331 |
</html> |
--- src/main/webapp/WEB-INF/jsp/uss/ion/pay/RefundList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/pay/RefundList.jsp
... | ... | @@ -163,12 +163,12 @@ |
| 163 | 163 |
</select> |
| 164 | 164 |
<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do"> |
| 165 | 165 |
<div class="calendar_box" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchStartDate);"> |
| 166 |
- <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchStartDate" id="searchStartDate" size="4" maxlength="4" readonly="" value="<c:out value='${searchVO.searchStartDate}'/>">
|
|
| 166 |
+ <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchStartDate" id="searchStartDate" size="4" maxlength="4" readonly="" value="<c:out value='${RefundVO.searchStartDate}'/>">
|
|
| 167 | 167 |
<input type="button" class="calBtn"> |
| 168 | 168 |
</div> |
| 169 | 169 |
<span class="line">~</span> |
| 170 | 170 |
<div class="calendar_box" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.searchEndDate);"> |
| 171 |
- <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchEndDate" id="searchEndDate" size="4" maxlength="4" readonly="" value="<c:out value='${searchVO.searchEndDate}'/>">
|
|
| 171 |
+ <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="searchEndDate" id="searchEndDate" size="4" maxlength="4" readonly="" value="<c:out value='${RefundVO.searchEndDate}'/>">
|
|
| 172 | 172 |
<input type="button" class="calBtn"> |
| 173 | 173 |
</div> |
| 174 | 174 |
</div> |
--- src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/msgdata/at/KakaoAlimtalkMsgDataView.jsp
... | ... | @@ -284,11 +284,14 @@ |
| 284 | 284 |
/** |
| 285 | 285 |
* 먼저 불러온 DATA가 있으면 삭제 |
| 286 | 286 |
* !! 화면에 보이는 data만 삭제 !! |
| 287 |
+ * 총건수, 중복건수 데이터 0으로 초기화 |
|
| 287 | 288 |
* 엑셀 불러오기 데이터 |
| 288 | 289 |
*/ |
| 289 | 290 |
function fn_viewDataInit02(){
|
| 290 | 291 |
$('.excelBody').remove();
|
| 291 | 292 |
$('#excelHead').empty();
|
| 293 |
+ $('#rowTotCnt').text("0");
|
|
| 294 |
+ $('#rowDupCnt').text("0");
|
|
| 292 | 295 |
} |
| 293 | 296 |
|
| 294 | 297 |
/* |
... | ... | @@ -1352,7 +1355,8 @@ |
| 1352 | 1355 |
<div class="receipt_num_top"> |
| 1353 | 1356 |
<input type="text" placeholder="선택된 파일이 없습니다." onfocus="this.placeholder=''" onblur="this.placeholder='번호를 입력하세요'" style="width:340px;"> |
| 1354 | 1357 |
<button type="button" class="btnType btnType6" id="fileClick"/>파일선택</button> |
| 1355 |
- <input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport02(event); return false;" style="display:none"/> |
|
| 1358 |
+ <input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExportVarAjax(event); return false;" style="display:none"/> |
|
| 1359 |
+ <!-- <input type="file" id="excelFile" accept=".xls, .xlsx" onchange="excelExport02(event); return false;" style="display:none"/> --> |
|
| 1356 | 1360 |
</div> |
| 1357 | 1361 |
<div class="receipt_num_midde"> |
| 1358 | 1362 |
<div class="listType list01" id="wrap02"> |
... | ... | @@ -1735,21 +1739,27 @@ |
| 1735 | 1739 |
<div class="attachedFile"> |
| 1736 | 1740 |
<label for="excelNm01" class="attachedFile_label">첨부파일</label> |
| 1737 | 1741 |
<input type="text" id="excelNm01" value="" readonly> |
| 1738 |
- <input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExport01(event); return false;" style="display:none"/> |
|
| 1742 |
+ <input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExportAjax(event); return false;" style="display:none"/> |
|
| 1743 |
+ <!-- <input type="file" id="excelFile01" accept=".xls, .xlsx" onchange="excelExport01(event); return false;" style="display:none"/> --> |
|
| 1739 | 1744 |
<button type="button" class="btnType btnType6 c1">찾아보기</button> |
| 1740 | 1745 |
<!-- <p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p> --> |
| 1741 | 1746 |
<p><span class="vMiddle">*</span> 첨부된 파일은 <span class="c_e40000">[추가]버튼을 클릭</span>하셔야 받는 사람에 등록됩니다.</p> |
| 1742 | 1747 |
</div> |
| 1743 | 1748 |
</div><!--// 엑셀파일 불러오기 --> |
| 1744 | 1749 |
<div class="popup_btn_wrap2"> |
| 1745 |
- <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAdd()">추가</button> |
|
| 1750 |
+ <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAddAjax()">추가</button> |
|
| 1751 |
+ <!-- <button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02" onclick="excelAdd()">추가</button> --> |
|
| 1746 | 1752 |
<button type="button" class="tooltip-close" data-focus="popup02-close" data-focus-next="popup02">닫기</button> |
| 1747 | 1753 |
</div> |
| 1748 | 1754 |
</div> |
| 1749 | 1755 |
</div> |
| 1750 | 1756 |
</div><!--// 엑셀 불러오기 --> |
| 1751 | 1757 |
</form> |
| 1752 |
- |
|
| 1758 |
+<form id="excelVarFileForm" name="excelVarFileForm" method="post"> |
|
| 1759 |
+ <input type="hidden" id="excelVarCnt" name="excelVarCnt" value="0"/> |
|
| 1760 |
+ <input type="hidden" id="excelVarList" name="excelVarList" value=""/> |
|
| 1761 |
+ |
|
| 1762 |
+</form> |
|
| 1753 | 1763 |
|
| 1754 | 1764 |
<form id="msgResendForm" name="msgResendForm" method="post"> |
| 1755 | 1765 |
<input name="msgResendFlag" type="hidden" value="N"/> |
--- src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/kakao/sent/KakaoSentAllListAjax.jsp
... | ... | @@ -143,7 +143,28 @@ |
| 143 | 143 |
<input type="checkbox" id="msgSentDel${status.count}" name="msgSentDel"
|
| 144 | 144 |
value="${resultAllSentList.msgGroupId}" <c:if test="${resultAllSentList.curState eq '0'}">disabled</c:if>>
|
| 145 | 145 |
</td> |
| 146 |
- <td rowspan="2"><p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p></td>
|
|
| 146 |
+ <td rowspan="2"> |
|
| 147 |
+ <c:choose> |
|
| 148 |
+ <c:when test="${resultAllSentList.atDelayYn eq 'Y' && resultAllSentList.atDelayCompleteYn eq 'N'}">
|
|
| 149 |
+ <c:choose> |
|
| 150 |
+ <c:when test="${resultAllSentList.curState eq '0'}">
|
|
| 151 |
+ <%-- |
|
| 152 |
+ 20240906 추가 |
|
| 153 |
+ 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. |
|
| 154 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 155 |
+ --%> |
|
| 156 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.atDelayOrgTime}" /></p>
|
|
| 157 |
+ </c:when> |
|
| 158 |
+ <c:otherwise> |
|
| 159 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
|
| 160 |
+ </c:otherwise> |
|
| 161 |
+ </c:choose> |
|
| 162 |
+ </c:when> |
|
| 163 |
+ <c:otherwise> |
|
| 164 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
|
| 165 |
+ </c:otherwise> |
|
| 166 |
+ </c:choose> |
|
| 167 |
+ </td> |
|
| 147 | 168 |
<td rowspan="2"> |
| 148 | 169 |
<p class="c_222 fwRg"> |
| 149 | 170 |
<c:if test="${resultAllSentList.msgType eq '8'}">알림톡</c:if>
|
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
... | ... | @@ -173,7 +173,28 @@ |
| 173 | 173 |
|
| 174 | 174 |
</td> |
| 175 | 175 |
<td name="listTd"> |
| 176 |
- <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
|
| 176 |
+ <c:choose> |
|
| 177 |
+ <c:when test="${resultAllSentList.delayYn eq 'Y' && resultAllSentList.delayCompleteYn eq 'N'}">
|
|
| 178 |
+ |
|
| 179 |
+ <c:choose> |
|
| 180 |
+ <c:when test="${resultAllSentList.curState eq '0'}">
|
|
| 181 |
+ <%-- |
|
| 182 |
+ 20240906 추가 |
|
| 183 |
+ 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. |
|
| 184 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 185 |
+ --%> |
|
| 186 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.delayOrgTime}" /></p>
|
|
| 187 |
+ </c:when> |
|
| 188 |
+ <c:otherwise> |
|
| 189 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
|
| 190 |
+ </c:otherwise> |
|
| 191 |
+ </c:choose> |
|
| 192 |
+ |
|
| 193 |
+ </c:when> |
|
| 194 |
+ <c:otherwise> |
|
| 195 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
|
| 196 |
+ </c:otherwise> |
|
| 197 |
+ </c:choose> |
|
| 177 | 198 |
</td> |
| 178 | 199 |
<td name="listTd"> |
| 179 | 200 |
<p> |
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp
... | ... | @@ -152,6 +152,16 @@ |
| 152 | 152 |
|
| 153 | 153 |
</td> |
| 154 | 154 |
<td> |
| 155 |
+ <%-- <c:choose> |
|
| 156 |
+ <c:when test="${resultAllSentList.delayYn eq 'Y' && resultAllSentList.delayCompleteYn eq 'N'}">
|
|
| 157 |
+ 20240906 추가 |
|
| 158 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 159 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.delayOrgTime}" /></p>
|
|
| 160 |
+ </c:when> |
|
| 161 |
+ <c:otherwise> |
|
| 162 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
|
| 163 |
+ </c:otherwise> |
|
| 164 |
+ </c:choose> --%> |
|
| 155 | 165 |
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
| 156 | 166 |
</td> |
| 157 | 167 |
<td> |
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp
... | ... | @@ -140,6 +140,16 @@ |
| 140 | 140 |
|
| 141 | 141 |
</td> |
| 142 | 142 |
<td> |
| 143 |
+ <%-- <c:choose> |
|
| 144 |
+ <c:when test="${resultAllSentList.delayYn eq 'Y' && resultAllSentList.delayCompleteYn eq 'N'}">
|
|
| 145 |
+ 20240906 추가 |
|
| 146 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 147 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.delayOrgTime}" /></p>
|
|
| 148 |
+ </c:when> |
|
| 149 |
+ <c:otherwise> |
|
| 150 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
|
| 151 |
+ </c:otherwise> |
|
| 152 |
+ </c:choose> --%> |
|
| 143 | 153 |
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.reqdate}" /></p>
|
| 144 | 154 |
</td> |
| 145 | 155 |
<td> |
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp
... | ... | @@ -152,7 +152,27 @@ |
| 152 | 152 |
|
| 153 | 153 |
</td> |
| 154 | 154 |
<td> |
| 155 |
- <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.regdate}" /></p>
|
|
| 155 |
+ <c:choose> |
|
| 156 |
+ <c:when test="${resultAllSentList.delayYn eq 'Y' && resultAllSentList.delayCompleteYn eq 'N'}">
|
|
| 157 |
+ <c:choose> |
|
| 158 |
+ <c:when test="${resultAllSentList.curState eq '0'}">
|
|
| 159 |
+ <%-- |
|
| 160 |
+ 20240906 추가 |
|
| 161 |
+ 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. |
|
| 162 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 163 |
+ --%> |
|
| 164 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.delayOrgTime}" /></p>
|
|
| 165 |
+ </c:when> |
|
| 166 |
+ <c:otherwise> |
|
| 167 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.regdate}" /></p>
|
|
| 168 |
+ </c:otherwise> |
|
| 169 |
+ </c:choose> |
|
| 170 |
+ |
|
| 171 |
+ </c:when> |
|
| 172 |
+ <c:otherwise> |
|
| 173 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllSentList.regdate}" /></p>
|
|
| 174 |
+ </c:otherwise> |
|
| 175 |
+ </c:choose> |
|
| 156 | 176 |
</td> |
| 157 | 177 |
<td> |
| 158 | 178 |
<p> |
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoAllListAjax.jsp
... | ... | @@ -198,7 +198,26 @@ |
| 198 | 198 |
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.regdate}" /></p>
|
| 199 | 199 |
</td> |
| 200 | 200 |
<td> |
| 201 |
- <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 201 |
+ <c:choose> |
|
| 202 |
+ <c:when test="${resultAllResList.atDelayYn eq 'Y' && resultAllResList.atDelayCompleteYn eq 'N'}">
|
|
| 203 |
+ <c:choose> |
|
| 204 |
+ <c:when test="${resultAllResList.curState eq '0'}">
|
|
| 205 |
+ <%-- |
|
| 206 |
+ 20240906 추가 |
|
| 207 |
+ 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. |
|
| 208 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 209 |
+ --%> |
|
| 210 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.atDelayOrgTime}" /></p>
|
|
| 211 |
+ </c:when> |
|
| 212 |
+ <c:otherwise> |
|
| 213 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 214 |
+ </c:otherwise> |
|
| 215 |
+ </c:choose> |
|
| 216 |
+ </c:when> |
|
| 217 |
+ <c:otherwise> |
|
| 218 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 219 |
+ </c:otherwise> |
|
| 220 |
+ </c:choose> |
|
| 202 | 221 |
</td> |
| 203 | 222 |
<td> |
| 204 | 223 |
<p> |
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoReadyListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedKakaoReadyListAjax.jsp
... | ... | @@ -169,7 +169,26 @@ |
| 169 | 169 |
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.regdate}" /></p>
|
| 170 | 170 |
</td> |
| 171 | 171 |
<td> |
| 172 |
- <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 172 |
+ <c:choose> |
|
| 173 |
+ <c:when test="${resultAllResList.atDelayYn eq 'Y' && resultAllResList.atDelayCompleteYn eq 'N'}">
|
|
| 174 |
+ <c:choose> |
|
| 175 |
+ <c:when test="${resultAllResList.curState eq '0'}">
|
|
| 176 |
+ <%-- |
|
| 177 |
+ 20240906 추가 |
|
| 178 |
+ 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. |
|
| 179 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 180 |
+ --%> |
|
| 181 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.atDelayOrgTime}" /></p>
|
|
| 182 |
+ </c:when> |
|
| 183 |
+ <c:otherwise> |
|
| 184 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 185 |
+ </c:otherwise> |
|
| 186 |
+ </c:choose> |
|
| 187 |
+ </c:when> |
|
| 188 |
+ <c:otherwise> |
|
| 189 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 190 |
+ </c:otherwise> |
|
| 191 |
+ </c:choose> |
|
| 173 | 192 |
</td> |
| 174 | 193 |
<td> |
| 175 | 194 |
<p> |
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
... | ... | @@ -202,7 +202,27 @@ |
| 202 | 202 |
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.regdate}" /></p>
|
| 203 | 203 |
</td> |
| 204 | 204 |
<td> |
| 205 |
- <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 205 |
+ <c:choose> |
|
| 206 |
+ <c:when test="${resultAllResList.delayYn eq 'Y' && resultAllResList.delayCompleteYn eq 'N'}">
|
|
| 207 |
+ <c:choose> |
|
| 208 |
+ <c:when test="${resultAllResList.curState eq '0'}">
|
|
| 209 |
+ <%-- |
|
| 210 |
+ 20240906 추가 |
|
| 211 |
+ 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. |
|
| 212 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 213 |
+ --%> |
|
| 214 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.delayOrgTime}" /></p>
|
|
| 215 |
+ </c:when> |
|
| 216 |
+ <c:otherwise> |
|
| 217 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 218 |
+ </c:otherwise> |
|
| 219 |
+ </c:choose> |
|
| 220 |
+ </c:when> |
|
| 221 |
+ <c:otherwise> |
|
| 222 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 223 |
+ </c:otherwise> |
|
| 224 |
+ </c:choose> |
|
| 225 |
+ |
|
| 206 | 226 |
</td> |
| 207 | 227 |
<td> |
| 208 | 228 |
<p> |
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
... | ... | @@ -175,7 +175,26 @@ |
| 175 | 175 |
<p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.regdate}" /></p>
|
| 176 | 176 |
</td> |
| 177 | 177 |
<td> |
| 178 |
- <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 178 |
+ <c:choose> |
|
| 179 |
+ <c:when test="${resultAllResList.delayYn eq 'Y' && resultAllResList.delayCompleteYn eq 'N'}">
|
|
| 180 |
+ <c:choose> |
|
| 181 |
+ <c:when test="${resultAllResList.curState eq '0'}">
|
|
| 182 |
+ <%-- |
|
| 183 |
+ 20240906 추가 |
|
| 184 |
+ 발송 대기 상태일 때만 원래 발송시간을 보여주고, 발송이 완료되면 발송 처리 완료 시간(reqDate)을 보여준다. |
|
| 185 |
+ 30분 딜레이 된 건으로 관리자 승인/취소 처리가 완료 되지 않은 건에 대해서 -30분 처리하여 원래 사용자가 보내려던 시간을 표시해줌 |
|
| 186 |
+ --%> |
|
| 187 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.delayOrgTime}" /></p>
|
|
| 188 |
+ </c:when> |
|
| 189 |
+ <c:otherwise> |
|
| 190 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 191 |
+ </c:otherwise> |
|
| 192 |
+ </c:choose> |
|
| 193 |
+ </c:when> |
|
| 194 |
+ <c:otherwise> |
|
| 195 |
+ <p><fmt:formatDate pattern = "yyyy-MM-dd HH:mm" value = "${resultAllResList.reqdate}" /></p>
|
|
| 196 |
+ </c:otherwise> |
|
| 197 |
+ </c:choose> |
|
| 179 | 198 |
</td> |
| 180 | 199 |
<td> |
| 181 | 200 |
<p> |
--- src/main/webapp/js/kakao/at/alimtalkExcel.js
+++ src/main/webapp/js/kakao/at/alimtalkExcel.js
... | ... | @@ -48,6 +48,352 @@ |
| 48 | 48 |
} |
| 49 | 49 |
} |
| 50 | 50 |
|
| 51 |
+/* |
|
| 52 |
+ * 신규 엑셀 파일 불러오기 |
|
| 53 |
+ * 기존 json 처리가 아닌 POI 방식으로 처리하기 위함 |
|
| 54 |
+ * |
|
| 55 |
+ * */ |
|
| 56 |
+function excelExportAjax(){
|
|
| 57 |
+ |
|
| 58 |
+ var data = new FormData(document.excelToolTipForm); |
|
| 59 |
+ |
|
| 60 |
+ var fileValue = $("#excelFile01").val().split("\\");
|
|
| 61 |
+ var fileName = fileValue[fileValue.length-1]; |
|
| 62 |
+ |
|
| 63 |
+ var fileExt = fileName.split('.').pop().toLowerCase();
|
|
| 64 |
+ |
|
| 65 |
+ if(fileExt.length > 0){
|
|
| 66 |
+ if($.inArray(fileExt, ['xls','xlsx']) == -1) {
|
|
| 67 |
+ |
|
| 68 |
+ alert('xls, xlsx 파일만 업로드 할수 있습니다.');
|
|
| 69 |
+ return false; |
|
| 70 |
+ |
|
| 71 |
+ } |
|
| 72 |
+ |
|
| 73 |
+ } |
|
| 74 |
+ fn_viewDataInit02(); |
|
| 75 |
+ $('#excelNm01').val(fileName);
|
|
| 76 |
+ |
|
| 77 |
+} |
|
| 78 |
+ |
|
| 79 |
+function excelAddAjax(){
|
|
| 80 |
+ |
|
| 81 |
+ var data = new FormData(document.excelToolTipForm); |
|
| 82 |
+ data.append("file0", $('#excelFile01').prop('files')[0]);
|
|
| 83 |
+ |
|
| 84 |
+ var url = "/web/mjon/alimtalk/sendAlimtalkExelFilePhoneNumAjax.do"; |
|
| 85 |
+ |
|
| 86 |
+ $.ajax({
|
|
| 87 |
+ type: "POST", |
|
| 88 |
+ enctype: 'multipart/form-data', |
|
| 89 |
+ url: url, |
|
| 90 |
+ data: data, |
|
| 91 |
+ dataType:'json', |
|
| 92 |
+ async: true, |
|
| 93 |
+ processData: false, |
|
| 94 |
+ contentType: false, |
|
| 95 |
+ cache: false, |
|
| 96 |
+ //timeout: 600000, |
|
| 97 |
+ success: function (returnData, status) {
|
|
| 98 |
+ if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 99 |
+ |
|
| 100 |
+ if(returnData.success){
|
|
| 101 |
+ |
|
| 102 |
+ var data = returnData.data; |
|
| 103 |
+ var message = returnData.message; |
|
| 104 |
+ |
|
| 105 |
+ if(message != '' ){
|
|
| 106 |
+ alert(returnData.message); |
|
| 107 |
+ } |
|
| 108 |
+ |
|
| 109 |
+ if(data != null){
|
|
| 110 |
+ |
|
| 111 |
+ //수신목록 Html 태그 |
|
| 112 |
+ var addHtml = '<div class="list_table list_body excelBody">' |
|
| 113 |
+ +'\t<div class="cb_wrap">' |
|
| 114 |
+ +'\t\t<label for="" class="label"></label>' |
|
| 115 |
+ +'\t\t<input type="checkbox" class="wrap01C">' |
|
| 116 |
+ +'\t</div>' |
|
| 117 |
+ +'\t<div class="list_table_num phoneArea">' |
|
| 118 |
+ +'\t\t<p>$PHONE$</p>' |
|
| 119 |
+ +'\t</div>' |
|
| 120 |
+ /*23.04.06 이름제거 요청으로인한 화면 이름 제거*/ |
|
| 121 |
+ /*+'\t<div class="list_table_name">' |
|
| 122 |
+ +'\t\t<p>$NAME$</p>' |
|
| 123 |
+ +'\t</div>'*/ |
|
| 124 |
+ +'</div>'; |
|
| 125 |
+ |
|
| 126 |
+ var totalDuplCnt = $('#rowDupCnt').text();//중복 건수 정보
|
|
| 127 |
+ var $excelBody = $('#wrap01_body');
|
|
| 128 |
+ var phoneNum; |
|
| 129 |
+ |
|
| 130 |
+ $.each(data, function(i, item){
|
|
| 131 |
+ |
|
| 132 |
+ if(checkHpNum(item.phone)){
|
|
| 133 |
+ |
|
| 134 |
+ phoneNum = removeDash(item.phone); |
|
| 135 |
+ |
|
| 136 |
+ if(!phoneDupl(phoneNum)) |
|
| 137 |
+ /*23.04.06 이름제거 요청으로인한 화면 이름 제거*/ |
|
| 138 |
+// $excelBody.append(addHtml.replace('$PHONE$', phoneNum).replace('$NAME$', jsonData[bodyIndex]['이름'] ??= ''));
|
|
| 139 |
+ $excelBody.append(addHtml.replace('$PHONE$', phoneNum));
|
|
| 140 |
+ else |
|
| 141 |
+ totalDuplCnt++; |
|
| 142 |
+ |
|
| 143 |
+ } else{
|
|
| 144 |
+ |
|
| 145 |
+ alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다.");
|
|
| 146 |
+ excelAddr = []; //엑셀 데이터 저장 변수 초기화 |
|
| 147 |
+ $("#excelFile").val(""); //첨부파일 input 초기화
|
|
| 148 |
+ $("#excelNm").val(""); // 첨부파일 명 초기화
|
|
| 149 |
+ fileName = ""; |
|
| 150 |
+ return; |
|
| 151 |
+ |
|
| 152 |
+ } |
|
| 153 |
+ |
|
| 154 |
+ }); |
|
| 155 |
+ |
|
| 156 |
+ $('#rowDupCnt').text(totalDuplCnt);
|
|
| 157 |
+ $("#excelFile01").val(""); //첨부파일 input 초기화
|
|
| 158 |
+ $("#excelNm01").val(""); // 첨부파일 명 초기화
|
|
| 159 |
+ updateTotCnt(); |
|
| 160 |
+ |
|
| 161 |
+ } |
|
| 162 |
+ |
|
| 163 |
+ }else{
|
|
| 164 |
+ alert(returnData.message); |
|
| 165 |
+// alert("첨부파일 불러오는 중 오류가 발생하였습니다.");
|
|
| 166 |
+ excelAddr = []; //엑셀 데이터 저장 변수 초기화 |
|
| 167 |
+ $("#excelFile01").val(""); //첨부파일 input 초기화
|
|
| 168 |
+ $("#excelNm01").val(""); // 첨부파일 명 초기화
|
|
| 169 |
+ fileName = ""; |
|
| 170 |
+ return; |
|
| 171 |
+ |
|
| 172 |
+ } |
|
| 173 |
+ } else if(status== 'fail'){
|
|
| 174 |
+ alert("첨부파일 불러오는 중 오류가 발생하였습니다.1");
|
|
| 175 |
+ console.log("status : fail ~");
|
|
| 176 |
+ } |
|
| 177 |
+ }, |
|
| 178 |
+ error: function (e) {
|
|
| 179 |
+ alert("첨부파일 불러오는 중 오류가 발생하였습니다2.");
|
|
| 180 |
+ console.log("ERROR : ", e);
|
|
| 181 |
+ }, |
|
| 182 |
+ beforeSend : function(xmlHttpRequest) {
|
|
| 183 |
+ //로딩창 show |
|
| 184 |
+ $('.loading_layer').addClass('active');
|
|
| 185 |
+ }, |
|
| 186 |
+ complete : function(xhr, textStatus) {
|
|
| 187 |
+ //로딩창 hide |
|
| 188 |
+ $('.loading_layer').removeClass('active');
|
|
| 189 |
+ } |
|
| 190 |
+ }); |
|
| 191 |
+ |
|
| 192 |
+} |
|
| 193 |
+ |
|
| 194 |
+ |
|
| 195 |
+/* |
|
| 196 |
+ * 신규 변수명 설정 엑셀 파일 불러오기 |
|
| 197 |
+ * 기존 json 처리가 아닌 POI 방식으로 처리하기 위함 |
|
| 198 |
+ * |
|
| 199 |
+ * */ |
|
| 200 |
+function excelExportVarAjax(){
|
|
| 201 |
+ |
|
| 202 |
+ var data = document.getElementById('excelFile').files;
|
|
| 203 |
+ |
|
| 204 |
+ var fileValue = $("#excelFile").val().split("\\");
|
|
| 205 |
+ var fileName = fileValue[fileValue.length-1]; |
|
| 206 |
+ |
|
| 207 |
+ var fileExt = fileName.split('.').pop().toLowerCase();
|
|
| 208 |
+ |
|
| 209 |
+ if(fileExt.length > 0){
|
|
| 210 |
+ if($.inArray(fileExt, ['xls','xlsx']) == -1) {
|
|
| 211 |
+ |
|
| 212 |
+ alert('xls, xlsx 파일만 업로드 할수 있습니다.');
|
|
| 213 |
+ return false; |
|
| 214 |
+ |
|
| 215 |
+ } |
|
| 216 |
+ |
|
| 217 |
+ } |
|
| 218 |
+ fn_viewDataInit01(); |
|
| 219 |
+ excelAddVarAjax(); |
|
| 220 |
+} |
|
| 221 |
+ |
|
| 222 |
+function excelAddVarAjax(){
|
|
| 223 |
+ |
|
| 224 |
+ var varList = $("#excelTemplateContent").val().match(/#\{([^}]+)\}/g);
|
|
| 225 |
+ |
|
| 226 |
+ var form = document.excelVarFileForm; |
|
| 227 |
+ form.excelVarCnt.value = varList.length; |
|
| 228 |
+ form.excelVarList.value = varList; |
|
| 229 |
+ |
|
| 230 |
+ var data = new FormData(form); |
|
| 231 |
+ data.append("file0", $('#excelFile').prop('files')[0]);
|
|
| 232 |
+ |
|
| 233 |
+ var url = "/web/mjon/alimtalk/sendAlimtalkExelVarFilePhoneNumAjax.do"; |
|
| 234 |
+ |
|
| 235 |
+ $.ajax({
|
|
| 236 |
+ type: "POST", |
|
| 237 |
+ enctype: 'multipart/form-data', |
|
| 238 |
+ url: url, |
|
| 239 |
+ data: data, |
|
| 240 |
+ dataType:'json', |
|
| 241 |
+ async: true, |
|
| 242 |
+ processData: false, |
|
| 243 |
+ contentType: false, |
|
| 244 |
+ cache: false, |
|
| 245 |
+ //timeout: 600000, |
|
| 246 |
+ success: function (returnData, status) {
|
|
| 247 |
+ if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
|
|
| 248 |
+ |
|
| 249 |
+ if(returnData.success){
|
|
| 250 |
+ |
|
| 251 |
+ var data = returnData.data; |
|
| 252 |
+ var message = returnData.message; |
|
| 253 |
+ |
|
| 254 |
+ if(message != '' ){
|
|
| 255 |
+ alert(returnData.message); |
|
| 256 |
+ } |
|
| 257 |
+ |
|
| 258 |
+ if(data != null){
|
|
| 259 |
+ |
|
| 260 |
+ //수신목록 Html 태그 |
|
| 261 |
+ // 엑셀 헤더 |
|
| 262 |
+ var excelTitleHeadText ='<div class="list_table_name">' |
|
| 263 |
+ +'\t<p>$HEADTITLE$</p>' |
|
| 264 |
+ +'</div>'; |
|
| 265 |
+ |
|
| 266 |
+ // 바디 row 수신자 tag |
|
| 267 |
+ var excelBodyRowTextIndex00 ='<div class="list_table_name phoneArea">' |
|
| 268 |
+ +'\t\t<p>$ROWTEXT$</p>' |
|
| 269 |
+ +'\t</div>'; |
|
| 270 |
+ |
|
| 271 |
+ // 바디 row tag |
|
| 272 |
+ var excelBodyRowTextIndex01 ='<div class="list_table_name transData">' |
|
| 273 |
+ +'\t\t<p>$ROWTEXT$</p>' |
|
| 274 |
+ +'\t</div>'; |
|
| 275 |
+ |
|
| 276 |
+ //맨 앞에 수신번호 배열 추가 |
|
| 277 |
+ varList.unshift('수신번호');
|
|
| 278 |
+ //변수 문자열 중복 제거 |
|
| 279 |
+ var newList = Array.from(new Set(varList)); |
|
| 280 |
+ |
|
| 281 |
+ //엑셀헤더 selector |
|
| 282 |
+ var $excelHead = $('#excelHead');
|
|
| 283 |
+ //엑셀바디 selector |
|
| 284 |
+ var $excelBody = $('#excelBody02');
|
|
| 285 |
+ |
|
| 286 |
+ // 엑셀 헤더 부분 |
|
| 287 |
+ $.each(newList, function(headerIndex, value) {
|
|
| 288 |
+ $excelHead.append(excelTitleHeadText.replace('$HEADTITLE$', value));
|
|
| 289 |
+ }); |
|
| 290 |
+ |
|
| 291 |
+ var totalDuplCnt = $('#rowDupCnt').text();//중복 건수 정보
|
|
| 292 |
+ var $excelBody = $('#excelBody02');
|
|
| 293 |
+ var bodyData; |
|
| 294 |
+ var addDiv = ""; |
|
| 295 |
+ var phoneNum; |
|
| 296 |
+ |
|
| 297 |
+ //입력데이터를 역정렬해준다. |
|
| 298 |
+ data.reverse(); |
|
| 299 |
+ |
|
| 300 |
+ //변수명 추출해주기 |
|
| 301 |
+ var varListArr = []; |
|
| 302 |
+ varListArr = form.excelVarList.value.split(",");
|
|
| 303 |
+ |
|
| 304 |
+ $.each(data, function(i, item){
|
|
| 305 |
+ |
|
| 306 |
+ if(checkHpNum(item.phone)){
|
|
| 307 |
+ |
|
| 308 |
+ phoneNum = removeDash(item.phone); |
|
| 309 |
+ |
|
| 310 |
+ if(!phoneDupl(phoneNum)){
|
|
| 311 |
+ var varVal = item.varVal; |
|
| 312 |
+ var lengthCheck =true; |
|
| 313 |
+ /*23.04.06 이름제거 요청으로인한 화면 이름 제거*/ |
|
| 314 |
+ var excelBody = '<div class="list_table list_body excelBody">'; |
|
| 315 |
+ |
|
| 316 |
+ //수신번호 화면 태그 생성 |
|
| 317 |
+ excelBody += excelBodyRowTextIndex00.replace('$ROWTEXT$', removeDash(phoneNum));
|
|
| 318 |
+ |
|
| 319 |
+ //변수 데이터 태그 생성 |
|
| 320 |
+ var varValArr = [] |
|
| 321 |
+ varValArr = varVal.split("§");
|
|
| 322 |
+ for(var i=0; i < varValArr.length; i++){
|
|
| 323 |
+ |
|
| 324 |
+ var bodyData = varValArr[i]; |
|
| 325 |
+ |
|
| 326 |
+ // 기타변수는 50자리 까지 입력 |
|
| 327 |
+ if(bodyData.length > 100 || bodyData.length == 0){
|
|
| 328 |
+ alert("등록 변수[ "+varListArr[i]+" ] \n기타변수의 입력 값이 없거나 100자리를 초과하는 내용이 포함되어 해당 내용 제외되었습니다.");
|
|
| 329 |
+ lengthCheck = false; |
|
| 330 |
+ break; |
|
| 331 |
+ } |
|
| 332 |
+ excelBody += excelBodyRowTextIndex01.replace('$ROWTEXT$', bodyData);
|
|
| 333 |
+ |
|
| 334 |
+ } |
|
| 335 |
+ |
|
| 336 |
+ excelBody += '</div>'; |
|
| 337 |
+ |
|
| 338 |
+ if(lengthCheck){
|
|
| 339 |
+ addDiv += excelBody; |
|
| 340 |
+ } |
|
| 341 |
+ |
|
| 342 |
+ } |
|
| 343 |
+ |
|
| 344 |
+ else |
|
| 345 |
+ totalDuplCnt++; |
|
| 346 |
+ |
|
| 347 |
+ } else{
|
|
| 348 |
+ |
|
| 349 |
+ alert("엑셀 파일 데이터의 형식이 맞지 않는 부분이 있습니다.");
|
|
| 350 |
+ excelAddr = []; //엑셀 데이터 저장 변수 초기화 |
|
| 351 |
+ $("#excelFile").val(""); //첨부파일 input 초기화
|
|
| 352 |
+ $("#excelNm").val(""); // 첨부파일 명 초기화
|
|
| 353 |
+ fileName = ""; |
|
| 354 |
+ return; |
|
| 355 |
+ |
|
| 356 |
+ } |
|
| 357 |
+ |
|
| 358 |
+ }); |
|
| 359 |
+ |
|
| 360 |
+ //화면에 수신번호 및 변수 데이터 추가해 주기 |
|
| 361 |
+ $excelBody.append(addDiv); |
|
| 362 |
+ |
|
| 363 |
+ } |
|
| 364 |
+ |
|
| 365 |
+ }else{
|
|
| 366 |
+ alert(returnData.message); |
|
| 367 |
+// alert("첨부파일 불러오는 중 오류가 발생하였습니다.");
|
|
| 368 |
+ excelAddr = []; //엑셀 데이터 저장 변수 초기화 |
|
| 369 |
+ $("#excelFile01").val(""); //첨부파일 input 초기화
|
|
| 370 |
+ $("#excelNm01").val(""); // 첨부파일 명 초기화
|
|
| 371 |
+ fileName = ""; |
|
| 372 |
+ return; |
|
| 373 |
+ |
|
| 374 |
+ } |
|
| 375 |
+ } else if(status== 'fail'){
|
|
| 376 |
+ alert("첨부파일 불러오는 중 오류가 발생하였습니다.");
|
|
| 377 |
+ console.log("status : fail ~");
|
|
| 378 |
+ } |
|
| 379 |
+ }, |
|
| 380 |
+ error: function (e) {
|
|
| 381 |
+ alert("첨부파일 불러오는 중 오류가 발생하였습니다.");
|
|
| 382 |
+ console.log("ERROR : ", e);
|
|
| 383 |
+ }, |
|
| 384 |
+ beforeSend : function(xmlHttpRequest) {
|
|
| 385 |
+ //로딩창 show |
|
| 386 |
+ $('.loading_layer').addClass('active');
|
|
| 387 |
+ }, |
|
| 388 |
+ complete : function(xhr, textStatus) {
|
|
| 389 |
+ //로딩창 hide |
|
| 390 |
+ $('.loading_layer').removeClass('active');
|
|
| 391 |
+ } |
|
| 392 |
+ }); |
|
| 393 |
+ |
|
| 394 |
+} |
|
| 395 |
+ |
|
| 396 |
+ |
|
| 51 | 397 |
/** |
| 52 | 398 |
* 엑셀 파일 불러오기 |
| 53 | 399 |
*/ |
... | ... | @@ -337,7 +683,6 @@ |
| 337 | 683 |
var resultBoo = true; |
| 338 | 684 |
|
| 339 | 685 |
data = removeDash(data); |
| 340 |
- |
|
| 341 | 686 |
/* |
| 342 | 687 |
* 중복체크 |
| 343 | 688 |
* 기존 데이터 배열화 |
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?