From abb3a2c332f8131fadbf030fcc30df6ba36827cf Mon Sep 17 00:00:00 2001 From: "semin.baek" Date: Tue, 18 Mar 2025 19:49:07 +0900 Subject: [PATCH] =?UTF-8?q?File=20=EC=88=98=EC=8B=A0=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dfx/agent/task/TaskExecutorService.java | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/bsmlab/dfx/agent/task/TaskExecutorService.java b/src/main/java/com/bsmlab/dfx/agent/task/TaskExecutorService.java index 3d90bae..d4856f2 100644 --- a/src/main/java/com/bsmlab/dfx/agent/task/TaskExecutorService.java +++ b/src/main/java/com/bsmlab/dfx/agent/task/TaskExecutorService.java @@ -19,7 +19,10 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; -import java.io.*; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.ObjectInputStream; import java.util.List; import java.util.Map; @@ -33,9 +36,8 @@ public class TaskExecutorService { @Async("threadPoolTaskExecutor") public void processDropBox(String messageFilePath) { - //TODO 1. 메시지 처리 ReceiveMessageDto receiveMessageDto = ReceiveMessageDto.builder().build(); - ReceiveMessageDto.ProcessStatus processStatus = ReceiveMessageDto.ProcessStatus.PROCESS_DONE; + ReceiveMessageDto.ProcessStatus processStatus = null; String processMessage = ""; String messageUuid = ""; try (ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(messageFilePath))) { @@ -43,6 +45,7 @@ public class TaskExecutorService { messageUuid = receiveMessageDto.getMessageUuid(); AgentConfigDto.DropBox dropBox = agentConfigReader.getDropBox(receiveMessageDto.getRecipientDropBoxId()); log.info("process messageUuid:{} dropBoxId: {}", receiveMessageDto.getMessageUuid(), dropBox.getDropBoxId()); + //1. DB 저장 메시지 처리 if(dropBox.getTaskType() == AgentConfigDto.TaskType.SAVE_DB_TABLE) { ObjectMapper objectMapper = new ObjectMapper(); List> dataMapList = null; @@ -52,8 +55,30 @@ public class TaskExecutorService { } } else if(dropBox.getTaskType() == AgentConfigDto.TaskType.RECEIVE_FILE) { - //TODO 1.2 파일 수신 처리 + // 1.2 파일 수신 메시지 처리 + // 파일은 ListenService 에서 이미 저장하였음. meta-data 가 있는 경우 DB 저장 + ObjectMapper objectMapper = new ObjectMapper(); + List> dataMapList = null; + dataMapList = (List>) objectMapper.readValue(receiveMessageDto.getData(), List.class); + for(String attachFilePath : receiveMessageDto.getAttachFileList()) { + String fileName = attachFilePath.substring(attachFilePath.lastIndexOf("/") + 1); + Map dataMap = null; + for(Map map : dataMapList) { + if(String.valueOf(map.get("file-name")).equals(fileName)) { + dataMap = map; + break; + } + } + if(dataMap != null && StringUtils.isNotBlank(String.valueOf(dataMap.get("meta-drop-box-id")))) { + AgentConfigDto.DropBox fileMetaDropBox = agentConfigReader.getDropBox(String.valueOf(dataMap.get("meta-drop-box-id"))); + if(dataMap.get("meta-data") != null && dataMap.get("meta-data") instanceof Map) { + Map fileMetaData = (Map)dataMap.get("meta-data"); + sqlExecuteService.insert(fileMetaDropBox.getDataSourceId(), fileMetaDropBox.getSqlId(), fileMetaData); + } + } + } } + processStatus = ReceiveMessageDto.ProcessStatus.PROCESS_DONE; } catch (FileNotFoundException e) { //수신한 메시지 파일을 알 수 없으므로 로그 남기고 종료 dropBoxService.clearMessageFile(messageFilePath);