itn 2023-10-23
발송결과 문자 휴대폰 대쉬 함수 관련 속도저하 수정
@eb5636017c5e07c7f779a23f773d62be77e9413e
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
@@ -194,163 +194,188 @@
 	</select>
 	
 	<select id="MjonReservMsgDAO.selectAllResvMsgList" parameterClass="mjonMsgResvVO" resultClass="mjonMsgResvVO">
-		
-		SELECT   COUNT(USER_ID) OVER() AS totMsgCnt,
-				 USER_ID AS userId,
-		         MSG_GROUP_ID AS msgGroupId,
-		         MSG_GROUP_CNT AS msgGroupCnt,
-		         SMS_TXT AS smsTxt,
-		         SUBJECT AS subject,
-		         DATE_FORMAT(REGDATE, '%Y-%m-%d %T') AS regdate,
-		         DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T') AS reqdate,
-		         TIMESTAMPDIFF(MINUTE,DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T'), DATE_FORMAT(NOW(), '%Y-%m-%d %T')) AS diffMin,
-		         CALL_FROM AS callFrom,
-				 FN_GETHYPHEN(CALL_FROM)	AS callFromComma,		         
-		         TOT_PRICE AS totPrice,
-		         EACH_PRICE AS eachPrice,
-		         CUR_STATE AS curState,
-		         RSLT_CODE AS rsltCode,
-		         RSLT_CODE2 AS rsltCode2,
-		         DEL_FLAG AS delFlag,
-		         MSG_TYPE AS msgType,
-		         FILE_CNT AS fileCnt,
-		         AGENT_CODE AS agentCode,
-		         RESERVE_C_YN AS reserveCYn,
-		         CANCELDATE AS cancelDate,
-		         SEND_KIND as sendKind,
-				CASE
-					WHEN RESERVE_C_YN = 'Y'
-					THEN '예약취소'
-					WHEN CUR_STATE = '0'
-					THEN '발송대기'
-					WHEN CUR_STATE = '1'
-					THEN '발송중'
-					WHEN CUR_STATE = '2'
-					THEN '결과대기'
-					WHEN CUR_STATE = '3'
-					THEN '발송완료'										
-					ELSE ''
-				END shipmentStatus,
-				CASE
-					WHEN A.MSG_TYPE = '6' AND A.FILE_CNT > 0
-					THEN '3'
-					WHEN A.MSG_TYPE = '6' AND A.FILE_CNT = 0
-					THEN '2'
-					ELSE '1'
-				END orderByCode										
-		FROM     ( SELECT
-						 MGD.USER_ID,
-		                 MGD.MSG_GROUP_ID,
-		                 MGD.MSG_GROUP_CNT,
-		                 MD.SMS_TXT,
-		                 MGD.SUBJECT,
-		                 MGD.REGDATE,
-		                 MGD.REQ_DATE,
-		                 MGD.CALL_FROM,
-		                 MGD.TOT_PRICE,
-		                 MGD.EACH_PRICE,
-		                 MGD.DEL_FLAG,
-		                 MGD.MSG_TYPE,
-		                 MGD.FILE_CNT,
-		                 MGD.AGENT_CODE,
-		                 MGD.RESERVE_C_YN,
-		                 MGD.CANCELDATE,
-		                 MD.CUR_STATE,
-		                 MD.RSLT_CODE,
-		                 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
-		                 AND     MGD.USER_ID     = #userId#
-		                 AND     MGD.RESERVE_YN  ='Y'
-		                 AND	 MGD.DEL_FLAG 	 ='N'
-		         WHERE MD.USER_ID     = #userId#
-		         )
-		         A
-		WHERE 1=1 
-	            <isNotEmpty property="stateType">
-					<isEqual property="stateType" compareValue="all">
-						AND 	 CUR_STATE IN ('0','1','2','3')
-					</isEqual>
-					<isEqual property="stateType" compareValue="ready">
-						AND 	 CUR_STATE = '0'
-						AND		 RESERVE_C_YN = 'N'
-					</isEqual>
-					<isEqual property="stateType" compareValue="complete">
-						AND 	 CUR_STATE IN ('2','3')
-						AND		 RESERVE_C_YN = 'N'
-					</isEqual>
-					<isEqual property="stateType" compareValue="cancel">
-						AND 	 RESERVE_C_YN = 'Y'
-					</isEqual>
-				</isNotEmpty>
-                <isNotEmpty property="searchMsgType">
-               	  	<isEqual property="searchMsgType" compareValue="S">
-				  		AND 	 MSG_TYPE = '4'
-					</isEqual>
-					<isEqual property="searchMsgType" compareValue="L">
-						AND 	 MSG_TYPE = '6'
-						AND		 FILE_CNT = '0'
-					</isEqual>
-					<isEqual property="searchMsgType" compareValue="M">
-						<![CDATA[  
+		SELECT   M2.totMsgCnt,
+				 M2.userId,
+		         M2.msgGroupId,
+		         M2.msgGroupCnt,
+		         M2.smsTxt,
+		         M2.subject,
+		         M2.regdate,
+		         M2.reqdate,
+		         M2.diffMin,
+		         M2.callFrom,
+				 FN_GETHYPHEN(M2.callFrom)	AS callFromComma,		         
+		         M2.totPrice,
+		         M2.eachPrice,
+		         M2.curState,
+		         M2.rsltCode,
+		         M2.rsltCode2,
+		         M2.delFlag,
+		         M2.msgType,
+		         M2.fileCnt,
+		         M2.agentCode,
+		         M2.reserveCYn,
+		         M2.cancelDate,
+		         M2.sendKind,
+				 M2.shipmentStatus,
+				 M2.orderByCode										
+		FROM (		
+			SELECT   COUNT(USER_ID) OVER() AS totMsgCnt,
+					 USER_ID AS userId,
+			         MSG_GROUP_ID AS msgGroupId,
+			         MSG_GROUP_CNT AS msgGroupCnt,
+			         SMS_TXT AS smsTxt,
+			         SUBJECT AS subject,
+			         DATE_FORMAT(REGDATE, '%Y-%m-%d %T') AS regdate,
+			         DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T') AS reqdate,
+			         TIMESTAMPDIFF(MINUTE,DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T'), DATE_FORMAT(NOW(), '%Y-%m-%d %T')) AS diffMin,
+			         CALL_FROM AS callFrom,
+			         TOT_PRICE AS totPrice,
+			         EACH_PRICE AS eachPrice,
+			         CUR_STATE AS curState,
+			         RSLT_CODE AS rsltCode,
+			         RSLT_CODE2 AS rsltCode2,
+			         DEL_FLAG AS delFlag,
+			         MSG_TYPE AS msgType,
+			         FILE_CNT AS fileCnt,
+			         AGENT_CODE AS agentCode,
+			         RESERVE_C_YN AS reserveCYn,
+			         CANCELDATE AS cancelDate,
+			         SEND_KIND as sendKind,
+					CASE
+						WHEN RESERVE_C_YN = 'Y'
+						THEN '예약취소'
+						WHEN CUR_STATE = '0'
+						THEN '발송대기'
+						WHEN CUR_STATE = '1'
+						THEN '발송중'
+						WHEN CUR_STATE = '2'
+						THEN '결과대기'
+						WHEN CUR_STATE = '3'
+						THEN '발송완료'										
+						ELSE ''
+					END shipmentStatus,
+					CASE
+						WHEN A.MSG_TYPE = '6' AND A.FILE_CNT > 0
+						THEN '3'
+						WHEN A.MSG_TYPE = '6' AND A.FILE_CNT = 0
+						THEN '2'
+						ELSE '1'
+					END orderByCode										
+			FROM     ( SELECT
+							 MGD.USER_ID,
+			                 MGD.MSG_GROUP_ID,
+			                 MGD.MSG_GROUP_CNT,
+			                 MD.SMS_TXT,
+			                 MGD.SUBJECT,
+			                 MGD.REGDATE,
+			                 MGD.REQ_DATE,
+			                 MGD.CALL_FROM,
+			                 MGD.TOT_PRICE,
+			                 MGD.EACH_PRICE,
+			                 MGD.DEL_FLAG,
+			                 MGD.MSG_TYPE,
+			                 MGD.FILE_CNT,
+			                 MGD.AGENT_CODE,
+			                 MGD.RESERVE_C_YN,
+			                 MGD.CANCELDATE,
+			                 MD.CUR_STATE,
+			                 MD.RSLT_CODE,
+			                 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
+			                 AND     MGD.USER_ID     = #userId#
+			                 AND     MGD.RESERVE_YN  ='Y'
+			                 AND	 MGD.DEL_FLAG 	 ='N'
+			         WHERE MD.USER_ID     = #userId#
+			         )
+			         A
+			WHERE 1=1 
+		            <isNotEmpty property="stateType">
+						<isEqual property="stateType" compareValue="all">
+							AND 	 CUR_STATE IN ('0','1','2','3')
+						</isEqual>
+						<isEqual property="stateType" compareValue="ready">
+							AND 	 CUR_STATE = '0'
+							AND		 RESERVE_C_YN = 'N'
+						</isEqual>
+						<isEqual property="stateType" compareValue="complete">
+							AND 	 CUR_STATE IN ('2','3')
+							AND		 RESERVE_C_YN = 'N'
+						</isEqual>
+						<isEqual property="stateType" compareValue="cancel">
+							AND 	 RESERVE_C_YN = 'Y'
+						</isEqual>
+					</isNotEmpty>
+	                <isNotEmpty property="searchMsgType">
+	               	  	<isEqual property="searchMsgType" compareValue="S">
+					  		AND 	 MSG_TYPE = '4'
+						</isEqual>
+						<isEqual property="searchMsgType" compareValue="L">
 							AND 	 MSG_TYPE = '6'
-							AND		 FILE_CNT > '0'
-						]]>
-					</isEqual>
-				</isNotEmpty>
-				<isNotEmpty property="tabType">
-					<isEqual property="tabType" compareValue="S">
-						AND 	 MSG_TYPE = '4'
-					</isEqual>
-					<isEqual property="tabType" compareValue="L">
-						AND 	 MSG_TYPE = '6'
-						AND		 FILE_CNT = '0'
-					</isEqual>
-					<isEqual property="tabType" compareValue="M">
-						<![CDATA[  
+							AND		 FILE_CNT = '0'
+						</isEqual>
+						<isEqual property="searchMsgType" compareValue="M">
+							<![CDATA[  
+								AND 	 MSG_TYPE = '6'
+								AND		 FILE_CNT > '0'
+							]]>
+						</isEqual>
+					</isNotEmpty>
+					<isNotEmpty property="tabType">
+						<isEqual property="tabType" compareValue="S">
+							AND 	 MSG_TYPE = '4'
+						</isEqual>
+						<isEqual property="tabType" compareValue="L">
 							AND 	 MSG_TYPE = '6'
-							AND		 FILE_CNT > '0'
+							AND		 FILE_CNT = '0'
+						</isEqual>
+						<isEqual property="tabType" compareValue="M">
+							<![CDATA[  
+								AND 	 MSG_TYPE = '6'
+								AND		 FILE_CNT > '0'
+							]]>
+						</isEqual>
+						<isEqual property="tabType" compareValue="all">
+						AND NOT MSG_TYPE IN ('8', '9')
+						</isEqual>
+					</isNotEmpty>
+					
+					<isNotEmpty property="searchKeyword">
+						<isEqual property="searchCondition" compareValue="1" >
+							AND  	 SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
+						</isEqual>
+				 	    <isEqual property="searchCondition" compareValue="2" >
+			 		    	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')
 						]]>
-					</isEqual>
-					<isEqual property="tabType" compareValue="all">
-					AND NOT MSG_TYPE IN ('8', '9')
-					</isEqual>
-				</isNotEmpty>
-				
-				<isNotEmpty property="searchKeyword">
-					<isEqual property="searchCondition" compareValue="1" >
-						AND  	 SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
-					</isEqual>
-			 	    <isEqual property="searchCondition" compareValue="2" >
-		 		    	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')
-					]]>
-				</isNotEmpty>
-				<isNotEmpty property="endDate">
-					<![CDATA[ 
-						AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
-					]]>
-				</isNotEmpty>
-		GROUP BY MSG_TYPE,
-		         A.MSG_GROUP_ID,
-		         A.FILE_CNT
-		ORDER BY 1=1
-		<isNotEmpty property="searchSortCnd">
-			,$searchSortCnd$
-		</isNotEmpty>
-		<isNotEmpty property="searchSortOrd">
-		 	$searchSortOrd$
-		</isNotEmpty>
-		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+					</isNotEmpty>
+					<isNotEmpty property="endDate">
+						<![CDATA[ 
+							AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
+						]]>
+					</isNotEmpty>
+			GROUP BY MSG_TYPE,
+			         A.MSG_GROUP_ID,
+			         A.FILE_CNT
+			ORDER BY 1=1
+			<isNotEmpty property="searchSortCnd">
+				,$searchSortCnd$
+			</isNotEmpty>
+			<isNotEmpty property="searchSortOrd">
+			 	$searchSortOrd$
+			</isNotEmpty>
+			LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+		) M2
 	
 	</select>
 	
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
@@ -224,210 +224,242 @@
 	
 	<!-- 전체 발송결과 조회  (전송사별)-->
 	<select id="MjonMsgSentDAO.selectAllMsgSentList" parameterClass="mjonMsgSentVO" resultClass="mjonMsgSentVO">
-		
 		SELECT
-			COUNT(USER_ID) OVER()					 AS totMsgCnt
-			, USER_ID								 AS userId
-			, MSG_GROUP_ID							 AS msgGroupId
-			, MSG_GROUP_CNT							 AS msgGroupCnt
-			, SMS_TXT								 AS smsTxt
-			, SUBJECT								 AS subject
-			, DATE_FORMAT(REGDATE, '%Y-%m-%d %T')	 AS regdate
-			, DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')	 AS reqdate
-			, CALL_FROM								 AS callFrom
-			, CALL_TO								 AS callTo
-			, FN_GETHYPHEN(CALL_FROM)	AS callFromComma
-			, FN_GETHYPHEN(CALL_TO)		AS callToComma
-			, IFNULL(ADDR_NM, '-')					 AS addrNm
-			, TOT_PRICE								 AS totPrice
-			, EACH_PRICE							 AS eachPrice
-			, CUR_STATE								 AS curState
-			, RSLT_CODE								 AS rsltCode
-			, RSLT_CODE2							 AS rsltCode2
-			, IF( (RSLT_CODE != '0'
-					AND RSLT_CODE != '100'
-					AND RSLT_CODE != '101'
-					AND RSLT_CODE != '110'
-					AND RSLT_CODE != '800'
-					AND RSLT_CODE != '4100'
-					AND RSLT_CODE != '6600'
-					AND RSLT_CODE != '1000'
-					AND RSLT_CODE != '1001'
-					OR RSLT_CODE2 != '0'
-				)
-			, '1' ,'0')					 AS orderByrsltCode
-			, DEL_FLAG						 AS delFlag
-			, MSG_TYPE						 AS msgType
-			, FILE_CNT						 AS fileCnt
-			, AGENT_CODE					 AS agentCode
-			, RESERVE_C_YN					 AS reserveCYn
-			, CANCELDATE					 AS cancelDate
-			, ''							 AS msgId
-			, msgTypeName					 AS msgTypeName
-			, orderByCode					 AS orderByCode
-			, RESULT						 AS msgResult
-			, sendKind						 AS sendKind
-			, MSG_KIND						 AS msgKind
+			M2.totMsgCnt
+			, M2.userId
+			, M2.msgGroupId
+			, M2.msgGroupCnt
+			, M2.smsTxt
+			, M2.subject
+			, M2.regdate
+			, M2.reqdate
+			, M2.callFrom
+			, M2.callTo
+			, FN_GETHYPHEN(M2.callFrom)	AS callFromComma
+			, FN_GETHYPHEN(M2.callTo)		AS callToComma
+			, M2.addrNm
+			, M2.totPrice
+			, M2.eachPrice
+			, M2.curState
+			, M2.rsltCode
+			, M2.rsltCode2
+			, M2.orderByrsltCode
+			, M2.delFlag
+			, M2.msgType
+			, M2.fileCnt
+			, M2.agentCode
+			, M2.reserveCYn
+			, M2.cancelDate
+			, M2.msgId
+			, M2.msgTypeName
+			, M2.orderByCode
+			, M2.msgResult
+			, M2.sendKind
+			, M2.msgKind
 		FROM
-			( SELECT
-				B.USER_ID
-				, B.MSG_GROUP_ID
-				, B.MSG_GROUP_CNT
-				, B.SMS_TXT
-				, B.SUBJECT
-				, B.REGDATE
-				, B.REQ_DATE
-				, B.CALL_FROM
-				, B.TOT_PRICE
-				, B.EACH_PRICE
-				, B.DEL_FLAG
-				, B.MSG_TYPE
-				, B.FILE_CNT
-				, B.AGENT_CODE
-				, B.RESERVE_C_YN
-				, B.CANCELDATE
-				, A.MSG_SEQ
-				, A.CALL_TO
-				, A.CUR_STATE
-				, A.RSLT_CODE
-				, A.RSLT_CODE2
-				, B.SEND_KIND as sendKind
-				, B.MSG_KIND
-				, CASE
-					WHEN B.MSG_TYPE = '6'
-						AND B.FILE_CNT > 0
-					THEN '그림(MMS)'
-					WHEN B.MSG_TYPE = '6'
-						AND B.FILE_CNT = 0
-					THEN '장문(LMS)'
-					ELSE '단문(SMS)'
-					END msgTypeName
-				, CASE
-					WHEN B.MSG_TYPE = '6'
-						AND B.FILE_CNT > 0
-					THEN '3'
-					WHEN B.MSG_TYPE = '6'
-						AND B.FILE_CNT = 0
-					THEN '2'
-					ELSE '1'
-					END orderByCode
-				, (<include refid="MjonMsgSentDAO.selectAgentResultQuery_A"/>) AS RESULT
-				<include refid="MjonMsgSentDAO.selectJoinQuery"/>
-				AND B.USER_ID = #userId#
-				AND B.DEL_FLAG ='N'
-				AND B.RESERVE_C_YN = 'N'
-				<![CDATA[ 
-					AND B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
-				]]>
-			)M
-			LEFT JOIN
-			(
-				SELECT
-					ADDR_PHONE_NO
-					, ADDR_NM
-				FROM
-					MJ_ADDR
-					WHERE 1=1
-					AND MBER_ID = #userId#
-				GROUP BY ADDR_PHONE_NO
-			)MA
-			ON M.CALL_TO = MA.ADDR_PHONE_NO
-		WHERE 1=1 
-			<isNotEmpty property="stateType">
-				<isEqual property="stateType" compareValue="all">
-					AND CUR_STATE IN ('0','1','2','3')
-				</isEqual>
-				<isEqual property="stateType" compareValue="ready">
-					AND CUR_STATE = '0'
-					AND RESERVE_C_YN = 'N'
-				</isEqual>
-				<isEqual property="stateType" compareValue="complete">
-					AND CUR_STATE IN ('2','3')
-					AND (RSLT_CODE IN ('0','100','101','110','4100','6600','1000','1001')  OR 	 RSLT_CODE2 IN ('0') )
-					AND	 RESERVE_C_YN = 'N'
-				</isEqual>
-				<isEqual property="stateType" compareValue="fail">
-					AND RESERVE_C_YN = 'N'
-					AND (RSLT_CODE NOT IN ('0','100','101','110','4100','6600','1000','1001')  OR 	 RSLT_CODE2 NOT IN ('0') )
-				</isEqual>
-			</isNotEmpty>
-			<isNotEmpty property="searchMsgType">
-				<isEqual property="searchMsgType" compareValue="S">
-					AND MSG_TYPE = '4'
-				</isEqual>
-				<isEqual property="searchMsgType" compareValue="L">
-					AND MSG_TYPE = '6'
-					AND FILE_CNT = '0'
-				</isEqual>
-				<isEqual property="searchMsgType" compareValue="M">
-				<![CDATA[  
-					AND MSG_TYPE = '6'
-					AND FILE_CNT > '0'
-				]]>
-				</isEqual>
-			</isNotEmpty>
-			<isEmpty property="searchMsgType">
-				<isEmpty property="tabType">
-					AND MSG_TYPE IN ('4','6')
+			(		
+			SELECT
+				COUNT(USER_ID) OVER()					 AS totMsgCnt
+				, USER_ID								 AS userId
+				, MSG_GROUP_ID							 AS msgGroupId
+				, MSG_GROUP_CNT							 AS msgGroupCnt
+				, SMS_TXT								 AS smsTxt
+				, SUBJECT								 AS subject
+				, DATE_FORMAT(REGDATE, '%Y-%m-%d %T')	 AS regdate
+				, DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')	 AS reqdate
+				, CALL_FROM								 AS callFrom
+				, CALL_TO								 AS callTo
+				, IFNULL(ADDR_NM, '-')					 AS addrNm
+				, TOT_PRICE								 AS totPrice
+				, EACH_PRICE							 AS eachPrice
+				, CUR_STATE								 AS curState
+				, RSLT_CODE								 AS rsltCode
+				, RSLT_CODE2							 AS rsltCode2
+				, IF( (RSLT_CODE != '0'
+						AND RSLT_CODE != '100'
+						AND RSLT_CODE != '101'
+						AND RSLT_CODE != '110'
+						AND RSLT_CODE != '800'
+						AND RSLT_CODE != '4100'
+						AND RSLT_CODE != '6600'
+						AND RSLT_CODE != '1000'
+						AND RSLT_CODE != '1001'
+						OR RSLT_CODE2 != '0'
+					)
+				, '1' ,'0')					 AS orderByrsltCode
+				, DEL_FLAG						 AS delFlag
+				, MSG_TYPE						 AS msgType
+				, FILE_CNT						 AS fileCnt
+				, AGENT_CODE					 AS agentCode
+				, RESERVE_C_YN					 AS reserveCYn
+				, CANCELDATE					 AS cancelDate
+				, ''							 AS msgId
+				, msgTypeName					 AS msgTypeName
+				, orderByCode					 AS orderByCode
+				, RESULT						 AS msgResult
+				, sendKind						 AS sendKind
+				, MSG_KIND						 AS msgKind
+			FROM
+				( SELECT
+					B.USER_ID
+					, B.MSG_GROUP_ID
+					, B.MSG_GROUP_CNT
+					, B.SMS_TXT
+					, B.SUBJECT
+					, B.REGDATE
+					, B.REQ_DATE
+					, B.CALL_FROM
+					, B.TOT_PRICE
+					, B.EACH_PRICE
+					, B.DEL_FLAG
+					, B.MSG_TYPE
+					, B.FILE_CNT
+					, B.AGENT_CODE
+					, B.RESERVE_C_YN
+					, B.CANCELDATE
+					, A.MSG_SEQ
+					, A.CALL_TO
+					, A.CUR_STATE
+					, A.RSLT_CODE
+					, A.RSLT_CODE2
+					, B.SEND_KIND as sendKind
+					, B.MSG_KIND
+					, CASE
+						WHEN B.MSG_TYPE = '6'
+							AND B.FILE_CNT > 0
+						THEN '그림(MMS)'
+						WHEN B.MSG_TYPE = '6'
+							AND B.FILE_CNT = 0
+						THEN '장문(LMS)'
+						ELSE '단문(SMS)'
+						END msgTypeName
+					, CASE
+						WHEN B.MSG_TYPE = '6'
+							AND B.FILE_CNT > 0
+						THEN '3'
+						WHEN B.MSG_TYPE = '6'
+							AND B.FILE_CNT = 0
+						THEN '2'
+						ELSE '1'
+						END orderByCode
+					, (<include refid="MjonMsgSentDAO.selectAgentResultQuery_A"/>) AS RESULT
+					<include refid="MjonMsgSentDAO.selectJoinQuery"/>
+					AND B.USER_ID = #userId#
+					AND B.DEL_FLAG ='N'
+					AND B.RESERVE_C_YN = 'N'
+					<![CDATA[ 
+						AND B.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
+					]]>
+				)M
+				LEFT JOIN
+				(
+					SELECT
+						ADDR_PHONE_NO
+						, ADDR_NM
+					FROM
+						MJ_ADDR
+						WHERE 1=1
+						AND MBER_ID = #userId#
+					GROUP BY ADDR_PHONE_NO
+				)MA
+				ON M.CALL_TO = MA.ADDR_PHONE_NO
+			WHERE 1=1 
+				<isNotEmpty property="stateType">
+					<isEqual property="stateType" compareValue="all">
+						AND CUR_STATE IN ('0','1','2','3')
+					</isEqual>
+					<isEqual property="stateType" compareValue="ready">
+						AND CUR_STATE = '0'
+						AND RESERVE_C_YN = 'N'
+					</isEqual>
+					<isEqual property="stateType" compareValue="complete">
+						AND CUR_STATE IN ('2','3')
+						AND (RSLT_CODE IN ('0','100','101','110','4100','6600','1000','1001')  OR 	 RSLT_CODE2 IN ('0') )
+						AND	 RESERVE_C_YN = 'N'
+					</isEqual>
+					<isEqual property="stateType" compareValue="fail">
+						AND RESERVE_C_YN = 'N'
+						AND (RSLT_CODE NOT IN ('0','100','101','110','4100','6600','1000','1001')  OR 	 RSLT_CODE2 NOT IN ('0') )
+					</isEqual>
+				</isNotEmpty>
+				<isNotEmpty property="searchMsgType">
+					<isEqual property="searchMsgType" compareValue="S">
+						AND MSG_TYPE = '4'
+					</isEqual>
+					<isEqual property="searchMsgType" compareValue="L">
+						AND MSG_TYPE = '6'
+						AND FILE_CNT = '0'
+					</isEqual>
+					<isEqual property="searchMsgType" compareValue="M">
+					<![CDATA[  
+						AND MSG_TYPE = '6'
+						AND FILE_CNT > '0'
+					]]>
+					</isEqual>
+				</isNotEmpty>
+				<isEmpty property="searchMsgType">
+					<isEmpty property="tabType">
+						AND MSG_TYPE IN ('4','6')
+					</isEmpty>
 				</isEmpty>
-			</isEmpty>
-			<isNotEmpty property="tabType">
-				<isEqual property="tabType" compareValue="all">
-					AND MSG_TYPE IN ('4','6')
+				<isNotEmpty property="tabType">
+					<isEqual property="tabType" compareValue="all">
+						AND MSG_TYPE IN ('4','6')
+					</isEqual>
+					<isEqual property="tabType" compareValue="S">
+						AND MSG_TYPE = '4'
+					</isEqual>
+					<isEqual property="tabType" compareValue="L">
+						AND MSG_TYPE = '6'
+						AND FILE_CNT = '0'
+					</isEqual>
+					<isEqual property="tabType" compareValue="M">
+					<![CDATA[  
+						AND MSG_TYPE = '6'
+						AND FILE_CNT > '0'
+					]]>
+					</isEqual>
+				</isNotEmpty>
+				<isNotEmpty property="searchKeyword">
+					<isEqual property="searchCondition" compareValue="1" >
+						AND SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="2" >
+						AND CALL_FROM LIKE CONCAT('%', #searchKeyword#, '%')
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="3" >
+						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')
+					]]>
+				</isNotEmpty>
+				<isNotEmpty property="endDate">
+					<![CDATA[ 
+						AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
+					]]>
+				</isNotEmpty>
+			GROUP BY MSG_GROUP_ID
+			ORDER BY 1=1
+			<isNotEmpty property="searchSortCnd">
+				<isEqual property="searchSortCnd" compareValue="curState">
+					, curState  $searchSortOrd$
+					, orderByrsltCode
 				</isEqual>
-				<isEqual property="tabType" compareValue="S">
-					AND MSG_TYPE = '4'
-				</isEqual>
-				<isEqual property="tabType" compareValue="L">
-					AND MSG_TYPE = '6'
-					AND FILE_CNT = '0'
-				</isEqual>
-				<isEqual property="tabType" compareValue="M">
-				<![CDATA[  
-					AND MSG_TYPE = '6'
-					AND FILE_CNT > '0'
-				]]>
-				</isEqual>
+				<isNotEqual  property="searchSortCnd" compareValue="curState">
+					,$searchSortCnd$
+				</isNotEqual>
 			</isNotEmpty>
-			<isNotEmpty property="searchKeyword">
-				<isEqual property="searchCondition" compareValue="1" >
-					AND SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
-				</isEqual>
-				<isEqual property="searchCondition" compareValue="2" >
-					AND CALL_FROM LIKE CONCAT('%', #searchKeyword#, '%')
-				</isEqual>
-				<isEqual property="searchCondition" compareValue="3" >
-					AND CALL_TO LIKE CONCAT('%', #searchKeyword#, '%')
-				</isEqual>
+			<isNotEmpty property="searchSortOrd">
+				$searchSortOrd$
 			</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')
-				]]>
-			</isNotEmpty>
-			<isNotEmpty property="endDate">
-				<![CDATA[ 
-					AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
-				]]>
-			</isNotEmpty>
-		GROUP BY MSG_GROUP_ID
-		ORDER BY 1=1
-		<isNotEmpty property="searchSortCnd">
-			<isEqual property="searchSortCnd" compareValue="curState">
-				, curState  $searchSortOrd$
-				, orderByrsltCode
-			</isEqual>
-			<isNotEqual  property="searchSortCnd" compareValue="curState">
-				,$searchSortCnd$
-			</isNotEqual>
-		</isNotEmpty>
-		<isNotEmpty property="searchSortOrd">
-			$searchSortOrd$
-		</isNotEmpty>
-		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+			LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+		) M2
 	</select>
 	
 	<!-- 전체 발송결과 조회  (전송사별) => 주소록 조인 제거버전-->
@@ -573,289 +605,347 @@
 		
 	<!-- 전체 발송결과 조회  (개인별)-->
 	<select id="MjonMsgSentDAO.selectAllPrivateMsgSentList" parameterClass="mjonMsgSentVO" resultClass="mjonMsgSentVO">
-		
 		SELECT
-			COUNT(USER_ID) OVER()					 AS totMsgCnt
-			, USER_ID								 AS userId
-			, IFNULL(ADDR_NM, '-')					 AS addrNm
-			, MSG_GROUP_ID							 AS msgGroupId
-			, USERDATA								 AS msgSeq
-			, '1'									 AS msgGroupCnt
-			, SMS_TXT								 AS smsTxt
-			, SUBJECT								 AS subject
-			, DATE_FORMAT(REGDATE, '%Y-%m-%d %T')	 AS regdate
-			, DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')	 AS reqdate
-			, CALL_FROM								 AS callFrom
-			, CALL_TO								 AS callTo
-			, FN_GETHYPHEN(CALL_FROM)	AS callFromComma
-			, FN_GETHYPHEN(CALL_TO)		AS callToComma			
-			, TOT_PRICE								 AS totPrice
-			, EACH_PRICE							 AS eachPrice
-			, CUR_STATE								 AS curState
-			, RSLT_CODE								 AS rsltCode
-			, RSLT_CODE2							 AS rsltCode2
-			, IF( (RSLT_CODE != '0'
-					AND RSLT_CODE != '100'
-					AND RSLT_CODE != '101'
-					AND RSLT_CODE != '110'
-					AND RSLT_CODE != '800'
-					AND RSLT_CODE != '4100'
-					AND RSLT_CODE != '6600'
-					AND RSLT_CODE != '1000'
-					AND RSLT_CODE != '1001'
-					OR RSLT_CODE2 != '0'
-				)
-			, '1' ,'0')								 AS orderByrsltCode
-			, DEL_FLAG								 AS delFlag
-			, MSG_TYPE								 AS msgType
-			, FILE_CNT								 AS fileCnt
-			, AGENT_CODE							 AS agentCode
-			, RESERVE_C_YN							 AS reserveCYn
-			, CANCELDATE							 AS cancelDate
-			, MSG_ID								 AS msgId
-			, RESULT								 AS msgResult
-			, sendKind
+			M2.totMsgCnt
+			, M2.userId
+			, M2.addrNm
+			, M2.msgGroupId
+			, M2.msgSeq
+			, M2.msgGroupCnt
+			, M2.smsTxt
+			, M2.subject
+			, M2.regdate
+			, M2.reqdate
+			, M2.callFrom
+			, M2.callTo
+			, FN_GETHYPHEN(M2.callFrom)	AS callFromComma
+			, FN_GETHYPHEN(M2.callTo)		AS callToComma			
+			, M2.totPrice
+			, M2.eachPrice
+			, M2.curState
+			, M2.rsltCode
+			, M2.rsltCode2
+			, M2.orderByrsltCode
+			, M2.delFlag
+			, M2.msgType
+			, M2.fileCnt
+			, M2.agentCode
+			, M2.reserveCYn
+			, M2.cancelDate
+			, M2.msgId
+			, M2.msgResult
+			, M2.sendKind
 		FROM
-			(SELECT
-				MGD.USER_ID
-				, MGD.MSG_GROUP_ID
-				, MGD.MSG_GROUP_CNT
-				, MD.SMS_TXT
-				, MGD.SUBJECT
-				, MGD.REGDATE
-				, MGD.REQ_DATE
-				, MGD.CALL_FROM
-				, MGD.TOT_PRICE
-				, MGD.EACH_PRICE
-				, MGD.DEL_FLAG
-				, MGD.MSG_TYPE
-				, MGD.FILE_CNT
-				, MGD.AGENT_CODE
-				, MGD.RESERVE_C_YN
-				, MGD.CANCELDATE
-				, MD.MSG_ID
-				, MD.MSG_SEQ
-				, MD.USERDATA
-				, MD.CALL_TO
-				, MD.CUR_STATE
-				, MD.RSLT_CODE
-				, MD.RSLT_CODE2
-				, MGD.SEND_KIND AS sendKind
-				,(<include refid="MjonMsgSentDAO.selectAgentResultQuery_MD"/>) AS RESULT
+			(		
+			SELECT
+				COUNT(USER_ID) OVER()					 AS totMsgCnt
+				, USER_ID								 AS userId
+				, IFNULL(ADDR_NM, '-')					 AS addrNm
+				, MSG_GROUP_ID							 AS msgGroupId
+				, USERDATA								 AS msgSeq
+				, '1'									 AS msgGroupCnt
+				, SMS_TXT								 AS smsTxt
+				, SUBJECT								 AS subject
+				, DATE_FORMAT(REGDATE, '%Y-%m-%d %T')	 AS regdate
+				, DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')	 AS reqdate
+				, CALL_FROM								 AS callFrom
+				, CALL_TO								 AS callTo
+				, TOT_PRICE								 AS totPrice
+				, EACH_PRICE							 AS eachPrice
+				, CUR_STATE								 AS curState
+				, RSLT_CODE								 AS rsltCode
+				, RSLT_CODE2							 AS rsltCode2
+				, IF( (RSLT_CODE != '0'
+						AND RSLT_CODE != '100'
+						AND RSLT_CODE != '101'
+						AND RSLT_CODE != '110'
+						AND RSLT_CODE != '800'
+						AND RSLT_CODE != '4100'
+						AND RSLT_CODE != '6600'
+						AND RSLT_CODE != '1000'
+						AND RSLT_CODE != '1001'
+						OR RSLT_CODE2 != '0'
+					)
+				, '1' ,'0')								 AS orderByrsltCode
+				, DEL_FLAG								 AS delFlag
+				, MSG_TYPE								 AS msgType
+				, FILE_CNT								 AS fileCnt
+				, AGENT_CODE							 AS agentCode
+				, RESERVE_C_YN							 AS reserveCYn
+				, CANCELDATE							 AS cancelDate
+				, MSG_ID								 AS msgId
+				, RESULT								 AS msgResult
+				, sendKind
 			FROM
-				mj_msg_data MD
-				INNER JOIN MJ_MSG_GROUP_DATA MGD
-				ON MD.MSG_GROUP_ID		= MGD.MSG_GROUP_ID
-				AND MGD.USER_ID			= #userId#
-				AND MGD.DEL_FLAG		='N'
-				AND	MGD.RESERVE_C_YN	='N'
-				<![CDATA[ 
-					AND MGD.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
-				]]>				
-			)A
-			LEFT JOIN
 				(SELECT
-					ADDR_PHONE_NO
-					, ADDR_NM
+					MGD.USER_ID
+					, MGD.MSG_GROUP_ID
+					, MGD.MSG_GROUP_CNT
+					, MD.SMS_TXT
+					, MGD.SUBJECT
+					, MGD.REGDATE
+					, MGD.REQ_DATE
+					, MGD.CALL_FROM
+					, MGD.TOT_PRICE
+					, MGD.EACH_PRICE
+					, MGD.DEL_FLAG
+					, MGD.MSG_TYPE
+					, MGD.FILE_CNT
+					, MGD.AGENT_CODE
+					, MGD.RESERVE_C_YN
+					, MGD.CANCELDATE
+					, MD.MSG_ID
+					, MD.MSG_SEQ
+					, MD.USERDATA
+					, MD.CALL_TO
+					, MD.CUR_STATE
+					, MD.RSLT_CODE
+					, MD.RSLT_CODE2
+					, MGD.SEND_KIND AS sendKind
+					,(<include refid="MjonMsgSentDAO.selectAgentResultQuery_MD"/>) AS RESULT
 				FROM
-					MJ_ADDR
-				WHERE
-					MBER_ID = #userId#
-				GROUP BY
-					ADDR_PHONE_NO
-				)MA
-				ON A.CALL_TO = MA.ADDR_PHONE_NO
-		WHERE 1=1 
-		<isNotEmpty property="stateType">
-			<isEqual property="stateType" compareValue="all">
-				AND CUR_STATE IN ('0','1','2','3')
-			</isEqual>
-			<isEqual property="stateType" compareValue="ready">
-				AND CUR_STATE = '0'
-				AND RESERVE_C_YN = 'N'
-			</isEqual>
-			<isEqual property="stateType" compareValue="complete">
-				AND CUR_STATE IN ('2','3')
-				AND (RESULT = 'S' )
-				AND RESERVE_C_YN = 'N'
-			</isEqual>
-			<isEqual property="stateType" compareValue="fail">
-				AND RESERVE_C_YN = 'N'
-				AND (RESULT = 'F' )
-			</isEqual>
-		</isNotEmpty>
-		<isNotEmpty property="searchMsgType">
-			<isEqual property="searchMsgType" compareValue="S">
-				AND MSG_TYPE = '4'
-			</isEqual>
-			<isEqual property="searchMsgType" compareValue="L">
-				AND MSG_TYPE = '6'
-				AND FILE_CNT = '0'
-			</isEqual>
-			<isEqual property="searchMsgType" compareValue="M">
-				<![CDATA[  
+					mj_msg_data MD
+					INNER JOIN MJ_MSG_GROUP_DATA MGD
+					ON MD.MSG_GROUP_ID		= MGD.MSG_GROUP_ID
+					AND MGD.USER_ID			= #userId#
+					AND MGD.DEL_FLAG		='N'
+					AND	MGD.RESERVE_C_YN	='N'
+					<![CDATA[ 
+						AND MGD.REQ_DATE <= DATE_ADD(NOW(), INTERVAL 60 MINUTE)
+					]]>				
+				)A
+				LEFT JOIN
+					(SELECT
+						ADDR_PHONE_NO
+						, ADDR_NM
+					FROM
+						MJ_ADDR
+					WHERE
+						MBER_ID = #userId#
+					GROUP BY
+						ADDR_PHONE_NO
+					)MA
+					ON A.CALL_TO = MA.ADDR_PHONE_NO
+			WHERE 1=1 
+			<isNotEmpty property="stateType">
+				<isEqual property="stateType" compareValue="all">
+					AND CUR_STATE IN ('0','1','2','3')
+				</isEqual>
+				<isEqual property="stateType" compareValue="ready">
+					AND CUR_STATE = '0'
+					AND RESERVE_C_YN = 'N'
+				</isEqual>
+				<isEqual property="stateType" compareValue="complete">
+					AND CUR_STATE IN ('2','3')
+					AND (RESULT = 'S' )
+					AND RESERVE_C_YN = 'N'
+				</isEqual>
+				<isEqual property="stateType" compareValue="fail">
+					AND RESERVE_C_YN = 'N'
+					AND (RESULT = 'F' )
+				</isEqual>
+			</isNotEmpty>
+			<isNotEmpty property="searchMsgType">
+				<isEqual property="searchMsgType" compareValue="S">
+					AND MSG_TYPE = '4'
+				</isEqual>
+				<isEqual property="searchMsgType" compareValue="L">
 					AND MSG_TYPE = '6'
-					AND FILE_CNT > '0'
-				]]>
-			</isEqual>
-		</isNotEmpty>
-		<isEmpty property="searchMsgType">
-			<isEmpty property="tabType">
-				AND MSG_TYPE IN ('4','6')
+					AND FILE_CNT = '0'
+				</isEqual>
+				<isEqual property="searchMsgType" compareValue="M">
+					<![CDATA[  
+						AND MSG_TYPE = '6'
+						AND FILE_CNT > '0'
+					]]>
+				</isEqual>
+			</isNotEmpty>
+			<isEmpty property="searchMsgType">
+				<isEmpty property="tabType">
+					AND MSG_TYPE IN ('4','6')
+				</isEmpty>
 			</isEmpty>
-		</isEmpty>
-		<isNotEmpty property="tabType">
-			<isEqual property="tabType" compareValue="all">
-				AND MSG_TYPE IN ('4','6')
-			</isEqual>
-			<isEqual property="tabType" compareValue="S">
-				AND MSG_TYPE = '4'
-			</isEqual>
-			<isEqual property="tabType" compareValue="L">
-				AND MSG_TYPE = '6'
-				AND FILE_CNT = '0'
-			</isEqual>
-			<isEqual property="tabType" compareValue="M">
-				<![CDATA[  
+			<isNotEmpty property="tabType">
+				<isEqual property="tabType" compareValue="all">
+					AND MSG_TYPE IN ('4','6')
+				</isEqual>
+				<isEqual property="tabType" compareValue="S">
+					AND MSG_TYPE = '4'
+				</isEqual>
+				<isEqual property="tabType" compareValue="L">
 					AND MSG_TYPE = '6'
-					AND FILE_CNT > '0'
+					AND FILE_CNT = '0'
+				</isEqual>
+				<isEqual property="tabType" compareValue="M">
+					<![CDATA[  
+						AND MSG_TYPE = '6'
+						AND FILE_CNT > '0'
+					]]>
+				</isEqual>
+			</isNotEmpty>
+			<isEmpty property="tabType">
+					AND MSG_TYPE IN ('4','6')
+			</isEmpty>
+			<isNotEmpty property="searchKeyword">
+				<isEqual property="searchCondition" compareValue="1" >
+					AND SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
+				</isEqual>
+				<isEqual property="searchCondition" compareValue="2" >
+					AND	CALL_FROM 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')
 				]]>
-			</isEqual>
-		</isNotEmpty>
-		<isEmpty property="tabType">
-				AND MSG_TYPE IN ('4','6')
-		</isEmpty>
-		<isNotEmpty property="searchKeyword">
-			<isEqual property="searchCondition" compareValue="1" >
-				AND SUBJECT LIKE CONCAT('%', #searchKeyword#, '%')
-			</isEqual>
-			<isEqual property="searchCondition" compareValue="2" >
-				AND	CALL_FROM 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')
-			]]>
-		</isNotEmpty>
-		<isNotEmpty property="endDate">
-			<![CDATA[ 
-				AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
-			]]>
-		</isNotEmpty>
-		ORDER BY 1=1, MSG_ID DESC
-		<isNotEmpty property="searchSortCnd">
-			<isEqual property="searchSortCnd" compareValue="curState">
-				, curState  $searchSortOrd$
-				, orderByrsltCode
-			</isEqual>
-			<isNotEqual  property="searchSortCnd" compareValue="curState">
-				,$searchSortCnd$
-			</isNotEqual>
-		</isNotEmpty>
-		<isNotEmpty property="searchSortOrd">
-			$searchSortOrd$
-		</isNotEmpty>
-		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+			</isNotEmpty>
+			<isNotEmpty property="endDate">
+				<![CDATA[ 
+					AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#endDate#, '%Y-%m-%d')  
+				]]>
+			</isNotEmpty>
+			ORDER BY 1=1, MSG_ID DESC
+			<isNotEmpty property="searchSortCnd">
+				<isEqual property="searchSortCnd" compareValue="curState">
+					, curState  $searchSortOrd$
+					, orderByrsltCode
+				</isEqual>
+				<isNotEqual  property="searchSortCnd" compareValue="curState">
+					,$searchSortCnd$
+				</isNotEqual>
+			</isNotEmpty>
+			<isNotEmpty property="searchSortOrd">
+				$searchSortOrd$
+			</isNotEmpty>
+			LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+		) M2
 	</select>
 	
 	<!-- 건수별 상세 리스트 조회-->
 	<select id="MjonMsgSentDAO.selectAllMsgSentDetailList" parameterClass="mjonMsgSentVO" resultClass="mjonMsgSentVO">
-		
 		SELECT
-			COUNT(USER_ID) OVER()					 AS totMsgCnt
-			, USER_ID								 AS userId
-			, IFNULL(ADDR_NM, '-')					 AS addrNm
-			, MSG_GROUP_ID							 AS msgGroupId
-			, '1'									 AS msgGroupCnt
-			, SMS_TXT								 AS smsTxt
-			, SUBJECT								 AS subject
-			, DATE_FORMAT(REGDATE, '%Y-%m-%d %T')	 AS regdate
-			, DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')	 AS reqdate
-			, CALL_FROM								 AS callFrom
-			, CALL_TO								 AS callTo
-			, FN_GETHYPHEN(CALL_FROM)	AS callFromComma
-			, FN_GETHYPHEN(CALL_TO)		AS callToComma			
-			, TOT_PRICE								 AS totPrice
-			, EACH_PRICE							 AS eachPrice
-			, CUR_STATE								 AS curState
-			, RSLT_CODE								 AS rsltCode
-			, RSLT_CODE2							 AS rsltCode2
-			, DEL_FLAG								 AS delFlag
-			, MSG_TYPE								 AS msgType
-			, FILE_CNT								 AS fileCnt
-			, AGENT_CODE							 AS agentCode
-			, RESERVE_C_YN							 AS reserveCYn
-			, CANCELDATE							 AS cancelDate
-			, MSG_ID								 AS msgId
-			, MSG_SEQ								 AS msgSeq
-			, RESULT								 AS msgResult
+			M2.totMsgCnt
+			, M2.userId
+			, M2.addrNm
+			, M2.msgGroupId
+			, M2.msgGroupCnt
+			, M2.smsTxt
+			, M2.subject
+			, M2.regdate
+			, M2.reqdate
+			, M2.callFrom
+			, M2.callTo
+			, FN_GETHYPHEN(M2.callFrom)	AS callFromComma
+			, FN_GETHYPHEN(M2.callTo)		AS callToComma			
+			, M2.totPrice
+			, M2.eachPrice
+			, M2.curState
+			, M2.rsltCode
+			, M2.rsltCode2
+			, M2.delFlag
+			, M2.msgType
+			, M2.fileCnt
+			, M2.agentCode
+			, M2.reserveCYn
+			, M2.cancelDate
+			, M2.msgId
+			, M2.msgSeq
+			, M2.msgResult
 		FROM
-			(SELECT
-				MGD.USER_ID
-				, MGD.MSG_GROUP_ID
-				, MGD.MSG_GROUP_CNT
-				, MGD.SMS_TXT
-				, MGD.SUBJECT
-				, MGD.REGDATE
-				, MGD.REQ_DATE
-				, MGD.CALL_FROM
-				, MGD.TOT_PRICE
-				, MGD.EACH_PRICE
-				, MGD.DEL_FLAG
-				, MGD.MSG_TYPE
-				, MGD.FILE_CNT
-				, MGD.AGENT_CODE
-				, MGD.RESERVE_C_YN
-				, MGD.CANCELDATE
-				, MD.MSG_ID
-				, MD.MSG_SEQ
-				, MD.USERDATA
-				, MD.CALL_TO
-				, MD.CUR_STATE
-				, MD.RSLT_CODE
-				, MD.RSLT_CODE2
-				, (<include refid="MjonMsgSentDAO.selectAgentResultQuery_MD"/>) AS RESULT	
+			(		
+			SELECT
+				COUNT(USER_ID) OVER()					 AS totMsgCnt
+				, USER_ID								 AS userId
+				, IFNULL(ADDR_NM, '-')					 AS addrNm
+				, MSG_GROUP_ID							 AS msgGroupId
+				, '1'									 AS msgGroupCnt
+				, SMS_TXT								 AS smsTxt
+				, SUBJECT								 AS subject
+				, DATE_FORMAT(REGDATE, '%Y-%m-%d %T')	 AS regdate
+				, DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')	 AS reqdate
+				, CALL_FROM								 AS callFrom
+				, CALL_TO								 AS callTo
+				, TOT_PRICE								 AS totPrice
+				, EACH_PRICE							 AS eachPrice
+				, CUR_STATE								 AS curState
+				, RSLT_CODE								 AS rsltCode
+				, RSLT_CODE2							 AS rsltCode2
+				, DEL_FLAG								 AS delFlag
+				, MSG_TYPE								 AS msgType
+				, FILE_CNT								 AS fileCnt
+				, AGENT_CODE							 AS agentCode
+				, RESERVE_C_YN							 AS reserveCYn
+				, CANCELDATE							 AS cancelDate
+				, MSG_ID								 AS msgId
+				, MSG_SEQ								 AS msgSeq
+				, RESULT								 AS msgResult
 			FROM
-				MJ_MSG_DATA MD
-				INNER JOIN MJ_MSG_GROUP_DATA MGD
-				ON MD.MSG_GROUP_ID	= MGD.MSG_GROUP_ID
-				AND MD.MSG_GROUP_ID	= #msgGroupId#
-				AND MGD.USER_ID		= #userId#
-				AND MGD.DEL_FLAG	='N'
-			)A
-			LEFT JOIN
 				(SELECT
-					ADDR_PHONE_NO
-					, ADDR_NM
+					MGD.USER_ID
+					, MGD.MSG_GROUP_ID
+					, MGD.MSG_GROUP_CNT
+					, MGD.SMS_TXT
+					, MGD.SUBJECT
+					, MGD.REGDATE
+					, MGD.REQ_DATE
+					, MGD.CALL_FROM
+					, MGD.TOT_PRICE
+					, MGD.EACH_PRICE
+					, MGD.DEL_FLAG
+					, MGD.MSG_TYPE
+					, MGD.FILE_CNT
+					, MGD.AGENT_CODE
+					, MGD.RESERVE_C_YN
+					, MGD.CANCELDATE
+					, MD.MSG_ID
+					, MD.MSG_SEQ
+					, MD.USERDATA
+					, MD.CALL_TO
+					, MD.CUR_STATE
+					, MD.RSLT_CODE
+					, MD.RSLT_CODE2
+					, (<include refid="MjonMsgSentDAO.selectAgentResultQuery_MD"/>) AS RESULT	
 				FROM
-					MJ_ADDR
-				WHERE 1=1
-					AND MBER_ID = #userId#
-				GROUP BY
-					ADDR_PHONE_NO
-				)MA
-				ON A.CALL_TO = MA.ADDR_PHONE_NO
-		WHERE 1=1 
-		<isNotEmpty property="resultType">
-			<isEqual property="resultType" compareValue="S">
-				AND A.RESULT = 'S'
-			</isEqual>
-			<isEqual property="resultType" compareValue="F">
-				AND A.RESULT IN ('F', 'W')
-			</isEqual>
-		</isNotEmpty>
-		ORDER BY 1=1
-		<isNotEmpty property="searchSortCnd">
-			,$searchSortCnd$
-		</isNotEmpty>
-		<isNotEmpty property="searchSortOrd">
-		 	$searchSortOrd$
-		</isNotEmpty>
-		LIMIT  #recordCountPerPage# OFFSET #firstIndex#	
+					MJ_MSG_DATA MD
+					INNER JOIN MJ_MSG_GROUP_DATA MGD
+					ON MD.MSG_GROUP_ID	= MGD.MSG_GROUP_ID
+					AND MD.MSG_GROUP_ID	= #msgGroupId#
+					AND MGD.USER_ID		= #userId#
+					AND MGD.DEL_FLAG	='N'
+				)A
+				LEFT JOIN
+					(SELECT
+						ADDR_PHONE_NO
+						, ADDR_NM
+					FROM
+						MJ_ADDR
+					WHERE 1=1
+						AND MBER_ID = #userId#
+					GROUP BY
+						ADDR_PHONE_NO
+					)MA
+					ON A.CALL_TO = MA.ADDR_PHONE_NO
+			WHERE 1=1 
+			<isNotEmpty property="resultType">
+				<isEqual property="resultType" compareValue="S">
+					AND A.RESULT = 'S'
+				</isEqual>
+				<isEqual property="resultType" compareValue="F">
+					AND A.RESULT IN ('F', 'W')
+				</isEqual>
+			</isNotEmpty>
+			ORDER BY 1=1
+			<isNotEmpty property="searchSortCnd">
+				,$searchSortCnd$
+			</isNotEmpty>
+			<isNotEmpty property="searchSortOrd">
+			 	$searchSortOrd$
+			</isNotEmpty>
+			LIMIT  #recordCountPerPage# OFFSET #firstIndex#
+		) M2	
 	</select> 
 	
 	<!-- 발송 결과 성공 실패 건수 리스트 불러오기 (전송사별)-->
@@ -999,39 +1089,54 @@
 	
 	<!-- 문자 내용 상세보기 조회 (상세보기 버튼 클릭시)-->
 	<select id="MjonMsgSentDAO.selectMsgSentDetailDataAjax2" parameterClass="mjonMsgSentVO" resultClass="mjonMsgSentVO">
-		
 		SELECT
-			MGD.MSG_GROUP_ID	AS msgGroupId
-			, MGD.USER_ID		AS userId
-			, MD.SMS_TXT		AS smsTxt
-			, MD.SUBJECT		AS subject
-			, MGD.REQ_DATE		AS reqdate
-			, MGD.MSG_TYPE		AS msgType
-			, MGD.FILE_CNT		AS fileCnt
-			, MD.SENT_DATE		AS sentDate
-			, MD.FILE_PATH1		AS filePath1
-			, MD.FILE_PATH2		AS filePath2
-			, MD.FILE_PATH3		AS filePath3
-			, MD.CALL_FROM		AS callFrom
-			, MD.CALL_TO		AS callTo
-			, FN_GETHYPHEN(MD.CALL_FROM)	AS callFromComma
-			, FN_GETHYPHEN(MD.CALL_TO)		AS callToComma			
-		FROM
-			MJ_MSG_GROUP_DATA MGD
-			INNER JOIN MJ_MSG_DATA MD
-			ON MGD.MSG_GROUP_ID		= MD.MSG_GROUP_ID
-			AND MGD.USER_ID			= MD.USER_ID
-		WHERE
-			MGD.USER_ID				= #userId#
-			/* JSP 2022.07.14 주석처리 : 발송관리 => 아래 조건때문에 오류 발생
-			AND MGD.DEL_FLAG = 'N'
-			AND MGD.RESERVE_YN = 'N'
-			*/
-			AND MGD.MSG_GROUP_ID = #msgGroupId#
-			<isNotEmpty property="msgId">
-				AND MD.MSG_ID = #msgId#
-			</isNotEmpty>
-		LIMIT  1
+			M2.msgGroupId
+			, M2.userId
+			, M2.smsTxt
+			, M2.subject
+			, M2.reqdate
+			, M2.msgType
+			, M2.fileCnt
+			, M2.sentDate
+			, M2.filePath1
+			, M2.filePath2
+			, M2.filePath3
+			, M2.callFrom
+			, M2.callTo
+			, FN_GETHYPHEN(M2.callFrom)	AS callFromComma
+			, FN_GETHYPHEN(M2.callTo)		AS callToComma			
+		FROM (		
+			SELECT
+				MGD.MSG_GROUP_ID	AS msgGroupId
+				, MGD.USER_ID		AS userId
+				, MD.SMS_TXT		AS smsTxt
+				, MD.SUBJECT		AS subject
+				, MGD.REQ_DATE		AS reqdate
+				, MGD.MSG_TYPE		AS msgType
+				, MGD.FILE_CNT		AS fileCnt
+				, MD.SENT_DATE		AS sentDate
+				, MD.FILE_PATH1		AS filePath1
+				, MD.FILE_PATH2		AS filePath2
+				, MD.FILE_PATH3		AS filePath3
+				, MD.CALL_FROM		AS callFrom
+				, MD.CALL_TO		AS callTo
+			FROM
+				MJ_MSG_GROUP_DATA MGD
+				INNER JOIN MJ_MSG_DATA MD
+				ON MGD.MSG_GROUP_ID		= MD.MSG_GROUP_ID
+				AND MGD.USER_ID			= MD.USER_ID
+			WHERE
+				MGD.USER_ID				= #userId#
+				/* JSP 2022.07.14 주석처리 : 발송관리 => 아래 조건때문에 오류 발생
+				AND MGD.DEL_FLAG = 'N'
+				AND MGD.RESERVE_YN = 'N'
+				*/
+				AND MGD.MSG_GROUP_ID = #msgGroupId#
+				<isNotEmpty property="msgId">
+					AND MD.MSG_ID = #msgId#
+				</isNotEmpty>
+			LIMIT  1
+		) M2
 	
 	</select>
 		
Add a comment
List