name 2023-08-02
Merge branch 'master' of http://dudgusw@vcs.iten.co.kr:9999/hylee/mjon_git
@4169e61f617d22d2599acee1dccdd05508155478
src/main/java/itn/com/cmm/util/PdfUtil.java
--- src/main/java/itn/com/cmm/util/PdfUtil.java
+++ src/main/java/itn/com/cmm/util/PdfUtil.java
@@ -110,7 +110,7 @@
             File imgFiles = new File(imgDir + "." +extsn);
             Image img = ImageIO.read(imgFiles);
             
-           PDPage page = new PDPage(PDRectangle.A4);   
+           PDPage page = new PDPage(PDRectangle.A2);   
             doc.addPage(page);
              
             PDImageXObject pdImage = PDImageXObject.createFromFile(imgFiles.toString(), doc);
@@ -132,6 +132,7 @@
             contents.drawImage(pdImage, pageWidthPosition, pageHeightPosition, imgWidth, imgHeight);
             contents.close();
             doc.save("/usr/local/tomcat/file/sht/pdf/" + uuid + ".pdf");
+            //doc.save("C:/TEST/" + uuid + ".pdf");
             
         } catch (Exception e) {
             System.out.println("Exception! : " + e.getMessage());
src/main/java/itn/com/cmm/web/EgovFileDownloadController.java
--- src/main/java/itn/com/cmm/web/EgovFileDownloadController.java
+++ src/main/java/itn/com/cmm/web/EgovFileDownloadController.java
@@ -9,10 +9,6 @@
 import java.net.URLEncoder;
 import java.util.Map;
 
-import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
-import itn.com.cmm.service.EgovFileMngService;
-import itn.com.cmm.service.FileVO;
-
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -24,6 +20,9 @@
 import org.springframework.util.FileCopyUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+
+import itn.com.cmm.service.EgovFileMngService;
+import itn.com.cmm.service.FileVO;
 
 /**
  * 파일 다운로드를 위한 컨트롤러 클래스
@@ -468,6 +467,8 @@
 				
 			
 			File uFile = new File("/usr/local/tomcat/file/sht/pdf/", fileNm);
+			//File uFile = new File("C:/TEST/", fileNm);
+			
 			long fSize = uFile.length();
 
 			if (fSize > 0) {
src/main/java/itn/com/cmm/web/EgovFileMngController.java
--- src/main/java/itn/com/cmm/web/EgovFileMngController.java
+++ src/main/java/itn/com/cmm/web/EgovFileMngController.java
@@ -227,6 +227,33 @@
 	 * @return
 	 * @throws Exception
 	 */
+	@RequestMapping("/cmm/fms/selectMberFileInfs.do")
+	public String selectMberFileInfs(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
+		String atchFileId = (String) commandMap.get("param_atchFileId");
+		String pdfView = (String) commandMap.get("pdf_view"); //'Y' 이면  pdf 직접 보여주기
+		
+		fileVO.setAtchFileId(atchFileId);
+		List<FileVO> result = fileService.selectFileInfs(fileVO);
+		model.addAttribute("fileList", result);
+		model.addAttribute("updateFlag", "N");
+		model.addAttribute("fileListCnt", result.size());
+		model.addAttribute("atchFileId", atchFileId);
+		if("Y".equals(pdfView)){
+			model.addAttribute("pdfView", pdfView);
+		}
+
+		return "cmm/fms/EgovMberFileList";
+	}
+	
+	/**
+	 * 게시판 첨부파일에 대한 목록을 조회한다.
+	 *
+	 * @param fileVO
+	 * @param commandMap
+	 * @param model
+	 * @return
+	 * @throws Exception
+	 */
 	@RequestMapping("/cmm/fms/selectBBSFileInfsMjon.do")
 	public String selectBBSFileInfsMjon(@ModelAttribute("searchVO") FileVO fileVO, @RequestParam Map<String, Object> commandMap, ModelMap model) throws Exception {
 		String atchFileId = (String) commandMap.get("param_atchFileId");
src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
--- src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
+++ src/main/java/itn/let/cop/bbs/web/EgovBBSManageController.java
@@ -73,6 +73,7 @@
 import itn.com.cmm.service.EgovFileMngUtil;
 import itn.com.cmm.service.FileVO;
 import itn.com.cmm.service.ReadService;
+import itn.com.cmm.util.EgovDoubleSubmitHelper;
 import itn.com.cmm.util.StringUtil;
 import itn.com.cmm.util.WebUtil;
 import itn.com.uss.ion.cnf.service.ProhibitMngService;
@@ -2712,6 +2713,12 @@
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.setViewName("jsonView");
 		
+		
+		if (!EgovDoubleSubmitHelper.checkAndSaveToken("someKey", multiRequest)) {  
+			modelAndView.addObject("message", "너무많은 글쓰기가 시도되었습니다.");
+			modelAndView.addObject("result", "fail");
+			return modelAndView;
+		}
 		// Start => bbsId를 변조해서 공지사항에 글 등록 방지 처리
 		//boardVO.setBbsId("BBSMSTR_000000000651");	// 공지사항
 		List<BoardVO> userBbsWriteList = bbsMngService.selectUserBbsWriteList(boardVO);
src/main/java/itn/let/fax/admin/web/FaxAdmController.java
--- src/main/java/itn/let/fax/admin/web/FaxAdmController.java
+++ src/main/java/itn/let/fax/admin/web/FaxAdmController.java
@@ -128,6 +128,32 @@
 		return "/uss/ion/fax/faxAdmSendList";
 	}
 	
+	// 팩스 금일/금월/금년 통계
+	@RequestMapping(value = "/uss/ion/fax/selectFaxSendThisSumAjax.do")
+	public ModelAndView FaxSendThisSumAjax(
+			@ModelAttribute("faxGroupDataVO") FaxGroupDataVO faxGroupDataVO) throws Exception {
+
+		ModelAndView modelAndView = new ModelAndView();
+		modelAndView.setViewName("jsonView");
+
+		boolean isSuccess = true;
+		String msg = "";
+		FaxGroupDataVO result = null;
+		
+        try {
+        	result  = faxService.selectFaxSendThisSum(faxGroupDataVO);
+		}
+		catch(Exception e) {
+			isSuccess = false;
+			msg = e.getMessage();
+		}		
+
+        modelAndView.addObject("result", result);
+		modelAndView.addObject("isSuccess", isSuccess);
+		modelAndView.addObject("msg", msg);
+		
+		return modelAndView;
+	}		
 	
 	/** 
 	 * @methodName	: faxAdmSendDetailList 
src/main/java/itn/let/fax/user/service/FaxGroupDataVO.java
--- src/main/java/itn/let/fax/user/service/FaxGroupDataVO.java
+++ src/main/java/itn/let/fax/user/service/FaxGroupDataVO.java
@@ -17,8 +17,6 @@
 
 import java.io.Serializable;
 
-import itn.com.cmm.ComDefaultVO;
-
 
 /**
  * 
@@ -206,6 +204,61 @@
 	private String searchMonth;
 	private String searchQuarter;
 	
+	private String successDay;
+	private String successMonth;
+	private String successYear;
+	private String successCntDay;
+	private String successCntMonth;
+	private String successCntYear;
+
+	public String getSuccessDay() {
+		return successDay;
+	}
+
+	public void setSuccessDay(String successDay) {
+		this.successDay = successDay;
+	}
+
+	public String getSuccessMonth() {
+		return successMonth;
+	}
+
+	public void setSuccessMonth(String successMonth) {
+		this.successMonth = successMonth;
+	}
+
+	public String getSuccessYear() {
+		return successYear;
+	}
+
+	public void setSuccessYear(String successYear) {
+		this.successYear = successYear;
+	}
+
+	public String getSuccessCntDay() {
+		return successCntDay;
+	}
+
+	public void setSuccessCntDay(String successCntDay) {
+		this.successCntDay = successCntDay;
+	}
+
+	public String getSuccessCntMonth() {
+		return successCntMonth;
+	}
+
+	public void setSuccessCntMonth(String successCntMonth) {
+		this.successCntMonth = successCntMonth;
+	}
+
+	public String getSuccessCntYear() {
+		return successCntYear;
+	}
+
+	public void setSuccessCntYear(String successCntYear) {
+		this.successCntYear = successCntYear;
+	}
+
 
 	public FaxGroupDataVO() {};
 	
src/main/java/itn/let/fax/user/service/FaxService.java
--- src/main/java/itn/let/fax/user/service/FaxService.java
+++ src/main/java/itn/let/fax/user/service/FaxService.java
@@ -32,6 +32,9 @@
 
 	FaxGroupDataVO selectFaxSendDetailInfo(FaxGroupDataVO faxGroupDataVO);
 	
+	// 팩스 금일/금월/금년 통계
+	FaxGroupDataVO selectFaxSendThisSum(FaxGroupDataVO faxGroupDataVO);
+	
 	List<FaxGroupDataVO> selectMyFaxSendList(FaxGroupDataVO faxGroupDataVO);
 
 
src/main/java/itn/let/fax/user/service/impl/FaxDAO.java
--- src/main/java/itn/let/fax/user/service/impl/FaxDAO.java
+++ src/main/java/itn/let/fax/user/service/impl/FaxDAO.java
@@ -136,6 +136,11 @@
 		return (FaxGroupDataVO)select("faxDAO.selectFaxSendDetailInfo", faxGroupDataVO);
 	}
 	
+	// 팩스 금일/금월/금년 통계
+	public FaxGroupDataVO selectFaxSendThisSum(FaxGroupDataVO faxGroupDataVO) {
+		return (FaxGroupDataVO)select("faxDAO.selectFaxSendThisSum", faxGroupDataVO);
+	}
+	
 	public List<?> selectBookMarkMsgList(MjonMsgDataVO mjonMsgDataVO) throws Exception{
 		return list("faxDAO.selectBookMarkMsgList", mjonMsgDataVO);
 	}
src/main/java/itn/let/fax/user/service/impl/FaxServiceImpl.java
--- src/main/java/itn/let/fax/user/service/impl/FaxServiceImpl.java
+++ src/main/java/itn/let/fax/user/service/impl/FaxServiceImpl.java
@@ -2,8 +2,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
@@ -15,7 +13,6 @@
 import java.util.Map;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -33,7 +30,6 @@
 import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
 import itn.com.cmm.util.DateUtil;
 import itn.com.cmm.util.FaxUtil;
-import itn.com.cmm.util.MJUtil;
 import itn.let.fax.user.service.FaxConvertMngVO;
 import itn.let.fax.user.service.FaxConvertVO;
 import itn.let.fax.user.service.FaxGroupDataVO;
@@ -41,14 +37,12 @@
 import itn.let.fax.user.service.FaxService;
 import itn.let.fax.user.service.FaxTranVO;
 import itn.let.mail.service.StatusResponse;
-import itn.let.mjo.msg.service.MjonMsgVO;
 import itn.let.mjo.msgdata.service.MjonMsgDataVO;
 import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO;
 import itn.let.mjo.pay.service.MjonPayVO;
 import itn.let.mjo.pay.service.impl.MjonPayDAO;
 import itn.let.module.base.PriceAndPoint;
 import itn.let.sym.site.service.JoinSettingVO;
-import itn.let.uss.umt.service.MberManageVO;
 import itn.let.utl.fcc.service.EgovStringUtil;
 
 
@@ -587,6 +581,12 @@
 		return faxDao.selectFaxSendDetailInfo(faxGroupDataVO);
 	}
 
+	// 팩스 금일/금월/금년 통계
+	@Override
+	public FaxGroupDataVO selectFaxSendThisSum(FaxGroupDataVO faxGroupDataVO) {
+		return faxDao.selectFaxSendThisSum(faxGroupDataVO);
+	}
+	
 	@Override
 	public List<FaxGroupDataVO> selectMyFaxSendList(FaxGroupDataVO faxGroupDataVO) {
 		return faxDao.selectMyFaxSendList(faxGroupDataVO);
src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/web/MjonKakaoATController.java
@@ -265,7 +265,7 @@
 	
 	// 알림톡 금일/금월/금년 통계
 	@RequestMapping(value = "/uss/umt/user/selectMjonKakaoAtThisSumAjax.do")
-	public ModelAndView DashBoardAdminLogAjax(
+	public ModelAndView MjonKakaoAtThisSumAjax(
 			@ModelAttribute("kakaoVO") KakaoVO kakaoVO) throws Exception {
 
 		ModelAndView modelAndView = new ModelAndView();
src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java
--- src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java
+++ src/main/java/itn/let/kakao/user/sent/web/KakaoSentController.java
@@ -162,6 +162,7 @@
 		
 		//전체 발송 리스트 불러오기
 		List<KakaoSentVO> resultAllSentList = kakaoSentService.selectAllKakaoSentList(kakaoSentVO);
+		System.out.println("??");
 		model.addAttribute("resultAllSentList", resultAllSentList);
 		model.addAttribute("resultAllSentCnt", resultAllSentList.size());
 		
src/main/java/itn/let/mjo/apikey/service/ApiKeyMngService.java
--- src/main/java/itn/let/mjo/apikey/service/ApiKeyMngService.java
+++ src/main/java/itn/let/mjo/apikey/service/ApiKeyMngService.java
@@ -37,5 +37,7 @@
 
 	//REST API 신청상태
 	public List<ApiKeyVO> selectApiKeyApplyStatus(ApiKeyVO apiKeyVO) throws Exception;
+
+	public int selectMberApiKeyChk(ApiKeyVO apiKeyVO) throws Exception;
 	
 }
(No newline at end of file)
src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngDAO.java
--- src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngDAO.java
+++ src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngDAO.java
@@ -55,5 +55,9 @@
 	public List<ApiKeyVO> selectApiKeyApplyStatus(ApiKeyVO apiKeyVO){
         return (List<ApiKeyVO>) list("ApiKeyMngDAO.selectApiKeyApplyStatus", apiKeyVO);
     }
+
+	public int selectMberApiKeyChk(ApiKeyVO apiKeyVO) {
+		return (int) select("ApiKeyMngDAO.selectMberApiKeyChk", apiKeyVO);
+	}
 	
 }
(No newline at end of file)
src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngServiceImpl.java
--- src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngServiceImpl.java
+++ src/main/java/itn/let/mjo/apikey/service/impl/ApiKeyMngServiceImpl.java
@@ -42,6 +42,11 @@
 	}
 	
 	@Override
+	public int selectMberApiKeyChk(ApiKeyVO apiKeyVO) throws Exception {
+		return apiKeyMngDAO.selectMberApiKeyChk(apiKeyVO);
+	}
+	
+	@Override
 	public void deleteApiKey(ApiKeyVO apiKeyVO) throws Exception {
 		apiKeyMngDAO.deleteApiKey(apiKeyVO);
 		
src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
--- src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
+++ src/main/java/itn/let/mjo/msg/web/MjonMsgController.java
@@ -1,6 +1,5 @@
 package itn.let.mjo.msg.web;
 
-import java.io.File;
 import java.io.OutputStream;
 import java.net.URL;
 import java.text.SimpleDateFormat;
@@ -5044,7 +5043,40 @@
     }
     
     @RequestMapping(value = {"/uss/ion/msg/pdfView.do"})
-   	public String pdfView(FileVO fileVO, ModelMap model) throws Exception {
+   	public String pdfView(FileVO fileVO
+   			, ModelMap model
+   			, HttpServletRequest request) throws Exception {
+    	
+		FileVO fvo = fileService.selectFileInf(fileVO);
+		String path = "";
+		
+		if(fvo != null) {
+			if("pdf".equals(fvo.getFileExtsn())) {
+				path = "/cmm/fms/FileDown.do?atchFileId="+ fvo.getAtchFileId() + "&fileSn=" + fvo.getFileSn();
+			}else {
+				String storePath = fvo.getFileStreCours() + fvo.getStreFileNm();
+				path = "/cmm/fms/FileDowntest.do?fileNm="+ PdfUtil.makeImgPdf(storePath, fvo.getFileExtsn());
+			}
+		}
+		
+		String mberNm = request.getParameter("mberNm");
+		String bizNo = request.getParameter("bizNo");
+		String ceoNm = request.getParameter("ceoNm");
+		String hstManagerNm = request.getParameter("hstManagerNm");
+		String hstMbtlNum = request.getParameter("hstMbtlNum");
+		
+		model.addAttribute("pdfPath", path);
+		model.addAttribute("mberNm", mberNm);
+		model.addAttribute("bizNo", bizNo);
+		model.addAttribute("ceoNm", ceoNm);
+		model.addAttribute("hstManagerNm", hstManagerNm);
+		model.addAttribute("hstMbtlNum", hstMbtlNum);		
+    	
+    	return "/uss/ion/msg/pdfView";
+    }
+	
+    @RequestMapping(value = {"/uss/ion/msg/pdfViewAjax.do"})
+   	public String pdfViewAjax(FileVO fileVO, ModelMap model) throws Exception {
     	
 		FileVO fvo = fileService.selectFileInf(fileVO);
 		String path = "";
@@ -5061,8 +5093,6 @@
 		model.addAttribute("pdfPath", path);
     	
     	return "/uss/ion/msg/pdfView";
-    }
-	
-	
+    }	
 	
 }
(No newline at end of file)
 
src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentCntVO.java (added)
+++ src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentCntVO.java
@@ -0,0 +1,46 @@
+package itn.let.mjo.msgsent.service;
+
+import itn.let.uss.umt.service.UserDefaultVO;
+
+public class MjonMsgSentCntVO extends UserDefaultVO{
+
+	private static final long serialVersionUID = 1L;
+	
+
+	
+
+	// 각 통계별 총 건수 
+	public int totCnt;// 전체 건수 
+	
+	// 각 통계별 성공, 실패 건수 처리 
+	public int waitCnt;// 전체 대기 건수 
+	public int succCnt;// 전체 성공 건수 
+	public int failCnt;// 전체 실패 건수 
+	
+	
+	public int getTotCnt() {
+		return totCnt;
+	}
+	public void setTotCnt(int totCnt) {
+		this.totCnt = totCnt;
+	}
+	public int getWaitCnt() {
+		return waitCnt;
+	}
+	public void setWaitCnt(int waitCnt) {
+		this.waitCnt = waitCnt;
+	}
+	public int getSuccCnt() {
+		return succCnt;
+	}
+	public void setSuccCnt(int succCnt) {
+		this.succCnt = succCnt;
+	}
+	public int getFailCnt() {
+		return failCnt;
+	}
+	public void setFailCnt(int failCnt) {
+		this.failCnt = failCnt;
+	}
+	
+}
src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java
--- src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java
+++ src/main/java/itn/let/mjo/msgsent/service/MjonMsgSentVO.java
@@ -70,14 +70,14 @@
 	
 	private int successCnt;	// 문자발송 성공건수
 	
-	private String sendKind;	//문자 전송 타입(H:홈페이지 A: API)
-	
 	private String msgKind;	//문자종류(일반:N, 광고:A , 선거:C, 관리자:S, 이벤트:E)
 	private String delayYn; //지연 문자 유무
 	private String delayCompleteYn; //지연문자 처리 완료 여부
 
 	private String msgId;		//문자아이디
 	private String atchFiles; 		// 그림문자 파일정보
+	
+	private String sendKind; 		// 그림문자 파일정보
 
 	public String getAtchFiles() {
 		return atchFiles;
@@ -428,4 +428,5 @@
 	public void setSendKind(String sendKind) {
 		this.sendKind = sendKind;
 	}
+	
 }
src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java
--- src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java
+++ src/main/java/itn/let/mjo/msgsent/service/impl/MjonMsgSentServiceImpl.java
@@ -72,10 +72,12 @@
 		if(listType.equals("groupList")) {//전송건별 리스트 불러오기
 			
 			resultList = mjonMsgSentDAO.selectAllMsgSentList(mjonMsgSentVO);
+			System.out.println("=====");
 			
 		}else {//개인별 리스트 불러오기
 			
 			resultList = mjonMsgSentDAO.selectAllPrivateMsgSentList(mjonMsgSentVO);
+			System.out.println("====================");
 			
 		}
 		
src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java
--- src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java
+++ src/main/java/itn/let/mjo/msgsent/web/MjonMsgSentController.java
@@ -7,6 +7,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
+import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -40,6 +41,9 @@
 import itn.let.mjo.addr.service.AddrGroupVO;
 import itn.let.mjo.addr.service.AddrService;
 import itn.let.mjo.addr.service.AddrVO;
+import itn.let.mjo.apikey.service.ApiKeyMngService;
+import itn.let.mjo.apikey.service.ApiKeyVO;
+import itn.let.mjo.msgsent.service.MjonMsgSentCntVO;
 import itn.let.mjo.msgsent.service.MjonMsgSentService;
 import itn.let.mjo.msgsent.service.MjonMsgSentVO;
 
@@ -67,6 +71,11 @@
     
     @Resource(name = "KakaoSentService")
 	private KakaoSentService kakaoSentService;
+	
+	//api key 정보
+	@Resource(name = "apiKeyMngService")
+    private ApiKeyMngService apiKeyMngService;
+
     
 private static final Logger logger = LoggerFactory.getLogger(MjonMsgSentController.class);
 	
@@ -90,7 +99,6 @@
 		}
     	
     	mjonMsgSentVO.setUserId(userId);
-    	
     	
     	/*
     	//전체 발송 건수 통계 불러오기
@@ -119,31 +127,83 @@
     	//전체 발송 건수 통계 불러오기
     	mjonMsgSentVO.setMsgType("");
     	List<MjonMsgSentVO> totalMsgCnt = mjonMsgSentService.selectDetailMsgSentCntMix(mjonMsgSentVO);
-    	model.addAttribute("totalMsgCnt", totalMsgCnt);
-
-    	List<MjonMsgSentVO> smsMsgCnt = new ArrayList<MjonMsgSentVO>();
-    	List<MjonMsgSentVO> lmsMsgCnt = new ArrayList<MjonMsgSentVO>();
-    	List<MjonMsgSentVO> mmsMsgCnt = new ArrayList<MjonMsgSentVO>();
     	
+    	// H:홈페이지, A:API 로 sms, lms, mms 나누는 영역
+    	List<MjonMsgSentVO> H_totalMsgCnt = totalMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList());
+    	List<MjonMsgSentVO> H_smsMsgCnt = new ArrayList<MjonMsgSentVO>();
+    	List<MjonMsgSentVO> H_lmsMsgCnt = new ArrayList<MjonMsgSentVO>();
+    	List<MjonMsgSentVO> H_mmsMsgCnt = new ArrayList<MjonMsgSentVO>();
 
-    	totalMsgCnt.forEach(t->{
+    	List<MjonMsgSentVO> A_totalMsgCnt = totalMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList());
+    	List<MjonMsgSentVO> A_smsMsgCnt = new ArrayList<MjonMsgSentVO>();
+    	List<MjonMsgSentVO> A_lmsMsgCnt = new ArrayList<MjonMsgSentVO>();
+    	List<MjonMsgSentVO> A_mmsMsgCnt = new ArrayList<MjonMsgSentVO>();
+
+    	System.out.println(" ::H_totalMsgCnt :: "+ H_totalMsgCnt.size());
+    	System.out.println(" ::A_totalMsgCnt :: "+ A_totalMsgCnt.size());
+
+    	H_totalMsgCnt.forEach(t->{
     		if (Integer.parseInt(t.getFilePath1())>0) {
-    			smsMsgCnt.add(t);
+    			H_smsMsgCnt.add(t);
     		} else if (Integer.parseInt(t.getFilePath2())>0) {
-    			lmsMsgCnt.add(t);
+    			H_lmsMsgCnt.add(t);
     		} else if (Integer.parseInt(t.getFilePath3())>0) {
-    			mmsMsgCnt.add(t);
+    			H_mmsMsgCnt.add(t);
     		}
     	});
     	
-    	//단문 성공건, 실패건 불러오기    	
-    	model.addAttribute("smsMsgCnt", smsMsgCnt);
+    	A_totalMsgCnt.forEach(t->{
+    		if (Integer.parseInt(t.getFilePath1())>0) {
+    			A_smsMsgCnt.add(t);
+    		} else if (Integer.parseInt(t.getFilePath2())>0) {
+    			A_lmsMsgCnt.add(t);
+    		} else if (Integer.parseInt(t.getFilePath3())>0) {
+    			A_mmsMsgCnt.add(t);
+    		}
+    	});
     	
-    	//장문 성공건, 실패건 불러오기
-    	model.addAttribute("lmsMsgCnt", lmsMsgCnt);
     	
-    	//그림문자 성공건, 실패건 불러오기
-    	model.addAttribute("mmsMsgCnt", mmsMsgCnt);
+    	/* 
+    	 * 홈페이지에서 보낸 데이터 LIST
+    	 * SEND_KIND = "H"
+    	 * */
+    	// 전체 영역
+    	model.addAttribute("H_allSentCntVO", this.getResultCntProc(H_totalMsgCnt));
+    	// 전체 단문(SMS)
+    	model.addAttribute("H_smsSentCntVO", this.getResultCntProc(H_smsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("H_lmsSentCntVO", this.getResultCntProc(H_lmsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("H_mmsSentCntVO", this.getResultCntProc(H_mmsMsgCnt));
+    	
+    	
+    	/* ==================================================================================== */
+    	
+    	
+    	/* 
+    	 * 홈페이지에서 보낸 데이터 LIST
+    	 * SEND_KIND = "A"
+    	 * */
+    	// 전체 영역
+    	model.addAttribute("A_allSentCntVO", this.getResultCntProc(A_totalMsgCnt));
+    	// 전체 단문(SMS)
+    	model.addAttribute("A_smsSentCntVO", this.getResultCntProc(A_smsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("A_lmsSentCntVO", this.getResultCntProc(A_lmsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("A_mmsSentCntVO", this.getResultCntProc(A_mmsMsgCnt));
+    	
+    	
+    	
+    	 /*<isEqual prepend="AND" property="searchCondition" compareValue="2">
+         a.mber_nm LIKE CONCAT('%',#searchKeyword#,'%')  
+         </isEqual>
+         */
+    	ApiKeyVO apiKeyVO = new ApiKeyVO();
+    	apiKeyVO.setMberId(userId);
+		model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false);
+    	
+    	
     	
     	
     	// 검색 리스트 불러오기
@@ -171,8 +231,48 @@
     	
 		return "web/msgsent/MsgSentView";
 	}
+
 	
-    /**
+    /** 
+     * @methodName	: getResultCntProc 
+     * @author		: 이호영
+     * @date		: 2023.07.26 
+     * @description	: MsgSentView.jsp에서 JSTL로 계산하는 것을 JAVA로 분리 
+     * @param msgCnt
+     * @param smsMsgCnt
+     * @param lmsMsgCnt
+     * @param mmsMsgCnt
+     * @return 
+     */
+    private MjonMsgSentCntVO getResultCntProc(List<MjonMsgSentVO> msgCnt) {
+//    	MjonMsgSentCntVO mjonSentCntVO = new MjonMsgSentCntVO();
+    	MjonMsgSentCntVO cntVO = new MjonMsgSentCntVO();
+    	
+
+		/*    	 
+		 * 전체 통계
+		 * */
+    	// 전체 대기 갯수
+    	cntVO.setWaitCnt(msgCnt.stream()
+    			.filter(f->"W".equals(f.getMsgResultSts()))
+    			.mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum());
+    	// 전체 성공 갯수
+    	cntVO.setSuccCnt(msgCnt.stream()
+    			.filter(f->"S".equals(f.getMsgResultSts()))
+    			.mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum());
+    	// 전체 실패 갯수
+    	cntVO.setFailCnt(msgCnt.stream()
+    			.filter(f->"F".equals(f.getMsgResultSts()))
+    			.mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum());
+
+    	// 전체 갯수 구하기
+    	cntVO.setTotCnt(cntVO.getWaitCnt() + cntVO.getSuccCnt() + cntVO.getFailCnt());
+
+    	
+		return cntVO;
+	}
+
+	/**
      * 발송관리 탭 리스트 화면 
      * @param searchVO
      * @param model
 
src/main/java/itn/let/mjo/reservmsg/service/MjonMsgReservCntVO.java (added)
+++ src/main/java/itn/let/mjo/reservmsg/service/MjonMsgReservCntVO.java
@@ -0,0 +1,56 @@
+package itn.let.mjo.reservmsg.service;
+
+import itn.let.uss.umt.service.UserDefaultVO;
+
+public class MjonMsgReservCntVO extends UserDefaultVO{
+
+	private static final long serialVersionUID = 1L;
+	
+
+	
+
+	// 각 통계별 총 건수 
+	public int totCnt;// 전체 건수 
+	
+	// 각 통계별 성공, 실패 건수 처리 
+	public int waitCnt;// 대기 건수 
+	public int succCnt;// 성공 건수 
+	public int failCnt;// 실패 건수 
+	public int cnclCnt;// 예약취소 건수
+	
+	
+	public int getTotCnt() {
+		return totCnt;
+	}
+	public void setTotCnt(int totCnt) {
+		this.totCnt = totCnt;
+	}
+	public int getWaitCnt() {
+		return waitCnt;
+	}
+	public void setWaitCnt(int waitCnt) {
+		this.waitCnt = waitCnt;
+	}
+	public int getSuccCnt() {
+		return succCnt;
+	}
+	public void setSuccCnt(int succCnt) {
+		this.succCnt = succCnt;
+	}
+	public int getFailCnt() {
+		return failCnt;
+	}
+	public void setFailCnt(int failCnt) {
+		this.failCnt = failCnt;
+	}
+	public int getCnclCnt() {
+		return cnclCnt;
+	}
+	public void setCnclCnt(int cnclCnt) {
+		this.cnclCnt = cnclCnt;
+	}
+
+
+	
+	
+}
src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java
--- src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java
+++ src/main/java/itn/let/mjo/reservmsg/service/MjonResvMsgVO.java
@@ -57,6 +57,8 @@
 	private int orderByCode;		// 문자타입 정렬번호
 	private String strReqDate;		// 문자열 타입 발송시간
 	
+	private String sendKind;		// 문자열 타입 발송시간
+	
 	public int getOrderByCode() {
 		return orderByCode;
 	}
@@ -297,4 +299,13 @@
 	public void setReserveYn(String reserveYn) {
 		this.reserveYn = reserveYn;
 	}
+	public String getSendKind() {
+		return sendKind;
+	}
+	public void setSendKind(String sendKind) {
+		this.sendKind = sendKind;
+	}
+	
+	
+	
 }
src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java
--- src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java
+++ src/main/java/itn/let/mjo/reservmsg/web/MjonReservMsgController.java
@@ -8,6 +8,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
+import java.util.stream.Collectors;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -42,6 +43,11 @@
 import itn.com.utl.fcc.service.EgovStringUtil;
 import itn.let.kakao.user.sent.service.KakaoSentService;
 import itn.let.kakao.user.sent.service.KakaoSentVO;
+import itn.let.mjo.apikey.service.ApiKeyMngService;
+import itn.let.mjo.apikey.service.ApiKeyVO;
+import itn.let.mjo.msgsent.service.MjonMsgSentCntVO;
+import itn.let.mjo.msgsent.service.MjonMsgSentVO;
+import itn.let.mjo.reservmsg.service.MjonMsgReservCntVO;
 import itn.let.mjo.reservmsg.service.MjonReservMsgService;
 import itn.let.mjo.reservmsg.service.MjonResvMsgVO;
 
@@ -63,6 +69,10 @@
     
     @Resource(name = "KakaoSentService")
 	private KakaoSentService kakaoSentService;
+	
+	//api key 정보
+	@Resource(name = "apiKeyMngService")
+    private ApiKeyMngService apiKeyMngService;
     
     
     private static final Logger logger = LoggerFactory.getLogger(MjonReservMsgController.class);
@@ -91,24 +101,77 @@
     	//전체 발송 건수 통계 불러오기
     	mjonResvMsgVO.setMsgType("");
     	List<MjonResvMsgVO> totalMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO);//mjonReservMsgService.selectTotalMsgCnt(mjonResvMsgVO);
+    	
+    	List<MjonResvMsgVO> H_totalMsgCnt = totalMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList());
+    	List<MjonResvMsgVO> A_totalMsgCnt = totalMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList());
+    	
     	model.addAttribute("totalMsgCnt", totalMsgCnt);
     	
     	//단문 성공건, 실패건 불러오기
     	mjonResvMsgVO.setMsgType("4");
     	List<MjonResvMsgVO> smsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO);
+
+    	List<MjonResvMsgVO> H_smsMsgCnt = smsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList());
+    	List<MjonResvMsgVO> A_smsMsgCnt = smsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList());
+    	
     	model.addAttribute("smsMsgCnt", smsMsgCnt);
     	
     	//장문 성공건, 실패건 불러오기
     	mjonResvMsgVO.setMsgType("6");
     	mjonResvMsgVO.setFileCnt("0");
     	List<MjonResvMsgVO> lmsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO);
+
+    	List<MjonResvMsgVO> H_lmsMsgCnt = lmsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList());
+    	List<MjonResvMsgVO> A_lmsMsgCnt = lmsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList());
     	model.addAttribute("lmsMsgCnt", lmsMsgCnt);
     	
     	//그림문자 성공건, 실패건 불러오기
     	mjonResvMsgVO.setMsgType("6");
     	mjonResvMsgVO.setFileCnt("1");
     	List<MjonResvMsgVO> mmsMsgCnt = mjonReservMsgService.selectDetailMsgCnt(mjonResvMsgVO);
+    	
+
+    	List<MjonResvMsgVO> H_mmsMsgCnt = mmsMsgCnt.stream().filter(t -> "H".equals(t.getSendKind())).collect(Collectors.toList());
+    	List<MjonResvMsgVO> A_mmsMsgCnt = mmsMsgCnt.stream().filter(t -> "A".equals(t.getSendKind())).collect(Collectors.toList());
     	model.addAttribute("mmsMsgCnt", mmsMsgCnt);
+
+    	
+
+    	/* 
+    	 * 홈페이지에서 보낸 데이터 LIST
+    	 * SEND_KIND = "H"
+    	 * */
+    	// 전체 영역
+    	model.addAttribute("H_allSentCntVO", this.getResultCntProc(H_totalMsgCnt));
+    	// 전체 단문(SMS)
+    	model.addAttribute("H_smsSentCntVO", this.getResultCntProc(H_smsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("H_lmsSentCntVO", this.getResultCntProc(H_lmsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("H_mmsSentCntVO", this.getResultCntProc(H_mmsMsgCnt));
+    	
+    	
+    	/* ==================================================================================== */
+    	
+    	
+    	/* 
+    	 * 홈페이지에서 보낸 데이터 LIST
+    	 * SEND_KIND = "A"
+    	 * */
+    	// 전체 영역
+    	model.addAttribute("A_allSentCntVO", this.getResultCntProc(A_totalMsgCnt));
+    	// 전체 단문(SMS)
+    	model.addAttribute("A_smsSentCntVO", this.getResultCntProc(A_smsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("A_lmsSentCntVO", this.getResultCntProc(A_lmsMsgCnt));
+    	// 전체 장문(LMS)
+    	model.addAttribute("A_mmsSentCntVO", this.getResultCntProc(A_mmsMsgCnt));
+
+    	ApiKeyVO apiKeyVO = new ApiKeyVO();
+    	apiKeyVO.setMberId(userId);
+		model.addAttribute("appMgmt", apiKeyMngService.selectMberApiKeyChk(apiKeyVO) > 0 ? true : false);
+    	
+//    	model.addAttribute("mmsMsgCnt", mmsMsgCnt);
     	
     	// 검색 리스트 불러오기
 		if(mjonResvMsgVO.getPageUnit() != 10) {
@@ -155,6 +218,52 @@
 		return "web/reservedmsg/ReservedMsgView";
 	}
 	
+	
+	
+    /** 
+     * @methodName	: getResultCntProc 
+     * @author		: 이호영
+     * @date		: 2023.07.26 
+     * @description	: MsgSentView.jsp에서 JSTL로 계산하는 것을 JAVA로 분리 
+     * @param msgCnt
+     * @param smsMsgCnt
+     * @param lmsMsgCnt
+     * @param mmsMsgCnt
+     * @return 
+     */
+    private MjonMsgReservCntVO getResultCntProc(List<MjonResvMsgVO> msgCnt) {
+//    	MjonMsgSentCntVO mjonSentCntVO = new MjonMsgSentCntVO();
+    	MjonMsgReservCntVO cntVO = new MjonMsgReservCntVO();
+    	
+
+		/*    	 
+		 * 전체 통계
+		 * */
+    	// 대기 갯수
+    	cntVO.setWaitCnt(msgCnt.stream()
+    			.filter(f->"W".equals(f.getMsgResultSts()))
+    			.mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum());
+    	// 성공 갯수
+    	cntVO.setSuccCnt(msgCnt.stream()
+    			.filter(f->"S".equals(f.getMsgResultSts()))
+    			.mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum());
+    	// 실패 갯수
+    	cntVO.setFailCnt(msgCnt.stream()
+    			.filter(f->"F".equals(f.getMsgResultSts()))
+    			.mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum());
+    	// 예약취소 갯수
+    	cntVO.setCnclCnt(msgCnt.stream()
+    			.filter(f->"C".equals(f.getMsgResultSts()))
+    			.mapToInt(t -> Integer.parseInt(t.getMsgResultCnt())).sum());
+
+    	// 전체 갯수 구하기
+    	cntVO.setTotCnt(cntVO.getWaitCnt() + cntVO.getSuccCnt() + cntVO.getFailCnt() + cntVO.getCnclCnt());
+
+    	
+		return cntVO;
+	}
+
+	
     /**
      * 예약관리 탭 리스트 화면 
      * @param searchVO
@@ -164,7 +273,7 @@
      */
 	@RequestMapping(value= {"/web/mjon/reservmsg/selectReservMsgListViewAjax.do"})
 	public String selectReservMsgListViewAjax(@ModelAttribute("searchVO") MjonResvMsgVO mjonResvMsgVO, ModelMap model) throws Exception{
-		
+
 		//로그인 권한정보 불러오기
     	LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
     	String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
src/main/java/itn/let/uat/uia/web/EgovLoginController.java
--- src/main/java/itn/let/uat/uia/web/EgovLoginController.java
+++ src/main/java/itn/let/uat/uia/web/EgovLoginController.java
@@ -585,6 +585,34 @@
 		ModelAndView modelAndView = new ModelAndView();
 		modelAndView.setViewName("jsonView");
 
+		//비밀번호 규칙성 검증 추가 - 취약점 조치
+		mberManageVO.setPassword(mberManageVO.getPassword().trim());
+		String passWord = mberManageVO.getPassword();
+		
+		if(passWord.length() < 8  || passWord.length() > 20) {
+			modelAndView.addObject("resultSts", "passWordFail");
+			return modelAndView;
+		}
+		
+        Pattern digitPattern = Pattern.compile("[0-9]");
+        Matcher digitMatcher = digitPattern.matcher(passWord);
+        boolean hasDigit = digitMatcher.find();
+
+        Pattern letterPattern = Pattern.compile("[a-zA-Z]");
+        Matcher letterMatcher = letterPattern.matcher(passWord);
+        boolean hasLetter = letterMatcher.find();
+
+        Pattern specialPattern = Pattern.compile("[`~!@@#$%^&*|\\\\'\";:/?]");
+        Matcher specialMatcher = specialPattern.matcher(passWord);
+        boolean hasSpecialCharacter = specialMatcher.find();
+        
+        
+		if(hasDigit == false || hasLetter == false || hasSpecialCharacter == false) {
+			modelAndView.addObject("resultSts", "passWordFail");
+			return modelAndView;
+		}
+		
+		
 		// 사업자등록증 업로드
 		List<FileVO> result = null;
 		String wAtchFileId = ""; //사업자등록증 첨부파일 ID 
@@ -3205,6 +3233,30 @@
 
 		try {
 			
+			//비밀번호 규칙성 검증 추가 - 취약점 조치
+			userManageVO.setPassword(userManageVO.getPassword().trim());
+			String passWord = userManageVO.getPassword();
+			
+	        Pattern digitPattern = Pattern.compile("[0-9]");
+	        Matcher digitMatcher = digitPattern.matcher(passWord);
+	        boolean hasDigit = digitMatcher.find();
+
+	        Pattern letterPattern = Pattern.compile("[a-zA-Z]");
+	        Matcher letterMatcher = letterPattern.matcher(passWord);
+	        boolean hasLetter = letterMatcher.find();
+
+	        Pattern specialPattern = Pattern.compile("[`~!@@#$%^&*|\\\\'\";:/?]");
+	        Matcher specialMatcher = specialPattern.matcher(passWord);
+	        boolean hasSpecialCharacter = specialMatcher.find();
+	        
+	        
+			if(hasDigit == false || hasLetter == false || hasSpecialCharacter == false || passWord.length() < 8  || passWord.length() > 20) {
+				modelAndView.addObject("pwRuleCheck", false);
+				return modelAndView;
+			}else {
+				modelAndView.addObject("pwRuleCheck", true);
+			}
+
 			// 해당 정보의 등록 페스워드 조회
 			int pwCheck = mberManageService.selectMberPWOverlapCheck(userManageVO);
 			
src/main/java/itn/let/uat/uia/web/EgovMypageController.java
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
@@ -1231,6 +1231,28 @@
 				return modelAndView;
 			}
 			
+			//비밀번호 규칙섬 검증 추가 - 취약점 조치
+			userManageVO.setPassword(userManageVO.getPassword().trim());
+			String passWord = userManageVO.getPassword();
+	        Pattern digitPattern = Pattern.compile("[0-9]");
+	        Matcher digitMatcher = digitPattern.matcher(passWord);
+	        boolean hasDigit = digitMatcher.find();
+
+	        Pattern letterPattern = Pattern.compile("[a-zA-Z]");
+	        Matcher letterMatcher = letterPattern.matcher(passWord);
+	        boolean hasLetter = letterMatcher.find();
+
+	        Pattern specialPattern = Pattern.compile("[`~!@@#$%^&*|\\\\'\";:/?]");
+	        Matcher specialMatcher = specialPattern.matcher(passWord);
+	        boolean hasSpecialCharacter = specialMatcher.find();
+			
+	        if(hasDigit == false || hasLetter == false || hasSpecialCharacter == false || passWord.length() < 8  || passWord.length() > 20) {
+				modelAndView.addObject("errType", "04");
+				modelAndView.addObject("message", "비밀번호 규칙을 확인해주세요.");
+				modelAndView.addObject("result", "fail");
+				return modelAndView;
+	        }
+			
 			userManageVO.setEmplyrId(loginVO.getId());
 			userManageService.updateUserPWAjax(userManageVO);
 			modelAndView.addObject("result", "success");
src/main/java/itn/let/uat/uia/web/EgovMypageRESTAPIController.java
--- src/main/java/itn/let/uat/uia/web/EgovMypageRESTAPIController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageRESTAPIController.java
@@ -195,7 +195,7 @@
 		
 		List<ApiKeyVO> resultList = new ArrayList<ApiKeyVO>();
 		resultList = apiKeyMngService.selectApiKeyApplyStatus(apiKeyVO);
-		
+		System.out.println("=============");
 		if (resultList.size()>0) {
 			model.addAttribute("apiVO", resultList.get(0));
 			
src/main/resources/egovframework/sqlmap/let/fax/Fax_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/fax/Fax_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/fax/Fax_SQL_Mysql.xml
@@ -773,7 +773,39 @@
 		ORDER BY 1=1
 	</select>
 	
-	
+	<!-- 팩스 금일/금월/금년 통계 -->
+	<select id="faxDAO.selectFaxSendThisSum" resultClass="faxGroupDataVO" parameterClass="faxGroupDataVO">
+	<![CDATA[
+		SELECT
+			DATE_FORMAT(NOW(), '%m-%d') AS successDay
+			, DATE_FORMAT(NOW(), '%c') AS successMonth
+			, DATE_FORMAT(NOW(), '%Y') AS successYear 		
+			, (SELECT 
+				FORMAT(IFNULL(SUM(C.SentEA*C.Page), 0), 0)
+			FROM PGI_FAXTRAN C
+			WHERE 1=1
+				AND C.ReqDate >= DATE_FORMAT(NOW(), '%Y-%m-%d')
+				AND C.ReqDate < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d')
+			) successCntDay
+			, (SELECT 
+				FORMAT(IFNULL(SUM(C.SentEA*C.Page), 0), 0)
+			FROM PGI_FAXTRAN C
+			WHERE 1=1
+				AND C.ReqDate >= CONCAT(DATE_FORMAT(NOW(), '%Y-%m'), '-01')
+				AND C.ReqDate < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d')
+			) successCntMonth
+			, (SELECT 
+				FORMAT(IFNULL(SUM(C.SentEA*C.Page), 0), 0)
+		FROM PGI_FAXTRAN C
+			WHERE 1=1
+				AND C.ReqDate >= CONCAT(DATE_FORMAT(NOW(), '%Y'), '-01-01')
+				AND C.ReqDate < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d')
+			) successCntYear
+		FROM DUAL
+		
+	]]>
+	</select>		
+		
 	<select id="faxDAO.selectBookMarkMsgList" parameterClass="mjonMsgDataVO" resultClass="egovMap">
 		
 		SELECT   ADDR_ID AS addrId,
src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/kakao/MjonKakaoATData_SQL_mysql.xml
@@ -1051,7 +1051,7 @@
 			, DATE_FORMAT(NOW(), '%c') AS successMonth
 			, DATE_FORMAT(NOW(), '%Y') AS successYear 		
 			, (SELECT 
-				FORMAT(COUNT(0), 0)
+				FORMAT(IFNULL(COUNT(0), 0), 0)
 			FROM MJ_MSG_DATA C
 			WHERE
 				C.RESERVE_C_YN = 'N'
@@ -1061,7 +1061,7 @@
 				AND C.SENT_DATE < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d')
 			) successCntDay
 			, (SELECT 
-				FORMAT(COUNT(0), 0)
+				FORMAT(IFNULL(COUNT(0), 0), 0)
 			FROM MJ_MSG_DATA C
 			WHERE
 				C.RESERVE_C_YN = 'N'
@@ -1071,7 +1071,7 @@
 				AND C.SENT_DATE < DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 DAY), '%Y-%m-%d')
 			) successCntMonth
 			, (SELECT 
-				FORMAT(COUNT(0), 0)
+				FORMAT(IFNULL(COUNT(0), 0), 0)
 		FROM MJ_MSG_DATA C
 			WHERE
 				C.RESERVE_C_YN = 'N'
src/main/resources/egovframework/sqlmap/let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml
--- src/main/resources/egovframework/sqlmap/let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/mjo/apikey/ApiKeyMng_SQL_Mysql.xml
@@ -84,6 +84,16 @@
   			</isEmpty>  			
 	        
     </select>    
+    <select id="ApiKeyMngDAO.selectMberApiKeyChk" parameterClass="apiKeyVO" resultClass="int">
+		SELECT
+			COUNT(*)
+		FROM lettngnrlmber_access_key b
+			, lettngnrlmber a
+		WHERE b.MBER_ID=a.MBER_ID
+  			AND (a.MBER_STTUS = 'Y' OR a.MBER_STTUS = 'B')
+			AND b.USE_YN = 'Y'
+			AND b.mber_id = #mberId#  
+    </select>    
 
 	<update id="ApiKeyMngDAO.deleteApiKey" parameterClass="apiKeyVO">
 		UPDATE lettngnrlmber_access_key 
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgResv_SQL_mysql.xml
@@ -41,6 +41,7 @@
 			, A0.RSLT_CODE							AS rsltCode
 			, A0.RSLT_CODE2							AS rsltCode2
 			, A0.AGENT_CODE							AS agentCode
+			, A0.SEND_KIND							AS sendKind
 		FROM
 			( SELECT
 				A.MSG_ID
@@ -48,6 +49,7 @@
 				, A.MSG_SEQ
 				, A.CUR_STATE
 				, A.SENT_DATE
+				, B.SEND_KIND
 				, (
 					CASE
 						WHEN A.RESERVE_C_YN = 'Y'
@@ -214,6 +216,7 @@
 		         AGENT_CODE AS agentCode,
 		         RESERVE_C_YN AS reserveCYn,
 		         CANCELDATE AS cancelDate,
+		         SEND_KIND as sendKind,
 				CASE
 					WHEN RESERVE_C_YN = 'Y'
 					THEN '예약취소'
@@ -253,7 +256,8 @@
 		                 MGD.CANCELDATE,
 		                 MD.CUR_STATE,
 		                 MD.RSLT_CODE,
-		                 MD.RSLT_CODE2
+		                 MD.RSLT_CODE2,
+						 MGD.SEND_KIND
 		         FROM    mj_msg_data MD
 		                 INNER JOIN MJ_MSG_GROUP_DATA MGD
 		                 ON      MD.MSG_GROUP_ID = MGD.MSG_GROUP_ID
@@ -322,6 +326,9 @@
 		 		    	AND 	 CALL_FROM = #searchKeyword#
 			 	    </isEqual>
 				</isNotEmpty>
+				<isNotEmpty property="searchCondition_01">
+					AND SEND_KIND = #searchCondition_01#
+				</isNotEmpty>
 				<isNotEmpty property="startDate">
 					<![CDATA[ 
 						AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgSent_SQL_mysql.xml
@@ -25,8 +25,8 @@
 			
             , sum(if(A0.tab1=0,0,1)) as filePath1		/*	단문여부	*/            
             , sum(if(A0.tab2=0,0,1)) as filePath2		/*	장문여부	*/
-            , sum(if(A0.tab3=0,0,1)) as filePath3		/*	그림여부	*/
-                 			
+            , sum(if(A0.tab3=0,0,1)) as filePath3		/*	그림여부	*/ 
+			, SEND_KIND as sendKind
 		FROM(
 			SELECT
 				A.MSG_ID
@@ -39,7 +39,7 @@
 				, A.RSLT_CODE2
 				, A.AGENT_CODE
 				, B.EACH_PRICE
-				
+				, B.SEND_KIND
                 , if (A.MSG_TYPE= '4' AND B.MSG_TYPE= '4'
                 	,'01','00') AS tab1
                 , if (A.MSG_TYPE= '6' AND B.MSG_TYPE= '6' AND B.FILE_CNT = '0'
@@ -264,6 +264,7 @@
 			, msgTypeName					 AS msgTypeName
 			, orderByCode					 AS orderByCode
 			, RESULT						 AS msgResult
+			, sendKind						 AS sendKind
 		FROM
 			( SELECT
 				B.USER_ID
@@ -287,6 +288,10 @@
 				, A.CUR_STATE
 				, A.RSLT_CODE
 				, A.RSLT_CODE2
+				, CASE
+					WHEN B.SEND_KIND = 'H' THEN 'WEB'
+					ELSE 'API'
+				END as sendKind
 				, CASE
 					WHEN B.MSG_TYPE = '6'
 						AND B.FILE_CNT > 0
@@ -394,6 +399,9 @@
 					AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
 				</isEqual>
 			</isNotEmpty>
+			<isNotEmpty property="searchCondition_01">
+				AND sendKind = #searchCondition_01#
+			</isNotEmpty>
 			<isNotEmpty property="startDate">
 				<![CDATA[ 
 					AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#startDate#, '%Y-%m-%d')
@@ -462,6 +470,7 @@
 			, CANCELDATE							 AS cancelDate
 			, MSG_ID								 AS msgId
 			, RESULT								 AS msgResult
+			, sendKind
 		FROM
 			(SELECT
 				MGD.USER_ID
@@ -487,6 +496,7 @@
 				, MD.CUR_STATE
 				, MD.RSLT_CODE
 				, MD.RSLT_CODE2
+				, CASE WHEN MGD.SEND_KIND = 'H' THEN 'WEB' ELSE 'API' END as sendKind
 				,(<include refid="MjonMsgSentDAO.selectAgentResultQuery_MD"/>) AS RESULT
 			FROM
 				mj_msg_data MD
 
src/main/webapp/WEB-INF/jsp/cmm/fms/EgovMberFileList.jsp (added)
+++ src/main/webapp/WEB-INF/jsp/cmm/fms/EgovMberFileList.jsp
@@ -0,0 +1,40 @@
+<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
+
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
+<%
+
+/**
+  * @Class Name : EgovFileList.jsp
+  * @Description : 파일 목록화면
+  * @Modification Information
+  * @
+  * @  수정일   	수정자		수정내용
+  * @ ----------	------		---------------------------
+  * @ 2009.03.26	이삼섭		최초 생성
+  * @ 2011.07.20	옥찬우		<Input> Tag id속성 추가( Line : 68 )
+  *
+  *  @author 공통서비스 개발팀 이삼섭
+  *  @since 2009.03.26
+  *  @version 1.0
+  *  @see
+  *
+  */
+%>
+
+<script type="text/javascript">
+
+	function fn_egov_downFile(atchFileId, fileSn){
+		window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>","hiddenframe");
+	}
+	
+</script>
+
+	<c:forEach var="fileVO" items="${fileList}" varStatus="status">					
+		<a href="javascript:fn_egov_downFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>')" class="fileName" title="다운로드"><img src="/publish/images/content/file_img2.png" alt="첨부파일"></a>
+	</c:forEach>
+
+<iframe width=0 height=0 name='hiddenframe' style='display:none;'></iframe>
+
src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovMberCmpHstListByType.jsp
--- src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovMberCmpHstListByType.jsp
+++ src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovMberCmpHstListByType.jsp
@@ -21,6 +21,38 @@
 
 });
 
+// PdfView
+function pdfViewPop(atchFileId,mberNm,bizNo,ceoNm,hstManagerNm,hstMbtlNum) {
+	document.pdfForm.atchFileId.value = atchFileId;
+	document.pdfForm.mberNm.value = mberNm;
+	document.pdfForm.bizNo.value = bizNo;
+	document.pdfForm.ceoNm.value = ceoNm;
+	document.pdfForm.hstManagerNm.value = hstManagerNm;
+	document.pdfForm.hstMbtlNum.value = hstMbtlNum;
+	document.pdfForm.fileSn.value = 0;
+	window.open("about:blank", 'taxListPopup', 'width=1020, height=800, top=100, left=0, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=no, location=no, scrollbars=yes');
+    document.pdfForm.action = "<c:url value='/uss/ion/msg/pdfView.do'/>";
+    document.pdfForm.target = "taxListPopup";
+    document.pdfForm.submit();	
+}
+
+// 첨부파일 PdfView
+function pdfViewPop2(atchFileId) {
+	$.ajax({
+        type: "POST",
+        url: "/uss/ion/msg/pdfViewAjax.do",
+        data: {"atchFileId" : atchFileId, "fileSn" : "0"},
+        dataType:'html',
+        async: true,
+        success: function (data) {
+        	alert(data);
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });	
+}	
+
 function fnChkAll() {
 	if($("#chkAll").is(':checked') ){
 	  $("input[name=chkSttusY]").prop("checked", true);
@@ -268,6 +300,16 @@
 </head>
 <body>
 
+<form name="pdfForm" action="<c:url value='/uss/ion/msg/pdfView.do'/>" method="post">
+	<input type="hidden" name="atchFileId"/>
+	<input type="hidden" name="fileSn"/>
+	<input type="hidden" name="mberNm"/>
+	<input type="hidden" name="bizNo"/>
+	<input type="hidden" name="ceoNm"/>
+	<input type="hidden" name="hstManagerNm"/>
+	<input type="hidden" name="hstMbtlNum"/>	
+</form>
+
 <form name="popupForm" action="<c:url value='/uss/umt/user/EgovMberCmpHstListPop.do'/>" method="post">
 	<input type="hidden" name="pageIndex" value="1"/>
 	<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
@@ -427,17 +469,25 @@
 		                            <c:if test="${result.bizType == item.code}"><c:out value="${fn:substring(item.codeNm,0,2)}"/></c:if>
 		                        </c:forEach>
 							</td>
-							<td><c:out value="${result.mberNm}"/></td>
+							<td>
+								<c:out value="${result.mberNm}"/>
+							</td>
 							<td><a href="https://www.bizno.net/article/${result.bizNo}" target="_blank"><c:out value="${result.bizNo}"/></a></td>
 							<td><c:out value="${result.ceoNm}"/></td>
 							<td><c:out value="${result.hstManagerNm}"/></td>
 							<td><c:out value="${result.hstMbtlNum}"/></td>
-				            <td class="td_file">		            	
+				            <td class="td_file" style="vertical-align:middle;">		            	
                                 <c:if test="${result.atchFileId ne '' || result.atchFileId ne null}">
 				            		<c:import url="/cmm/fms/selectAddrAgencyFileInfs.do" charEncoding="utf-8">
 										<c:param name="param_atchFileId" value="${result.atchFileId}" />
 									</c:import>	
 					            </c:if>
+					            <%-- 
+					            <!--/cmm/fms/selectMberFileInfs.do-->
+                                <c:if test="${result.atchFileId ne '' && result.atchFileId ne null}">
+									<button class="btnType btnType20" onclick="pdfViewPop('${result.atchFileId}','${result.mberNm}','${result.bizNo}','${result.ceoNm}','${result.hstManagerNm}','${result.hstMbtlNum}')" style="height:20px !important; padding:0 2px !important;">V</button>
+					            </c:if>
+					            --%>					            
 				            </td>							
 				            <td class="td_file">		            	
                                 <c:if test="${result.workAtchFileId ne '' || result.workAtchFileId ne null}">
@@ -445,6 +495,12 @@
 										<c:param name="param_atchFileId" value="${result.workAtchFileId}" />
 									</c:import>	
 					            </c:if>
+					            <%-- 
+					            <!--/cmm/fms/selectMberFileInfs.do-->
+                                <c:if test="${result.workAtchFileId ne '' && result.workAtchFileId ne null}">
+									<button class="btnType btnType20" onclick="pdfViewPop('${result.workAtchFileId}','${result.mberNm}','${result.bizNo}','${result.ceoNm}','${result.hstManagerNm}','${result.hstMbtlNum}')" style="height:20px !important; padding:0 2px !important;">V</button>
+					            </c:if>
+					            --%>					            
 				            </td>											            							
 							<td>
 		                        <c:forEach var="item" items="${hstTypeList}" varStatus="status">
src/main/webapp/WEB-INF/jsp/uss/ion/fax/faxAdmSendList.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/fax/faxAdmSendList.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/fax/faxAdmSendList.jsp
@@ -18,6 +18,9 @@
 
 	fn_init();
 	
+	//팩스 금일/금월/금년 통계
+	getFaxSendThisSum();
+	
 	$('.sort').click(function(){
 		/* 
 			내림차순 sortBtnDesc
@@ -117,7 +120,36 @@
 
 }
 
-
+//팩스 금일/금월/금년 통계
+function getFaxSendThisSum() {
+	$("#faxSendThisSumArea").html("");
+	
+	$.ajax({
+        type: "POST",
+        url: "/uss/ion/fax/selectFaxSendThisSumAjax.do",
+        data: {},
+        dataType:'json',
+        async: true,
+        success: function (data) {
+        	var jsonInfo = data.result;
+			if (data.isSuccess) {
+				try {
+					var sHtml = "";
+					sHtml = "(" + jsonInfo.successDay + " : " + jsonInfo.successCntDay + "건 / " + jsonInfo.successMonth + "월 누적 : " + jsonInfo.successCntMonth + "건 / " + jsonInfo.successYear + "년 누적 : " + jsonInfo.successCntYear + "건)";
+					$("#faxSendThisSumArea").html(sHtml);
+				} catch (error) {
+					  console.error(error);
+				}					
+			} 
+			else {
+				//alert("Msg : " + data.msg);
+			}
+		},
+        error: function (e) { 
+        	//alert("ERROR : " + JSON.stringify(e)); 
+        }
+    });	
+}	
 
 </script>
 <style>
@@ -193,7 +225,7 @@
 	
 				</div>
 				<div class="listTop">
-					<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건</p>
+					<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건<span id="faxSendThisSumArea"></span></p>
 					<div class="rightWrap">
 		<!-- 					<input type="button" class="excelBtn" onclick="javascript:sendMsgExcelDownload();"> -->
 						<!-- <input type="button" class="printBtn"> -->
src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfView.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfView.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfView.jsp
@@ -26,18 +26,59 @@
 <html lang="ko">
 
 <head>
+	<link rel="stylesheet" href="/pb/css/reset.css">
+	<link rel="stylesheet" href="/pb/css/common.css">
+	<link rel="stylesheet" href="/pb/css/content.css?date=202301160001">
+	<link rel="stylesheet" href="/pb/css/popup.css">
+
 	<script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
 	<script src="//mozilla.github.io/pdf.js/build/pdf.js"></script>
 </head>
 <body>
 
-<div>
-  <button id="prev">Previous</button>
-  <button id="next">Next</button>
-  &nbsp; &nbsp;
-  <span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>
-</div>
-<canvas id="the-canvas" name="the-canvas"></canvas>
+	<div class="pageCont" style="text-align: center; width: 1000px;">
+		<div class="tableWrap">
+			<table class="tbType1">
+				<colgroup>
+					<col style="width: *%">
+					<col style="width: 20%">
+					<col style="width: 20%">
+					<col style="width: 20%">
+					<col style="width: 20%">
+				</colgroup>
+				<thead>
+					<tr>
+						<th>기업명</th>
+						<th>사업자번호</th>
+						<th>대표자</th>
+						<th>담당자</th>
+						<th>휴대폰</th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr>
+						<td>${mberNm}</td>
+						<td>${bizNo}</td>
+						<td>${ceoNm}</td>
+						<td>${hstManagerNm}</td>
+						<td>${hstMbtlNum}</td>
+					</tr>
+				</tbody>
+			</table>	
+		</div>
+		
+		<canvas id="the-canvas" name="the-canvas" style="max-width: 1000px; margin-top: 25px; margin-bottom: 25px;"></canvas>
+	
+		<div>
+		  <button class="btnType" id="prev">Previous</button>
+		  &nbsp;<span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>&nbsp;
+		  <button class="btnType" id="next">Next</button>
+		  
+		  <div style="float: right; margin-right: 10px;"><button onclick="javascript:self.close()" class="btnType">CLOSE</button></div>
+		</div>
+		
+	</div>
+
 </body>
 </html>
 	<script type="text/javaScript" language="javascript">
src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp
--- src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp
+++ src/main/webapp/WEB-INF/jsp/web/api/appMgmt.jsp
@@ -4,6 +4,7 @@
 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
 <script language=javascript>
 $(document).ready(function(){
+	usrDeptChk();
 	
 });
 
@@ -39,7 +40,11 @@
 		   }
 		});		
 	}    
+	
+
+	
 }
+
 
 /* API KEY 실제 DB 삭제 - 임시 */
 function fn_delete_real(p_accessNo){
@@ -220,6 +225,8 @@
 }
 
 </script>
+
+
 <form id="checkForm" name="checkForm">
 	<input type="hidden" id="mberId" value="<c:out value="${mberId }" />" />
 </form>
src/main/webapp/WEB-INF/jsp/web/api/top_tepMenu.jsp
--- src/main/webapp/WEB-INF/jsp/web/api/top_tepMenu.jsp
+++ src/main/webapp/WEB-INF/jsp/web/api/top_tepMenu.jsp
@@ -7,31 +7,94 @@
 	
 	// 현재 url 추출
 	var url = window.location.pathname;
-// 	console.log(url);
 	// 현재 url에서 uri만 추출
 	var lastPart = url.split('/').pop();
-// 	console.log(lastPart);
+
+	
 	/*   
 	 * top 메뉴중 onclick에 있는 uri을 가져와
 	 * 현재 호출된 페이지와 uri와 비교해서 맞다면   
 	 * active로 활성화 시킴              
 	 */
     $('.tabType4 .tab').each(function(index) {
-        var onclickAttr = $(this).children("button").attr("onclick");
-//         console.log("Button " + (index + 1) + " onclick: " + onclickAttr);
-        if(onclickAttr.indexOf(lastPart) > -1){
+        var idAttr = $(this).children("button").attr("id");
+        idAttr += '.do';
+
+        if(idAttr.indexOf(lastPart) > -1){
         	$(this).addClass('active');
         }
     });
-	
+
+	// 페이지 이동 이벤트
+    $('.goPage').click(function(){
+    	// 신청/관리는 기업회원 체크해야함
+    	if($(this).attr('id') == 'appMgmt'){
+	    	// 기업회원 체크
+	    	if(usrDeptChk()){
+	    		location.href=$(this).data('info');
+	    	}
+    	}else{
+    		location.href=$(this).data('info');
+    	}
+    });
 });
 
+// 기업회원 체크
+function usrDeptChk(){
+	
+	var usrDept = '${LoginVO.dept}';
+		
+	//카카오 알림톡 기업회원 전용체크
+	if(usrDept != 'c'){
+		
+		//기업회원 전용 메세지 팝업 띄워주기
+		$('#btnDeptPop').click();
+		
+		return false;
+	}else{
+		return true;
+	}
+}
+
+// 튤팁에서 취소 클릭 시 이벤트
+function customPopup(){
+	// 현재 url 추출
+	var url = window.location.pathname;
+	// 현재 url에서 uri만 추출
+	var lastPart = url.split('/').pop();
+
+	// URL을 치고 들어왔을 경우 '문자 API소개' 페이지로 이동
+    if('appMgmt.do'.indexOf(lastPart) > -1){
+    	location.href='<c:url value="/web/api/intrdView.do" />';
+    }
+}
+
+
 </script>
-				
+		
+
+        <!-- 0724 기업회원 이동 팝업 -->
+        <div class="tooltip-wrap cvt_member_popup_wrap">
+            <div class="popup-com cvt_member_layer popup01" tabindex="0" data-tooltip-con="popup01" data-focus="popup01" data-focus-prev="popup01-close">
+            <div class="popup_heading">
+                <p>알림</p>
+                <button type="button" class="tooltip-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
+            </div>
+            <div class="layer_in">
+                <p>문자API서비스는 기업회원만 신청이 가능합니다.<br>기업회원 전환 페이지로 이동하시겠습니까?</p>
+                <div class="popup_btn_wrap2">
+                    <button type="button" onclick="location.href='<c:url value="/web/user/membershipChange.do" />'">확인</button>
+	               	<button type="button" class="tooltip-close" data-focus="popup01-close" data-focus-next="popup01">취소</button>
+                </div>
+            </div>
+            </div>
+        </div>
+        <!--// 0724 기업회원 이동 팝업 -->
+		<button type="button" id="btnDeptPop" data-tooltip="popup01" style="display: none;"></button>		
 		
 		<ul class="tabType4">
-			<li class="tab"><button type="button"  onclick="location.href='<c:url value="/web/api/intrdView.do" />'">문자 API소개</button></li>
-			<li class="tab"><button type="button" onclick="location.href='<c:url value="/web/api/apiSpec.do" />'">API 사용안내</button></li>
-			<li class="tab"><button type="button" onclick="location.href='<c:url value="/web/api/examDown.do" />'">예제 다운로드</button></li>
-			<li class="tab"><button type="button" onclick="location.href='<c:url value="/web/api/appMgmt.do" />'">신청/관리</button></li>
+			<li class="tab"><button type="button" class="goPage" id="intrdView" data-info="<c:url value="/web/api/intrdView.do" />">문자 API소개</button></li>
+			<li class="tab"><button type="button" class="goPage" id="apiSpec" data-info="<c:url value="/web/api/apiSpec.do" />">API 사용안내</button></li>
+			<li class="tab"><button type="button" class="goPage" id="examDown" data-info="<c:url value="/web/api/examDown.do" />">예제 다운로드</button></li>
+			<li class="tab"><button type="button" class="goPage" id="appMgmt" data-info="<c:url value="/web/api/appMgmt.do" />" >신청/관리</button></li>
 	    </ul>
src/main/webapp/WEB-INF/jsp/web/cop/bbs/EgovNoticeRegist.jsp
--- src/main/webapp/WEB-INF/jsp/web/cop/bbs/EgovNoticeRegist.jsp
+++ src/main/webapp/WEB-INF/jsp/web/cop/bbs/EgovNoticeRegist.jsp
@@ -18,6 +18,7 @@
 <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
 <%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator"%>
+<%@ taglib prefix="double-submit" uri="http://www.egovframe.go.kr/tags/double-submit/jsp" %>
 <%
 	pageContext.setAttribute("crlf", "\r\n");
 %>
@@ -74,6 +75,7 @@
 <input type="hidden" name="bbsId" value="<c:out value='${searchVO.bbsId}'/>" />
 </form:form>                
 <form:form commandName="board" name="board" method="post" enctype="multipart/form-data">
+<double-submit:preventer tokenKey="someKey" />
 <input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>" />
 <input type="hidden" name="searchCnd" value="<c:out value='${searchVO.searchCnd}'/>"/>
 <input type="hidden" name="searchWrd" value="<c:out value='${searchVO.searchWrd}'/>"/>
src/main/webapp/WEB-INF/jsp/web/cop/bbs/QnaList.jsp
--- src/main/webapp/WEB-INF/jsp/web/cop/bbs/QnaList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/cop/bbs/QnaList.jsp
@@ -138,7 +138,7 @@
                     <div>
                     <form name="searchForm" id="searchForm">
 			        	
-			        	<input type="text" name="bbsId" value="${boardMenuList[0].bbsId}">
+			        	<input type="hidden" name="bbsId" value="${boardMenuList[0].bbsId}">
 						<input type="hidden" name="nttId" value="0" />
 						<input type="hidden" name="seCmmnCdId" value="${searchVO.seCmmnCdId}">
 						<input type="hidden" name="frstRegisterId" value=""/>
src/main/webapp/WEB-INF/jsp/web/login/findUserPwResult.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/findUserPwResult.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/findUserPwResult.jsp
@@ -97,6 +97,10 @@
 		, dataType:'json'
 		, timeout:(1000*30)
 		, success:function(data){
+			if(data.pwRuleCheck == false){
+				alert("비밀번호 규칙을 확인해주세요.");
+				return;
+			}
 			if(data.pwCheck == false ){
 				alert("사용한 적 있는 비밀번호 입니다. 다른 비밀번호를 입력해주세요.");
 				return;
src/main/webapp/WEB-INF/jsp/web/login/usrInsertView.jsp
--- src/main/webapp/WEB-INF/jsp/web/login/usrInsertView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/usrInsertView.jsp
@@ -564,6 +564,10 @@
 						//저장완료 화면으로 이동하기
 						fnInsertJoin();
 						
+					}else if("passWordFail" == returnData.resultSts){
+						alert("비밀번호 규칙을 확인해주세요.");
+						return;
+						
 					}else{
 						
 						alert("회원가입에 실패 하였습니다.");	
src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentAllListAjax.jsp
@@ -104,6 +104,11 @@
 							<input type="button" class="sort sortBtn" id="sort_msgType">
 						</div>
 					</th>
+					<th>발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
+						</div>
+					</th>
 					<th>내용</th>
 					<th>받는사람
 						<div class="sort_wrap">
@@ -173,6 +178,9 @@
 								</p>
 							</td>
 							<td name="listTd">
+								<p>${resultAllSentList.sendKind }</p>
+							</td>
+							<td name="listTd">
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td name="listTd">
src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentCompleteListAjax.jsp
@@ -97,6 +97,11 @@
 							<input type="button" class="sort sortBtn" id="sort_msgType">
 						</div>
 					</th>
+					<th>발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
+						</div>
+					</th>
 					<th>내용</th>
 					<th>받는사람
 						<div class="sort_wrap">
@@ -165,6 +170,9 @@
 								</p>
 							</td>
 							<td>
+								${resultAllSentList.sendKind }
+							</td>
+							<td>
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td>
src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentFailListAjax.jsp
@@ -95,6 +95,11 @@
 							<input type="button" class="sort sortBtn" id="sort_orderByCode">
 						</div>
 					</th>
+					<th>발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
+						</div>
+					</th>
 					<th>내용</th>
 					<th>받는사람
 						<div class="sort_wrap">
@@ -153,6 +158,9 @@
 								</p>
 							</td>
 							<td>
+								${resultAllSentList.sendKind }
+							</td>
+							<td>
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td>
src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentReadyListAjax.jsp
@@ -97,6 +97,11 @@
 							<input type="button" class="sort sortBtn" id="sort_msgType">
 						</div>
 					</th>
+					<th>발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
+						</div>
+					</th>
 					<th>내용</th>
 					<th>받는사람
 						<div class="sort_wrap">
@@ -165,6 +170,9 @@
 								</p>
 							</td>
 							<td>
+								${resultAllSentList.sendKind }
+							</td>
+							<td>
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllSentList.msgGroupId}','${resultAllSentList.msgId}','${resultAllSentList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td>
src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp
--- src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/msgsent/MsgSentView.jsp
@@ -374,15 +374,15 @@
 			url = "/web/mjon/msgsent/deleteAddrNoDataAjax.do";
 			
 			$.ajax({
-		        type: "POST",
-		        url: url,
-		        data: data,
-		        dataType:'json',
-		        async: false,
-		        processData: false,
-		        contentType: false,
-		        cache: false,
-		        success: function (returnData, status) {
+				type: "POST",
+				url: url,
+				data: data,
+				dataType:'json',
+				async: false,
+				processData: false,
+				contentType: false,
+				cache: false,
+				success: function (returnData, status) {
 					if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
 						if("fail"==returnData.result){
 							
@@ -410,8 +410,8 @@
 						alert(returnData.message);
 					}
 				},
-		        error: function (e) { alert("주소록 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
-		    });
+				error: function (e) { alert("주소록 삭제에 실패하였습니다."); console.log("ERROR : ", e); }
+			});
 			
 		}
 		
@@ -456,15 +456,15 @@
 			url = "/web/mjon/msgsent/insertAddBlockNoDataAjax.do";
 			
 			$.ajax({
-		        type: "POST",
-		        url: url,
-		        data: data,
-		        dataType:'json',
-		        async: false,
-		        processData: false,
-		        contentType: false,
-		        cache: false,
-		        success: function (returnData, status) {
+				type: "POST",
+				url: url,
+				data: data,
+				dataType:'json',
+				async: false,
+				processData: false,
+				contentType: false,
+				cache: false,
+				success: function (returnData, status) {
 					if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
 						if("fail"==returnData.result){
 							
@@ -492,8 +492,8 @@
 						alert(returnData.message);
 					}
 				},
-		        error: function (e) { alert("수신거부번호 등록에 실패하였습니다."); console.log("ERROR : ", e); }
-		    });
+				error: function (e) { alert("수신거부번호 등록에 실패하였습니다."); console.log("ERROR : ", e); }
+			});
 			
 		//}
 		
@@ -541,35 +541,35 @@
 	form.resultType.value = resultType;
 	
 	//만들려는 팝업의 크기
-    var popup_wid = '1280';
-    var popup_ht = '700';
+	var popup_wid = '1280';
+	var popup_ht = '700';
 
-    var popup_left = (window.screen.width / 2) - (popup_wid / 2);
-    var popup_top =(window.screen.height / 2) - (popup_ht / 2);
+	var popup_left = (window.screen.width / 2) - (popup_wid / 2);
+	var popup_top =(window.screen.height / 2) - (popup_ht / 2);
 
-    $("#resPopForm").attr("target","msgSFDetailPop");
-    
-    window.open('', 'msgSFDetailPop', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top );
-    $("#resPopForm").attr({"action":"/web/mjon/msgsent/selectMsgSFDetailListAjax.do", "method":"post"}).submit();
+	$("#resPopForm").attr("target","msgSFDetailPop");
+	
+	window.open('', 'msgSFDetailPop', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top );
+	$("#resPopForm").attr({"action":"/web/mjon/msgsent/selectMsgSFDetailListAjax.do", "method":"post"}).submit();
 	
 }
 
 
 /* 사용내역서 클릭 시 내역서 새창 팝업 오픈  */
 function fnShowPrintPopup(tabType, type) { 
-    //만들려는 팝업의 크기
-    var popup_wid = '840';
-    var popup_ht = '900';
+	//만들려는 팝업의 크기
+	var popup_wid = '840';
+	var popup_ht = '900';
 
-    var popup_left = (window.screen.width / 2) - (popup_wid / 2);
-    var popup_top =(window.screen.height / 2) - (popup_ht / 2);
+	var popup_left = (window.screen.width / 2) - (popup_wid / 2);
+	var popup_top =(window.screen.height / 2) - (popup_ht / 2);
 
-    $("#tabType").val(tabType);
-    $("#searchForm").attr("target","msgSentPrint");
-    
-    window.open('', 'msgSentPrint', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top +',scrollbars=1');
-    $("#searchForm").attr({"action":"/web/mjon/msgsent/printMsgSentDataAjax.do", "method":"post"}).submit();
-    
+	$("#tabType").val(tabType);
+	$("#searchForm").attr("target","msgSentPrint");
+	
+	window.open('', 'msgSentPrint', 'width='+ popup_wid +', height='+ popup_ht +', left=' + popup_left + ', top='+ popup_top +',scrollbars=1');
+	$("#searchForm").attr({"action":"/web/mjon/msgsent/printMsgSentDataAjax.do", "method":"post"}).submit();
+	
 }
 
 function addrGroupDuplCnt() {
@@ -582,15 +582,15 @@
 	var url = "/web/addr/selectDuplAddrGroupNameAjax.do";
 	
 	$.ajax({
-        async: false,
+		async: false,
 		type: "post",
-        url: url,
-        data: data,
-        dataType:"JSON",
+		url: url,
+		data: data,
+		dataType:"JSON",
 //          contentType: false,
 //      	 processData: false,
-        cache: false,
-        success: function (returnData, status) {
+		cache: false,
+		success: function (returnData, status) {
 			if("dupl"==returnData.result1) {
 				flag = false;
 			}
@@ -646,15 +646,15 @@
 			url = "/web/mjon/msgsent/insertAddAddrGrpDataAjax.do";
 			
 			$.ajax({
-		        type: "POST",
-		        url: url,
-		        data: data,
-		        dataType:'json',
-		        async: false,
-		        processData: false,
-		        contentType: false,
-		        cache: false,
-		        success: function (returnData, status) {
+				type: "POST",
+				url: url,
+				data: data,
+				dataType:'json',
+				async: false,
+				processData: false,
+				contentType: false,
+				cache: false,
+				success: function (returnData, status) {
 					if(status == 'success'){ // status 확인 필요한가. 석세스 안뜨면 에러 가지 않나
 						if("fail"==returnData.result){
 							
@@ -684,8 +684,8 @@
 						alert(returnData.message);
 					}
 				},
-		        error: function (e) { alert("주소록 등록에 실패하였습니다."); console.log("ERROR : ", e); }
-		    });
+				error: function (e) { alert("주소록 등록에 실패하였습니다."); console.log("ERROR : ", e); }
+			});
 	}else{
 		
 		alert("등록할 문자를 선택해 주세요.");
@@ -713,9 +713,9 @@
 				<button type="button" class="tooltip-close" data-focus="rev_popup01-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
 			</div>
 			<div class="layer_in" id="msgSentDetailPopLoad">
-                <div class="popup_btn_wrap2" style="justify-content: center;">
-                    <button type="button" class="tooltip-close" data-focus="rev_popup01-close" data-focus-next="rev_popup01">닫기</button>                      
-                </div>
+				<div class="popup_btn_wrap2" style="justify-content: center;">
+					<button type="button" class="tooltip-close" data-focus="rev_popup01-close" data-focus-next="rev_popup01">닫기</button>                      
+				</div>
 			</div>
 		</div>
 	</div><!--// 문자내용 팝업 -->
@@ -730,12 +730,12 @@
 				<div class="gorup_join_cont">
 					<p class="adr_pop_title">선택된 발송내역 전화번호를 그룹으로 등록합니다.</p>
 					<div class="group_input" style="margin-top: 0;">
-                        <div class="input_left">그룹이름</div>
-                        <div class="input_right">
-                            <label for="grpNm" class="label">새 그룹명 입력</label>
-                            <input type="text" id="grpNm" name="grpNm" placeholder="새 그룹명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력'" class="inputLight">
-                        </div>
-                    </div>
+						<div class="input_left">그룹이름</div>
+						<div class="input_right">
+							<label for="grpNm" class="label">새 그룹명 입력</label>
+							<input type="text" id="grpNm" name="grpNm" placeholder="새 그룹명 입력" onfocus="this.placeholder=''" onblur="this.placeholder='새 그룹명 입력'" class="inputLight">
+						</div>
+					</div>
 					<div class="popup_btn_wrap2">
 						<button type="button" onclick="javascript:fnAddAddrNo(); return false;">저장</button>
 						<button type="button" class="tooltip-close" data-focus="rev_popup02-close" data-focus-next="rev_popup02">취소</button>                      
@@ -744,314 +744,295 @@
 			</div>
 		</div>
 	</div>
-    <div class="inner">
-        <!-- send top -->
-        <div class="send_top">
+	<div class="inner">
+		<!-- send top -->
+		<div class="send_top">
 		<!-- 결제관리 - 요금 사용내역 -->
-            <div class="rev_admin_cont serv_content current">
-                <div class="heading">
-                    <h2>발송결과</h2>
-                    <button type="button" class="button info" onclick="infoPop('selectMsgSentView');">사용안내</button>
-                    <button type="button" class="button junk" data-tooltip="popupJunk">통신사 스팸규격안내</button>
-                </div>
+			<div class="rev_admin_cont serv_content current">
+				<div class="heading">
+					<h2>발송결과</h2>
+					<button type="button" class="button info" onclick="infoPop('selectMsgSentView');">사용안내</button>
+					<button type="button" class="button junk" data-tooltip="popupJunk">통신사 스팸규격안내</button>
+				</div>
 					<!-- tab button -->
-                <div class="pay_tab_wrap">
+				<div class="pay_tab_wrap">
 					<%@include file="/WEB-INF/jsp/web/kakao/include/KakaoSentTopMentTap.jsp" %>
 				</div>
 					<!--// tab button -->
-                <%--<div class="titBox type1">
-                    <p>- 보낸결과는 이동통신사의 결과값을 기반으로 표시되며, 최대 6개월간의 발송내역만 확인하실 수 있습니다.</p>
-                    <p>- 전송내역이 필요한 경우 기간(6개월) 내에 다운로드하여 주시기 바랍니다.</p>
-                    <p>- 보낸결과는 이동통신사 및 수신자 등의 사정으로 발송이 지연된 경우 결과가 다소 늦게 확인될 수 있습니다.</p>
-                    <p>- 받는사람 기준으로 전송건별(묶음), 개인별(건) 상세조회가 가능합니다.</p>
-                    <p>- 단문문자는 최대 24시간, 장문 및 그림문자는 최대 72시간까지 결과값이 수신되지 않은 경우 실패(비과금) 처리됩니다.</p>
-                    <p>- 정상 수신인데도 불구하고 문자를 받지 못한 경우에는 “이통사별스팸차단서비스(버튼)” 안내를 확인하시기 바랍니다.</p>
-                    <p>- 발송건 전체가 오류 처리되는 경우 번호도용 차단서비스에 가입되어 있을 수 있습니다. “번호도용 차단서비스(버튼)” 안내를 참고하시기 바랍니다.</p>
-                    <p>- 보낸결과는 삭제 시 복구가 불가하오니 반드시 유의하시기 바랍니다.</p>
-                    <div class="btnWrap type1">
-                        <button type="button" data-tooltip="popupJunk" class="tab1">정상수신인데 못받은 경우<span>(통신사별 스팸차단서비스)</span></button>
-                        <button type="button" data-tooltip="popupJunk" class="tab2">발송내용이 전체오류가 나는 경우<span>(통신사별 스팸차단서비스)</span></button>
-                    </div>
-                </div>--%>
-                <form id="searchForm" name="searchForm" method="post">
-	                <input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
-	                <input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/>
-	                <input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
+				<%--<div class="titBox type1">
+					<p>- 보낸결과는 이동통신사의 결과값을 기반으로 표시되며, 최대 6개월간의 발송내역만 확인하실 수 있습니다.</p>
+					<p>- 전송내역이 필요한 경우 기간(6개월) 내에 다운로드하여 주시기 바랍니다.</p>
+					<p>- 보낸결과는 이동통신사 및 수신자 등의 사정으로 발송이 지연된 경우 결과가 다소 늦게 확인될 수 있습니다.</p>
+					<p>- 받는사람 기준으로 전송건별(묶음), 개인별(건) 상세조회가 가능합니다.</p>
+					<p>- 단문문자는 최대 24시간, 장문 및 그림문자는 최대 72시간까지 결과값이 수신되지 않은 경우 실패(비과금) 처리됩니다.</p>
+					<p>- 정상 수신인데도 불구하고 문자를 받지 못한 경우에는 “이통사별스팸차단서비스(버튼)” 안내를 확인하시기 바랍니다.</p>
+					<p>- 발송건 전체가 오류 처리되는 경우 번호도용 차단서비스에 가입되어 있을 수 있습니다. “번호도용 차단서비스(버튼)” 안내를 참고하시기 바랍니다.</p>
+					<p>- 보낸결과는 삭제 시 복구가 불가하오니 반드시 유의하시기 바랍니다.</p>
+					<div class="btnWrap type1">
+						<button type="button" data-tooltip="popupJunk" class="tab1">정상수신인데 못받은 경우<span>(통신사별 스팸차단서비스)</span></button>
+						<button type="button" data-tooltip="popupJunk" class="tab2">발송내용이 전체오류가 나는 경우<span>(통신사별 스팸차단서비스)</span></button>
+					</div>
+				</div>--%>
+				<form id="searchForm" name="searchForm" method="post">
+					<input type="hidden" id="pageIndex" name="pageIndex" value="1"/>
+					<input type="hidden" id="msgGroupIdList" name="msgGroupIdList" value=""/>
+					<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
 					<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
 					<input type="hidden" id="tabType" name="tabType" value="all"/><!-- 탭 종류 -->
 					<input type="hidden" id="stateType" name="stateType" value="all"/><!-- 발송상태 종류 -->
 					<input type="hidden" id="listType" name="listType" value="groupList"/><!-- 리스트 종류 -->
 					<input type="hidden" id="addrGrpNm" name="addrGrpNm" value=""/><!-- 주소록 그룹 이름 -->
 					<input type="hidden" id="mberId" name="mberId" value="${LoginVO.id}"/><!-- 주소록 그룹 이름 -->
-                
-                <!-- 각 통계별 총 건수 -->
-                <c:set var="totAllCnt" value="0"/><!-- 전체 건수 -->
-                <c:set var="totSmsCnt" value="0"/><!-- 단문 건수 -->
-                <c:set var="totLmsCnt" value="0"/><!-- 장문 건수 -->
-                <c:set var="totMmsCnt" value="0"/><!-- 그림 건수 -->
-                
-                <!-- 각 통계별 성공, 실패 건수 처리 -->
-                <c:set var="waitAllCnt" value="0"/><!-- 전체 대기 건수 -->
-                <c:set var="succAllCnt" value="0"/><!-- 전체 성공 건수 -->
-                <c:set var="failAllCnt" value="0"/><!-- 전체 실패 건수 -->
-                <c:set var="waitSmsCnt" value="0"/><!-- 단문 대기 건수 -->
-                <c:set var="succSmsCnt" value="0"/><!-- 단문 성공 건수 -->
-                <c:set var="failSmsCnt" value="0"/><!-- 단문 실패 건수 -->
-                <c:set var="waitLmsCnt" value="0"/><!-- 장문 대기 건수 -->
-                <c:set var="succLmsCnt" value="0"/><!-- 장문 성공 건수 -->
-                <c:set var="failLmsCnt" value="0"/><!-- 장문 실패 건수 -->
-                <c:set var="waitMmsCnt" value="0"/><!-- 그림 대기 건수 -->
-                <c:set var="succMmsCnt" value="0"/><!-- 그림 성공 건수 -->
-                <c:set var="failMmsCnt" value="0"/><!-- 그림 실패 건수 -->
-                <!-- 발송대기 건수가 있으면 이것도 발송 실패건수로 일단 집계한다. -->
-                <c:forEach var="totalMsgCnt" items="${totalMsgCnt}" varStatus="status">
-                	
-                	<!-- 전체 갯수 구하기 -->
-                	<c:set var="totAllCnt" value="${totAllCnt + totalMsgCnt.msgResultCnt}"/>
-                		
-                	<!-- 전체 대기 갯수 -->
-                	<c:if test="${totalMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitAllCnt" value="${waitAllCnt + totalMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 전체 성공 갯수 -->
-                	<c:if test="${totalMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succAllCnt" value="${succAllCnt + totalMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 전체 실패 갯수 -->
-                	<c:if test="${totalMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failAllCnt" value="${failAllCnt + totalMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <!-- 단문 처리 -->
-                <c:forEach var="smsMsgCnt" items="${smsMsgCnt}" varStatus="status">
-                	
-                	<!-- 단문 전체 갯수 구하기 -->
-                	<c:set var="totSmsCnt" value="${totSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	
-                	<!-- 단문 대기 갯수 구하기 -->
-                	<c:if test="${smsMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitSmsCnt" value="${waitSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 단문 성공 갯수 구하기 -->
-                	<c:if test="${smsMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succSmsCnt" value="${succSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 단문 실패 갯수 구하기 -->
-                	<c:if test="${smsMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failSmsCnt" value="${failSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <!-- 장문 처리 -->
-                <c:forEach var="lmsMsgCnt" items="${lmsMsgCnt}" varStatus="status">
-                	
-                	<!-- 장문 전체 갯수 구하기 -->
-                	<c:set var="totLmsCnt" value="${totLmsCnt + lmsMsgCnt.msgResultCnt}"/>
-                	
-                	<!-- 장문 대기 갯수 구하기 -->
-                	<c:if test="${lmsMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitLmsCnt" value="${waitLmsCnt + lmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 장문 성공 갯수 구하기 -->
-                	<c:if test="${lmsMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succLmsCnt" value="${succLmsCnt + lmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 장문 실패 갯수 구하기 -->
-                	<c:if test="${lmsMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failLmsCnt" value="${failLmsCnt + lmsMsgCnt.msgResultCnt}"/>	
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <!-- 그림 처리 -->
-                <c:forEach var="mmsMsgCnt" items="${mmsMsgCnt}" varStatus="status">
-                
-                	<!-- 그림 전체 갯수 구하기 -->
-                	<c:set var="totMmsCnt" value="${totMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	
-                	<!-- 그림 대기 갯수 구하기 -->
-                	<c:if test="${mmsMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitMmsCnt" value="${waitMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 그림 성공 갯수 구하기 -->
-                	<c:if test="${mmsMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succMmsCnt" value="${succMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-
-                	<!-- 그림 실패 갯수 구하기 -->
-                	<c:if test="${mmsMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failMmsCnt" value="${failMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <div class="rev_admin">
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>전체</p>
-                            <p><span><fmt:formatNumber value="${totAllCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitAllCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succAllCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failAllCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>단문(SMS)</p>
-                            <p><span><fmt:formatNumber value="${totSmsCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitSmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succSmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failSmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>장문(LMS)</p>
-                            <p><span><fmt:formatNumber value="${totLmsCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitLmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succLmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failLmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>그림(MMS)</p>
-                            <p><span><fmt:formatNumber value="${totMmsCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitMmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succMmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failMmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                </div>
-                <div class="excel_middle">
-                    <div class="select_btnWrap clearfix">
-                        <div class="btn_left">
-                            <span class="cal_label">기간선택</span>
-                            <div class="calendar_wrap">
-                                <input type="text" class="startDate inp calendar" title="검색 시작일" id="startDate" name="startDate" value="<c:out value='${mjonMsgSentVO.startDate}'/>" data-datecontrol="true">
-                                <span class="dateEtc">~</span>
-                                <input type="text" class="endDate inp calendar" title="검색 종료일" id="endDate" name="endDate" value="<c:out value='${mjonMsgSentVO.endDate}'/>" data-datecontrol="true">
-                            </div>
-                            <!-- <button type="button">전월</button>
-                            <button type="button">당월</button> -->
-                            <button type="button" onclick="setCalVal(lastfulstday,'startDate');setCalVal( lastfuledday,'endDate'); return false;"  class="btnType btnType19">전월</button>
-							<button type="button" onclick="setCalVal(thisfulstlday,'startDate');setCalVal( thisfuledtlday,'endDate'); return false;"  class="btnType btnType19">당월</button>
-                            <!-- <button type="button">3개월</button> -->
-                            <button type="button" onclick="setCalVal(threefulstday,'startDate');setCalVal( threefuledday,'endDate'); return false;"  class="btnType btnType19">3개월</button>
-                            <button type="button" class="btnType6" onClick="javascript:fnSearch(1); return false;">조회</button>
-                        </div>
-                        <div class="btn_right">
-                            <%-- <label for="searchMsgType" class="label">문자형태 선택 == ${mjonMsgSentVO.searchMsgType}</label>
-                            <select name="searchMsgType" id="searchMsgType" class="selType2">
-                            	<option value="">전체</option>
-                                <option value="S" <c:if test="${mjonMsgSentVO.searchMsgType == 'S'}">selected</c:if> >단문</option>
-                                <option value="L" <c:if test="${mjonMsgSentVO.searchMsgType == 'L'}">selected</c:if> >장문</option>
-                                <option value="M" <c:if test="${mjonMsgSentVO.searchMsgType == 'M'}">selected</c:if> >그림</option>
-                            </select> --%>
-                            
-                            <label for="searchCondition" class="label">발신번호 선택 == ${mjonMsgSentVO.searchCondition}</label>
-                            <select name="searchCondition" id="searchCondition" class="selType2">
-                                <option value="2" <c:if test="${mjonMsgSentVO.searchCondition == '2'}">selected</c:if> >발신번호</option>
-                                <option value="3" <c:if test="${mjonMsgSentVO.searchCondition == '3'}">selected</c:if> >수신번호</option>
-                            </select>
-                            <div class="search">
-                                <label for="id" class="label"></label>
-                                <input type="text" id="searchKeyword" name="searchKeyword" value="<c:out value='${searchKeyword}'/>" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'">
-                                <button type="button" class="btnType btnType2" onClick="javascript:fnSearch(1); return false;">검색</button>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="list_tab_wrap2 type4">
-                    <!-- tab button -->
-                    <ul class="list_tab">
-                        <li class="tab active"><button type="button" onclick="fnTabLoad('',0); return false;">전체</button></li>
-                        <li class="tab"><button type="button" onclick="fnTabLoad('S',1); return false;">단문(SMS)</button></li>
-                        <li class="tab"><button type="button" onclick="fnTabLoad('L',2); return false;">장문(LMS)</button></li>
-                        <li class="tab"><button type="button" onclick="fnTabLoad('M',3); return false;">그림(MMS)</button></li>
-                    </ul><!--// tab button -->
-                </div>
-                <!-- 예약관리 > 전체 -->
-	                <div class="price_history_cont current" id="listTab_2">
-	                    <!-- tab button -->
-	                    <div class="table_tab_wrap">
-	                        <ul>
-	                            <li class="tab active">
-	                            <button type="button" onclick="fnListLoad('all','0'); return false;">전체</button></li>
-	                            <li class="tab"><button type="button" onclick="fnListLoad('ready','1'); return false;">결과대기</button></li>
-	                            <li class="tab"><button type="button" onclick="fnListLoad('complete','2'); return false;">정상수신</button></li>
-	                            <li class="tab"><button type="button" onclick="fnListLoad('fail','3'); return false;">수신오류</button></li>
-	                        </ul><!--// tab button -->
-	                        <div class="tab_depth1">
-                                <a href="#none" class="on msgGgoupList">받는사람(전송건별)</a>
-                                <a href="#none" style="display: none;"></a>
-                                <a href="#none" class="msgPrivateList">받는사람(개인별)</a>
-                                <div class="on_active">받는사람(전송건별)</div>
-                            </div>
-	                    </div>
-	                    <!-- 발송관리 리스트 -->
-						<div class="table_cont current msgSentAllLoad" id="tableCont_1">
-						</div><!-- //전체 종료 -->
-						<!-- table -->
+				
+				
+					<div class="rev_content" id="tab5_1">
+						<div class="rev_admin">
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>전체</p>
+									<c:set var="allTotal" value="${H_allSentCntVO.totCnt + A_allSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${allTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top">WEB<span class="title_num"><fmt:formatNumber value="${H_allSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_allSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_allSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_allSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top">API<span class="title_num"><fmt:formatNumber value="${A_allSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_allSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_allSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_allSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>단문(SMS)</p>
+									<c:set var="smsTotal" value="${H_smsSentCntVO.totCnt + A_smsSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${smsTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top">WEB<span class="title_num"><fmt:formatNumber value="${H_smsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_smsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_smsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_smsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top">API<span class="title_num"><fmt:formatNumber value="${A_smsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_smsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_smsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_smsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>장문(LMS)</p>
+									<c:set var="lmsTotal" value="${H_lmsSentCntVO.totCnt + A_lmsSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${lmsTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top">WEB<span class="title_num"><fmt:formatNumber value="${H_lmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_lmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_lmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_lmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top">API<span class="title_num"><fmt:formatNumber value="${A_lmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_lmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_lmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_lmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>그림(MMS)</p>
+									<c:set var="mmsTotal" value="${H_mmsSentCntVO.totCnt + A_mmsSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${mmsTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top">WEB<span class="title_num"><fmt:formatNumber value="${H_mmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_mmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_mmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_mmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top">API<span class="title_num"><fmt:formatNumber value="${A_mmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_mmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_mmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_mmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+						</div>
+						
+						
+						
+						
+						
+						<div class="excel_middle">
+							<div class="select_btnWrap clearfix">
+								<div class="btn_left">
+									<span class="cal_label">기간선택</span>
+									<div class="calendar_wrap">
+										<input type="text" class="startDate inp calendar" title="검색 시작일" id="startDate" name="startDate" value="<c:out value='${mjonMsgSentVO.startDate}'/>" data-datecontrol="true">
+										<span class="dateEtc">~</span>
+										<input type="text" class="endDate inp calendar" title="검색 종료일" id="endDate" name="endDate" value="<c:out value='${mjonMsgSentVO.endDate}'/>" data-datecontrol="true">
+									</div>
+									<!-- <button type="button">전월</button>
+									<button type="button">당월</button> -->
+									<button type="button" onclick="setCalVal(lastfulstday,'startDate');setCalVal( lastfuledday,'endDate'); return false;"  class="btnType btnType19">전월</button>
+									<button type="button" onclick="setCalVal(thisfulstlday,'startDate');setCalVal( thisfuledtlday,'endDate'); return false;"  class="btnType btnType19">당월</button>
+									<!-- <button type="button">3개월</button> -->
+									<button type="button" onclick="setCalVal(threefulstday,'startDate');setCalVal( threefuledday,'endDate'); return false;"  class="btnType btnType19">3개월</button>
+									<button type="button" class="btnType6" onClick="javascript:fnSearch(1); return false;">조회</button>
+								</div>
+								<div class="btn_right">
+									<%-- <label for="searchMsgType" class="label">문자형태 선택 == ${mjonMsgSentVO.searchMsgType}</label>
+									<select name="searchMsgType" id="searchMsgType" class="selType2">
+										<option value="">전체</option>
+										<option value="S" <c:if test="${mjonMsgSentVO.searchMsgType == 'S'}">selected</c:if> >단문</option>
+										<option value="L" <c:if test="${mjonMsgSentVO.searchMsgType == 'L'}">selected</c:if> >장문</option>
+										<option value="M" <c:if test="${mjonMsgSentVO.searchMsgType == 'M'}">selected</c:if> >그림</option>
+									</select> --%>
+									
+									<c:if test="${appMgmt }">
+									<label for="searchCondition_01" class="label">발신방식 == ${mjonMsgSentVO.searchCondition}</label>
+										<select name="searchCondition_01" id="searchCondition_01" class="selType2 select_all_btn">
+											<option value="" <c:if test="${empty mjonMsgSentVO.searchCondition_01 }">selected</c:if> >발송방식 전체</option>
+											<option value="H" <c:if test="${mjonMsgSentVO.searchCondition_01 == 'H'}">selected</c:if> >WEB</option>
+											<option value="A" <c:if test="${mjonMsgSentVO.searchCondition_01 == 'A'}">selected</c:if> >API</option>
+										</select>
+									</c:if>
+									<label for="searchCondition" class="label">발신번호 선택 == ${mjonMsgSentVO.searchCondition}</label>
+									<select name="searchCondition" id="searchCondition" class="selType2 select_btn">
+										<option value="2" <c:if test="${mjonMsgSentVO.searchCondition == '2'}">selected</c:if> >발신번호</option>
+										<option value="3" <c:if test="${mjonMsgSentVO.searchCondition == '3'}">selected</c:if> >수신번호</option>
+									</select>
+									<div class="search">
+										<label for="id" class="label"></label>
+										<input type="text" id="searchKeyword" name="searchKeyword" value="<c:out value='${searchKeyword}'/>" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'">
+										<button type="button" class="btnType btnType2" onClick="javascript:fnSearch(1); return false;">검색</button>
+									</div>
+								</div>
+							</div>
+						</div>
+						<div class="list_tab_wrap2 type4">
+							<!-- tab button -->
+							<ul class="list_tab">
+								<li class="tab active"><button type="button" onclick="fnTabLoad('',0); return false;">전체</button></li>
+								<li class="tab"><button type="button" onclick="fnTabLoad('S',1); return false;">단문(SMS)</button></li>
+								<li class="tab"><button type="button" onclick="fnTabLoad('L',2); return false;">장문(LMS)</button></li>
+								<li class="tab"><button type="button" onclick="fnTabLoad('M',3); return false;">그림(MMS)</button></li>
+							</ul><!--// tab button -->
+						</div>
+						<!-- 예약관리 > 전체 -->
+						<div class="price_history_cont current" id="listTab_2">
+							<!-- tab button -->
+							<div class="table_tab_wrap">
+								<ul>
+									<li class="tab active">
+									<button type="button" onclick="fnListLoad('all','0'); return false;">전체</button></li>
+									<li class="tab"><button type="button" onclick="fnListLoad('ready','1'); return false;">결과대기</button></li>
+									<li class="tab"><button type="button" onclick="fnListLoad('complete','2'); return false;">정상수신</button></li>
+									<li class="tab"><button type="button" onclick="fnListLoad('fail','3'); return false;">수신오류</button></li>
+								</ul><!--// tab button -->
+								<div class="tab_depth1">
+									<a href="#none" class="on msgGgoupList">받는사람(전송건별)</a>
+									<a href="#none" style="display: none;"></a>
+									<a href="#none" class="msgPrivateList">받는사람(개인별)</a>
+									<div class="on_active">받는사람(전송건별)</div>
+								</div>
+							</div>
+							<!-- 발송관리 리스트 -->
+							<div class="table_cont current msgSentAllLoad" id="tableCont_1">
+							</div><!-- //전체 종료 -->
+							<!-- table -->
+						</div>
 					</div>
 				</form>
 			</div>
-        </div><!--// send top -->
-    </div>
+		</div><!--// send top -->
+	</div>
 	<form id="resPopForm" name="resPopForm" method="post">
 		<input type="hidden" id="msgGroupId" name="msgGroupId" value=""/>
 		<input type="hidden" id="msgId" name="msgId" value=""/>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgAllListAjax.jsp
@@ -69,19 +69,19 @@
 	<div class="tb_wrap">
 		<table class="tType4">
 			<colgroup>
-			<col style="width: 30px;">
-			<col style="width: 9%;">
-			<col style="width: 12%;">
-			<col style="width: 12%;">
-			<col style="width: 7%;">
-<%-- 			<col style="width: 15%;"> --%>
-			<col style="width: 60px;">
-			<col style="width: 9%;">
-			<col style="width: 10%;">
-			<col style="width: 9%;">
-			<col style="width: 6%;">
-			<col style="width: 8%;">
-			<col style="width: 60px;">
+				<col style="width: 20px;">
+				<col style="width: 8%;">
+				<col style="width: 12%;">
+				<col style="width: 12%;">
+				<col style="width: 6%;">
+				<col style="width: 8%;">
+				<col style="width: 42PX;">
+				<col style="width: 8%;">
+				<col style="width: 10%;">
+				<col style="width: 8%;">
+				<col style="width: 4%;">
+				<col style="width: 6%;">
+				<col style="width: 42px;">
 			</colgroup>
 			<thead>
 				<tr>
@@ -118,6 +118,12 @@
 							<input type="button" class="sort sortBtn" id="sort_subject">
 						</div>
 					</th> -->
+					<th rowspan="2">
+						발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
+						</div>
+					</th>
 					<th rowspan="2">
 						내용
 					</th>
@@ -230,6 +236,9 @@
 								</p>
 							</td> --%>
 							<td>
+								<p><c:out value="${resultAllResList.sendKind == 'H'? 'WEB' : 'API' }"/></p>
+							</td>
+							<td>
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllResList.msgGroupId}','${resultAllResList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCancelListAjax.jsp
@@ -73,7 +73,7 @@
 				<col style="width: 15%;">
 				<col style="width: 15%;">
 				<col style="width: 7%;">
-<%-- 				<col style="width: 20%;"> --%>
+				<col style="width: 8%;">
 				<col style="width: 85px;">
 				<col style="width: 9%;">
 				<col style="width: 11%;">
@@ -111,6 +111,12 @@
 							<input type="button" class="sort sortBtn" id="sort_subject">
 						</div>
 					</th> -->
+					<th rowspan="2">
+						발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
+						</div>
+					</th>
 					<th rowspan="2">
 						내용
 					</th>
@@ -186,6 +192,9 @@
 								</p>
 							</td> --%>
 							<td>
+								<p><c:out value="${resultAllResList.sendKind == 'H'? 'WEB' : 'API' }"/></p>
+							</td>
+							<td>
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllResList.msgGroupId}','${resultAllResList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgCompleteListAjax.jsp
@@ -74,7 +74,8 @@
 				<col style="width: 15%;">
 				<col style="width: 15%;">
 				<col style="width: 7%;">
-<%-- 				<col style="width: 20%;"> --%>
+				
+				<col style="width: 10%;">
 				<col style="width: 90px;">
 				<col style="width: 10%;">
 				<col style="width: 10%;">
@@ -116,6 +117,12 @@
 							<input type="button" class="sort sortBtn" id="sort_subject">
 						</div>
 					</th> -->
+					<th rowspan="2">
+						발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
+						</div>
+					</th>
 					<th>
 						내용
 					</th>
@@ -189,6 +196,9 @@
 								</p>
 							</td> --%>
 							<td>
+								<p><c:out value="${resultAllResList.sendKind == 'H'? 'WEB' : 'API' }"/></p>
+							</td>
+							<td>
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllResList.msgGroupId}','${resultAllResList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgReadyListAjax.jsp
@@ -85,12 +85,13 @@
 				<col style="width: 15%;">
 				<col style="width: 15%;">
 				<col style="width: 8%;">
-<%-- 				<col style="width: 20%;"> --%>
-				<col style="width: 85px;">
+				<col style="width: 8%;">
+				
+				<col style="width: 10%;">
 				<col style="width: 10%;">
 				<col style="width: 11%;">
 				<col style="width: 9%;">
-				<col style="width: 85px;">
+				<col style="width: 42px;">
 			</colgroup>
 			<thead>
 				<tr>
@@ -114,6 +115,12 @@
 						형태
 						<div class="sort_wrap">
 							<input type="button" class="sort sortBtn" id="sort_orderByCode">
+						</div>
+					</th>
+					<th rowspan="2">
+						발송방식
+						<div class="sort_wrap">
+							<input type="button" class="sort sortBtn" id="sort_sendKind">
 						</div>
 					</th>
 					<!-- <th rowspan="2">
@@ -202,6 +209,9 @@
 								</p>
 							</td> --%>
 							<td>
+								<p><c:out value="${resultAllResList.sendKind == 'H'? 'WEB' : 'API' }"/></p>
+							</td>
+							<td>
 								<button class="btnType btnType20" data-tooltip="rev_popup01" onClick="javascript:fnRevDetailPop('${resultAllResList.msgGroupId}','${resultAllResList.fileCnt}'); return false;">상세보기</button>
 							</td>
 							<td>
src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgView.jsp
--- src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgView.jsp
+++ src/main/webapp/WEB-INF/jsp/web/reservedmsg/ReservedMsgView.jsp
@@ -430,242 +430,200 @@
 					<input type="hidden" id="tabType" name="tabType" value="all"/><!-- 탭 종류 -->
 					<input type="hidden" id="stateType" name="stateType" value="all"/><!-- 발송상태 종류 -->
                 
-                <!-- 각 통계별 총 건수 -->
-                <c:set var="totAllCnt" value="0"/><!-- 전체 건수 -->
-                <c:set var="totSmsCnt" value="0"/><!-- 단문 건수 -->
-                <c:set var="totLmsCnt" value="0"/><!-- 장문 건수 -->
-                <c:set var="totMmsCnt" value="0"/><!-- 그림 건수 -->
                 
-                <!-- 각 통계별 성공, 실패 건수 처리 -->
-                <c:set var="waitAllCnt" value="0"/><!-- 전체 대기 건수 -->
-                <c:set var="succAllCnt" value="0"/><!-- 전체 성공 건수 -->
-                <c:set var="failAllCnt" value="0"/><!-- 전체 실패 건수 -->
-                <c:set var="cnclAllCnt" value="0"/><!-- 전체 예약취소 건수 -->
-                
-                <c:set var="waitSmsCnt" value="0"/><!-- 단문 대기 건수 -->
-                <c:set var="succSmsCnt" value="0"/><!-- 단문 성공 건수 -->
-                <c:set var="failSmsCnt" value="0"/><!-- 단문 실패 건수 -->
-                <c:set var="cnclSmsCnt" value="0"/><!-- 단문 예약취소 건수 -->
-                
-                <c:set var="waitLmsCnt" value="0"/><!-- 장문 대기 건수 -->
-                <c:set var="succLmsCnt" value="0"/><!-- 장문 성공 건수 -->
-                <c:set var="failLmsCnt" value="0"/><!-- 장문 실패 건수 -->
-                <c:set var="cnclLmsCnt" value="0"/><!-- 장문 예약취소 건수 -->
-                
-                <c:set var="waitMmsCnt" value="0"/><!-- 그림 대기 건수 -->
-                <c:set var="succMmsCnt" value="0"/><!-- 그림 성공 건수 -->
-                <c:set var="failMmsCnt" value="0"/><!-- 그림 실패 건수 -->
-                <c:set var="cnclMmsCnt" value="0"/><!-- 그림 예약취소 건수 -->
-                
-                <c:forEach var="totalMsgCnt" items="${totalMsgCnt}" varStatus="status">
-                
-                	<!-- 전체 갯수 구하기 -->
-                	<c:set var="totAllCnt" value="${totAllCnt + totalMsgCnt.msgResultCnt}"/>
-                		
-                	<!-- 전체 대기 갯수 -->
-                	<c:if test="${totalMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitAllCnt" value="${waitAllCnt + totalMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                		
-                	<!-- 전체 성공 갯수 -->
-                	<c:if test="${totalMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succAllCnt" value="${succAllCnt + totalMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 전체 실패 갯수 -->
-                	<c:if test="${totalMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failAllCnt" value="${failAllCnt + totalMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 전체 예약취소 갯수 -->
-                	<c:if test="${totalMsgCnt.msgResultSts == 'C'}">
-                		<c:set var="cnclAllCnt" value="${cnclAllCnt + totalMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <!-- 단문 처리 -->
-                <c:forEach var="smsMsgCnt" items="${smsMsgCnt}" varStatus="status">
-                	
-                	<!-- 단문 전체 갯수 구하기 -->
-                	<c:set var="totSmsCnt" value="${totSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	
-                	<!-- 단문 대기 갯수 구하기 -->
-                	<c:if test="${smsMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitSmsCnt" value="${waitSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 단문 성공 갯수 구하기 -->
-                	<c:if test="${smsMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succSmsCnt" value="${succSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 단문 실패 갯수 구하기 -->
-                	<c:if test="${smsMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failSmsCnt" value="${failSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 단문 예약취소 갯수 구하기 -->
-                	<c:if test="${smsMsgCnt.msgResultSts == 'C'}">
-                		<c:set var="cnclSmsCnt" value="${cnclSmsCnt + smsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <!-- 장문 처리 -->
-                <c:forEach var="lmsMsgCnt" items="${lmsMsgCnt}" varStatus="status">
-                	
-                	<!-- 장문 전체 갯수 구하기 -->
-                	<c:set var="totLmsCnt" value="${totLmsCnt + lmsMsgCnt.msgResultCnt}"/>
-                	
-                	<!-- 장문 대기 갯수 구하기 -->
-                	<c:if test="${lmsMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitLmsCnt" value="${waitLmsCnt + lmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 장문 성공 갯수 구하기 -->
-                	<c:if test="${lmsMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succLmsCnt" value="${succLmsCnt + lmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 장문 실패 갯수 구하기 -->
-                	<c:if test="${lmsMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failLmsCnt" value="${failLmsCnt + lmsMsgCnt.msgResultCnt}"/>	
-                	</c:if>
-                	
-                	<!-- 장문 예약취소 갯수 구하기 -->
-                	<c:if test="${lmsMsgCnt.msgResultSts == 'C'}">
-                		<c:set var="cnclLmsCnt" value="${cnclLmsCnt + lmsMsgCnt.msgResultCnt}"/>	
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <!-- 그림 처리 -->
-                <c:forEach var="mmsMsgCnt" items="${mmsMsgCnt}" varStatus="status">
-                
-                	<!-- 그림 전체 갯수 구하기 -->
-                	<c:set var="totMmsCnt" value="${totMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	
-                	<!-- 그림 대기 갯수 구하기 -->
-                	<c:if test="${mmsMsgCnt.msgResultSts == 'W'}">
-                		<c:set var="waitMmsCnt" value="${waitMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 그림 성공 갯수 구하기 -->
-                	<c:if test="${mmsMsgCnt.msgResultSts == 'S'}">
-                		<c:set var="succMmsCnt" value="${succMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 그림 실패 갯수 구하기 -->
-                	<c:if test="${mmsMsgCnt.msgResultSts == 'F'}">
-                		<c:set var="failMmsCnt" value="${failMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                	<!-- 그림 예약취소 갯수 구하기 -->
-                	<c:if test="${mmsMsgCnt.msgResultSts == 'C'}">
-                		<c:set var="cnclMmsCnt" value="${cnclMmsCnt + mmsMsgCnt.msgResultCnt}"/>
-                	</c:if>
-                	
-                </c:forEach>
-                
-                <div class="rev_admin">
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>전체</p>
-                            <p><span><fmt:formatNumber value="${totAllCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitAllCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succAllCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failAllCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>예약취소</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${cnclAllCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>단문(SMS)</p>
-                            <p><span><fmt:formatNumber value="${totSmsCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitSmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succSmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failSmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>예약취소</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${cnclSmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>장문(LMS)</p>
-                            <p><span><fmt:formatNumber value="${totLmsCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitLmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succLmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failLmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>예약취소</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${cnclLmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                    <div class="rev_admin_in">
-                        <div class="rev_admin_top clearfix">
-                            <p>그림(MMS)</p>
-                            <p><span><fmt:formatNumber value="${totMmsCnt}" pattern="#,###"/></span> 건</p>
-                        </div>
-                        <div class="rev_admin_btm">
-                        	<dl>
-                        		<dt>대기</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${waitMmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>성공</dt>
-                        		<dd><span class="c_002c9a"><fmt:formatNumber value="${succMmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>실패</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${failMmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        	<dl>
-                        		<dt>예약취소</dt>
-                        		<dd><span class="c_e40000"><fmt:formatNumber value="${cnclMmsCnt}" pattern="#,###"/></span>건</dd>
-                        	</dl>
-                        </div>
-                    </div>
-                </div>
+					<div class="rev_content" id="tab5_1">
+						<div class="rev_admin">
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>전체</p>
+									<c:set var="allTotal" value="${H_allSentCntVO.totCnt + A_allSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${allTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top reserve_top">WEB<span class="title_num"><fmt:formatNumber value="${H_allSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_allSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_allSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_allSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>예약취소</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_allSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top reserve_top">API<span class="title_num"><fmt:formatNumber value="${A_allSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_allSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_allSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_allSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>예약취소</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_allSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>단문(SMS)</p>
+									<c:set var="smsTotal" value="${H_smsSentCntVO.totCnt + A_smsSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${smsTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top reserve_top">WEB<span class="title_num"><fmt:formatNumber value="${H_smsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_smsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_smsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_smsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>예약취소</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_smsSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">	
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top reserve_top">API<span class="title_num"><fmt:formatNumber value="${A_smsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_smsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_smsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_smsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>예약취소</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_smsSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>장문(LMS)</p>
+									<c:set var="lmsTotal" value="${H_lmsSentCntVO.totCnt + A_lmsSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${lmsTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top reserve_top">WEB<span class="title_num"><fmt:formatNumber value="${H_lmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_lmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_lmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_lmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>예약취소</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_lmsSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top reserve_top">API<span class="title_num"><fmt:formatNumber value="${A_lmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_lmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_lmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_lmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>예약취소</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_lmsSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+							<div class="rev_admin_in">
+								<div class="rev_admin_top clearfix">
+									<p>그림(MMS)</p>
+									<c:set var="mmsTotal" value="${H_mmsSentCntVO.totCnt + A_mmsSentCntVO.totCnt }" />
+									<p><span><fmt:formatNumber value="${mmsTotal }" pattern="#,###"/></span> 건</p>
+								</div>
+								<div class="rev_admin_btm admin_btm">
+									<P class="title_top reserve_top">WEB<span class="title_num"><fmt:formatNumber value="${H_mmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+									<dl>
+										<dt>대기</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_mmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>성공</dt>
+										<dd><span class="c_002c9a"><fmt:formatNumber value="${H_mmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>실패</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_mmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+									<dl>
+										<dt>예약취소</dt>
+										<dd><span class="c_e40000"><fmt:formatNumber value="${H_mmsSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+									</dl>
+								</div>
+								<c:if test="${appMgmt }">
+									<div class="rev_admin_btm admin_btm admin_btm_api">
+										<P class="title_top reserve_top">API<span class="title_num"><fmt:formatNumber value="${A_mmsSentCntVO.totCnt}" pattern="#,###"/><span>건</span></span></P>
+										<dl>
+											<dt>대기</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_mmsSentCntVO.waitCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>성공</dt>
+											<dd><span class="c_002c9a"><fmt:formatNumber value="${A_mmsSentCntVO.succCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>실패</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_mmsSentCntVO.failCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+										<dl>
+											<dt>예약취소</dt>
+											<dd><span class="c_e40000"><fmt:formatNumber value="${A_mmsSentCntVO.cnclCnt}" pattern="#,###"/></span>건</dd>
+										</dl>
+									</div>	
+								</c:if>
+							</div>
+						</div>
+						
+						
                 <div class="excel_middle">
                     <div class="select_btnWrap clearfix">
                         <div class="btn_left">
@@ -680,15 +638,24 @@
                             <button type="button" onclick="setCalVal(threefulstday,'startDate');setCalVal( threefuledday,'endDate'); return false;"  class="btnType btnType19">3개월</button>
                             <button type="button" class="btnType6" onClick="javascript:fnSearch(1); return false;">조회</button>
                         </div>
-                        <div class="btn_right">
+                        <div class="btn_right">			
+							<c:if test="${appMgmt }">
+								<label for="searchCondition_01" class="label">발신방식 == ${mjonResvMsgVO.searchCondition_01}</label>
+								<select name="searchCondition_01" id="searchCondition_01" class="selType2 select_all_btn">
+									<option value="" <c:if test="${empty mjonResvMsgVO.searchCondition_01 }">selected</c:if> >발송방식 전체</option>
+									<option value="H" <c:if test="${mjonResvMsgVO.searchCondition_01 == 'H'}">selected</c:if> >WEB</option>
+									<option value="A" <c:if test="${mjonResvMsgVO.searchCondition_01 == 'A'}">selected</c:if> >API</option>
+								</select>
+							</c:if>
                             <label for="searchCondition" class="label">발신번호 선택 == ${mjonResvMsgVO.searchCondition}</label>
-                            <select name="searchCondition" id="searchCondition" class="selType2">
+                            <select name="searchCondition" id="searchCondition" class="selType2 select_btn">
                                 <%-- <option value="1" <c:if test="${mjonResvMsgVO.searchCondition == '1'}">selected</c:if> >제목</option> --%>
                                 <option value="2" <c:if test="${mjonResvMsgVO.searchCondition == '2'}">selected</c:if> >발신번호</option>
                             </select>
                             <div class="search">
                                 <label for="id" class="label"></label>
-                                <input type="text" id="searchKeyword" name="searchKeyword" value="<c:out value='${searchKeyword}'/>" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'">
+<%--                                 <input type="text" id="searchKeyword" name="searchKeyword" value="<c:out value='${searchKeyword}'/>" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'"> --%>
+                                <input type="text" class="send_text" id="searchKeyword" name="searchKeyword" value="<c:out value='${searchKeyword}'/>" placeholder="검색어를 입력하세요." onfocus="this.placeholder=''" onblur="this.placeholder='검색어를 입력하세요.'">
                                 <button type="button" class="btnType btnType2" onClick="javascript:fnSearch(1); return false;">검색</button>
                             </div>
                         </div>
src/main/webapp/WEB-INF/jsp/web/user/passwordChange.jsp
--- src/main/webapp/WEB-INF/jsp/web/user/passwordChange.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/passwordChange.jsp
@@ -186,6 +186,13 @@
 					$('#newPassword2').val("");
 					$('#newPassword1').focus();
 					return;	
+				}		
+				
+				if(returnData.errType == "04") {
+					$('#newPassword1').val("");
+					$('#newPassword2').val("");
+					$('#newPassword1').focus();
+					return;	
 				}				
 			}
 		}
src/main/webapp/publish/api_admin1.html
--- src/main/webapp/publish/api_admin1.html
+++ src/main/webapp/publish/api_admin1.html
@@ -202,7 +202,7 @@
 
         <!-- 0724 기업회원 이동 팝업 -->
         <div class="tooltip-wrap cvt_member_popup_wrap">
-            <div class="popup-com cvt_member_layer popup01">
+            <div class="popup-com cvt_member_layer popup01" tabindex="0" data-tooltip-con="popup01" data-focus="popup01" data-focus-prev="popup01-close">
             <div class="popup_heading">
                 <p>알림</p>
                 <button type="button" class="tooltip-close"><img src="/publish/images/content/layerPopup_close.png" alt="팝업 닫기"></button>
@@ -211,13 +211,13 @@
                 <p>문자API서비스는 기업회원만 신청이 가능합니다.<br>기업회원 전환 페이지로 이동하시겠습니까?</p>
                 <div class="popup_btn_wrap2">
                     <button type="button" onclick="location.href='/web/user/membershipChange.do'">확인</button>
-                    <button type="button" class="tooltip-close" data-focus="popup01-close" data-focus-next="popup01" onclick="location.href='#'">취소</button>
+	               	<button type="button" class="tooltip-close" data-focus="popup01-close" data-focus-next="popup01">취소</button>
                 </div>
             </div>
             </div>
         </div>
         <!--// 0724 기업회원 이동 팝업 -->
-
+		<button type="button" id="btnDeptPop" data-tooltip="popup01" style="display: none;"></button>
         <div class="inner">
             <!-- send top -->
             <div class="send_top">
src/main/webapp/publish/textingmsg_2022.html
--- src/main/webapp/publish/textingmsg_2022.html
+++ src/main/webapp/publish/textingmsg_2022.html
@@ -1,3 +1,15 @@
+
+<th>발송방식
+	<div class="sort_wrap">
+		<input type="button" class="sort sortBtn" id="sort_sendKind">
+	</div>
+</th>
+
+
+<td>
+	${resultAllSentList.sendKind }
+</td>
+
 <!DOCTYPE html>
 <html lang="ko">
 
Add a comment
List