@ -161,4 +161,41 @@
AND MESSAGE_UUID = #{messageUuid}
]]>
</update>
<update id= "mergeDfxAgentMessageByDfxAgentMessageHistory" >
< ![CDATA[
INSERT INTO TB_DFX_AGENT_MESSAGE (
MESSAGE_UUID, SENDER_AGENT_ID, SENDER_POSTMAN_ID, SENDER_TS, RECIPIENT_AGENT_ID, RECIPIENT_DROPBOX_ID, RECIPIENT_TS, MESSAGE_TYPE_CODE, CONSOLE_RECEIVE_TS, PROCESS_STATUS_CODE, MESSAGE_DATA, MESSAGE_DATA_COUNT, PROCESS_ACK_TS
)
SELECT MESSAGE_UUID, SENDER_AGENT_ID, MAX(SENDER_POSTMAN_ID) AS SENDER_POSTMAN_ID, MIN(SENDER_TS) AS SENDER_TS
, MAX(RECIPIENT_AGENT_ID) AS RECIPIENT_AGENT_ID, MAX(RECIPIENT_DROPBOX_ID) AS RECIPIENT_DROPBOX_ID, MIN(RECIPIENT_TS) AS RECIPIENT_TS
, MAX(MESSAGE_TYPE_CODE) AS MESSAGE_TYPE_CODE, MAX(CONSOLE_RECEIVE_TS) AS CONSOLE_RECEIVE_TS
, CASE WHEN MAX(PROCESS_STATUS_ORDER) = 3 THEN 'PROCESS_FAIL'
WHEN MAX(PROCESS_STATUS_ORDER) = 2 THEN 'PROCESS_DONE'
WHEN MAX(PROCESS_STATUS_ORDER) = 1 THEN 'PROCESS_RECEIVE'
ELSE 'PROCESS_RECEIVE' END AS PROCESS_STATUS_CODE
, MAX(MESSAGE_DATA) AS MESSAGE_DATA, MAX(MESSAGE_DATA_COUNT) AS MESSAGE_DATA_COUNT, MIN(PROCESS_ACK_TS) AS PROCESS_ACK_TS
FROM (
SELECT MESSAGE_UUID, SENDER_AGENT_ID, SENDER_POSTMAN_ID, SENDER_TS, RECIPIENT_AGENT_ID, RECIPIENT_DROPBOX_ID, RECIPIENT_TS, MESSAGE_TYPE_CODE, CONSOLE_RECEIVE_TS, PROCESS_STATUS_CODE, MESSAGE_DATA, MESSAGE_DATA_COUNT, PROCESS_ACK_TS
, CASE WHEN PROCESS_STATUS_CODE = 'PROCESS_RECEIVED' THEN 1 WHEN PROCESS_STATUS_CODE = 'PROCESS_DONE' THEN 2 WHEN PROCESS_STATUS_CODE = 'PROCESS_FAIL' THEN 3 ELSE 9 END AS PROCESS_STATUS_ORDER
FROM TB_DFX_AGENT_MESSAGE_HISTORY
WHERE 1 = 1
AND CONSOLE_RECEIVE_TS BETWEEN CURRENT_TIMESTAMP - INTERVAL '14 days' AND CURRENT_TIMESTAMP - INTERVAL '1 hour'
) A
GROUP BY MESSAGE_UUID, SENDER_AGENT_ID
ON CONFLICT (MESSAGE_UUID, SENDER_AGENT_ID) DO
UPDATE SET
SENDER_POSTMAN_ID = EXCLUDED.SENDER_POSTMAN_ID
, SENDER_TS = EXCLUDED.SENDER_TS
, RECIPIENT_AGENT_ID = EXCLUDED.RECIPIENT_AGENT_ID
, RECIPIENT_DROPBOX_ID = EXCLUDED.RECIPIENT_DROPBOX_ID
, RECIPIENT_TS = EXCLUDED.RECIPIENT_TS
, MESSAGE_TYPE_CODE = EXCLUDED.MESSAGE_TYPE_CODE
, CONSOLE_RECEIVE_TS = EXCLUDED.CONSOLE_RECEIVE_TS
, PROCESS_STATUS_CODE = EXCLUDED.PROCESS_STATUS_CODE
, MESSAGE_DATA = EXCLUDED.MESSAGE_DATA
, MESSAGE_DATA_COUNT = EXCLUDED.MESSAGE_DATA_COUNT
, PROCESS_ACK_TS = EXCLUDED.PROCESS_ACK_TS
]]>
</update>
</mapper>