itn 2023-06-17
알림톡 관리자 발송목록, 회원상세 알림톡 발송목록 수정
@1dac2a491a883df6d3aa57442efe29fd23b4aa41
src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/service/MjonKakaoATService.java
@@ -9,6 +9,9 @@
 	//알림톡 전체 발송 리스트
 	List<KakaoVO> selectMjonKakaoATGroupCompleteList(KakaoVO searchVO)  throws Exception;
 		
+	//알림톡 전체 발송 리스트(대시보드용)
+	List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO searchVO)  throws Exception;	
+	
 	//알림톡 발송 상세 리스트
 	List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO searchVO) throws Exception;
 	
src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATDAO.java
@@ -18,6 +18,11 @@
 	}	
 		
 	@SuppressWarnings("unchecked")
+	public List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO p_mjonKakaoATVO) throws Exception{
+		return (List<KakaoVO>)list("mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList", p_mjonKakaoATVO);
+	}	
+	
+	@SuppressWarnings("unchecked")
 	public List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO p_mjonKakaoATVO)  throws Exception{
 		return (List<KakaoVO>)list("mjonKakaoATDAO.selectMjonKakaoATGroupDtList", p_mjonKakaoATVO);
 	}
src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java
--- src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java
+++ src/main/java/itn/let/kakao/admin/kakaoAt/service/impl/MjonKakaoATServiceImpl.java
@@ -75,6 +75,23 @@
 	}	
 		
 	@Override
+	public List<KakaoVO> selectMjonKakaoATGroupCompleteByUserList(KakaoVO p_mjonKakaoATVO) throws Exception {
+		
+		List<KakaoVO> result = new ArrayList<KakaoVO>();
+		
+		try {
+			
+			result = mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList(p_mjonKakaoATVO); 
+			
+		} catch (Exception e) {
+			System.out.println("selectMjonKakaoATGroupCompleteByUserList ServiceImpl Error ::: " + e);
+		}
+		
+		
+		return result;
+	}		
+	
+	@Override
 	public List<KakaoVO> selectMjonKakaoATGroupDtList(KakaoVO p_mjonKakaoATVO) throws Exception {
 		
 		List<KakaoVO> resultList = new ArrayList<KakaoVO>();
src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
--- src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
+++ src/main/java/itn/let/uss/umt/web/EgovUserManageController.java
@@ -1376,7 +1376,7 @@
 			sendKakaoVO.setSearchSortOrd("desc");
 			sendKakaoVO.setFirstIndex(0);
 			List<KakaoVO> kakaoResultList = new ArrayList<KakaoVO>();
-			kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteList(sendKakaoVO);
+			kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(sendKakaoVO);
 			
 	        model.addAttribute("kakaoResultList", kakaoResultList);
 			
@@ -1905,7 +1905,7 @@
 				//searchVO.setReserveYn("N");
 				// 문자발송 완료건은 모두 보이도록 처리
 				
-				kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteList(searchVO);
+				kakaoResultList = mjonKakaoATService.selectMjonKakaoATGroupCompleteByUserList(searchVO);
 		        model.addAttribute("kakaoResultList", kakaoResultList);
 		        
 		        //카카오톡 발송 통계 정보 불러오기
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
@@ -146,7 +146,7 @@
 						ELSE 'F'
 					END 
 				) AS result ,
-				<!-- ( SELECT COUNT(0) 
+				( SELECT COUNT(0) 
 					FROM    MJ_MSG_DATA C
 					WHERE   C.DEL_FLAG     = 'N'
 					AND     C.RESERVE_C_YN = 'N'
@@ -166,6 +166,14 @@
 					WHERE   C.DEL_FLAG     = 'N'
 					AND     C.RESERVE_C_YN = 'N'
 					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
+					AND     C.RSLT_CODE != '7000'
+					AND     C.MSG_TYPE = '8'
+				)	AS atFailCount ,
+				<!-- ( SELECT COUNT(0) 
+					FROM    MJ_MSG_DATA C
+					WHERE   C.DEL_FLAG     = 'N'
+					AND     C.RESERVE_C_YN = 'N'
+					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
 					AND     C.RSLT_CODE = '7000'
 					AND     C.MSG_TYPE = '9'
 				)	AS ftSuccessCount ,
@@ -175,20 +183,9 @@
 					AND     C.RESERVE_C_YN = 'N'
 					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
 					AND     C.RSLT_CODE != '7000'
-					AND     C.MSG_TYPE = '8'
-				)	AS atFailCount ,
-				( SELECT COUNT(0) 
-					FROM    MJ_MSG_DATA C
-					WHERE   C.DEL_FLAG     = 'N'
-					AND     C.RESERVE_C_YN = 'N'
-					AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
-					AND     C.RSLT_CODE != '7000'
 					AND     C.MSG_TYPE = '9'
 				)	AS ftFailCount , -->
-				'0' AS successCount,
-				'0' AS atSuccessCount,
 				'0' AS ftSuccessCount,
-				'0' AS atFailCount,
 				'0' AS ftFailCount,
 				MSG_NOTICETALK_SENDER_KEY ,
 				MSG_NOTICETALK_TMP_KEY,
@@ -201,9 +198,9 @@
 				AND MD.DEL_FLAG = 'N'
 				<!-- JSPark 2023.03.24 알림톡 전송완료 목록은 (즉시 + 예약 발송완료) 노출 -->
 				<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
-			<isNotEmpty property="userId">
+				<isNotEmpty property="userId">
 				AND MG.USER_ID = #userId#
-			</isNotEmpty>
+				</isNotEmpty>
 				AND MG.DEL_FLAG ='N'
 				AND MG.RESERVE_C_YN = 'N'
 				AND MG.MSG_TYPE = '8'
@@ -318,6 +315,318 @@
 		
 	</select>	
 	
+	<select id="mjonKakaoATDAO.selectMjonKakaoATGroupCompleteByUserList" parameterClass="kakaoVO" resultClass="kakaoVO">
+	SELECT
+		M2.totCnt ,
+		M2.userId ,
+		M2.msgGroupId ,
+		M2.msgGroupCnt ,
+		M2.smsTxt ,
+		M2.subject ,
+		M2.regDate ,
+		M2.reqDate ,
+		M2.rsltDate ,
+		M2.callFrom ,
+		M2.callTo ,
+		M2.totPrice ,
+		M2.eachPrice ,
+		M2.curState ,
+		M2.rsltCode ,
+		M2.rsltCode2 ,
+		M2.orderByrsltCode ,
+		M2.delFlag ,
+		M2.msgType ,
+		M2.fileCnt ,
+		M2.agentCode ,
+		M2.reserveYn ,
+		M2.reserveCYn ,
+		M2.cancelDate ,
+		M2.msgTypeName ,
+		M2.orderByCode ,
+		M2.msgResult ,
+		M2.msgNoticetalkSenderKey ,
+        M2.msgNoticetalkTmpKey ,
+        M2.yellowId ,
+        M2.userNm ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = M2.msgGroupId
+			AND     C.RSLT_CODE = '7000'
+		)	AS successCount ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = M2.msgGroupId
+			AND     C.RSLT_CODE = '7000'
+			AND     C.MSG_TYPE = '8'
+		)	AS atSuccessCount ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = M2.msgGroupId
+			AND     C.RSLT_CODE != '7000'
+			AND     C.MSG_TYPE = '8'
+		)	AS atFailCount ,
+		<!-- ( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
+			AND     C.RSLT_CODE = '7000'
+			AND     C.MSG_TYPE = '9'
+		)	AS ftSuccessCount ,
+		( SELECT COUNT(0) 
+			FROM    MJ_MSG_DATA C
+			WHERE   C.DEL_FLAG     = 'N'
+			AND     C.RESERVE_C_YN = 'N'
+			AND     C.MSG_GROUP_ID = MG.MSG_GROUP_ID
+			AND     C.RSLT_CODE != '7000'
+			AND     C.MSG_TYPE = '9'
+		)	AS ftFailCount , -->
+		'0' AS ftSuccessCount,
+		'0' AS ftFailCount,
+		M2.bizUmid,
+		M2.callStatus,
+		M2.bizKakaoResendYn,
+		( SELECT COUNT(0)
+		FROM    BIZ_LOG BL1,
+		 MJ_MSG_DATA MMD1
+		WHERE   M2.bizKakaoResendYn = 'Y'
+		AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
+		AND     MMD1.BIZ_UMID         = BL1.CMID
+		AND     (
+				 CASE
+					 WHEN BL1.CALL_STATUS in ('6600','4100')
+					 THEN 'S'
+					 ELSE 'F'
+				 END ) = 'S'
+		)	kakaoResendSuccCount,
+		( SELECT COUNT(0)
+		FROM    BIZ_LOG BL1,
+		 MJ_MSG_DATA MMD1
+		WHERE   M2.bizKakaoResendYn = 'Y'
+		AND     M2.msgGroupId        = MMD1.MSG_GROUP_ID
+		AND     MMD1.BIZ_UMID         = BL1.CMID
+		AND     (
+				 CASE
+					 WHEN BL1.CALL_STATUS in ('6600','4100')
+					 THEN 'S'
+					 ELSE 'F'
+				 END ) = 'F'
+		) kakaoResendFailCount
+	FROM (
+		SELECT
+			COUNT(M.USER_ID) OVER()					AS totCnt ,
+			M.USER_ID                             AS userId ,
+			MSG_GROUP_ID                          AS msgGroupId ,
+			MSG_GROUP_CNT                         AS msgGroupCnt ,
+			SMS_TXT                               AS smsTxt ,
+			M.SUBJECT                             AS subject ,
+			DATE_FORMAT(REGDATE, '%Y-%m-%d %T')   AS regDate ,
+			DATE_FORMAT(REQ_DATE, '%Y-%m-%d %T')  AS reqDate ,
+			DATE_FORMAT(RSLT_DATE, '%Y-%m-%d %T') AS rsltDate ,
+			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 != '7000'),'1','0')     AS orderByrsltCode ,
+			DEL_FLAG                              AS delFlag ,
+			M.MSG_TYPE                            AS msgType ,
+			FILE_CNT                              AS fileCnt ,
+			AGENT_CODE                            AS agentCode ,
+			RESERVE_YN                            AS reserveYn ,
+			RESERVE_C_YN                          AS reserveCYn ,
+			CANCELDATE                            AS cancelDate ,
+			msgTypeName                           AS msgTypeName ,
+			orderByCode                           AS orderByCode ,
+			RESULT                                AS msgResult ,
+			MSG_NOTICETALK_SENDER_KEY            AS msgNoticetalkSenderKey ,
+	        MSG_NOTICETALK_TMP_KEY               AS msgNoticetalkTmpKey ,
+	        MKPI.YELLOW_ID                       AS yellowId ,
+	        LTM.MBER_NM                          AS userNm ,
+			BIZ_UMID                              AS bizUmid,
+			BL.CALL_STATUS                        AS callStatus,
+			M.BIZ_KAKAO_RESEND_YN                 AS bizKakaoResendYn
+		FROM ( 
+				SELECT MG.USER_ID ,
+				MG.MSG_GROUP_ID ,
+				MG.MSG_GROUP_CNT ,
+				MG.SMS_TXT ,
+				MG.SUBJECT ,
+				MG.REGDATE ,
+				MG.REQ_DATE ,
+				MD.RSLT_DATE ,
+				MG.CALL_FROM ,
+				MG.TOT_PRICE ,
+				MG.EACH_PRICE ,
+				MG.DEL_FLAG ,
+				MG.MSG_TYPE ,
+				MG.FILE_CNT ,
+				MG.AGENT_CODE ,
+				MG.RESERVE_YN ,
+				MG.RESERVE_C_YN ,
+				MG.CANCELDATE ,
+				MD.MSG_SEQ ,
+				MD.CALL_TO ,
+				MD.CUR_STATE ,
+				MD.RSLT_CODE ,
+				MD.RSLT_CODE2 ,
+				CASE
+					 WHEN MG.MSG_TYPE = '8'
+					 THEN '알림톡'
+					 WHEN MG.MSG_TYPE = '9'
+					 THEN '친구톡'
+				END msgTypeName ,
+				CASE
+					WHEN MG.MSG_TYPE = '8'
+					THEN '1'
+					ELSE '2'
+				END orderByCode , 
+				(
+					CASE
+						WHEN MD.RSLT_CODE = '7000'
+						THEN 'S'
+						WHEN (MD.RSLT_CODE IS NULL    AND     MD.SENT_DATE IS NULL   AND     MD.RSLT_DATE IS NULL)
+						THEN 'W'
+						ELSE 'F'
+					END 
+				) AS result ,
+				MSG_NOTICETALK_SENDER_KEY ,
+				MSG_NOTICETALK_TMP_KEY,
+				MD.BIZ_UMID,
+				MD.BIZ_KAKAO_RESEND_YN
+			FROM    MJ_MSG_DATA MD ,
+					MJ_MSG_GROUP_DATA MG
+			WHERE	MD.MSG_GROUP_ID = MG.MSG_GROUP_ID
+				AND IFNULL(MG.DEL_FLAG, 'N') = 'N'
+				AND MD.DEL_FLAG = 'N'
+				<!-- JSPark 2023.03.24 알림톡 전송완료 목록은 (즉시 + 예약 발송완료) 노출 -->
+				<![CDATA[ AND MG.REQ_DATE <= NOW() ]]>
+				<isNotEmpty property="userId">
+				AND MG.USER_ID = #userId#
+				</isNotEmpty>
+				AND MG.DEL_FLAG ='N'
+				AND MG.RESERVE_C_YN = 'N'
+				AND MG.MSG_TYPE = '8'
+			)M
+			LEFT JOIN MJ_KAKAO_PROFILE_INFO MKPI
+			ON	M.MSG_NOTICETALK_SENDER_KEY = MKPI.SENDER_KEY 
+			AND MKPI.USER_ID = M.USER_ID
+			AND	MKPI.DELETE_YN = 'N'
+			LEFT JOIN LETTNGNRLMBER LTM
+			ON	M.USER_ID = LTM.MBER_ID
+			LEFT JOIN BIZ_LOG BL
+			ON	M.BIZ_UMID = BL.CMID
+			WHERE 1=1
+			<isNotEmpty property="searchKeyword">
+				<isEqual property="searchCondition" compareValue="" >
+					AND ( 
+						M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+						OR   MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+						OR   M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+					)
+				</isEqual>
+				<isEqual property="searchCondition" compareValue="1">
+					AND M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+				</isEqual>
+				<isEqual property="searchCondition" compareValue="2">
+					AND MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+				</isEqual>
+				<isEqual property="searchCondition" compareValue="3">
+					AND M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+				</isEqual>
+				
+				<isEqual property="searchCondition2" compareValue="" >
+					AND M.RESERVE_YN IN ('Y','N')
+				</isEqual>
+				<isEqual property="searchCondition2" compareValue="N">
+					AND M.RESERVE_YN = 'N'
+				</isEqual>
+				<isEqual property="searchCondition2" compareValue="Y">
+					AND M.RESERVE_YN = 'Y'
+				</isEqual>
+			</isNotEmpty>
+			
+			<isEmpty property="searchKeyword">
+				<isNotEmpty property="searchCondition">
+					<isEqual property="searchCondition" compareValue="" >
+						AND ( 
+							M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+							OR   MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+							OR   M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+						)
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="1">
+						AND M.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="2">
+						AND MKPI.YELLOW_ID LIKE CONCAT ('%', #searchKeyword#,'%')
+					</isEqual>
+					<isEqual property="searchCondition" compareValue="3">
+						AND M.SMS_TXT LIKE CONCAT ('%', #searchKeyword#,'%')
+					</isEqual>
+				</isNotEmpty>
+				<isNotEmpty property="searchCondition2">
+					<isEqual property="searchCondition2" compareValue="" >
+						AND M.RESERVE_YN IN ('Y','N')
+					</isEqual>
+					<isEqual property="searchCondition2" compareValue="N">
+						AND M.RESERVE_YN = 'N'
+					</isEqual>
+					<isEqual property="searchCondition2" compareValue="Y">
+						AND M.RESERVE_YN = 'Y'
+					</isEqual>
+				</isNotEmpty>
+			</isEmpty>
+			
+			
+			<isNotEmpty property="msgType">
+				<isEqual property="msgType" compareValue="8">
+					AND M.MSG_TYPE = '8'
+				</isEqual>
+				<isEqual property="msgType" compareValue="9">
+					AND M.MSG_TYPE = '9'
+				</isEqual>
+			</isNotEmpty>
+			<isEmpty property="msgType">
+					AND M.MSG_TYPE IN ('8','9')
+			</isEmpty>
+			<isNotEmpty property="ntceBgnde">
+				<![CDATA[ 
+					AND DATE_FORMAT(REGDATE, '%Y-%m-%d') >= DATE_FORMAT(#ntceBgnde#, '%Y-%m-%d')
+				]]>
+			</isNotEmpty>
+			<isNotEmpty property="ntceEndde">
+				<![CDATA[ 
+					AND 	DATE_FORMAT(REGDATE, '%Y-%m-%d')  <=  DATE_FORMAT(#ntceEndde#, '%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#
+	) M2
+		
+	</select>	
+		
 	<!-- 알림톡 상세 리스트 조회 -->
 	<select id="mjonKakaoATDAO.selectMjonKakaoATGroupDtList" parameterClass="kakaoVO" resultClass="kakaoVO">
 	/*	mjonKakaoATDAO.selectMjonKakaoATGroupDtList - 알림톡 전송 개별 리스트	*/
Add a comment
List