Browse Source

fix: 드론 이력 저장 중 연관관계에 의하여 발생되는 부분 수정

feature/socket
지대한 7 months ago
parent
commit
4c6cf6f540
  1. 2
      app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/scheduled/InnerSocketScheduled.java
  2. 23
      app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/service/InnerSocketService.java
  3. 5
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDroneCommandImpl.java
  4. 11
      app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/handler/DroneHandler.java

2
app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/scheduled/InnerSocketScheduled.java

@ -16,7 +16,7 @@ public class InnerSocketScheduled {
/**
* 최신 수신일로 부터 특정 시간동안 데이터 수신되지 않는 경우 종료 처리
*/
@Scheduled(fixedDelay = 10 * 1000)
// @Scheduled(fixedDelay = 10 * 1000)
public void stopDronFlight() {
log.debug("drone flight stop scheduler started.");
innerSocketService.stopDronFlight();

23
app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/service/InnerSocketService.java

@ -88,6 +88,7 @@ public class InnerSocketService {
ControlGpsStorage simpleControlStorage = ControlGpsStorage.getInstance();
simpleControlStorage.put(objectId, controlId);
}
log.debug(">>>> get control id : {}", simpleControlDto.getControlId());
return simpleControlDto;
}
@ -95,13 +96,9 @@ public class InnerSocketService {
// socket으로부터 받은 dron 정보 저장
public void setDronData(DroneDto droneDto) {
if ("01".equals(droneDto.getTypeCd())) {
// 비행 이력 생성
// 비행 이력 기본 생성
CtrCntrlBas ctrCntrlBas = ctrCntrlBasRepository.findById(droneDto.getControlId()).orElse(null);
if (ctrCntrlBas != null) {
log.debug(BaseErrorCode.DATA_ALREADY_EXISTS.message());
ctrCntrlBas = null;
} else {
if (ctrCntrlBas == null) {
CtrCntrlBas insertCtrCntrlBas = CtrCntrlBas.builder()
.cntrlId(droneDto.getControlId())
.idntfNum(droneDto.getObjectId())
@ -114,9 +111,13 @@ public class InnerSocketService {
.build();
ctrCntrlBas = ctrCntrlBasRepository.save(insertCtrCntrlBas);
} else {
log.debug(BaseErrorCode.DATA_ALREADY_EXISTS.message());
}
if ("01".equals(droneDto.getTypeCd())) {
log.debug(">>>> drone dto type cd is 01");
// 비행 이력 생성
// 비행 이력, 비행 계획서 mapping
if (!"PA".equals(droneDto.getObjectId().substring(0, 2))) return;
@ -163,6 +164,8 @@ public class InnerSocketService {
fltPlanCtrCntrlRelRepository.save(fltPlanCtrCntrlRel);
}
} else {
log.debug(">>>> drone dto type cd is not 01");
}
// history 생성
@ -192,7 +195,9 @@ public class InnerSocketService {
.sensorDust(droneDto.getSensorDust())
.build();
log.debug(">>> send data :: control_id : {}", ctrCntrlHstry.getCntrlId());
log.debug(">>> send data :: oid, cid : {}, {}", droneDto.getObjectId(), droneDto.getControlId());
log.debug(">>> send data :: ctrCntrlBas : {}", ctrCntrlBas);
ctrCntrlHstry = ctrCntrlHstryRepository.save(ctrCntrlHstry);
if ("01".equals(droneDto.getTypeCd()) || "99".equals(droneDto.getTypeCd())) {
@ -209,8 +214,6 @@ public class InnerSocketService {
.build();
ctrCntrlHstryAreaRepository.save(ctrCntrlHstryArea);
}
}

5
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/command/impl/SandboxDroneCommandImpl.java

@ -38,6 +38,7 @@ public class SandboxDroneCommandImpl implements DroneCommand {
@Override
public void command(DroneRq rq) {
log.info(">>>> SandboxCommandServiceImpl <<<<<");
log.debug("time 011 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
List<DroneDto> resultList = rq.getBody();
/** 전문 설정 ***/
final String messageType = "LTEM";
@ -82,7 +83,10 @@ public class SandboxDroneCommandImpl implements DroneCommand {
if (dronCacheDTO == null) {
// STEP 1. Control ID 발급 -> Application Server Http 통신
try {
log.debug("time 012 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
SimpleControlDto simpleControlDto = kacAppService.getControlId(drone.getObjectId());
log.debug(">>> simple control dto : {}", simpleControlDto);
log.debug("time 013 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
drone.setControlId(simpleControlDto.getControlId());
drone.setTypeCd(simpleControlDto.getTypeCd());
@ -141,6 +145,7 @@ public class SandboxDroneCommandImpl implements DroneCommand {
throw new IllegalArgumentException("좌표 정보가 존재하지 않습니다.");
}
}
log.debug("time 014 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
}
}

11
app/kac-socket-app/src/main/java/kr/co/palnet/kac/socket/core/handler/DroneHandler.java

@ -10,6 +10,7 @@ import kr.co.palnet.kac.socket.core.storage.AuthKeyStorage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.time.Instant;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -32,7 +33,7 @@ public class DroneHandler extends SimpleChannelInboundHandler<DroneRq> {
//
@Override
protected void channelRead0(ChannelHandlerContext ctx, DroneRq rq) throws Exception {
log.info(">>>> channelRead0 <<<<<");
log.debug("time start : {}::{}", Instant.now(), Instant.now().toEpochMilli());
// key 검사
if (rq == null) {
ctx.writeAndFlush(DroneRs.builder()
@ -66,9 +67,10 @@ public class DroneHandler extends SimpleChannelInboundHandler<DroneRq> {
return;
}
log.info(">>> rq : {}", rq);
log.debug(">>> rq : {}", rq);
log.debug("time 002 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
DroneCommand commandService = commandMap.get(rq.getCommand().trim());
log.debug("time 003 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
if (commandService == null) {
ctx.writeAndFlush(DroneRs.builder()
@ -78,7 +80,9 @@ public class DroneHandler extends SimpleChannelInboundHandler<DroneRq> {
return;
}
try {
log.debug("time 004 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
commandService.command(rq);
log.debug("time 005 : {}::{}", Instant.now(), Instant.now().toEpochMilli());
} catch (Exception e) {
ctx.writeAndFlush(DroneRs.builder()
.code("-500")
@ -90,6 +94,7 @@ public class DroneHandler extends SimpleChannelInboundHandler<DroneRq> {
.code("0")
.message("success")
.build());
log.debug("time end : {}::{}", Instant.now(), Instant.now().toEpochMilli());
}
// 에러 처리

Loading…
Cancel
Save