전송 이력 화면 진행중

main
semin.baek 5 months ago
parent 4a5a8feabd
commit 5e962963a8

@ -57,7 +57,7 @@ COMMENT ON COLUMN TB_DFX_AGENT_INFO.SETTINGS_DATA IS '에이전스 설정 파일
CREATE TABLE TB_DFX_DROPBOX (
AGENT_ID VARCHAR(256) NOT NULL
, DROPBOX_ID VARCHAR(256) NOT NULL
, TASK_TYPE VARCHAR(64) NOT NULL
, TASK_TYPE_CODE VARCHAR(64) NOT NULL
, DATA_SOURCE_ID VARCHAR(256)
, SQL_ID VARCHAR(256)
, DESCRIPTION VARCHAR(2048)
@ -66,18 +66,47 @@ CREATE TABLE TB_DFX_DROPBOX (
COMMENT ON TABLE TB_DFX_DROPBOX IS 'DROPBOX 설정';
COMMENT ON COLUMN TB_DFX_DROPBOX.AGENT_ID IS '에이전트ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.DROPBOX_ID IS 'DROPBOX ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.TASK_TYPE IS 'CODE DROPBOX_TASK_TYPE';
COMMENT ON COLUMN TB_DFX_DROPBOX.TASK_TYPE_CODE IS 'CODE DROPBOX_TASK_TYPE';
COMMENT ON COLUMN TB_DFX_DROPBOX.DATA_SOURCE_ID IS 'DATA SOURCE ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.SQL_ID IS 'SQL_ID';
COMMENT ON COLUMN TB_DFX_DROPBOX.DESCRIPTION IS 'DESCRIPTION';
CREATE TABLE TB_DFX_POSTMAN (
AGENT_ID VARCHAR(256) NOT NULL
, POSTMAN_ID VARCHAR(256) NOT NULL
, POSTMAN_TASK_TYPE_CODE VARCHAR(64) NOT NULL
, POSTMAN_ACTION_TYPE_CODE VARCHAR(64) NOT NULL
, POSTMAN_ACTION_CRON VARCHAR(32)
, DATA_SOURCE_ID VARCHAR(256)
, SQL_ID VARCHAR(256)
, POST_PROCESSING_SQL_ID VARCHAR(256)
, RECIPIENT_AGENT_ID VARCHAR(256)
, RECIPIENT_DROPBOX_ID VARCHAR(256)
, DESCRIPTION VARCHAR(2048)
, CONSTRAINT PK_DFX_POSTMAN PRIMARY KEY (AGENT_ID, POSTMAN_ID)
);
COMMENT ON TABLE TB_DFX_POSTMAN IS 'DROPBOX 설정';
COMMENT ON COLUMN TB_DFX_POSTMAN.AGENT_ID IS '에이전트ID';
COMMENT ON COLUMN TB_DFX_POSTMAN.POSTMAN_ID IS 'POSTMAN ID';
COMMENT ON COLUMN TB_DFX_POSTMAN.POSTMAN_TASK_TYPE_CODE IS 'CODE_GROUP: POSTMAN_TASK_TYPE';
COMMENT ON COLUMN TB_DFX_POSTMAN.POSTMAN_ACTION_TYPE_CODE IS 'CODE_GROUP: POSTMAN_ACTION_TYPE';
COMMENT ON COLUMN TB_DFX_POSTMAN.POSTMAN_ACTION_CRON IS 'POSTMAN ACTION CRON';
COMMENT ON COLUMN TB_DFX_POSTMAN.DATA_SOURCE_ID IS 'POSTMAN DATA_SOURCE_ID';
COMMENT ON COLUMN TB_DFX_POSTMAN.SQL_ID IS '전송데이터 조회 SQL_ID';
COMMENT ON COLUMN TB_DFX_POSTMAN.POST_PROCESSING_SQL_ID IS '후처리 SQL ID';
COMMENT ON COLUMN TB_DFX_POSTMAN.RECIPIENT_AGENT_ID IS '수신자 에이전트ID';
COMMENT ON COLUMN TB_DFX_POSTMAN.RECIPIENT_DROPBOX_ID IS '수신자 DROPBOX ID';
COMMENT ON COLUMN TB_DFX_POSTMAN.DESCRIPTION IS '설명';
CREATE TABLE TB_DFX_AGENT_MESSAGE_HISTORY (
SENDER_AGENT_ID VARCHAR(256) NOT NULL
MESSAGE_UUID VARCHAR(36) NOT NULL
, SENDER_AGENT_ID VARCHAR(256) NOT NULL
, SENDER_POSTMAN_ID VARCHAR(256) NOT NULL
, SENDER_TS TIMESTAMPTZ(3)
, RECIPIENT_AGENT_ID VARCHAR(256) NOT NULL
, RECIPIENT_DROPBOX_ID VARCHAR(256) NOT NULL
, RECIPIENT_TS TIMESTAMPTZ(3)
, MESSAGE_UUID VARCHAR(36) NOT NULL
, MESSAGE_TYPE_CODE VARCHAR(64)
, CONSOLE_RECEIVE_TS TIMESTAMPTZ(3)
, PROCESS_STATUS_CODE VARCHAR(64)
@ -89,11 +118,13 @@ CREATE TABLE TB_DFX_AGENT_MESSAGE_HISTORY (
CREATE INDEX IX_DFX_AGENT_MESSAGE_HISTORY_1 ON TB_DFX_AGENT_MESSAGE_HISTORY (RECIPIENT_AGENT_ID);
CREATE INDEX IX_DFX_AGENT_MESSAGE_HISTORY_2 ON TB_DFX_AGENT_MESSAGE_HISTORY (CONSOLE_RECEIVE_TS);
COMMENT ON TABLE TB_DFX_AGENT_MESSAGE_HISTORY IS '에이전트간 메시지 송신 이력';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.SENDER_AGENT_ID IS '송신 에이전트ID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.MESSAGE_UUID IS 'MESSAGE UUID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.SENDER_AGENT_ID IS '송신 에이전트 ID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.SENDER_POSTMAN_ID IS '송신 에이전트 POSTMAN ID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.SENDER_TS IS '송신 시간';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.RECIPIENT_AGENT_ID IS '수신 에이전트ID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.RECIPIENT_AGENT_ID IS '수신 에이전트 ID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.RECIPIENT_DROPBOX_ID IS '수신 DROPBOX ID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.RECIPIENT_TS IS '수신 시간';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.MESSAGE_UUID IS 'MESSAGE UUID';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.MESSAGE_TYPE_CODE IS '메시지 타입 코드 CODE_GROUP: MESSAGE_TYPE';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.CONSOLE_RECEIVE_TS IS '콘솔 수신 시간';
COMMENT ON COLUMN TB_DFX_AGENT_MESSAGE_HISTORY.PROCESS_STATUS_CODE IS '프로세스 상태 코드 CODE_GROUP: PROCESS_STATUS';

@ -50,6 +50,44 @@ VALUES (
'PROCESS_STATUS', 'PROCESS_FAIL', '프로세스 실패', '프로세스 실패', 2, NULL, 'Y'
);
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'POSTMAN_TASK_TYPE', 'DB_READ_THEN_SEND', 'DB 로드 및 전송', 'DB 로드 및 전송', 1, NULL, 'Y'
);
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'POSTMAN_TASK_TYPE', 'FILE_READ_THEN_SEND', '파일 로드 및 전송', '파일 로드 및 및 전송', 2, NULL, 'Y'
);
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'POSTMAN_TASK_TYPE', 'RECEIVE_DB_TO_DB_SAVE', 'DB 데이터 수신 및 저장', 'DB 데이터 수신 및 저장', 3, NULL, 'Y'
);
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'POSTMAN_TASK_TYPE', 'RECEIVE_FILE', '파일 수신 및 저장', '파일 수신 및 저장', 4, NULL, 'Y'
);
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'POSTMAN_ACTION_TYPE', 'TRIGGER', '신호동작', '신호동작', 1, NULL, 'Y'
);
INSERT INTO TB_CODE (
CODE_GROUP, CODE_NAME, CODE_VALUE, CODE_DESCRIPTION, ORDER_NO, PARENT_CODE_NAME, USE_YN
)
VALUES (
'POSTMAN_ACTION_TYPE', 'SCHEDULED', '주기동작', '주기동작', 2, NULL, 'Y'
);

@ -16,6 +16,7 @@ import java.util.Map;
public class ReceiveMessageDto implements Serializable {
private String senderHostId;
private long senderTimestamp;
private String senderPostmanId;
private String messageUuid;
private AgentConfigDto.MessageType messageType;
private long receivedTimestamp;

@ -13,5 +13,9 @@ public interface DfxAgentInfoMapper {
List<DfxDropboxDto> selectDfxDropboxList();
DfxDropboxDto selectDfxDropboxByAgentIdAndDropBoxId(DfxDropboxDto dfxDropboxDto);
void insertDfxDropbox(DfxDropboxDto dfxDropboxDto);
int deleteDfxDropboxByAgentId(DfxAgentInfoDto dfxAgentInfoDto);
int deleteDfxDropboxByAgentIdAndDropboxId(DfxDropboxDto dfxDropboxDto);
void insertDfxPostman(DfxPostmanDto dfxPostmanDto);
int updateDfxPostman(DfxPostmanDto dfxPostmanDto);
int deleteDfxPostmanByAgentId(DfxAgentInfoDto dfxAgentInfoDto);
}

@ -39,6 +39,36 @@ public class DfxAgentInfoService {
}
}
public void saveDetailForRefreshDfxAgentInfoDto(DfxAgentInfoDto dfxAgentInfoDto) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
AgentConfigDto agentConfigDto = objectMapper.readValue(dfxAgentInfoDto.getSettingsData(), new TypeReference<AgentConfigDto>(){});
dfxAgentInfoMapper.deleteDfxDropboxByAgentId(dfxAgentInfoDto);
List<AgentConfigDto.DropBox> dropBoxList = agentConfigDto.getDropBoxConfig().getDropBoxList();
if(dropBoxList != null && dropBoxList.size() > 0) {
for(AgentConfigDto.DropBox dropBox : dropBoxList) {
DfxDropboxDto dfxDropboxDto = DfxDropboxDto.builder().agentId(dfxAgentInfoDto.getAgentId())
.dropboxId(dropBox.getDropBoxId()).dataSourceId(dropBox.getDataSourceId()).sqlId(dropBox.getSqlId())
.taskTypeCode(dropBox.getTaskType().name()).description(dropBox.getDescription())
.build();
dfxAgentInfoMapper.insertDfxDropbox(dfxDropboxDto);
}
}
dfxAgentInfoMapper.deleteDfxPostmanByAgentId(dfxAgentInfoDto);
List<AgentConfigDto.Postman> postmanList = agentConfigDto.getPostmanConfig().getPostmanList();
if(postmanList != null && postmanList.size() > 0) {
for(AgentConfigDto.Postman postman : postmanList) {
DfxPostmanDto dfxPostmanDto = DfxPostmanDto.builder().agentId(dfxAgentInfoDto.getAgentId()).postmanId(postman.getPostmanId())
.postmanTaskTypeCode(postman.getTaskType().name()).postmanActionTypeCode(postman.getAction().getType().name())
.postmanActionCron(postman.getAction().getCron()).dataSourceId(postman.getMessage().getDataSourceId())
.sqlId(postman.getMessage().getSqlId()).postProcessingSqlId(postman.getMessage().getPostProcessingSqlId())
.recipientAgentId(postman.getRecipientHostId()).recipientDropboxId(postman.getRecipientDropBoxId())
.description(postman.getDescription())
.build();
dfxAgentInfoMapper.insertDfxPostman(dfxPostmanDto);
}
}
}
public AgentConfigDto getDfxAgentConfigDto(String agentId) throws JsonProcessingException {
DfxAgentInfoDto dfxAgentInfoDto = null;
dfxAgentInfoDto = dfxAgentInfoMapper.selectDfxAgentInfoByAgentId(DfxAgentInfoDto.builder().agentId(agentId).build());

@ -9,15 +9,17 @@ import lombok.*;
@Builder
@ToString
public class DfxAgentMessageHistoryDto {
private String messageUuid;
private String senderAgentId;
private String senderHostName;
private String senderPostmanId;
private long senderTs;
private String senderTimeString;
private String recipientAgentId;
private String recipientHostName;
private String recipientDropboxId;
private long recipientTs;
private String recipientTimeString;
private String messageUuid;
private String messageTypeCode;
private long consoleReceiveTs;
private String consoleReceiveTimeString;

@ -11,7 +11,7 @@ import lombok.*;
public class DfxDropboxDto {
private String agentId;
private String dropboxId;
private String taskType;
private String taskTypeCode;
private String dataSourceId;
private String sqlId;
private String description;

@ -0,0 +1,23 @@
package com.bsmlab.dfx.dfxconsole.app.agent.service;
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@ToString
public class DfxPostmanDto {
private String agentId;
private String postmanId;
private String postmanTaskTypeCode;
private String postmanActionTypeCode;
private String postmanActionCron;
private String dataSourceId;
private String sqlId;
private String postProcessingSqlId;
private String recipientAgentId;
private String recipientDropboxId;
private String description;
}

@ -85,11 +85,57 @@
]]>
</insert>
<update id="deleteDfxDropboxByAgentIdAndDropboxId" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxDropboxDto">
<delete id="deleteDfxDropboxByAgentIdAndDropboxId" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxDropboxDto">
<![CDATA[
DELETE FROM TB_DFX_DROPBOX
WHERE 1 = 1
AND AGENT_ID = #{agentId} AND DROPBOX_ID = #{dropboxId}
]]>
</delete>
<delete id="deleteDfxDropboxByAgentId" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto">
<![CDATA[
DELETE FROM TB_DFX_DROPBOX
WHERE 1 = 1
AND AGENT_ID = #{agentId}
]]>
</delete>
<insert id="insertDfxPostman" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxPostmanDto">
<![CDATA[
INSERT INTO TB_DFX_POSTMAN (
AGENT_ID, POSTMAN_ID, POSTMAN_TASK_TYPE_CODE, POSTMAN_ACTION_TYPE_CODE, POSTMAN_ACTION_CRON, DATA_SOURCE_ID, SQL_ID, POST_PROCESSING_SQL_ID, RECIPIENT_AGENT_ID, RECIPIENT_DROPBOX_ID, DESCRIPTION
)
VALUES (
#{agentId}, #{postmanId}, #{postmanTaskTypeCode}, #{postmanActionTypeCode}, #{postmanActionCron}, #{dataSourceId}, #{sqlId}, #{postProcessingSqlId}, #{recipientAgentId}, #{recipientDropboxId}, #{description}
)
]]>
</insert>
<update id="updateDfxPostman" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxPostmanDto">
<![CDATA[
UPDATE TB_DFX_POSTMAN
SET POSTMAN_TASK_TYPE_CODE = #{postmanTaksTypeCode}
, POSTMAN_ACTION_TYPE_CODE = #{postmanActionTypeCode}
, POSTMAN_ACTION_CRON = #{postmanActionCron}
, DATA_SOURCE_ID = #{dataSourceId}
, SQL_ID = #{sqlId}
, POST_PROCESSING_SQL_ID = #{postProcessingSqlId}
, RECIPIENT_AGENT_ID = #{recipientAgentId}
, RECIPIENT_DROPBOX_ID = #{recipientDropboxId}
, DESCRIPTION = #{description}
WHERE 1 = 1
AND AGENT_ID = #{agentId}
AND POSTMAN_ID = #{postmanId}
]]>
</update>
<delete id="deleteDfxPostmanByAgentId" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentInfoDto">
<![CDATA[
DELETE FROM TB_DFX_POSTMAN
WHERE 1 = 1
AND AGENT_ID = #{agentId}
]]>
</delete>
</mapper>

@ -4,11 +4,11 @@
<select id="selectDfxAgentMessageHistoryList" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto">
<![CDATA[
SELECT A.SENDER_AGENT_ID
SELECT A.MESSAGE_UUID, A.SENDER_AGENT_ID, A.SENDER_POSTMAN_ID
, (EXTRACT(EPOCH FROM A.SENDER_TS) * 1000)::BIGINT AS SENDER_TS, TO_CHAR(A.SENDER_TS, 'YYYY-MM-DD HH24:MI:SS') AS SENDER_TIME_STRING
, A.RECIPIENT_AGENT_ID
, A.RECIPIENT_AGENT_ID, A.RECIPIENT_DROPBOX_ID
, (EXTRACT(EPOCH FROM A.RECIPIENT_TS) * 1000)::BIGINT AS RECIPIENT_TS, TO_CHAR(A.RECIPIENT_TS, 'YYYY-MM-DD HH24:MI:SS') AS RECIPIENT_TIME_STRING
, A.MESSAGE_UUID, A.MESSAGE_TYPE_CODE
, A.MESSAGE_TYPE_CODE
, (EXTRACT(EPOCH FROM A.CONSOLE_RECEIVE_TS) * 1000)::BIGINT AS CONSOLE_RECEIVE_TS, TO_CHAR(A.CONSOLE_RECEIVE_TS, 'YYYY-MM-DD HH24:MI:SS') AS CONSOLE_RECEIVE_TIME_STRING
, A.PROCESS_STATUS_CODE, A.MESSAGE_DATA, A.MESSAGE_DATA_COUNT
, (EXTRACT(EPOCH FROM A.PROCESS_ACK_TS) * 1000)::BIGINT AS PROCESS_ACK_TS, TO_CHAR(A.PROCESS_ACK_TS, 'YYYY-MM-DD HH24:MI:SS') AS PROCESS_ACK_TIME_STRING
@ -31,11 +31,11 @@
<select id="selectDfxAgentMessageHistoryBySenderAgentIdAndMessageUuid" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto" resultType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto">
<![CDATA[
SELECT A.SENDER_AGENT_ID
SELECT A.MESSAGE_UUID, A.SENDER_AGENT_ID, A.SENDER_POSTMAN_ID
, (EXTRACT(EPOCH FROM A.SENDER_TS) * 1000)::BIGINT AS SENDER_TS, TO_CHAR(A.SENDER_TS, 'YYYY-MM-DD HH24:MI:SS') AS SENDER_TIME_STRING
, A.RECIPIENT_AGENT_ID
, A.RECIPIENT_AGENT_ID, A.RECIPIENT_DROPBOX_ID
, (EXTRACT(EPOCH FROM A.RECIPIENT_TS) * 1000)::BIGINT AS RECIPIENT_TS, TO_CHAR(A.RECIPIENT_TS, 'YYYY-MM-DD HH24:MI:SS') AS RECIPIENT_TIME_STRING
, A.MESSAGE_UUID, A.MESSAGE_TYPE_CODE
, A.MESSAGE_TYPE_CODE
, (EXTRACT(EPOCH FROM A.CONSOLE_RECEIVE_TS) * 1000)::BIGINT AS CONSOLE_RECEIVE_TS, TO_CHAR(A.CONSOLE_RECEIVE_TS, 'YYYY-MM-DD HH24:MI:SS') AS CONSOLE_RECEIVE_TIME_STRING
, A.PROCESS_STATUS_CODE, A.MESSAGE_DATA, A.MESSAGE_DATA_COUNT
, (EXTRACT(EPOCH FROM A.PROCESS_ACK_TS) * 1000)::BIGINT AS PROCESS_ACK_TS, TO_CHAR(A.PROCESS_ACK_TS, 'YYYY-MM-DD HH24:MI:SS') AS PROCESS_ACK_TIME_STRING
@ -52,21 +52,21 @@
<insert id="insertDfxAgentMessageHistory" parameterType="com.bsmlab.dfx.dfxconsole.app.agent.service.DfxAgentMessageHistoryDto">
<![CDATA[
INSERT INTO TB_DFX_AGENT_MESSAGE_HISTORY (
SENDER_AGENT_ID
MESSAGE_UUID, SENDER_AGENT_ID, SENDER_POSTMAN_ID
, SENDER_TS
, RECIPIENT_AGENT_ID
, RECIPIENT_AGENT_ID, RECIPIENT_DROPBOX_ID
, RECIPIENT_TS
, MESSAGE_UUID, MESSAGE_TYPE_CODE
, MESSAGE_TYPE_CODE
, CONSOLE_RECEIVE_TS
, PROCESS_STATUS_CODE, MESSAGE_DATA, MESSAGE_DATA_COUNT
, PROCESS_ACK_TS
)
VALUES (
#{senderAgentId}
#{messageUuid}, #{senderAgentId}, #{senderPostmanId}
, CASE WHEN #{senderTs} = 0 THEN NULL ELSE #{senderTs, jdbcType=TIMESTAMP_WITH_TIMEZONE, javaType=long} END
, #{recipientAgentId}
, #{recipientAgentId}, #{recipientDropboxId}
, CASE WHEN #{recipientTs} = 0 THEN NULL ELSE #{recipientTs, jdbcType=TIMESTAMP_WITH_TIMEZONE, javaType=long} END
, #{messageUuid}, #{messageTypeCode}
, #{messageTypeCode}
, CASE WHEN #{consoleReceiveTs} = 0 THEN NULL ELSE #{consoleReceiveTs, jdbcType=TIMESTAMP_WITH_TIMEZONE, javaType=long} END
, #{processStatusCode}, #{messageData}, #{messageDataCount}
, CASE WHEN #{processAckTs} = 0 THEN NULL ELSE #{processAckTs, jdbcType=TIMESTAMP_WITH_TIMEZONE, javaType=long} END

Loading…
Cancel
Save