startDate, endDate로직처리
This commit is contained in:
부모
e7ea47b02c
커밋
75531ab5e5
@ -6,6 +6,8 @@ import lombok.Builder;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -16,7 +18,7 @@ public class EventDetailDto {
|
|||||||
@JsonProperty("IncidentID")
|
@JsonProperty("IncidentID")
|
||||||
private Integer incidentID;
|
private Integer incidentID;
|
||||||
@JsonProperty("EventID")
|
@JsonProperty("EventID")
|
||||||
private Integer eventID;
|
private Long eventID;
|
||||||
@JsonProperty("EventTypeID")
|
@JsonProperty("EventTypeID")
|
||||||
private Integer eventTypeID;
|
private Integer eventTypeID;
|
||||||
@JsonProperty("EventType")
|
@JsonProperty("EventType")
|
||||||
@ -93,6 +95,8 @@ public class EventDetailDto {
|
|||||||
private String component2;
|
private String component2;
|
||||||
@JsonProperty("FiredUpon")
|
@JsonProperty("FiredUpon")
|
||||||
private String firedUpon;
|
private String firedUpon;
|
||||||
|
private String eventStartDate;
|
||||||
|
private String eventEndDate;
|
||||||
|
|
||||||
@JsonProperty("Cargoes")
|
@JsonProperty("Cargoes")
|
||||||
private List<CargoDto> cargoes;
|
private List<CargoDto> cargoes;
|
||||||
|
|||||||
@ -0,0 +1,12 @@
|
|||||||
|
package com.snp.batch.jobs.event.batch.dto;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class EventPeriod {
|
||||||
|
private String eventStartDate;
|
||||||
|
private String eventEndDate;}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
package com.snp.batch.jobs.event.batch.entity;
|
package com.snp.batch.jobs.event.batch.entity;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
|
||||||
import com.snp.batch.common.batch.entity.BaseEntity;
|
import com.snp.batch.common.batch.entity.BaseEntity;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -7,6 +8,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@ -16,7 +18,7 @@ import java.util.List;
|
|||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
public class EventDetailEntity extends BaseEntity {
|
public class EventDetailEntity extends BaseEntity {
|
||||||
private Integer incidentID;
|
private Integer incidentID;
|
||||||
private Integer eventID;
|
private Long eventID;
|
||||||
private Integer eventTypeID;
|
private Integer eventTypeID;
|
||||||
private String eventType;
|
private String eventType;
|
||||||
private String significance;
|
private String significance;
|
||||||
@ -56,6 +58,9 @@ public class EventDetailEntity extends BaseEntity {
|
|||||||
private String component2;
|
private String component2;
|
||||||
private String firedUpon;
|
private String firedUpon;
|
||||||
|
|
||||||
|
private String eventStartDate;
|
||||||
|
private String eventEndDate;
|
||||||
|
|
||||||
private List<CargoEntity> cargoes;
|
private List<CargoEntity> cargoes;
|
||||||
private List<HumanCasualtyEntity> humanCasualties;
|
private List<HumanCasualtyEntity> humanCasualties;
|
||||||
private List<RelationshipEntity> relationships;
|
private List<RelationshipEntity> relationships;
|
||||||
|
|||||||
@ -19,8 +19,8 @@ public class EventDataProcessor extends BaseProcessor<EventDetailDto, EventDetai
|
|||||||
log.debug("Event 데이터 처리 시작: Event ID = {}", dto.getEventID());
|
log.debug("Event 데이터 처리 시작: Event ID = {}", dto.getEventID());
|
||||||
|
|
||||||
EventDetailEntity entity = EventDetailEntity.builder()
|
EventDetailEntity entity = EventDetailEntity.builder()
|
||||||
.incidentID(dto.getIncidentID())
|
|
||||||
.eventID(dto.getEventID())
|
.eventID(dto.getEventID())
|
||||||
|
.incidentID(dto.getIncidentID())
|
||||||
.eventTypeID(dto.getEventTypeID())
|
.eventTypeID(dto.getEventTypeID())
|
||||||
.eventType(dto.getEventType())
|
.eventType(dto.getEventType())
|
||||||
.significance(dto.getSignificance())
|
.significance(dto.getSignificance())
|
||||||
@ -59,6 +59,8 @@ public class EventDataProcessor extends BaseProcessor<EventDetailDto, EventDetai
|
|||||||
.publishedDate(dto.getPublishedDate())
|
.publishedDate(dto.getPublishedDate())
|
||||||
.component2(dto.getComponent2())
|
.component2(dto.getComponent2())
|
||||||
.firedUpon(dto.getFiredUpon())
|
.firedUpon(dto.getFiredUpon())
|
||||||
|
.eventStartDate(dto.getEventStartDate())
|
||||||
|
.eventEndDate(dto.getEventEndDate())
|
||||||
.cargoes(dto.getCargoes() != null ?
|
.cargoes(dto.getCargoes() != null ?
|
||||||
dto.getCargoes().stream().map(CargoDto::toEntity).collect(Collectors.toList()) : null)
|
dto.getCargoes().stream().map(CargoDto::toEntity).collect(Collectors.toList()) : null)
|
||||||
.humanCasualties(dto.getHumanCasualties() != null ?
|
.humanCasualties(dto.getHumanCasualties() != null ?
|
||||||
|
|||||||
@ -11,14 +11,14 @@ import org.springframework.jdbc.core.JdbcTemplate;
|
|||||||
import org.springframework.web.reactive.function.client.WebClient;
|
import org.springframework.web.reactive.function.client.WebClient;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collections;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
||||||
|
|
||||||
|
private Map<Long, EventPeriod> eventPeriodMap;
|
||||||
private final JdbcTemplate jdbcTemplate;
|
private final JdbcTemplate jdbcTemplate;
|
||||||
private final BatchDateService batchDateService; // ✨ BatchDateService 필드 추가
|
private final BatchDateService batchDateService; // ✨ BatchDateService 필드 추가
|
||||||
|
|
||||||
@ -39,10 +39,13 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
return "/MaritimeWCF/MaritimeAndTradeEventsService.svc/RESTFul/GetEventListByEventChangeDateRange";
|
return "/MaritimeWCF/MaritimeAndTradeEventsService.svc/RESTFul/GetEventListByEventChangeDateRange";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getEventDetailApiPath(){
|
protected String getEventDetailApiPath() {
|
||||||
return "/MaritimeWCF/MaritimeAndTradeEventsService.svc/RESTFul/GetEventDataByEventID";
|
return "/MaritimeWCF/MaritimeAndTradeEventsService.svc/RESTFul/GetEventDataByEventID";
|
||||||
}
|
}
|
||||||
protected String getApiKey() {return "EVENT_IMPORT_JOB";}
|
|
||||||
|
protected String getApiKey() {
|
||||||
|
return "EVENT_IMPORT_JOB";
|
||||||
|
}
|
||||||
|
|
||||||
// 배치 처리 상태
|
// 배치 처리 상태
|
||||||
private List<Long> eventIds;
|
private List<Long> eventIds;
|
||||||
@ -54,9 +57,11 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
protected void resetCustomState() {
|
protected void resetCustomState() {
|
||||||
this.currentBatchIndex = 0;
|
this.currentBatchIndex = 0;
|
||||||
this.eventIds = null;
|
this.eventIds = null;
|
||||||
|
this.eventPeriodMap = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void beforeFetch(){
|
protected void beforeFetch() {
|
||||||
// 1. 기간내 기록된 Event List 조회 (API 요청)
|
// 1. 기간내 기록된 Event List 조회 (API 요청)
|
||||||
log.info("Event API 호출");
|
log.info("Event API 호출");
|
||||||
EventResponse response = callEventApiWithBatch();
|
EventResponse response = callEventApiWithBatch();
|
||||||
@ -65,8 +70,19 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
eventIds = extractEventIdList(response);
|
eventIds = extractEventIdList(response);
|
||||||
log.info("EvnetId List 추출 완료 : {} 개", eventIds.size());
|
log.info("EvnetId List 추출 완료 : {} 개", eventIds.size());
|
||||||
|
|
||||||
|
eventPeriodMap = response.getMaritimeEvents().stream()
|
||||||
|
.filter(e -> e.getEventId() != null)
|
||||||
|
.collect(Collectors.toMap(
|
||||||
|
EventDto::getEventId,
|
||||||
|
e -> new EventPeriod(
|
||||||
|
e.getStartDate(),
|
||||||
|
e.getEndDate()
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
updateApiCallStats(eventIds.size(), 0);
|
updateApiCallStats(eventIds.size(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<EventDetailDto> fetchNextBatch() throws Exception {
|
protected List<EventDetailDto> fetchNextBatch() throws Exception {
|
||||||
// 3. EventID List 로 Event Detail 조회 (API요청) : 청크단위 실행
|
// 3. EventID List 로 Event Detail 조회 (API요청) : 청크단위 실행
|
||||||
@ -95,12 +111,21 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
currentBatchIndex = endIndex;
|
currentBatchIndex = endIndex;
|
||||||
|
|
||||||
List<EventDetailDto> eventDetailList = new ArrayList<>();
|
List<EventDetailDto> eventDetailList = new ArrayList<>();
|
||||||
// TODO: getEventDetailDto에 Map<EventId,Map<StartDate,EndDate>> 데이터 세팅
|
|
||||||
eventDetailList.add(response.getEventDetailDto());
|
|
||||||
|
|
||||||
// 응답 처리
|
// 응답 처리
|
||||||
if (response != null && response.getEventDetailDto() != null) {
|
if (response != null && response.getEventDetailDto() != null) {
|
||||||
|
|
||||||
|
// TODO: getEventDetailDto에 Map<EventId,Map<StartDate,EndDate>> 데이터 세팅
|
||||||
|
EventDetailDto detailDto = response.getEventDetailDto();
|
||||||
|
Long eventId = detailDto.getEventID();
|
||||||
|
EventPeriod period = eventPeriodMap.get(eventId);
|
||||||
|
|
||||||
|
if (period != null) {
|
||||||
|
detailDto.setEventStartDate(period.getEventStartDate());
|
||||||
|
detailDto.setEventEndDate(period.getEventEndDate());
|
||||||
|
}
|
||||||
|
|
||||||
|
eventDetailList.add(response.getEventDetailDto());
|
||||||
log.info("[{}] 배치 {}/{} 완료: {} 건 조회",
|
log.info("[{}] 배치 {}/{} 완료: {} 건 조회",
|
||||||
getReaderName(), currentBatchNumber, totalBatches, eventDetailList.size());
|
getReaderName(), currentBatchNumber, totalBatches, eventDetailList.size());
|
||||||
|
|
||||||
@ -141,7 +166,7 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
@Override
|
@Override
|
||||||
protected void afterFetch(List<EventDetailDto> data) {
|
protected void afterFetch(List<EventDetailDto> data) {
|
||||||
int totalBatches = (int) Math.ceil((double) eventIds.size() / batchSize);
|
int totalBatches = (int) Math.ceil((double) eventIds.size() / batchSize);
|
||||||
try{
|
try {
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
// 3. ✨ 배치 성공 시 상태 업데이트 (트랜잭션 커밋 직전에 실행)
|
// 3. ✨ 배치 성공 시 상태 업데이트 (트랜잭션 커밋 직전에 실행)
|
||||||
LocalDate successDate = LocalDate.now(); // 현재 배치 실행 시점의 날짜 (Reader의 toDay와 동일한 값)
|
LocalDate successDate = LocalDate.now(); // 현재 배치 실행 시점의 날짜 (Reader의 toDay와 동일한 값)
|
||||||
@ -152,7 +177,7 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
log.info("[{}] 총 {} 개의 Event ID에 대한 API 호출 종료",
|
log.info("[{}] 총 {} 개의 Event ID에 대한 API 호출 종료",
|
||||||
getReaderName(), eventIds.size());
|
getReaderName(), eventIds.size());
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
log.info("[{}] 전체 {} 개 배치 처리 실패", getReaderName(), totalBatches);
|
log.info("[{}] 전체 {} 개 배치 처리 실패", getReaderName(), totalBatches);
|
||||||
log.info("[{}] 총 {} 개의 Event ID에 대한 API 호출 종료",
|
log.info("[{}] 총 {} 개의 Event ID에 대한 API 호출 종료",
|
||||||
getReaderName(), eventIds.size());
|
getReaderName(), eventIds.size());
|
||||||
@ -163,7 +188,7 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
if (response.getMaritimeEvents() == null) {
|
if (response.getMaritimeEvents() == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
return response.getMaritimeEvents() .stream()
|
return response.getMaritimeEvents().stream()
|
||||||
// ShipDto 객체에서 imoNumber 필드 (String 타입)를 추출
|
// ShipDto 객체에서 imoNumber 필드 (String 타입)를 추출
|
||||||
.map(EventDto::getEventId)
|
.map(EventDto::getEventId)
|
||||||
// IMO 번호가 null이 아닌 경우만 필터링 (선택 사항이지만 안전성을 위해)
|
// IMO 번호가 null이 아닌 경우만 필터링 (선택 사항이지만 안전성을 위해)
|
||||||
@ -207,4 +232,11 @@ public class EventDataReader extends BaseApiReader<EventDetailDto> {
|
|||||||
.block();
|
.block();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private LocalDateTime parseToLocalDate(String value) {
|
||||||
|
if (value == null || value.isBlank()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return LocalDateTime.parse(value);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -162,14 +162,16 @@ public class EventRepositoryImpl extends BaseJdbcRepository<EventDetailEntity, L
|
|||||||
ps.setObject(idx++, entity.getIncidentID()); // incident_id (누락됨)
|
ps.setObject(idx++, entity.getIncidentID()); // incident_id (누락됨)
|
||||||
ps.setObject(idx++, entity.getIhslrOrImoShipNo()); // ihslrorimoshipno (누락됨)
|
ps.setObject(idx++, entity.getIhslrOrImoShipNo()); // ihslrorimoshipno (누락됨)
|
||||||
ps.setObject(idx++, entity.getPublishedDate()); // published_date (누락됨)
|
ps.setObject(idx++, entity.getPublishedDate()); // published_date (누락됨)
|
||||||
|
ps.setObject(idx++, entity.getEventStartDate()); // event_start_date
|
||||||
|
ps.setObject(idx++, entity.getEventEndDate()); // event_end_date
|
||||||
ps.setString(idx++, entity.getAttemptedBoarding()); // attempted_boarding
|
ps.setString(idx++, entity.getAttemptedBoarding()); // attempted_boarding
|
||||||
ps.setString(idx++, entity.getCargoLoadingStatusCode());// cargo_loading_status_code
|
ps.setString(idx++, entity.getCargoLoadingStatusCode());// cargo_loading_status_code
|
||||||
ps.setString(idx++, entity.getCasualtyAction()); // casualty_action
|
ps.setString(idx++, entity.getCasualtyAction()); // casualty_action
|
||||||
ps.setString(idx++, entity.getCasualtyZone()); // casualty_zone
|
ps.setString(idx++, entity.getCasualtyZone()); // casualty_zone
|
||||||
ps.setString(idx++, entity.getCasualtyZoneCode()); // casualty_zone_code
|
|
||||||
ps.setString(idx++, entity.getComponent2()); // component2
|
|
||||||
|
|
||||||
// 11~20
|
// 11~20
|
||||||
|
ps.setString(idx++, entity.getCasualtyZoneCode()); // casualty_zone_code
|
||||||
|
ps.setString(idx++, entity.getComponent2()); // component2
|
||||||
ps.setString(idx++, entity.getCountryCode()); // country_code
|
ps.setString(idx++, entity.getCountryCode()); // country_code
|
||||||
ps.setObject(idx++, entity.getDateOfBuild()); // date_of_build (Integer)
|
ps.setObject(idx++, entity.getDateOfBuild()); // date_of_build (Integer)
|
||||||
ps.setString(idx++, entity.getDescription()); // description
|
ps.setString(idx++, entity.getDescription()); // description
|
||||||
@ -178,10 +180,10 @@ public class EventRepositoryImpl extends BaseJdbcRepository<EventDetailEntity, L
|
|||||||
ps.setObject(idx++, entity.getMarsdenGridReference()); // marsden_grid_reference (Integer)
|
ps.setObject(idx++, entity.getMarsdenGridReference()); // marsden_grid_reference (Integer)
|
||||||
ps.setString(idx++, entity.getTownName()); // town_name
|
ps.setString(idx++, entity.getTownName()); // town_name
|
||||||
ps.setString(idx++, entity.getEventType()); // event_type (누락됨)
|
ps.setString(idx++, entity.getEventType()); // event_type (누락됨)
|
||||||
ps.setString(idx++, entity.getEventTypeDetail()); // event_type_detail
|
|
||||||
ps.setObject(idx++, entity.getEventTypeDetailID()); // event_type_detail_id (Integer)
|
|
||||||
|
|
||||||
// 21~30
|
// 21~30
|
||||||
|
ps.setString(idx++, entity.getEventTypeDetail()); // event_type_detail
|
||||||
|
ps.setObject(idx++, entity.getEventTypeDetailID()); // event_type_detail_id (Integer)
|
||||||
ps.setObject(idx++, entity.getEventTypeID()); // event_type_id (Integer)
|
ps.setObject(idx++, entity.getEventTypeID()); // event_type_id (Integer)
|
||||||
ps.setString(idx++, entity.getFiredUpon()); // fired_upon
|
ps.setString(idx++, entity.getFiredUpon()); // fired_upon
|
||||||
ps.setString(idx++, entity.getHeadline()); // headline (누락됨)
|
ps.setString(idx++, entity.getHeadline()); // headline (누락됨)
|
||||||
@ -190,10 +192,10 @@ public class EventRepositoryImpl extends BaseJdbcRepository<EventDetailEntity, L
|
|||||||
ps.setString(idx++, entity.getWeather()); // weather
|
ps.setString(idx++, entity.getWeather()); // weather
|
||||||
ps.setString(idx++, entity.getPollutant()); // pollutant
|
ps.setString(idx++, entity.getPollutant()); // pollutant
|
||||||
ps.setObject(idx++, entity.getPollutantQuantity()); // pollutant_quantity (Double)
|
ps.setObject(idx++, entity.getPollutantQuantity()); // pollutant_quantity (Double)
|
||||||
|
|
||||||
|
// 31~42
|
||||||
ps.setString(idx++, entity.getPollutantUnit()); // pollutant_unit
|
ps.setString(idx++, entity.getPollutantUnit()); // pollutant_unit
|
||||||
ps.setString(idx++, entity.getRegisteredOwnerCodeAtTime()); // registered_owner_code_at_time
|
ps.setString(idx++, entity.getRegisteredOwnerCodeAtTime()); // registered_owner_code_at_time
|
||||||
|
|
||||||
// 31~40
|
|
||||||
ps.setString(idx++, entity.getRegisteredOwnerAtTime()); // registered_owner_at_time
|
ps.setString(idx++, entity.getRegisteredOwnerAtTime()); // registered_owner_at_time
|
||||||
ps.setString(idx++, entity.getRegisteredOwnerCountryCodeAtTime()); // registered_owner_country_code_at_time
|
ps.setString(idx++, entity.getRegisteredOwnerCountryCodeAtTime()); // registered_owner_country_code_at_time
|
||||||
ps.setString(idx++, entity.getRegisteredOwnerCountryAtTime()); // registered_owner_country_at_time
|
ps.setString(idx++, entity.getRegisteredOwnerCountryAtTime()); // registered_owner_country_at_time
|
||||||
|
|||||||
@ -4,7 +4,7 @@ public class EventSql {
|
|||||||
public static String getEventDetailUpdateSql(){
|
public static String getEventDetailUpdateSql(){
|
||||||
return """
|
return """
|
||||||
INSERT INTO snp_data.event_detail (
|
INSERT INTO snp_data.event_detail (
|
||||||
event_id, incident_id, ihslrorimoshipno, published_date,
|
event_id, incident_id, ihslrorimoshipno, published_date, event_start_date, event_end_date,
|
||||||
attempted_boarding, cargo_loading_status_code, casualty_action,
|
attempted_boarding, cargo_loading_status_code, casualty_action,
|
||||||
casualty_zone, casualty_zone_code, component2, country_code,
|
casualty_zone, casualty_zone_code, component2, country_code,
|
||||||
date_of_build, description, environment_location, location_name,
|
date_of_build, description, environment_location, location_name,
|
||||||
@ -17,7 +17,7 @@ public class EventSql {
|
|||||||
vessel_name, vessel_type, vessel_type_decode
|
vessel_name, vessel_type, vessel_type_decode
|
||||||
)
|
)
|
||||||
VALUES (
|
VALUES (
|
||||||
?, ?, ?, ?::timestamptz, ?, ?, ?, ?, ?, ?,
|
?, ?, ?, ?::timestamptz,?::timestamptz,?::timestamptz, ?, ?, ?, ?, ?, ?,
|
||||||
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
||||||
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
||||||
?, ?, ?, ?, ?, ?, ?, ?, ?, ?
|
?, ?, ?, ?, ?, ?, ?, ?, ?, ?
|
||||||
@ -27,6 +27,8 @@ public class EventSql {
|
|||||||
incident_id = EXCLUDED.incident_id,
|
incident_id = EXCLUDED.incident_id,
|
||||||
ihslrorimoshipno = EXCLUDED.ihslrorimoshipno,
|
ihslrorimoshipno = EXCLUDED.ihslrorimoshipno,
|
||||||
published_date = EXCLUDED.published_date,
|
published_date = EXCLUDED.published_date,
|
||||||
|
event_start_date = EXCLUDED.event_start_date,
|
||||||
|
event_end_date = EXCLUDED.event_end_date,
|
||||||
attempted_boarding = EXCLUDED.attempted_boarding,
|
attempted_boarding = EXCLUDED.attempted_boarding,
|
||||||
cargo_loading_status_code = EXCLUDED.cargo_loading_status_code,
|
cargo_loading_status_code = EXCLUDED.cargo_loading_status_code,
|
||||||
casualty_action = EXCLUDED.casualty_action,
|
casualty_action = EXCLUDED.casualty_action,
|
||||||
|
|||||||
불러오는 중...
Reference in New Issue
Block a user