File 수신 처리 로직 완료

main
semin.baek 10 months ago
parent 7e150edd73
commit abb3a2c332

@ -19,7 +19,10 @@ import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; 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.List;
import java.util.Map; import java.util.Map;
@ -33,9 +36,8 @@ public class TaskExecutorService {
@Async("threadPoolTaskExecutor") @Async("threadPoolTaskExecutor")
public void processDropBox(String messageFilePath) { public void processDropBox(String messageFilePath) {
//TODO 1. 메시지 처리
ReceiveMessageDto receiveMessageDto = ReceiveMessageDto.builder().build(); ReceiveMessageDto receiveMessageDto = ReceiveMessageDto.builder().build();
ReceiveMessageDto.ProcessStatus processStatus = ReceiveMessageDto.ProcessStatus.PROCESS_DONE; ReceiveMessageDto.ProcessStatus processStatus = null;
String processMessage = ""; String processMessage = "";
String messageUuid = ""; String messageUuid = "";
try (ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(messageFilePath))) { try (ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(messageFilePath))) {
@ -43,6 +45,7 @@ public class TaskExecutorService {
messageUuid = receiveMessageDto.getMessageUuid(); messageUuid = receiveMessageDto.getMessageUuid();
AgentConfigDto.DropBox dropBox = agentConfigReader.getDropBox(receiveMessageDto.getRecipientDropBoxId()); AgentConfigDto.DropBox dropBox = agentConfigReader.getDropBox(receiveMessageDto.getRecipientDropBoxId());
log.info("process messageUuid:{} dropBoxId: {}", receiveMessageDto.getMessageUuid(), dropBox.getDropBoxId()); log.info("process messageUuid:{} dropBoxId: {}", receiveMessageDto.getMessageUuid(), dropBox.getDropBoxId());
//1. DB 저장 메시지 처리
if(dropBox.getTaskType() == AgentConfigDto.TaskType.SAVE_DB_TABLE) { if(dropBox.getTaskType() == AgentConfigDto.TaskType.SAVE_DB_TABLE) {
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> dataMapList = null; List<Map<String, Object>> dataMapList = null;
@ -52,8 +55,30 @@ public class TaskExecutorService {
} }
} }
else if(dropBox.getTaskType() == AgentConfigDto.TaskType.RECEIVE_FILE) { else if(dropBox.getTaskType() == AgentConfigDto.TaskType.RECEIVE_FILE) {
//TODO 1.2 파일 수신 처리 // 1.2 파일 수신 메시지 처리
// 파일은 ListenService 에서 이미 저장하였음. meta-data 가 있는 경우 DB 저장
ObjectMapper objectMapper = new ObjectMapper();
List<Map<String, Object>> dataMapList = null;
dataMapList = (List<Map<String, Object>>) objectMapper.readValue(receiveMessageDto.getData(), List.class);
for(String attachFilePath : receiveMessageDto.getAttachFileList()) {
String fileName = attachFilePath.substring(attachFilePath.lastIndexOf("/") + 1);
Map<String, Object> dataMap = null;
for(Map<String, Object> 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<String, Object> fileMetaData = (Map<String, Object>)dataMap.get("meta-data");
sqlExecuteService.insert(fileMetaDropBox.getDataSourceId(), fileMetaDropBox.getSqlId(), fileMetaData);
}
}
}
} }
processStatus = ReceiveMessageDto.ProcessStatus.PROCESS_DONE;
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
//수신한 메시지 파일을 알 수 없으므로 로그 남기고 종료 //수신한 메시지 파일을 알 수 없으므로 로그 남기고 종료
dropBoxService.clearMessageFile(messageFilePath); dropBoxService.clearMessageFile(messageFilePath);

Loading…
Cancel
Save