name 2023-07-28
일문자 통계관리 API 기능 추가
@25dacf7516f3d2c27c6466162157b7f3498e03bf
src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
--- src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
+++ src/main/java/itn/let/mjo/msg/service/MjonMsgVO.java
@@ -167,6 +167,58 @@
 	
 	private String sendKind; //문자전송 타입(H:홈페이지, A:API)
 	
+	private int aSuccessCount;		// API 문자발송 성공건수
+	private int aSendCount;			// API 문자 발송건수
+	
+	private int rateSuccessCount;		// 홈페이지 전송 성공율
+	private int rateApiSuccessCount;	// API 전송 성공율
+	
+	private int totalSendCount;			// 전체 문자발송 건수
+	private int totalSuccessCount;		// 전체 문자발송 성공건수
+	private int totalRateSuccessCount;	// 전체 문자발송 성공율
+	
+	public int getRateSuccessCount() {
+		return rateSuccessCount;
+	}
+	public void setRateSuccessCount(int rateSuccessCount) {
+		this.rateSuccessCount = rateSuccessCount;
+	}
+	public int getRateApiSuccessCount() {
+		return rateApiSuccessCount;
+	}
+	public void setRateApiSuccessCount(int rateApiSuccessCount) {
+		this.rateApiSuccessCount = rateApiSuccessCount;
+	}
+	public int getTotalSendCount() {
+		return totalSendCount;
+	}
+	public void setTotalSendCount(int totalSendCount) {
+		this.totalSendCount = totalSendCount;
+	}
+	public int getTotalSuccessCount() {
+		return totalSuccessCount;
+	}
+	public void setTotalSuccessCount(int totalSuccessCount) {
+		this.totalSuccessCount = totalSuccessCount;
+	}
+	public int getTotalRateSuccessCount() {
+		return totalRateSuccessCount;
+	}
+	public void setTotalRateSuccessCount(int totalRateSuccessCount) {
+		this.totalRateSuccessCount = totalRateSuccessCount;
+	}
+	public int getaSuccessCount() {
+		return aSuccessCount;
+	}
+	public void setaSuccessCount(int aSuccessCount) {
+		this.aSuccessCount = aSuccessCount;
+	}
+	public int getaSendCount() {
+		return aSendCount;
+	}
+	public void setaSendCount(int aSendCount) {
+		this.aSendCount = aSendCount;
+	}
 	public String getSendKind() {
 		return sendKind;
 	}
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
@@ -4396,7 +4396,7 @@
     		
     		if (resultList.size()>0) {
     			model.addAttribute("sttstDate", resultList.get(0).getRegistPnttm());
-    		}        	
+    		}
         }catch(Exception ex) {
         	ex.printStackTrace();
         }
src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
@@ -5017,25 +5017,47 @@
 	<!-- 일별 문자발송 건수 -->
 	<select id="mjonMsgDAO.selectMsgDayChart_230125" parameterClass="mjonMsgVO" resultClass="mjonMsgVO">
 	
-		SELECT a.SEND_DATE	AS regDate
-			, a.send_cnt	AS	sendCount
-			, a.success_cnt	AS	successCount
-			, DATE_FORMAT(a.regist_pnttm, '%H:%i:%s')	AS	registPnttm
-			/*
-			, a.regist_pnttm	AS	registPnttm
-			*/
-			, COUNT(a.SEND_DATE) OVER()				AS totCnt			 /** 전체 건수 */
-		FROM mj_sttst_msg a
+		SELECT
+			a.SEND_DATE														AS regDate
+			, a.send_cnt													AS sendCount
+			, a.success_cnt													AS successCount
+			, IFNULL(ROUND((a.success_cnt / a.send_cnt ) * 100), 0)			AS rateSuccessCount
+			
+			, IFNULL(a.API_SEND_CNT, 0)										AS aSendCount
+			, IFNULL(a.API_SUCCESS_CNT, 0)									AS aSuccessCount
+			, IFNULL(ROUND((a.API_SUCCESS_CNT / a.API_SEND_CNT ) * 100), 0) AS rateApiSuccessCount
+			
+			, (IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0))			AS totalSendCount
+			, (IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0))		AS totalSuccessCount
+			, IFNULL(ROUND(((IFNULL(a.success_cnt, 0) + IFNULL(a.API_SUCCESS_CNT, 0)) / (IFNULL(a.send_cnt, 0) + IFNULL(a.API_SEND_CNT, 0))) * 100), 0) AS totalRateSuccessCount
+			
+			, DATE_FORMAT(a.regist_pnttm, '%H:%i:%s')						AS registPnttm
+			, COUNT(a.SEND_DATE) OVER()										AS totCnt			 /** 전체 건수 */
+		FROM
+			mj_sttst_msg a
 		WHERE 1=1
-		   AND <![CDATA[ a.send_date <= DATE_FORMAT(NOW(), '%Y-%m-%d') ]]>
+			AND <![CDATA[ a.send_date <= DATE_FORMAT(NOW(), '%Y-%m-%d') ]]>
 
-        <isNotEmpty property="ntceBgnde">
-	        AND <![CDATA[ a.send_date  >=   #ntceBgnde# ]]>
-		</isNotEmpty>
-        <isNotEmpty property="ntceEndde">
+			<isNotEmpty property="ntceBgnde">
+			AND <![CDATA[ a.send_date  >=   #ntceBgnde# ]]>
+			</isNotEmpty>
+			
+			<isNotEmpty property="ntceEndde">
 			AND <![CDATA[ a.send_date <= #ntceEndde# ]]>
-		</isNotEmpty>
-						   
+			</isNotEmpty>
+			
+			<isNotEmpty property="sendKind">
+				<isEqual property="sendKind" compareValue="H">
+					AND a.send_cnt != 0
+				</isEqual>
+				<isEqual property="sendKind" compareValue="A">
+					AND a.API_SEND_CNT != 0
+				</isEqual>
+			</isNotEmpty>
+			<isEmpty property="sendKind">
+				AND (a.send_cnt != 0 || a.API_SEND_CNT != 0)
+			</isEmpty>
+			
 		ORDER BY a.SEND_DATE DESC
 		LIMIT  #recordCountPerPage# OFFSET #firstIndex#
 	</select>
src/main/resources/egovframework/sqlmap/let/sttst/MjonSttstData_SQL_mysql.xml
--- src/main/resources/egovframework/sqlmap/let/sttst/MjonSttstData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/sttst/MjonSttstData_SQL_mysql.xml
@@ -8,176 +8,251 @@
 	<typeAlias  alias="mjonMsgVO" type="itn.let.mjo.msg.service.MjonMsgVO"/>
 	
 	<insert id="mjonSttst.insertMjSttstMsgBulk" parameterClass="mjonMsgVO">
-		INSERT	INTO   mj_sttst_msg
-		(send_date, send_cnt, success_cnt, regist_pnttm)
+		INSERT INTO MJ_STTST_MSG
+		(
+			send_date
+			, send_cnt
+			, success_cnt
+			, API_SEND_CNT
+			, API_SUCCESS_CNT
+			, regist_pnttm
+		)
 		
-		select aa.regDate
-			, aa.sendCount
-			, aa.successCount
+		SELECT
+			aa.regDate
+			, aa.hSendCount
+			, aa.hSuccessCount
+			, aa.aSendCount
+			, aa.aSuccessCount
 			, now()
-			
-		from (
-		        SELECT   
-		                 M2.regDate ,
-		                 SUM(M2.sendCount)    AS sendCount ,
-		                 SUM(M2.successCount) AS successCount
-		                 
-		        FROM     ( SELECT
-		                         M.REQ_DATE AS regDate
-		                         /*발송일*/
-		                         
-		                         , IFNULL(M.MSG_GROUP_CNT, 0) AS sendCount
-		                         /*발송건수*/
-		                         
-		                         , MSG_GROUP_ID
-		                          
-		                         ,
-		                         (SELECT COUNT(0)
-		                         FROM    MJ_MSG_DATA A
-		                         WHERE   A.USER_ID NOT IN ('hftest',
-		                                                   'itntest',
-		                                                   'imotest',
-		                                                   'itntestBatch')
-		                         AND     A.RESERVE_C_YN = 'N'
-		                         AND     A.MSG_GROUP_ID = M.MSG_GROUP_ID
-		                         AND     (CASE
-		                         			WHEN A.AGENT_CODE = '01' AND (A.RSLT_CODE = '100' AND (A.RSLT_CODE2 = '0'))
-		                         			THEN 'S'
-		                         			WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0')
-		                         			THEN 'S'
-		                         			WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE = '100' OR A.RSLT_CODE = '101' OR A.RSLT_CODE = '110' OR A.RSLT_CODE = '800')
-		                         			THEN 'S'
-		                         			WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE = '4100' OR A.RSLT_CODE = '6600')
-                                            THEN 'S'
-                                            WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
-                                            THEN 'S'
-                                            WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE = '6' OR A.RSLT_CODE = '1000')
-                                            THEN 'S'
-                                            WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
-                                            THEN 'S'
-                                            WHEN A.AGENT_CODE = '09' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
-                                            THEN 'S'                                                                                        
-                                            WHEN (
-                                            	A.RSLT_CODE  IS NULL
-                                            	AND A.RSLT_CODE2 IS NULL
-                                            	AND A.SENT_DATE IS NULL
-                                            	AND A.RSLT_DATE IS NULL
-                                            )
-                                            THEN 'W'
-                                            ELSE 'F'
-									END ) = 'S'
-		                         )
-		                         AS successCount
-		                         /*성공건수*/
-		                         
-		                 FROM    ( SELECT  DATE_FORMAT(P.REQ_DATE, '%Y-%m-%d') AS REQ_DATE ,
-		                                  SUM(P.MSG_GROUP_CNT)                 AS MSG_GROUP_CNT ,
-		                                  P.MSG_GROUP_ID
-		                         FROM     MJ_MSG_GROUP_DATA P
-		                         WHERE    USER_ID NOT IN ('hftest',
-		                                                  'itntest',
-		                                                  'imotest',
-		                                                  'itntestBatch')
-		                         AND      P.RESERVE_C_YN                       = 'N'
-		                         AND  	  P.req_date > DATE_ADD(now(), interval -14 day)
-		                         GROUP BY P.MSG_GROUP_ID
-		                         )
-		                         M
-		                 )
-		                 M2
-		        GROUP BY M2.regDate
-		        )aa
-		on DUPLICATE KEY UPDATE
-		send_cnt=aa.sendCount
-		, success_cnt=aa.successCount
-		, regist_pnttm=now()
-       	
+		FROM(
+			SELECT
+				M2.regDate
+				, SUM(M2.hSendCount)		AS hSendCount
+				, SUM(M2.hSuccessCount)		AS hSuccessCount
+				, SUM(M2.aSendCount)		AS aSendCount
+				, SUM(M2.aSuccessCount)		AS aSuccessCount 
+				
+			FROM(
+				SELECT
+					M.REQ_DATE						AS regDate		/*발송일*/
+					, IFNULL(M.MSG_GROUP_CNT, 0)	AS sendCount	/*발송건수*/
+					, M.aSendCount									/*API 발송건수*/
+					, M.hSendCount									/*홈페이지 발송건수*/
+					, MSG_GROUP_ID 
+					, (SELECT
+							COUNT(0)
+						FROM
+							MJ_MSG_DATA A
+						WHERE 1=1
+							AND A.USER_ID NOT IN ('hftest','itntest','imotest','itntestBatch')
+							AND A.RESERVE_C_YN = 'N'
+							AND A.MSG_GROUP_ID = M.MSG_GROUP_ID
+							AND M.SEND_KIND = 'H'
+							AND (
+								CASE
+									WHEN A.AGENT_CODE = '01' AND (A.RSLT_CODE = '100' AND (A.RSLT_CODE2 = '0'))
+									THEN 'S'
+									WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE = '100' OR A.RSLT_CODE = '101' OR A.RSLT_CODE = '110' OR A.RSLT_CODE = '800')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE = '4100' OR A.RSLT_CODE = '6600')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE = '6' OR A.RSLT_CODE = '1000')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '09' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN (A.RSLT_CODE  IS NULL AND A.RSLT_CODE2 IS NULL AND A.SENT_DATE IS NULL AND A.RSLT_DATE IS NULL )
+									THEN 'W'
+									ELSE 'F'
+								END 
+								) = 'S'
+					)	AS hSuccessCount /*홈페이지 성공건수*/
+					, (SELECT
+							COUNT(0)
+						FROM
+							MJ_MSG_DATA A
+						WHERE 1=1
+							AND A.USER_ID NOT IN ('hftest','itntest','imotest','itntestBatch')
+							AND A.RESERVE_C_YN = 'N'
+							AND A.MSG_GROUP_ID = M.MSG_GROUP_ID
+							AND M.SEND_KIND = 'A'
+							AND (
+								CASE
+									WHEN A.AGENT_CODE = '01' AND (A.RSLT_CODE = '100' AND (A.RSLT_CODE2 = '0'))
+									THEN 'S'
+									WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE = '100' OR A.RSLT_CODE = '101' OR A.RSLT_CODE = '110' OR A.RSLT_CODE = '800')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE = '4100' OR A.RSLT_CODE = '6600')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE = '6' OR A.RSLT_CODE = '1000')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '09' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN (A.RSLT_CODE  IS NULL AND A.RSLT_CODE2 IS NULL AND A.SENT_DATE IS NULL AND A.RSLT_DATE IS NULL )
+									THEN 'W'
+									ELSE 'F'
+								END ) = 'S'
+					)	AS aSuccessCount /*API 성공건수*/
+				FROM(
+					SELECT
+						DATE_FORMAT(P.REQ_DATE, '%Y-%m-%d') AS REQ_DATE
+						, SUM(P.MSG_GROUP_CNT)				AS MSG_GROUP_CNT 
+						, P.MSG_GROUP_ID
+						, P.SEND_KIND
+						, IF(P.SEND_KIND = 'A', SUM(P.MSG_GROUP_CNT), 0) AS aSendCount
+						, IF(P.SEND_KIND = 'H', SUM(P.MSG_GROUP_CNT), 0) AS hSendCount
+					FROM
+						MJ_MSG_GROUP_DATA P
+					WHERE 1=1
+						AND USER_ID NOT IN ('hftest', 'itntest', 'imotest', 'itntestBatch')
+						AND P.RESERVE_C_YN = 'N'
+						AND P.req_date > DATE_ADD(now(), interval -14 day)
+					GROUP BY
+						P.MSG_GROUP_ID
+					)M
+				)M2
+				GROUP BY M2.regDate
+			)aa
+		ON DUPLICATE KEY UPDATE
+			send_cnt				=aa.hSendCount
+			, success_cnt			=aa.hSuccessCount
+			, API_SEND_CNT			=aa.aSendCount
+			, API_SUCCESS_CNT		=aa.aSuccessCount
+			, regist_pnttm			=now()
 	</insert>
 	
 	<insert id="mjonSttst.insertMjSttstMsgDayBulk" parameterClass="mjonMsgVO">
-		INSERT	INTO   mj_sttst_msg
-		(send_date, send_cnt, success_cnt, regist_pnttm)
+		INSERT	INTO   MJ_STTST_MSG
+		(
+			send_date
+			, send_cnt
+			, success_cnt
+			, API_SEND_CNT
+			, API_SUCCESS_CNT
+			, regist_pnttm
+		)
 		
-		select aa.regDate
-			, aa.sendCount
-			, aa.successCount
+		SELECT
+			aa.regDate
+			, aa.hSendCount
+			, aa.hSuccessCount
+			, aa.aSendCount
+			, aa.aSuccessCount
 			, now()
-			
-		from (
-		        SELECT   
-		                 M2.regDate ,
-		                 SUM(M2.sendCount)    AS sendCount ,
-		                 SUM(M2.successCount) AS successCount
-		                 
-		        FROM     ( SELECT
-		                         M.REQ_DATE AS regDate
-		                         /*발송일*/
-		                         
-		                         , IFNULL(M.MSG_GROUP_CNT, 0) AS sendCount
-		                         /*발송건수*/
-		                         
-		                         , MSG_GROUP_ID
-		                          
-		                         , (SELECT COUNT(0)
-		                         FROM    MJ_MSG_DATA A
-		                         WHERE   A.USER_ID NOT IN ('hftest',
-		                                                   'itntest',
-		                                                   'imotest',
-		                                                   'itntestBatch')
-		                         AND     A.RESERVE_C_YN = 'N'
-		                         AND     A.MSG_GROUP_ID = M.MSG_GROUP_ID
-		                         AND     (
-									CASE
-										WHEN A.AGENT_CODE = '01' AND (A.RSLT_CODE = '100' AND(A.RSLT_CODE2 = '0'))
-										THEN 'S' 
-										WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0')
-										THEN 'S'
-										WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE = '100' OR A.RSLT_CODE = '101' OR A.RSLT_CODE = '110' OR A.RSLT_CODE = '800')
-										THEN 'S'
-										WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE = '4100' OR A.RSLT_CODE = '6600')
-										THEN 'S'
-										WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
-										THEN 'S'
-										WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE = '6' OR A.RSLT_CODE = '1000')
-										THEN 'S'
-										WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
-										THEN 'S'
-										WHEN A.AGENT_CODE = '09' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
-										THEN 'S'																				
-										WHEN (
-											A.RSLT_CODE  IS NULL
-											AND A.RSLT_CODE2 IS NULL
-											AND A.SENT_DATE  IS NULL
-											AND A.RSLT_DATE  IS NULL
-										)
-										THEN 'W'
-										ELSE 'F'
-									END ) = 'S'
-		                         )
-		                         AS successCount
-		                         /*성공건수*/
-		                         
-		                 FROM    ( SELECT  DATE_FORMAT(P.REQ_DATE, '%Y-%m-%d') AS REQ_DATE ,
-		                                  SUM(P.MSG_GROUP_CNT)                 AS MSG_GROUP_CNT ,
-		                                  P.MSG_GROUP_ID
-		                         FROM     MJ_MSG_GROUP_DATA P
-		                         WHERE    USER_ID NOT IN ('hftest',
-		                                                  'itntest',
-		                                                  'imotest',
-		                                                  'itntestBatch')
-		                         AND      P.RESERVE_C_YN                       = 'N'		                         
-		                         GROUP BY P.MSG_GROUP_ID
-		                         )
-		                         M
-		                 )
-		                 M2
-		        GROUP BY M2.regDate
-		        )aa
-		on DUPLICATE KEY UPDATE
-		send_cnt=aa.sendCount
-		, success_cnt=aa.successCount
-		, regist_pnttm=now()
-       	
+		FROM(
+			SELECT
+				M2.regDate
+				, SUM(M2.sendCount)    AS sendCount
+				, SUM(M2.successCount) AS successCount
+			FROM(
+				SELECT
+					M.REQ_DATE							AS regDate /*발송일*/
+					, IFNULL(M.MSG_GROUP_CNT, 0)		AS sendCount /*발송건수*/
+					, M.aSendCount									/*API 발송건수*/
+					, M.hSendCount									/*홈페이지 발송건수*/
+					, MSG_GROUP_ID
+					, (SELECT
+							COUNT(0)
+						FROM
+							MJ_MSG_DATA A
+						WHERE 1=1
+							AND A.USER_ID NOT IN ('hftest','itntest','imotest','itntestBatch')
+							AND A.RESERVE_C_YN = 'N'
+							AND A.MSG_GROUP_ID = M.MSG_GROUP_ID
+							AND M.SEND_KIND = 'H'
+							AND (
+								CASE
+									WHEN A.AGENT_CODE = '01' AND (A.RSLT_CODE = '100' AND (A.RSLT_CODE2 = '0'))
+									THEN 'S'
+									WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE = '100' OR A.RSLT_CODE = '101' OR A.RSLT_CODE = '110' OR A.RSLT_CODE = '800')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE = '4100' OR A.RSLT_CODE = '6600')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE = '6' OR A.RSLT_CODE = '1000')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '09' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN (A.RSLT_CODE  IS NULL AND A.RSLT_CODE2 IS NULL AND A.SENT_DATE IS NULL AND A.RSLT_DATE IS NULL )
+									THEN 'W'
+									ELSE 'F'
+								END 
+								) = 'S'
+					)	AS hSuccessCount /*홈페이지 성공건수*/
+					, (SELECT
+							COUNT(0)
+						FROM
+							MJ_MSG_DATA A
+						WHERE 1=1
+							AND A.USER_ID NOT IN ('hftest','itntest','imotest','itntestBatch')
+							AND A.RESERVE_C_YN = 'N'
+							AND A.MSG_GROUP_ID = M.MSG_GROUP_ID
+							AND M.SEND_KIND = 'A'
+							AND (
+								CASE
+									WHEN A.AGENT_CODE = '01' AND (A.RSLT_CODE = '100' AND (A.RSLT_CODE2 = '0'))
+									THEN 'S'
+									WHEN A.AGENT_CODE = '02' AND (A.RSLT_CODE = '0')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '03' AND (A.RSLT_CODE = '100' OR A.RSLT_CODE = '101' OR A.RSLT_CODE = '110' OR A.RSLT_CODE = '800')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '04' AND (A.RSLT_CODE = '4100' OR A.RSLT_CODE = '6600')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '05' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '07' AND (A.RSLT_CODE = '6' OR A.RSLT_CODE = '1000')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '08' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN A.AGENT_CODE = '09' AND (A.RSLT_CODE = '1000' OR A.RSLT_CODE = '1001')
+									THEN 'S'
+									WHEN (A.RSLT_CODE  IS NULL AND A.RSLT_CODE2 IS NULL AND A.SENT_DATE IS NULL AND A.RSLT_DATE IS NULL )
+									THEN 'W'
+									ELSE 'F'
+								END ) = 'S'
+					)	AS aSuccessCount /*API 성공건수*/
+				FROM(
+					SELECT
+						DATE_FORMAT(P.REQ_DATE, '%Y-%m-%d') AS REQ_DATE
+						, SUM(P.MSG_GROUP_CNT)				AS MSG_GROUP_CNT
+						, P.MSG_GROUP_ID
+						, P.SEND_KIND
+						, IF(P.SEND_KIND = 'A', SUM(P.MSG_GROUP_CNT), 0) AS aSendCount
+						, IF(P.SEND_KIND = 'H', SUM(P.MSG_GROUP_CNT), 0) AS hSendCount
+					FROM
+						MJ_MSG_GROUP_DATA P
+					WHERE 1=1
+						AND USER_ID NOT IN ('hftest','itntest','imotest','itntestBatch')
+						AND P.RESERVE_C_YN = 'N'
+					GROUP BY
+						P.MSG_GROUP_ID
+					)M
+				)M2
+				GROUP BY M2.regDate
+			)aa
+		ON DUPLICATE KEY UPDATE
+			send_cnt				=aa.hSendCount
+			, success_cnt			=aa.hSuccessCount
+			, API_SEND_CNT			=aa.aSendCount
+			, API_SUCCESS_CNT		=aa.aSuccessCount
+			, regist_pnttm			=now()
 	</insert>
 	
 	<insert id="mjonSttst.insertMjSttstMsgRankBulk" parameterClass="mjonMsgVO">
src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgDayChart_230125.jsp
--- src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgDayChart_230125.jsp
+++ src/main/webapp/WEB-INF/jsp/uss/ion/msg/MsgDayChart_230125.jsp
@@ -11,14 +11,34 @@
 	response.setDateHeader("Expires",0);   
 	if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); 
 %> 
-<!DOCTYPE html>
-<html lang="ko">
-<head>
 <title>일별 문자발송건수 통계</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 <script type="text/javascript" src="<c:url value='/js/EgovMultiFile.js'/>"></script>
 <script type="text/javascript" src="<c:url value='/js/EgovCalPopup.js'/>"></script>
 <script type="text/javaScript" language="javascript">
+
+$( document ).ready(function(){
+	var selectSendKind = $("#sendKind option:selected").val();
+	
+	if(selectSendKind == "H"){
+		$('.all').css('display', 'none');
+		$('.api').css('display', 'none');
+		setThead(1);
+	}else if(selectSendKind == "A"){
+		$('.all').css('display', 'none');
+		$('.homePage').css('display', 'none');
+		setThead(1);
+	}else{
+		setThead(3);
+	}
+});
+
+function setThead(index){
+	$("#sendHead").attr('colspan',index);
+	$("#successHead").attr('colspan',index);
+	$("#rateHead").attr('colspan',index);
+}
+
 function fn_search(){
 	linkPage(1);
 }
@@ -48,6 +68,8 @@
 	$('#ntceEnddeYYYMMDD').val('');
 	$('#ntceBgnde').val('');
 	$('#ntceEndde').val('');
+	
+	$('#sendKind').val('').prop("selected",true);
 }
 
 //기간선택 select
@@ -89,11 +111,8 @@
     cursor: pointer;
 }
 </style>
-</head>
-<body>
 
 <compress:html>
-
 
 <form name="listForm" action="<c:url value='/uss/ion/msg/msgDayChart_230125.do'/>" method="post">
 	<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
@@ -111,6 +130,11 @@
 		
 		<div class="pageCont">
 			<div class="listSerch">
+				<select id="sendKind" name="sendKind" onchange="">
+					<option value=""<c:if test="${searchVO.sendKind eq ''}">selected="selected"</c:if>>발송방식 전체</option>
+					<option value="H"<c:if test="${searchVO.sendKind eq 'H'}">selected="selected"</c:if>>WEB</option>
+					<option value="A"<c:if test="${searchVO.sendKind eq 'A'}">selected="selected"</c:if>>API</option>
+				</select>
 				<select name="setCalMonth" onchange="fnSetCalMonth(this.value)">
 					<option value="0">전체</option>
 					<option value="1">1개월</option>
@@ -118,23 +142,21 @@
 					<option value="6">6개월</option>
 				</select>
 				<input type="hidden" name="cal_url" id="cal_url" value="/sym/cmm/EgovNormalCalPopup.do">
-			    <a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
-			    <input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
-			    value="<c:out value="${searchVO.ntceBgnde}" />" >
-			   	 	<input type="button" class="calBtn">
-		    	</a>
-				&nbsp;&nbsp;~    	
-			    <a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);">
-				<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly=""
-		    	value="<c:out value="${searchVO.ntceEndde}" />"
-		    	>
-			   	 	<input type="button" class="calBtn">
-		    	</a>
+				<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceBgndeYYYMMDD);">
+					<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceBgndeYYYMMDD" id="ntceBgndeYYYMMDD" size="4" maxlength="4" readonly=""
+					value="<c:out value="${searchVO.ntceBgnde}" />" >
+					<input type="button" class="calBtn">
+				</a>
+				&nbsp;&nbsp;~
+				<a href="#" onclick="javascript:fn_egov_NormalCalendar(document.forms.listForm, document.forms.listForm.ntceEnddeYYYMMDD);">
+					<input style="width:auto;min-width: 83px;" type="text" class="date_format" name="ntceEnddeYYYMMDD" id="ntceEnddeYYYMMDD" size="4" maxlength="4" readonly=""
+					value="<c:out value="${searchVO.ntceEndde}" />" >
+					<input type="button" class="calBtn">
+				</a>
 				<a href="#" style="margin-left: 17px;" onclick="init_date(); return false;">
 					<img src="/pb/img/common/topTimeOut.png" alt="타임아웃 아이콘">
 				</a>
 				<input type="button" class="btnType1" style="margin-left:10px;" value="검색" onclick="fn_search(); return false;">
-				
 			</div>
 			<div class="listTop">
 				<p class="tType5">총 <span class="tType4 c_456ded fwBold"><fmt:formatNumber value="${paginationInfo.totalRecordCount}" pattern="#,###" /></span>건
@@ -154,31 +176,78 @@
 			<div class="tableWrap">
 				<table class="tbType1">
 					<colgroup>
-						<col style="width: auto;">
 						<col style="width: 25%">
-						<col style="width: 25%">
-						<col style="width: 25%">
+						<col style="width: 25%" class="all">
+						<col style="width: 25%" class="homePage">
+						<col style="width: 25%" class="api">
+						<col style="width: 25%" class="all">
+						<col style="width: 25%" class="homePage">
+						<col style="width: 25%" class="api">
+						<col style="width: 25%" class="all">
+						<col style="width: 25%" class="homePage">
+						<col style="width: 25%" class="api">
 					</colgroup>
 					<thead>
 						<tr>
-							<th>발송일</th>
-							<th>발송건수</th>
-							<th>성공건수</th>
-							<th>성공율</th>
+							<th rowspan="2" style="vertical-align: middle;">발송일</th>
+							<th id="sendHead">발송건수</th>
+							<th id="successHead">성공건수</th>
+							<th id="rateHead">성공율</th>
+						</tr>
+						<tr>
+							<th class="all">전체</th>
+							<th class="homePage">WEB</th>
+							<th class="api">API</th>
+							<th class="all">전체</th>
+							<th class="homePage">WEB</th>
+							<th class="api">API</th>
+							<th class="all">전체</th>
+							<th class="homePage">WEB</th>
+							<th class="api">API</th>
 						</tr>
 					</thead>
 					<tbody>
 						<c:forEach var="result" items="${resultList}" varStatus="status">
 						<tr>
-							<td><c:out value="${result.regDate}"/></td>
-							<td><fmt:formatNumber value="${result.sendCount}" pattern="#,###" /></td>
-							<td><fmt:formatNumber value="${result.successCount}" pattern="#,###" /></td>
-							<td><fmt:formatNumber value="${(result.successCount / result.sendCount) * 100}" pattern="#,###" />%</td>							
+							<td>
+								<c:out value="${result.regDate}"/>
+							</td>
+							<td class="all">
+								<fmt:formatNumber value="${result.totalSendCount}" pattern="#,###" />
+							</td>
+							<td class="homePage">
+								<fmt:formatNumber value="${result.sendCount}" pattern="#,###" />
+							</td>
+							<td class="api">
+								<fmt:formatNumber value="${result.aSendCount}" pattern="#,###" />
+							</td>
+							
+							<td class="all">
+								<fmt:formatNumber value="${result.totalSuccessCount}" pattern="#,###" />
+							</td>
+							<td class="homePage">
+								<fmt:formatNumber value="${result.successCount}" pattern="#,###" />
+							</td>
+							<td class="api">
+								<fmt:formatNumber value="${result.aSuccessCount}" pattern="#,###" />
+							</td>
+							
+							<td class="all">
+								<fmt:formatNumber value="${result.totalRateSuccessCount}" pattern="#,###" />%
+							</td>
+							<td class="homePage">
+								<fmt:formatNumber value="${result.rateSuccessCount}" pattern="#,###" />%
+							</td>
+							<td class="api">
+								<fmt:formatNumber value="${result.rateApiSuccessCount}" pattern="#,###" />%
+							</td>
 						</tr>
 						</c:forEach>
 						<c:if test="${empty resultList}">
-		         			<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
-		         		</c:if>    
+						<tr>
+							<td colspan="10"><spring:message code="common.nodata.msg" /></td>
+						</tr>
+						</c:if>
 					</tbody>
 				</table>
 			</div>
@@ -186,16 +255,14 @@
 			</div>
 			<!-- 페이지 네비게이션 시작 -->
 			<c:if test="${!empty resultList}">
-		 		<div class="page">
-		    		<ul class="inline">
-		    			<ui:pagination paginationInfo = "${paginationInfo}"  type="image" jsFunction="linkPage" />
-		    		</ul>	
-		    	</div>  
-		  	</c:if>                      
-		    <!-- //페이지 네비게이션 끝 --> 
+			<div class="page">
+				<ul class="inline">
+					<ui:pagination paginationInfo = "${paginationInfo}"  type="image" jsFunction="linkPage" />
+				</ul>
+			</div>
+			</c:if>
+			<!-- //페이지 네비게이션 끝 --> 
 		</div>
 	</div>
 </form>
 </compress:html>
-</body>
-</html>
Add a comment
List