Merge pull request 'release: 2026-04-08.2 (13건 커밋)' (#13) from develop into main
All checks were successful
Build and Deploy SNP Global / build-and-deploy (push) Successful in 28s

This commit is contained in:
HYOJIN 2026-04-08 14:44:31 +09:00
커밋 2fab1b56a3
5개의 변경된 파일77개의 추가작업 그리고 3개의 파일을 삭제

파일 보기

@ -4,6 +4,11 @@
## [Unreleased] ## [Unreleased]
## [2026-04-08.2]
### 추가
- UpdatedRiskList 엔드포인트 변경 및 Ship 데이터 조회 모듈 추가
## [2026-04-08] ## [2026-04-08]
### 변경 ### 변경

파일 보기

@ -39,9 +39,9 @@ public class RiskController extends BaseBypassController {
@Operation( @Operation(
summary = "기간 내 변경된 위험지표 조회", 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<JsonNode> getUpdatedComplianceListData(@Parameter(description = "Time/seconds are optional", example = "2026-03-30T07:01:27.000Z") public ResponseEntity<JsonNode> getUpdatedComplianceListData(@Parameter(description = "Time/seconds are optional", example = "2026-03-30T07:01:27.000Z")
@RequestParam(required = true) String fromDate, @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") @Parameter(description = "Time/seconds are optional. If unspecified, the current UTC date and time is used", example = "2026-03-31T07:01:27.000Z")

파일 보기

@ -16,7 +16,7 @@ public class UpdatedComplianceListService extends BaseBypassService<JsonNode> {
public UpdatedComplianceListService( public UpdatedComplianceListService(
@Qualifier("maritimeServiceApiWebClient") WebClient webClient) { @Qualifier("maritimeServiceApiWebClient") WebClient webClient) {
super(webClient, "/RiskAndCompliance/UpdatedComplianceList", "기간 내 변경된 위험지표 조회", super(webClient, "/RiskAndCompliance/UpdatedRiskList", "기간 내 변경된 위험지표 조회",
new ParameterizedTypeReference<>() {}, new ParameterizedTypeReference<>() {},
new ParameterizedTypeReference<>() {}); new ParameterizedTypeReference<>() {});
} }

파일 보기

@ -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<JsonNode> getGetShipDataByIHSLRorIMOData(@Parameter(description = "", example = "9876543")
@RequestParam(required = true) String ihslrOrImo) {
return executeRaw(() -> getShipDataByIHSLRorIMOService.getGetShipDataByIHSLRorIMOData(ihslrOrImo));
}
}

파일 보기

@ -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<JsonNode> {
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());
}
}