Browse Source

refactor: model 공통으로 가져오기

feature/socket
지대한 7 months ago
parent
commit
c36129450b
  1. 1
      app/kac-socket-app/build.gradle
  2. 6
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/KacSocketApplication.java
  3. 4
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/codec/DronDecoder.java
  4. 4
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/DronCommand.java
  5. 37
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AdsbDronCommandImpl.java
  6. 36
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AntosDronCommandImpl.java
  7. 33
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDronCommandImpl.java
  8. 24
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/handler/DronHandler.java
  9. 97
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronDTO.java
  10. 5
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronRq.java
  11. 2
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronRs.java
  12. 2
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/storage/ControlStorage.java
  13. 16
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/storage/DronStorage.java
  14. 4
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/KacAppService.java
  15. 4
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/WebSocketService.java
  16. 5
      app/kac-websocket-app/build.gradle
  17. 8
      app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/controller/SocketReceiverController.java
  18. 20
      app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/model/DronHistoryDTO.java
  19. 15
      app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/storage/ControlStorage.java
  20. 16
      app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ControlService.java
  21. 5
      app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ScheduledService.java
  22. 4
      common/model/build.gradle
  23. 2
      common/model/src/main/java/kr/co/palnet/kac/common/model/common/ControlDto.java
  24. 6
      common/model/src/main/java/kr/co/palnet/kac/common/model/common/DronControlDto.java
  25. 8
      common/model/src/main/java/kr/co/palnet/kac/common/model/common/DronDto.java
  26. 4
      common/model/src/main/java/kr/co/palnet/kac/common/model/common/DronHistoryDto.java

1
app/kac-socket-app/build.gradle

@ -3,6 +3,7 @@ dependencies {
implementation "$boot:spring-boot-starter" implementation "$boot:spring-boot-starter"
implementation "io.netty:netty-all:4.1.68.Final" implementation "io.netty:netty-all:4.1.68.Final"
implementation project(":common:util") implementation project(":common:util")
compileOnly project(":common:model")
} }

6
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/KacSocketApplication.java

@ -1,15 +1,15 @@
package kr.co.palnet.kac.socket; package kr.co.palnet.kac.socket;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@Slf4j
@EnableScheduling
@SpringBootApplication @SpringBootApplication
public class KacSocketApplication { public class KacSocketApplication {
public static void main(String[] args) { public static void main(String[] args) {
log.info(">>>>> main <<<<<");
SpringApplication.run(KacSocketApplication.class, args); SpringApplication.run(KacSocketApplication.class, args);
} }
} }

4
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/codec/DronDecoder.java

@ -3,7 +3,7 @@ package kr.co.palnet.kac.socket.core.codec;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder; import io.netty.handler.codec.MessageToMessageDecoder;
import kr.co.palnet.kac.socket.core.model.DronRQ; import kr.co.palnet.kac.socket.core.model.DronRq;
import kr.co.palnet.kac.util.ObjectMapperUtils; import kr.co.palnet.kac.util.ObjectMapperUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -24,7 +24,7 @@ public class DronDecoder extends MessageToMessageDecoder<String> {
// TypeReference<DronRQ> typeRef = new TypeReference<DronRQ>() { // TypeReference<DronRQ> typeRef = new TypeReference<DronRQ>() {
// }; // };
// DronRQ payload = objectMapper.readValue(in, typeRef); // DronRQ payload = objectMapper.readValue(in, typeRef);
DronRQ payload = objectMapper.readValue(in, DronRQ.class); DronRq payload = objectMapper.readValue(in, DronRq.class);
if (payload != null) { if (payload != null) {
out.add(payload); out.add(payload);
} }

4
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/DronCommand.java

@ -1,8 +1,8 @@
package kr.co.palnet.kac.socket.core.command; package kr.co.palnet.kac.socket.core.command;
import kr.co.palnet.kac.socket.core.model.DronRQ; import kr.co.palnet.kac.socket.core.model.DronRq;
public interface DronCommand { public interface DronCommand {
void command(final DronRQ rq); void command(final DronRq rq);
String getCommandName(); String getCommandName();
} }

37
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AdsbDronCommandImpl.java

@ -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
@ -42,16 +45,16 @@ public class AdsbDronCommandImpl implements DronCommand {
} }
@Override @Override
public void command(DronRQ rq) { public void command(DronRq rq) {
log.info(">>>> AdsbCommandServiceImpl <<<<<"); log.info(">>>> AdsbCommandServiceImpl <<<<<");
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())) {
@ -64,9 +67,9 @@ public class AdsbDronCommandImpl 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())
@ -83,8 +86,8 @@ public class AdsbDronCommandImpl 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,9 +120,7 @@ public class AdsbDronCommandImpl implements DronCommand {
controlDto.setTypeCd((String) data.get("typeCd")); controlDto.setTypeCd((String) data.get("typeCd"));
controlDto.setAreaTrnsYn((String) data.get("areaTrnsYn")); controlDto.setAreaTrnsYn((String) data.get("areaTrnsYn"));
controlDto.setRegTime(System.currentTimeMillis()); controlDto.setRegTime(System.currentTimeMillis());
controlStorage.put(dron.getObjectId(), controlDto);
ControlDto newDronCacheDTO = ControlDto.builder().build();
controlCacheUtil.put(dron.getObjectId(), newDronCacheDTO);
} catch (IOException e) { } catch (IOException e) {
log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage()); log.error("요청한 URL 정보가 잘못되었습니다.", e.getMessage());
@ -134,13 +135,13 @@ public class AdsbDronCommandImpl 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());
} }

36
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/AntosDronCommandImpl.java

@ -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);

33
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDronCommandImpl.java

@ -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.common.model.common.ControlDto;
import kr.co.palnet.kac.common.model.common.DronDto;
import kr.co.palnet.kac.common.model.common.DronHistoryDto;
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.ControlDto; import kr.co.palnet.kac.socket.core.model.DronRq;
import kr.co.palnet.kac.socket.core.model.DronDTO;
import kr.co.palnet.kac.socket.core.model.DronHistoryDTO;
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;
@ -44,15 +44,15 @@ public class SandboxDronCommandImpl implements DronCommand {
} }
@Override @Override
public void command(DronRQ rq) { public void command(DronRq rq) {
log.info(">>>> SandboxCommandServiceImpl <<<<<"); log.info(">>>> SandboxCommandServiceImpl <<<<<");
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())) {
@ -65,9 +65,9 @@ public class SandboxDronCommandImpl 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())
@ -85,8 +85,8 @@ public class SandboxDronCommandImpl implements DronCommand {
Long start = System.currentTimeMillis(); Long start = System.currentTimeMillis();
// 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 통신
@ -121,7 +121,7 @@ public class SandboxDronCommandImpl 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());
@ -136,16 +136,15 @@ public class SandboxDronCommandImpl 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.set(dron); // dronStorage.set(dron);
} catch (Exception e) { } catch (Exception e) {
log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace()); log.error("ERROR : {}\n{}", e.getMessage(), e.getStackTrace());
} }
@ -154,7 +153,7 @@ public class SandboxDronCommandImpl implements DronCommand {
// webSocketService.sendData(dron); // webSocketService.sendData(dron);
Long end = System.currentTimeMillis(); Long end = System.currentTimeMillis();
log.info(">>> during time : {}::{}", dron.getObjectId(),end - start); log.info(">>> during time : {}::{}", dron.getObjectId(), end - start);
} else { } else {
log.error("좌표 정보가 존재하지 않습니다."); log.error("좌표 정보가 존재하지 않습니다.");

24
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/handler/DronHandler.java

@ -4,8 +4,8 @@ import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler; import io.netty.channel.SimpleChannelInboundHandler;
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.model.DronRq;
import kr.co.palnet.kac.socket.core.model.DronRS; import kr.co.palnet.kac.socket.core.model.DronRs;
import kr.co.palnet.kac.socket.core.storage.AuthKeyStorage; import kr.co.palnet.kac.socket.core.storage.AuthKeyStorage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -17,7 +17,7 @@ import java.util.Map;
@Slf4j @Slf4j
@ChannelHandler.Sharable @ChannelHandler.Sharable
@Component @Component
public class DronHandler extends SimpleChannelInboundHandler<DronRQ> { public class DronHandler extends SimpleChannelInboundHandler<DronRq> {
private final Map<String, DronCommand> commandMap; private final Map<String, DronCommand> commandMap;
@ -31,11 +31,11 @@ public class DronHandler extends SimpleChannelInboundHandler<DronRQ> {
// //
@Override @Override
protected void channelRead0(ChannelHandlerContext ctx, DronRQ rq) throws Exception { protected void channelRead0(ChannelHandlerContext ctx, DronRq rq) throws Exception {
log.info(">>>> channelRead0 <<<<<"); log.info(">>>> channelRead0 <<<<<");
// key 검사 // key 검사
if (rq == null) { if (rq == null) {
ctx.writeAndFlush(DronRS.builder() ctx.writeAndFlush(DronRs.builder()
.code("-1000") .code("-1000")
.message("data is empty.") .message("data is empty.")
.build()); .build());
@ -43,7 +43,7 @@ public class DronHandler extends SimpleChannelInboundHandler<DronRQ> {
} }
if (rq.getCommand() == null || rq.getCommand().isEmpty()) { if (rq.getCommand() == null || rq.getCommand().isEmpty()) {
ctx.writeAndFlush(DronRS.builder() ctx.writeAndFlush(DronRs.builder()
.code("-1001") .code("-1001")
.message("command is empty.") .message("command is empty.")
.build()); .build());
@ -51,7 +51,7 @@ public class DronHandler extends SimpleChannelInboundHandler<DronRQ> {
} }
if (rq.getAuthKey() == null || rq.getAuthKey().isEmpty()) { if (rq.getAuthKey() == null || rq.getAuthKey().isEmpty()) {
ctx.writeAndFlush(DronRS.builder() ctx.writeAndFlush(DronRs.builder()
.code("-2000") .code("-2000")
.message("auth key is empty.") .message("auth key is empty.")
.build()); .build());
@ -59,7 +59,7 @@ public class DronHandler extends SimpleChannelInboundHandler<DronRQ> {
} }
if (AuthKeyStorage.getInstance().checkAuthKey(rq.getCommand())) { if (AuthKeyStorage.getInstance().checkAuthKey(rq.getCommand())) {
ctx.writeAndFlush(DronRS.builder() ctx.writeAndFlush(DronRs.builder()
.code("-2000") .code("-2000")
.message("Invalid auth key.") .message("Invalid auth key.")
.build()); .build());
@ -69,7 +69,7 @@ public class DronHandler extends SimpleChannelInboundHandler<DronRQ> {
log.info(">>> rq : {}", rq); log.info(">>> rq : {}", rq);
DronCommand commandService = commandMap.get(rq.getCommand().trim()); DronCommand commandService = commandMap.get(rq.getCommand().trim());
if (commandService == null) { if (commandService == null) {
ctx.writeAndFlush(DronRS.builder() ctx.writeAndFlush(DronRs.builder()
.code("-2100") .code("-2100")
.message("this command is not exist.") .message("this command is not exist.")
.build()); .build());
@ -78,13 +78,13 @@ public class DronHandler extends SimpleChannelInboundHandler<DronRQ> {
try { try {
commandService.command(rq); commandService.command(rq);
} catch (Exception e) { } catch (Exception e) {
ctx.writeAndFlush(DronRS.builder() ctx.writeAndFlush(DronRs.builder()
.code("-500") .code("-500")
.message("server error - execute command") .message("server error - execute command")
.build()); .build());
return; return;
} }
ctx.writeAndFlush(DronRS.builder() ctx.writeAndFlush(DronRs.builder()
.code("0") .code("0")
.message("success") .message("success")
.build()); .build());
@ -94,7 +94,7 @@ public class DronHandler extends SimpleChannelInboundHandler<DronRQ> {
@Override @Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
log.info(">>>> exceptionCaught <<<<<"); log.info(">>>> exceptionCaught <<<<<");
DronRS rs = DronRS.builder() DronRs rs = DronRs.builder()
.code("-9999") .code("-9999")
.message("error - etc") .message("error - etc")
.build(); .build();

97
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronDTO.java

@ -1,97 +0,0 @@
package kr.co.palnet.kac.socket.core.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
import java.time.LocalDateTime;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DronDTO {
private String typeCd; // 01 : 최초 들어온 데이터 , 99 : 종료 시킬 데이터
private String messageType;
private String terminalId;
@Builder.Default
private Double moveDistance = 0.0;
private String moveDistanceType;
private String controlId; // 처음 위치 데이터가 들어 왔을때 생성 함
private String objectType;
private String objectId;
@Builder.Default
private Double lat = 0.0;
@Builder.Default
private Double lon = 0.0;
private String elevType;
@Builder.Default
private Double elev = 0.0;
private String speedType;
@Builder.Default
private Double speed = 0.0;
@Builder.Default
private Double betteryLevel = 0.0;
@Builder.Default
private Double betteryVoltage = 0.0;
private String dronStatus;
@Builder.Default
private Double heading = 0.0;
private String terminalRcvDt;
private Instant serverRcvDt;
private Instant controlStartDt;
private Instant controlEndDt;
private String areaTrnsYn;
// 환경센서 필드
@Builder.Default
private Double sensorCo = 0.0;
@Builder.Default
private Double sensorSo2 = 0.0;
@Builder.Default
private Double sensorNo2 = 0.0;
@Builder.Default
private Double sensorO3 = 0.0;
@Builder.Default
private Double sensorDust = 0.0;
//최근 5건만 저장
private List<DronHistoryDTO> recentPositionHistory;
// 전체 히스토리 저장
private List<DronHistoryDTO> postionHistory;
// 비정상 상황 식별 코드
private boolean controlWarnCd;
// 큐가 Socket서버에 도착한 시간
private Instant regDt;
// 큐가 Socket서버에 도착한 시간
private boolean sendUtm; // 불법드론 전송 여부
}

5
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronRQ.java → app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronRq.java

@ -1,5 +1,6 @@
package kr.co.palnet.kac.socket.core.model; package kr.co.palnet.kac.socket.core.model;
import kr.co.palnet.kac.common.model.common.DronDto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -11,7 +12,7 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
public class DronRQ { public class DronRq {
private String authKey; private String authKey;
@ -19,6 +20,6 @@ public class DronRQ {
private String command; private String command;
private List<DronDTO> body; private List<DronDto> body;
} }

2
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronRS.java → app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronRs.java

@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
public class DronRS { public class DronRs {
private String code; private String code;
private String message; private String message;
} }

2
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/storage/ControlStorage.java

@ -1,6 +1,6 @@
package kr.co.palnet.kac.socket.core.storage; package kr.co.palnet.kac.socket.core.storage;
import kr.co.palnet.kac.socket.core.model.ControlDto; import kr.co.palnet.kac.common.model.common.ControlDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;

16
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/storage/DronStorage.java

@ -1,6 +1,6 @@
package kr.co.palnet.kac.socket.core.storage; package kr.co.palnet.kac.socket.core.storage;
import kr.co.palnet.kac.socket.core.model.DronDTO; import kr.co.palnet.kac.common.model.common.DronDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.time.Instant; import java.time.Instant;
@ -12,7 +12,7 @@ import java.util.concurrent.ConcurrentHashMap;
@Slf4j @Slf4j
public class DronStorage { public class DronStorage {
private final Map<String, List<DronDTO>> dronMap; private final Map<String, List<DronDto>> dronMap;
private final int REMOVE_TIME = 1000 * 10; private final int REMOVE_TIME = 1000 * 10;
@ -28,14 +28,14 @@ public class DronStorage {
private static final DronStorage INSTANCE = new DronStorage(); private static final DronStorage INSTANCE = new DronStorage();
} }
public Map<String, List<DronDTO>> getAll() { public Map<String, List<DronDto>> getAll() {
if (dronMap.keySet().isEmpty()) { if (dronMap.keySet().isEmpty()) {
return null; return null;
} }
return dronMap; return dronMap;
} }
public List<DronDTO> get(String objectId) { public List<DronDto> get(String objectId) {
if (objectId == null || objectId.isEmpty()) { if (objectId == null || objectId.isEmpty()) {
return null; return null;
} }
@ -45,12 +45,12 @@ public class DronStorage {
return dronMap.get(objectId); return dronMap.get(objectId);
} }
public void add(DronDTO dron) { public void add(DronDto dron) {
if (dron == null || dron.getObjectId() == null || dron.getObjectId().isEmpty()) { if (dron == null || dron.getObjectId() == null || dron.getObjectId().isEmpty()) {
return; return;
} }
List<DronDTO> list = dronMap.get(dron.getObjectId()); List<DronDto> list = dronMap.get(dron.getObjectId());
if (list == null) { if (list == null) {
list = new ArrayList<>(); list = new ArrayList<>();
@ -63,11 +63,11 @@ public class DronStorage {
public void removeScheduled() { public void removeScheduled() {
log.info("removeScheduled start - dronMap size : {}", dronMap.size()); log.info("removeScheduled start - dronMap size : {}", dronMap.size());
for (String key : dronMap.keySet()) { for (String key : dronMap.keySet()) {
List<DronDTO> list = dronMap.get(key); List<DronDto> list = dronMap.get(key);
if (list == null || list.isEmpty()) { if (list == null || list.isEmpty()) {
continue; continue;
} }
DronDTO dron = list.get(list.size() - 1); DronDto dron = list.get(list.size() - 1);
// 1분 이상된 데이터 삭제 // 1분 이상된 데이터 삭제
Instant compareTime = Instant.now().minusSeconds(60); Instant compareTime = Instant.now().minusSeconds(60);
if (compareTime.isAfter(dron.getRegDt())) { if (compareTime.isAfter(dron.getRegDt())) {

4
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/KacAppService.java

@ -1,6 +1,6 @@
package kr.co.palnet.kac.socket.service; package kr.co.palnet.kac.socket.service;
import kr.co.palnet.kac.socket.core.model.DronDTO; import kr.co.palnet.kac.common.model.common.DronDto;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class KacAppService { public class KacAppService {
public void sendData(DronDTO dto) { public void sendData(DronDto dto) {
} }
} }

4
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/service/WebSocketService.java

@ -1,6 +1,6 @@
package kr.co.palnet.kac.socket.service; package kr.co.palnet.kac.socket.service;
import kr.co.palnet.kac.socket.core.model.DronDTO; import kr.co.palnet.kac.common.model.common.DronDto;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -10,7 +10,7 @@ import org.springframework.stereotype.Service;
@Service @Service
public class WebSocketService { public class WebSocketService {
public void sendData(DronDTO dto) { public void sendData(DronDto dto) {
} }

5
app/kac-websocket-app/build.gradle

@ -1,8 +1,9 @@
dependencies { dependencies {
implementation "$boot:spring-boot-starter-web" implementation "$boot:spring-boot-starter-web"
implementation "io.netty:netty-all:4.1.68.Final" implementation "io.netty:netty-all:4.1.68.Final"
implementation project(":common:util") implementation project(":common:util")
compileOnly project(":common:model")
} }

8
app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/controller/SocketReceiverController.java

@ -1,8 +1,8 @@
package kr.co.palnet.kac.websocket.controller; package kr.co.palnet.kac.websocket.controller;
import kr.co.palnet.kac.websocket.core.model.ControlDTO; import kr.co.palnet.kac.common.model.common.DronControlDto;
import kr.co.palnet.kac.websocket.core.model.DronDTO; import kr.co.palnet.kac.common.model.common.DronDto;
import kr.co.palnet.kac.websocket.core.storage.ControlStorage; import kr.co.palnet.kac.websocket.core.storage.ControlStorage;
import kr.co.palnet.kac.websocket.service.ControlService; import kr.co.palnet.kac.websocket.service.ControlService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -22,10 +22,10 @@ public class SocketReceiverController {
private final ControlService controlService; private final ControlService controlService;
@PostMapping("/dron") @PostMapping("/dron")
public ResponseEntity<Void> receiver(@RequestBody DronDTO dronDTO) { public ResponseEntity<Void> receiver(@RequestBody DronDto dronDTO) {
log.info("websocket message receiver : {}", dronDTO); log.info("websocket message receiver : {}", dronDTO);
ControlDTO history = controlService.dronDtoToControlDtoConvert(dronDTO); DronControlDto history = controlService.dronDtoToControlDtoConvert(dronDTO);
// DRON의 대한 식별정보만 이력 관리 // DRON의 대한 식별정보만 이력 관리
ControlStorage controlCache = ControlStorage.getInstance(); ControlStorage controlCache = ControlStorage.getInstance();

20
app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/model/DronHistoryDTO.java

@ -1,20 +0,0 @@
package kr.co.palnet.kac.websocket.core.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DronHistoryDTO {
private String objectId;
@Builder.Default
private Double lat = 0.0;
@Builder.Default
private Double lon = 0.0;
}

15
app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/storage/ControlStorage.java

@ -1,6 +1,6 @@
package kr.co.palnet.kac.websocket.core.storage; package kr.co.palnet.kac.websocket.core.storage;
import kr.co.palnet.kac.websocket.core.model.ControlDTO; import kr.co.palnet.kac.common.model.common.DronControlDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -8,7 +8,6 @@ import org.springframework.stereotype.Component;
import java.time.Instant; import java.time.Instant;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Component @Component
@ -16,7 +15,7 @@ public class ControlStorage {
private final int REMOVE_TIME_SECOND = 60; // 화면 노출 시간 private final int REMOVE_TIME_SECOND = 60; // 화면 노출 시간
private final Map<String, ControlDTO> controlMap; private final Map<String, DronControlDto> controlMap;
private ControlStorage() { private ControlStorage() {
controlMap = new ConcurrentHashMap<>(); controlMap = new ConcurrentHashMap<>();
@ -30,14 +29,14 @@ public class ControlStorage {
private static final ControlStorage INSTANCE = new ControlStorage(); private static final ControlStorage INSTANCE = new ControlStorage();
} }
public Map<String, ControlDTO> getAll() { public Map<String, DronControlDto> getAll() {
if (controlMap.keySet().isEmpty()) { if (controlMap.keySet().isEmpty()) {
return null; return null;
} }
return controlMap; return controlMap;
} }
public ControlDTO get(String objectId) { public DronControlDto get(String objectId) {
if (objectId == null || objectId.isEmpty()) { if (objectId == null || objectId.isEmpty()) {
return null; return null;
} }
@ -47,7 +46,7 @@ public class ControlStorage {
return controlMap.get(objectId); return controlMap.get(objectId);
} }
public ControlDTO put(ControlDTO control) { public DronControlDto put(DronControlDto control) {
if (control == null || control.getObjectId() == null || control.getObjectId().isEmpty()) { if (control == null || control.getObjectId() == null || control.getObjectId().isEmpty()) {
return null; return null;
} }
@ -55,11 +54,11 @@ public class ControlStorage {
return controlMap.put(control.getObjectId(), control); return controlMap.put(control.getObjectId(), control);
} }
public List<ControlDTO> getList() { public List<DronControlDto> getList() {
return new ArrayList<>(controlMap.values()); return new ArrayList<>(controlMap.values());
} }
public ControlDTO remove(String objectId) { public DronControlDto remove(String objectId) {
return controlMap.remove(objectId); return controlMap.remove(objectId);
} }

16
app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ControlService.java

@ -1,7 +1,7 @@
package kr.co.palnet.kac.websocket.service; package kr.co.palnet.kac.websocket.service;
import kr.co.palnet.kac.websocket.core.model.ControlDTO; import kr.co.palnet.kac.common.model.common.DronControlDto;
import kr.co.palnet.kac.websocket.core.model.DronDTO; import kr.co.palnet.kac.common.model.common.DronDto;
import kr.co.palnet.kac.websocket.core.storage.ControlStorage; import kr.co.palnet.kac.websocket.core.storage.ControlStorage;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -15,11 +15,11 @@ import java.util.*;
public class ControlService { public class ControlService {
public List<ControlDTO> getList() { public List<DronControlDto> getList() {
List<ControlDTO> list = new ArrayList<>(); List<DronControlDto> list = new ArrayList<>();
ControlStorage controlCache = ControlStorage.getInstance(); ControlStorage controlCache = ControlStorage.getInstance();
Map<String, ControlDTO> allHistory = controlCache.getAll(); Map<String, DronControlDto> allHistory = controlCache.getAll();
log.info(">>> getList :: {}", allHistory); log.info(">>> getList :: {}", allHistory);
@ -53,12 +53,12 @@ public class ControlService {
return list; return list;
} }
public ControlDTO dronDtoToControlDtoConvert(DronDTO dronDTO) { public DronControlDto dronDtoToControlDtoConvert(DronDto dronDTO) {
ControlStorage controlCache = ControlStorage.getInstance(); ControlStorage controlCache = ControlStorage.getInstance();
ControlDTO prevControlDTO = controlCache.get(dronDTO.getObjectId()); DronControlDto prevControlDTO = controlCache.get(dronDTO.getObjectId());
ControlDTO controlDTO = new ControlDTO(); DronControlDto controlDTO = new DronControlDto();
controlDTO.setObjectId(dronDTO.getObjectId()); controlDTO.setObjectId(dronDTO.getObjectId());
controlDTO.setControlId(dronDTO.getControlId()); controlDTO.setControlId(dronDTO.getControlId());

5
app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/service/ScheduledService.java

@ -4,8 +4,8 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.netty.channel.group.ChannelGroup; import io.netty.channel.group.ChannelGroup;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import kr.co.palnet.kac.common.model.common.DronControlDto;
import kr.co.palnet.kac.util.ObjectMapperUtils; import kr.co.palnet.kac.util.ObjectMapperUtils;
import kr.co.palnet.kac.websocket.core.model.ControlDTO;
import kr.co.palnet.kac.websocket.core.storage.ChannelStorage; import kr.co.palnet.kac.websocket.core.storage.ChannelStorage;
import kr.co.palnet.kac.websocket.core.storage.ControlStorage; import kr.co.palnet.kac.websocket.core.storage.ControlStorage;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -24,6 +24,7 @@ public class ScheduledService {
private int count = 0; private int count = 0;
private int count2 = 0; private int count2 = 0;
@Scheduled(fixedDelay = 1000) @Scheduled(fixedDelay = 1000)
public void test() { public void test() {
log.info("test.... : {}", count++); log.info("test.... : {}", count++);
@ -38,7 +39,7 @@ public class ScheduledService {
ChannelGroup channelGroup = channelStorage.getAll(); ChannelGroup channelGroup = channelStorage.getAll();
// 데이터 가져오기 // 데이터 가져오기
ControlStorage controlStorage = ControlStorage.getInstance(); ControlStorage controlStorage = ControlStorage.getInstance();
List<ControlDTO> controlDtoList = controlStorage.getList(); List<DronControlDto> controlDtoList = controlStorage.getList();
if (controlDtoList == null || controlDtoList.isEmpty()) return; if (controlDtoList == null || controlDtoList.isEmpty()) return;

4
common/model/build.gradle

@ -0,0 +1,4 @@
dependencies {
}

2
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/ControlDto.java → common/model/src/main/java/kr/co/palnet/kac/common/model/common/ControlDto.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.socket.core.model; package kr.co.palnet.kac.common.model.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;

6
app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/model/ControlDTO.java → common/model/src/main/java/kr/co/palnet/kac/common/model/common/DronControlDto.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.websocket.core.model; package kr.co.palnet.kac.common.model.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -13,7 +13,7 @@ import java.util.Map;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
public class ControlDTO implements Comparable<ControlDTO> { public class DronControlDto implements Comparable<DronControlDto> {
private String messageTypeCd; private String messageTypeCd;
@ -76,7 +76,7 @@ public class ControlDTO implements Comparable<ControlDTO> {
private Instant regDt; private Instant regDt;
@Override @Override
public int compareTo(ControlDTO o) { public int compareTo(DronControlDto o) {
if (o.getControlStartDt() != null && controlStartDt != null) { if (o.getControlStartDt() != null && controlStartDt != null) {
return o.getControlStartDt().compareTo(controlStartDt); return o.getControlStartDt().compareTo(controlStartDt);
} }

8
app/kac-websocket-app/src/main/java/kr/co/palnet/kac/websocket/core/model/DronDTO.java → common/model/src/main/java/kr/co/palnet/kac/common/model/common/DronDto.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.websocket.core.model; package kr.co.palnet.kac.common.model.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@ -12,7 +12,7 @@ import java.util.List;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
public class DronDTO { public class DronDto {
private String typeCd; // 01 : 최초 들어온 데이터 , 99 : 종료 시킬 데이터 private String typeCd; // 01 : 최초 들어온 데이터 , 99 : 종료 시킬 데이터
private String messageType; private String messageType;
@ -80,10 +80,10 @@ public class DronDTO {
private Double sensorDust = 0.0; private Double sensorDust = 0.0;
//최근 5건만 저장 //최근 5건만 저장
private List<DronHistoryDTO> recentPositionHistory; private List<DronHistoryDto> recentPositionHistory;
// 전체 히스토리 저장 // 전체 히스토리 저장
private List<DronHistoryDTO> postionHistory; private List<DronHistoryDto> postionHistory;
// 비정상 상황 식별 코드 // 비정상 상황 식별 코드
private boolean controlWarnCd; private boolean controlWarnCd;

4
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/model/DronHistoryDTO.java → common/model/src/main/java/kr/co/palnet/kac/common/model/common/DronHistoryDto.java

@ -1,4 +1,4 @@
package kr.co.palnet.kac.socket.core.model; package kr.co.palnet.kac.common.model.common;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -10,7 +10,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Builder @Builder
public class DronHistoryDTO { public class DronHistoryDto {
private String objectId; private String objectId;
@Builder.Default @Builder.Default
Loading…
Cancel
Save