diff --git a/src/docs/mapper-examples/address/address-write.xml b/src/docs/mapper-examples/address/address-write.xml
index 7d072c6..3d26949 100644
--- a/src/docs/mapper-examples/address/address-write.xml
+++ b/src/docs/mapper-examples/address/address-write.xml
@@ -2,11 +2,14 @@
- INSERT INTO TTO_BD (
- STDG_CD, CTPV_NM, SGG_NM, STTY_EMD_NM, STLI_NM, MTN_YN, LOTNO_MNO, LOTNO_SNO, ROAD_NM_CD, ROAD_NM, UDGD_YN, BMNO, BSNO, BDRG_BLDG_NM, DTL_BLDG_NM, BLDG_MNG_NO, EMD_SN, DONG_CD, DONG_NM, ZIP, ZIP_SN, BULK_DLDTN_NM, MVMN_RSN_CD, ANCMNT_YMD, CHG_BFR_ROAD_NM_ADDR, SGG_BLDG_NM, APTCPX_YN, BSCS_ZONE_NO, DADDR_YN, RMRK1, RMRK2, TRANSFER_YN, TRANSFER_DATE
- )
- VALUES (
- #{STDG_CD}, #{CTPV_NM}, #{SGG_NM}, #{STTY_EMD_NM}, #{STLI_NM}, #{MTN_YN}, #{LOTNO_MNO}, #{LOTNO_SNO}, #{ROAD_NM_CD}, #{ROAD_NM}, #{UDGD_YN}, #{BMNO}, #{BSNO}, #{BDRG_BLDG_NM}, #{DTL_BLDG_NM}, #{BLDG_MNG_NO}, #{EMD_SN}, #{DONG_CD}, #{DONG_NM}, #{ZIP}, #{ZIP_SN}, #{BULK_DLDTN_NM}, #{MVMN_RSN_CD}, #{ANCMNT_YMD}, #{CHG_BFR_ROAD_NM_ADDR}, #{SGG_BLDG_NM}, #{APTCPX_YN}, #{BSCS_ZONE_NO}, #{DADDR_YN}, #{RMRK1}, #{RMRK2}, 'Y', SYSDATE
- )
+ MERGE INTO TTO_BD
+ USING DUAL ON (BLDG_MNG_NO = #{BLDG_MNG_NO})
+ WHEN NOT MATCHED THEN
+ INSERT (
+ STDG_CD, CTPV_NM, SGG_NM, STTY_EMD_NM, STLI_NM, MTN_YN, LOTNO_MNO, LOTNO_SNO, ROAD_NM_CD, ROAD_NM, UDGD_YN, BMNO, BSNO, BDRG_BLDG_NM, DTL_BLDG_NM, BLDG_MNG_NO, EMD_SN, DONG_CD, DONG_NM, ZIP, ZIP_SN, BULK_DLDTN_NM, MVMN_RSN_CD, ANCMNT_YMD, CHG_BFR_ROAD_NM_ADDR, SGG_BLDG_NM, APTCPX_YN, BSCS_ZONE_NO, DADDR_YN, RMRK1, RMRK2, TRANSFER_YN, TRANSFER_DATE
+ )
+ VALUES (
+ #{STDG_CD}, #{CTPV_NM}, #{SGG_NM}, #{STTY_EMD_NM}, #{STLI_NM}, #{MTN_YN}, #{LOTNO_MNO}, #{LOTNO_SNO}, #{ROAD_NM_CD}, #{ROAD_NM}, #{UDGD_YN}, #{BMNO}, #{BSNO}, #{BDRG_BLDG_NM}, #{DTL_BLDG_NM}, #{BLDG_MNG_NO}, #{EMD_SN}, #{DONG_CD}, #{DONG_NM}, #{ZIP}, #{ZIP_SN}, #{BULK_DLDTN_NM}, #{MVMN_RSN_CD}, #{ANCMNT_YMD}, #{CHG_BFR_ROAD_NM_ADDR}, #{SGG_BLDG_NM}, #{APTCPX_YN}, #{BSCS_ZONE_NO}, #{DADDR_YN}, #{RMRK1}, #{RMRK2}, 'Y', SYSDATE
+ )
diff --git a/src/main/java/com/bsmlab/dfx/agent/listener/ListenerController.java b/src/main/java/com/bsmlab/dfx/agent/listener/ListenerController.java
index 72d961a..af41fd9 100644
--- a/src/main/java/com/bsmlab/dfx/agent/listener/ListenerController.java
+++ b/src/main/java/com/bsmlab/dfx/agent/listener/ListenerController.java
@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.Collection;
+import java.util.UUID;
@Slf4j
@RestController
@@ -53,7 +54,13 @@ public class ListenerController {
*/
@PostMapping(value = "/telegram")
public AckDto telegram(HttpServletRequest request) {
- AckDto ackDto = AckDto.builder().build();
+ AckDto ackDto;
+ try {
+ String bodyString= ServletUtils.getBodyString(request);
+ ackDto = listenerService.receiveAck(bodyString);
+ } catch (IOException e) {
+ ackDto = AckDto.builder().result(AckDto.ResultType.RECEIVE_FAIL).resultText(e.getLocalizedMessage()).messageUuid("").build();
+ }
return ackDto;
}
}
diff --git a/src/main/java/com/bsmlab/dfx/agent/listener/dto/AckDto.java b/src/main/java/com/bsmlab/dfx/agent/listener/dto/AckDto.java
index 50132c7..e9b8df8 100644
--- a/src/main/java/com/bsmlab/dfx/agent/listener/dto/AckDto.java
+++ b/src/main/java/com/bsmlab/dfx/agent/listener/dto/AckDto.java
@@ -1,12 +1,12 @@
package com.bsmlab.dfx.agent.listener.dto;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.*;
@Getter
@Setter
@Builder
+@AllArgsConstructor
+@NoArgsConstructor
/**
* Listen 프로세스
* 1. listener 수신
diff --git a/src/main/java/com/bsmlab/dfx/agent/listener/service/ListenerService.java b/src/main/java/com/bsmlab/dfx/agent/listener/service/ListenerService.java
index 0f913c0..5f6dede 100644
--- a/src/main/java/com/bsmlab/dfx/agent/listener/service/ListenerService.java
+++ b/src/main/java/com/bsmlab/dfx/agent/listener/service/ListenerService.java
@@ -107,4 +107,15 @@ public class ListenerService {
}
return ackDto;
}
+
+ public AckDto receiveAck(String messageJsonString) {
+ AckDto ackDto;
+ try {
+ ackDto = MessageUtils.toAckDto(messageJsonString);
+ }
+ catch (NullMessageException | IllegalMessageException e) {
+ ackDto = AckDto.builder().result(AckDto.ResultType.RECEIVE_FAIL).resultText(e.getLocalizedMessage()).messageUuid("").build();
+ }
+ return ackDto;
+ }
}
diff --git a/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java b/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java
index 81256ae..10c8135 100644
--- a/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java
+++ b/src/main/java/com/bsmlab/dfx/agent/support/MessageUtils.java
@@ -1,6 +1,7 @@
package com.bsmlab.dfx.agent.support;
import com.bsmlab.dfx.agent.config.AgentConfigDto;
+import com.bsmlab.dfx.agent.listener.dto.AckDto;
import com.bsmlab.dfx.agent.listener.dto.ReceiveMessageDto;
import com.bsmlab.dfx.agent.support.exception.IllegalMessageException;
import com.bsmlab.dfx.agent.support.exception.InCompleteMessageException;
@@ -140,4 +141,26 @@ public class MessageUtils {
}
return receiveMessageDto;
}
+
+ public static AckDto toAckDto(String messageJsonString) throws NullMessageException, IllegalMessageException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ Map map = null;
+ AckDto ackDto;
+ try {
+ map = objectMapper.readValue(messageJsonString, new TypeReference>() {});
+ if(map == null) {
+ throw new NullMessageException("");
+ }
+ else {
+ AckDto.ResultType result = EnumUtils.getEnum(AckDto.ResultType.class, String.valueOf(map.get("result")));
+ String resultText = String.valueOf(map.get("resultText"));
+ String messageUuid = String.valueOf(map.get("messageUuid"));
+ ackDto = AckDto.builder().result(result).resultText(resultText).messageUuid(messageUuid).build();
+ }
+ }
+ catch(JsonProcessingException e) {
+ throw new IllegalMessageException(e.getMessage());
+ }
+ return ackDto;
+ }
}
diff --git a/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java b/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java
index 83c2322..7279320 100644
--- a/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java
+++ b/src/main/java/com/bsmlab/dfx/agent/task/dropbox/DropBoxTaskExecutorService.java
@@ -134,7 +134,7 @@ public class DropBoxTaskExecutorService {
HttpEntity bodyEntity = new HttpEntity<>(ackDto, httpHeaders);
RestTemplate restTemplate = new RestTemplate();
AgentConfigDto.KnownAgent knownAgent = agentConfigReader.getKnownAgent(receiveMessageDto.getSenderHostId());
- String url = "https://" + knownAgent.getHostName() + ":" + knownAgent.getListenPort() + "/telegram";
+ String url = "http://" + knownAgent.getHostName() + ":" + knownAgent.getListenPort() + "/telegram";
String response = restTemplate.postForObject(url, bodyEntity, String.class);
ObjectMapper objectMapper = new ObjectMapper();
AckDto responseAckDto;
diff --git a/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java b/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java
index a864d13..0aeffcc 100644
--- a/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java
+++ b/src/main/java/com/bsmlab/dfx/agent/task/postman/PostmanSchedulerService.java
@@ -90,15 +90,16 @@ public class PostmanSchedulerService {
RestTemplate restTemplate = new RestTemplate();
AgentConfigDto.KnownAgent knownAgent = agentConfigReader.getKnownAgent(postman.getRecipientHostId());
String url = "http://" + knownAgent.getHostName() + ":" + knownAgent.getListenPort() + "/listen";
- log.debug("postman to {} send a message {}", receiveMessageDto.getRecipientHostId(), receiveMessageDto.toString());
+ log.debug("postman to {} send a message UUID {}", receiveMessageDto.getRecipientHostId(), receiveMessageDto.getMessageUuid());
String response = restTemplate.postForObject(url, bodyEntity, String.class);
AckDto ackDto = objectMapper.readValue(response, new TypeReference() {});
+ log.debug("postman received ack from {} ack: {}", receiveMessageDto.getRecipientHostId(), ackDto);
if(AckDto.ResultType.RECEIVE_SUCCESS != ackDto.getResult()) {
throw new DfxException(postman.getRecipientHostId() + "에게 전송하였으나 상대방이 수신하지 못하였습니다." + response);
}
else {
String postProcessingSqlId = postman.getMessage().getPostProcessingSqlId();
- sqlExecuteService.update(dataSourceId, postProcessingSqlId, null);
+ sqlExecuteService.update(dataSourceId, postProcessingSqlId, new HashMap());
}
} catch (JsonProcessingException e) {
throw new RuntimeException(e);