전송 이력 화면 진행중

- TB_DFX_AGENT_MESSAGE_HISTORY -> TB_DFX_AGENT_MESSAGE 주기적 저장 개발
main
semin.baek 4 months ago
parent 011ab54fd6
commit 86e1f8272a

@ -13,4 +13,5 @@ public interface DfxAgentMessageHistoryMapper {
DfxAgentMessageHistoryDto selectDfxAgentMessageHistoryBySenderAgentIdAndMessageUuid(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto); DfxAgentMessageHistoryDto selectDfxAgentMessageHistoryBySenderAgentIdAndMessageUuid(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto);
void insertDfxAgentMessageHistory(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto); void insertDfxAgentMessageHistory(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto);
int updateDfxAgentMessageHistoryForProcessAck(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto); int updateDfxAgentMessageHistoryForProcessAck(DfxAgentMessageHistoryDto dfxAgentMessageHistoryDto);
int mergeDfxAgentMessageByDfxAgentMessageHistory();
} }

@ -5,7 +5,9 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -32,4 +34,10 @@ public class DfxAgentMessageHistoryService {
List<DfxAgentMessageHistoryDto> dfxAgentMessageHistoryDtoList = dfxAgentMessageHistoryMapper.selectDfxAgentMessageHistoryList(); List<DfxAgentMessageHistoryDto> dfxAgentMessageHistoryDtoList = dfxAgentMessageHistoryMapper.selectDfxAgentMessageHistoryList();
return dfxAgentMessageHistoryDtoList; return dfxAgentMessageHistoryDtoList;
} }
@Transactional
@Scheduled(cron = "1 0/10 * * * *")
public void autoSaveDfxAgentMessageByDfxAgentMessageHistory() {
this.dfxAgentMessageHistoryMapper.mergeDfxAgentMessageByDfxAgentMessageHistory();
}
} }

@ -161,4 +161,41 @@
AND MESSAGE_UUID = #{messageUuid} AND MESSAGE_UUID = #{messageUuid}
]]> ]]>
</update> </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> </mapper>

Loading…
Cancel
Save