diff --git a/src/main/java/com/snp/batch/jobs/web/risk/controller/RiskController.java b/src/main/java/com/snp/batch/jobs/web/risk/controller/RiskController.java index 088bf59..9bbd908 100644 --- a/src/main/java/com/snp/batch/jobs/web/risk/controller/RiskController.java +++ b/src/main/java/com/snp/batch/jobs/web/risk/controller/RiskController.java @@ -39,9 +39,9 @@ public class RiskController extends BaseBypassController { @Operation( summary = "기간 내 변경된 위험지표 조회", - description = "Gets details of the IMOs of all ships with compliance updates" + description = "Gets details of the IMOs of all ships with risk updates" ) - @GetMapping("/UpdatedComplianceList") + @GetMapping("/UpdatedRiskList") public ResponseEntity getUpdatedComplianceListData(@Parameter(description = "Time/seconds are optional", example = "2026-03-30T07:01:27.000Z") @RequestParam(required = true) String fromDate, @Parameter(description = "Time/seconds are optional. If unspecified, the current UTC date and time is used", example = "2026-03-31T07:01:27.000Z") diff --git a/src/main/java/com/snp/batch/jobs/web/risk/service/UpdatedComplianceListService.java b/src/main/java/com/snp/batch/jobs/web/risk/service/UpdatedComplianceListService.java index add4913..dfb661b 100644 --- a/src/main/java/com/snp/batch/jobs/web/risk/service/UpdatedComplianceListService.java +++ b/src/main/java/com/snp/batch/jobs/web/risk/service/UpdatedComplianceListService.java @@ -16,7 +16,7 @@ public class UpdatedComplianceListService extends BaseBypassService { public UpdatedComplianceListService( @Qualifier("maritimeServiceApiWebClient") WebClient webClient) { - super(webClient, "/RiskAndCompliance/UpdatedComplianceList", "기간 내 변경된 위험지표 조회", + super(webClient, "/RiskAndCompliance/UpdatedRiskList", "기간 내 변경된 위험지표 조회", new ParameterizedTypeReference<>() {}, new ParameterizedTypeReference<>() {}); } diff --git a/src/main/java/com/snp/batch/jobs/web/ship/controller/ShipController.java b/src/main/java/com/snp/batch/jobs/web/ship/controller/ShipController.java new file mode 100644 index 0000000..dc79cde --- /dev/null +++ b/src/main/java/com/snp/batch/jobs/web/ship/controller/ShipController.java @@ -0,0 +1,37 @@ +package com.snp.batch.jobs.web.ship.controller; + +import com.fasterxml.jackson.databind.JsonNode; +import com.snp.batch.common.web.controller.BaseBypassController; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import com.snp.batch.jobs.web.ship.service.GetShipDataByIHSLRorIMOService; + +/** + * Ship bypass API + * S&P Maritime API에서 데이터를 실시간 조회하여 JSON을 그대로 반환 + */ +@RestController +@RequestMapping("/api/ship") +@RequiredArgsConstructor +@Tag(name = "Ship", description = "[Ship API] Ship bypass API") +public class ShipController extends BaseBypassController { + + private final GetShipDataByIHSLRorIMOService getShipDataByIHSLRorIMOService; + + @Operation( + summary = "IMO 기반 선박제원정보 조회", + description = "IMO 기반 선박제원정보 조회" + ) + @GetMapping("/GetShipDataByIHSLRorIMO") + public ResponseEntity getGetShipDataByIHSLRorIMOData(@Parameter(description = "", example = "9876543") + @RequestParam(required = true) String ihslrOrImo) { + return executeRaw(() -> getShipDataByIHSLRorIMOService.getGetShipDataByIHSLRorIMOData(ihslrOrImo)); + } +} diff --git a/src/main/java/com/snp/batch/jobs/web/ship/service/GetShipDataByIHSLRorIMOService.java b/src/main/java/com/snp/batch/jobs/web/ship/service/GetShipDataByIHSLRorIMOService.java new file mode 100644 index 0000000..04e6e57 --- /dev/null +++ b/src/main/java/com/snp/batch/jobs/web/ship/service/GetShipDataByIHSLRorIMOService.java @@ -0,0 +1,32 @@ +package com.snp.batch.jobs.web.ship.service; + +import com.fasterxml.jackson.databind.JsonNode; +import com.snp.batch.common.web.service.BaseBypassService; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; + +/** + * IMO 기반 선박제원정보 조회 bypass 서비스 + * 외부 Maritime API에서 데이터를 실시간 조회하여 JSON을 그대로 반환 + */ +@Service +public class GetShipDataByIHSLRorIMOService extends BaseBypassService { + + public GetShipDataByIHSLRorIMOService( + @Qualifier("maritimeApiWebClient") WebClient webClient) { + super(webClient, "/MaritimeWCF/APSShipService.svc/RESTFul/GetShipDataByIHSLRorIMO", "IMO 기반 선박제원정보 조회", + new ParameterizedTypeReference<>() {}, + new ParameterizedTypeReference<>() {}); + } + + /** + * IMO 기반 선박제원정보 조회 데이터를 조회합니다. + */ + public JsonNode getGetShipDataByIHSLRorIMOData(String ihslrOrImo) { + return fetchRawGet(uri -> uri.path(getApiPath()) + .queryParam("ihslrOrImo", ihslrOrImo) + .build()); + } +}