발송결과 문자 휴대폰 대쉬 함수 관련 속도저하 수정

This commit is contained in:
itn 2023-10-23 12:31:15 +09:00
parent 6599d71b7f
commit eb5636017c
2 changed files with 779 additions and 649 deletions

View File

@ -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>