|
|
|
@ -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);
|
|
|
|
|