|
|
@ -1,10 +1,10 @@ |
|
|
|
package kr.co.palnet.kac.socket.core.command.impl; |
|
|
|
package kr.co.palnet.kac.socket.core.command.impl; |
|
|
|
|
|
|
|
|
|
|
|
import kr.co.palnet.kac.socket.core.model.ControlDto; |
|
|
|
import kr.co.palnet.kac.common.model.common.ControlDto; |
|
|
|
import kr.co.palnet.kac.socket.core.model.DronDTO; |
|
|
|
import kr.co.palnet.kac.common.model.common.DronDto; |
|
|
|
import kr.co.palnet.kac.socket.core.model.DronHistoryDTO; |
|
|
|
import kr.co.palnet.kac.common.model.common.DronHistoryDto; |
|
|
|
import kr.co.palnet.kac.socket.core.model.DronRQ; |
|
|
|
|
|
|
|
import kr.co.palnet.kac.socket.core.command.DronCommand; |
|
|
|
import kr.co.palnet.kac.socket.core.command.DronCommand; |
|
|
|
|
|
|
|
import kr.co.palnet.kac.socket.core.model.DronRq; |
|
|
|
import kr.co.palnet.kac.socket.core.storage.ControlStorage; |
|
|
|
import kr.co.palnet.kac.socket.core.storage.ControlStorage; |
|
|
|
import kr.co.palnet.kac.socket.core.storage.DronStorage; |
|
|
|
import kr.co.palnet.kac.socket.core.storage.DronStorage; |
|
|
|
import kr.co.palnet.kac.socket.core.util.DronUtil; |
|
|
|
import kr.co.palnet.kac.socket.core.util.DronUtil; |
|
|
@ -22,7 +22,10 @@ import java.net.http.HttpClient; |
|
|
|
import java.net.http.HttpRequest; |
|
|
|
import java.net.http.HttpRequest; |
|
|
|
import java.net.http.HttpResponse; |
|
|
|
import java.net.http.HttpResponse; |
|
|
|
import java.time.Instant; |
|
|
|
import java.time.Instant; |
|
|
|
import java.util.*; |
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
|
|
@Slf4j |
|
|
|
@Slf4j |
|
|
|
@RequiredArgsConstructor |
|
|
|
@RequiredArgsConstructor |
|
|
@ -41,16 +44,16 @@ public class AntosDronCommandImpl implements DronCommand { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void command(DronRQ rq) { |
|
|
|
public void command(DronRq rq) { |
|
|
|
log.info(">>>> AntosCommandServiceImpl <<<<<"); |
|
|
|
log.info(">>>> AntosCommandServiceImpl <<<<<"); |
|
|
|
List<DronDTO> resultList = rq.getBody(); |
|
|
|
List<DronDto> resultList = rq.getBody(); |
|
|
|
|
|
|
|
|
|
|
|
/** 전문 설정 ***/ |
|
|
|
/** 전문 설정 ***/ |
|
|
|
final String messageType = "LTEM"; |
|
|
|
final String messageType = "LTEM"; |
|
|
|
final String objectType = "DRON"; |
|
|
|
final String objectType = "DRON"; |
|
|
|
|
|
|
|
|
|
|
|
/** 데이터 모델링 **/ |
|
|
|
/** 데이터 모델링 **/ |
|
|
|
for (DronDTO dron : resultList) { |
|
|
|
for (DronDto dron : resultList) { |
|
|
|
// 위,경도 좌표가 0으로 들어오는 것은 무시 처리
|
|
|
|
// 위,경도 좌표가 0으로 들어오는 것은 무시 처리
|
|
|
|
if (DronUtil.latlonCheck(dron.getLat(), dron.getLon())) { |
|
|
|
if (DronUtil.latlonCheck(dron.getLat(), dron.getLon())) { |
|
|
|
|
|
|
|
|
|
|
@ -63,9 +66,9 @@ public class AntosDronCommandImpl implements DronCommand { |
|
|
|
dron.setServerRcvDt(Instant.now()); |
|
|
|
dron.setServerRcvDt(Instant.now()); |
|
|
|
|
|
|
|
|
|
|
|
// 관제 이력 정보
|
|
|
|
// 관제 이력 정보
|
|
|
|
List<DronHistoryDTO> hisList; |
|
|
|
List<DronHistoryDto> hisList; |
|
|
|
|
|
|
|
|
|
|
|
DronHistoryDTO history = DronHistoryDTO.builder() |
|
|
|
DronHistoryDto history = DronHistoryDto.builder() |
|
|
|
.objectId(dron.getObjectId()) |
|
|
|
.objectId(dron.getObjectId()) |
|
|
|
.lat(dron.getLat()) |
|
|
|
.lat(dron.getLat()) |
|
|
|
.lon(dron.getLon()) |
|
|
|
.lon(dron.getLon()) |
|
|
@ -82,8 +85,8 @@ public class AntosDronCommandImpl implements DronCommand { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// STEP 1. 전에 내부 메모리에서 controlId 조회
|
|
|
|
// STEP 1. 전에 내부 메모리에서 controlId 조회
|
|
|
|
ControlStorage controlCacheUtil = ControlStorage.getInstance(); |
|
|
|
ControlStorage controlStorage = ControlStorage.getInstance(); |
|
|
|
ControlDto dronCacheDTO = controlCacheUtil.get(dron.getObjectId()); |
|
|
|
ControlDto dronCacheDTO = controlStorage.get(dron.getObjectId()); |
|
|
|
|
|
|
|
|
|
|
|
if (dronCacheDTO == null) { |
|
|
|
if (dronCacheDTO == null) { |
|
|
|
// STEP 1. Control ID 발급 -> Application Server Http 통신
|
|
|
|
// STEP 1. Control ID 발급 -> Application Server Http 통신
|
|
|
@ -117,7 +120,7 @@ public class AntosDronCommandImpl implements DronCommand { |
|
|
|
controlDto.setRegTime(System.currentTimeMillis()); |
|
|
|
controlDto.setRegTime(System.currentTimeMillis()); |
|
|
|
|
|
|
|
|
|
|
|
ControlDto newDronCacheDTO = ControlDto.builder().build(); |
|
|
|
ControlDto newDronCacheDTO = ControlDto.builder().build(); |
|
|
|
controlCacheUtil.put(dron.getObjectId(), newDronCacheDTO); |
|
|
|
controlStorage.put(dron.getObjectId(), newDronCacheDTO); |
|
|
|
|
|
|
|
|
|
|
|
} catch (IOException e) { |
|
|
|
} catch (IOException e) { |
|
|
|
log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage()); |
|
|
|
log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage()); |
|
|
@ -132,19 +135,18 @@ public class AntosDronCommandImpl implements DronCommand { |
|
|
|
dron.setControlWarnCd(dronCacheDTO.isControlWarnCd()); |
|
|
|
dron.setControlWarnCd(dronCacheDTO.isControlWarnCd()); |
|
|
|
dronCacheDTO.setRegTime(System.currentTimeMillis()); |
|
|
|
dronCacheDTO.setRegTime(System.currentTimeMillis()); |
|
|
|
|
|
|
|
|
|
|
|
controlCacheUtil.put(dron.getObjectId(), dronCacheDTO); |
|
|
|
controlStorage.put(dron.getObjectId(), dronCacheDTO); |
|
|
|
} |
|
|
|
} |
|
|
|
// STEP 2. 이력 생성할 전문 전달 -> DRON의 대한 식별정보만 이력 관리
|
|
|
|
// STEP 2. 이력 생성할 전문 전달 -> DRON의 대한 식별정보만 이력 관리
|
|
|
|
try { |
|
|
|
try { |
|
|
|
// 저장 해 놓았다가 한거번에 전송
|
|
|
|
// 저장 해 놓았다가 한거번에 전송
|
|
|
|
DronStorage dronCacheUtil = DronStorage.getInstance(); |
|
|
|
DronStorage dronStorage = DronStorage.getInstance(); |
|
|
|
dronCacheUtil.add(dron); |
|
|
|
dronStorage.add(dron); |
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); |
|
|
|
log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// STEP 3. 화면에 표출할 정보 WebSocket 전달
|
|
|
|
// STEP 3. 화면에 표출할 정보 WebSocket 전달
|
|
|
|
if ("PA".equals(dron.getObjectId().substring(0, 2))) { |
|
|
|
if ("PA".equals(dron.getObjectId().substring(0, 2))) { |
|
|
|
webSocketService.sendData(dron); |
|
|
|
webSocketService.sendData(dron); |
|
|
|