From e3b78204c20c82e8efcdcbae3748cb1e4eab50e7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-6ARNG1Q\\dlsgk" Date: Fri, 8 Nov 2024 11:25:49 +0900 Subject: [PATCH] =?UTF-8?q?interfasce=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/batch/JobLauncherController.java | 1 - .../interplug/qcast/util/InterfaceQsp.java | 73 +++++++++++++++---- 2 files changed, 60 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java index b84b73f0..d0f79ccd 100644 --- a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java +++ b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java @@ -100,7 +100,6 @@ public class JobLauncherController { */ // @Scheduled(cron = "*/30 * * * * *") @Scheduled(cron = "0 0 0 * * *") - @GetMapping("/batch/master/storeAdditionalInfo") public String storeAdditionalInfoJob() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, diff --git a/src/main/java/com/interplug/qcast/util/InterfaceQsp.java b/src/main/java/com/interplug/qcast/util/InterfaceQsp.java index 50916060..da371df9 100644 --- a/src/main/java/com/interplug/qcast/util/InterfaceQsp.java +++ b/src/main/java/com/interplug/qcast/util/InterfaceQsp.java @@ -1,5 +1,9 @@ package com.interplug.qcast.util; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.interplug.qcast.biz.user.dto.SyncResponse; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.InputStream; @@ -8,16 +12,20 @@ import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; -import org.springframework.http.HttpMethod; -import org.springframework.stereotype.Component; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; @Slf4j @Component @RequiredArgsConstructor public class InterfaceQsp { + + @Value("${qsp.url}") + private String qspUrl; + /** * API Call * @@ -71,10 +79,8 @@ public class InterfaceQsp { throw e; } finally { try { - if (osw != null) - osw.close(); - if (br != null) - br.close(); + if (osw != null) osw.close(); + if (br != null) br.close(); } catch (Exception e) { throw e; } @@ -83,6 +89,48 @@ public class InterfaceQsp { return sb != null ? sb.toString() : null; } + /** + * API 호출후 Response 객체로 Return + * + * @param method + * @param qspInterUrl + * @param requestObject + * @param responseObject + * @return + * @throws Exception + */ + public T callApiData( + HttpMethod method, String qspInterUrl, Object requestObject, Object responseObject) + throws Exception { + + // 데이터 읽기 + SyncResponse syncResponse = new SyncResponse(); + + String strResponse = this.callApi(method, qspUrl + qspInterUrl, requestObject); + ObjectMapper om = + new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + String dataJson = ""; + if (!"".equals(strResponse)) { + + syncResponse = om.readValue(strResponse, SyncResponse.class); + + // 'data' 필드를 직접 사용하여 BatchResponse로 변환 + if (syncResponse.getData() != null) { + dataJson = om.writeValueAsString(syncResponse.getData()); + } + } + if (responseObject == null) { + return (T) dataJson; + } else if (responseObject instanceof Class) { + return om.readValue(dataJson, (Class) responseObject); + } else if (responseObject instanceof TypeReference) { + return om.readValue(dataJson, (TypeReference) responseObject); + } else { + throw new IllegalArgumentException("Unsupported responseType"); + } + } + /** * API Call - byte return, file down 사용 * @@ -91,8 +139,9 @@ public class InterfaceQsp { * @return String * @throws Exception */ - public byte[] callApi(HttpMethod httpMethod, String apiPath, Object requestObject, - Map result) throws Exception { + public byte[] callApi( + HttpMethod httpMethod, String apiPath, Object requestObject, Map result) + throws Exception { URL url = null; HttpURLConnection con = null; @@ -142,10 +191,8 @@ public class InterfaceQsp { throw e; } finally { try { - if (osw != null) - osw.close(); - if (br != null) - br.close(); + if (osw != null) osw.close(); + if (br != null) br.close(); } catch (Exception e) { throw e; }