From 4107b4f789267fe68d3178abcf680a79fe58f89b Mon Sep 17 00:00:00 2001 From: "semin.baek" Date: Wed, 7 May 2025 19:12:36 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EC=88=98?= =?UTF-8?q?=EC=8B=A0=20=EC=B2=98=EB=A6=AC=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper-examples/address/address-write.xml | 15 +++++++----- .../agent/listener/ListenerController.java | 9 +++++++- .../bsmlab/dfx/agent/listener/dto/AckDto.java | 6 ++--- .../listener/service/ListenerService.java | 11 +++++++++ .../dfx/agent/support/MessageUtils.java | 23 +++++++++++++++++++ .../dropbox/DropBoxTaskExecutorService.java | 2 +- .../task/postman/PostmanSchedulerService.java | 5 ++-- 7 files changed, 58 insertions(+), 13 deletions(-) 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);