Browse Source

feat: kac-app control 정보 가져오기

feature/socket
지대한 7 months ago
parent
commit
6670dfd803
  1. 5
      app/kac-app/build.gradle
  2. 37
      app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/controller/InnerSocketController.java
  3. 85
      app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/service/InnerSocketService.java
  4. 4
      data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlBasRepository.java
  5. 3
      data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlHstryRepository.java

5
app/kac-app/build.gradle

@ -21,7 +21,7 @@ dependencies {
// implementation "org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16" // implementation "org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16"
implementation("org.springframework:spring-tx") implementation("org.springframework:spring-tx")
// jpa // jpa
// implementation "$boot:spring-boot-starter-data-jpa" implementation "$boot:spring-boot-starter-data-jpa"
// querydsl // querydsl
// implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" // implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
@ -37,12 +37,13 @@ dependencies {
implementation project(":common:core") implementation project(":common:core")
// implementation project(":common:config-db") // implementation project(":common:config-db")
implementation project(":common:util") implementation project(":common:util")
implementation project(":common:model")
implementation project(":web:security") implementation project(":web:security")
implementation project(":web:api-common") implementation project(":web:api-common")
implementation project(":data:ctr")
// implementation project(":data:cns") // implementation project(":data:cns")
// implementation project(":data:com") // implementation project(":data:com")
// implementation project(":data:ctr")
// implementation project(":data:flt") // implementation project(":data:flt")
// implementation project(":data:other") // implementation project(":data:other")
// implementation project(":data:pty") // implementation project(":data:pty")

37
app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/controller/InnerSocketController.java

@ -0,0 +1,37 @@
package kr.co.palnet.kac.app.api.v1.inner.socket.controller;
import kr.co.palnet.kac.app.api.v1.inner.socket.service.InnerSocketService;
import kr.co.palnet.kac.common.model.common.DronDto;
import kr.co.palnet.kac.common.model.common.SimpleControlDto;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("/v1/inner/socket")
public class InnerSocketController {
private final InnerSocketService innerSocketService;
// dorn의 control 조회
public ResponseEntity<SimpleControlDto> getControlId(String objectId) {
log.debug(">>>>> getControlId <<<<<");
log.debug(">>>>> objectId : {} <<<<<", objectId);
SimpleControlDto simpleControlDto = innerSocketService.getControlId(objectId);
return ResponseEntity.ok(simpleControlDto);
}
// dron 정보 저장
@PostMapping("/receiver/dron")
public ResponseEntity<Void> receiverDronData(@RequestBody DronDto dronDto) {
log.debug(">>>>> receiver <<<<<");
innerSocketService.setDronData(dronDto);
return ResponseEntity.ok().build();
}
}

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

@ -0,0 +1,85 @@
package kr.co.palnet.kac.app.api.v1.inner.socket.service;
import kr.co.palnet.kac.common.model.common.DronDto;
import kr.co.palnet.kac.common.model.common.SimpleControlDto;
import kr.co.palnet.kac.data.ctr.model.CtrCntrlBas;
import kr.co.palnet.kac.data.ctr.model.CtrCntrlHstry;
import kr.co.palnet.kac.data.ctr.repository.CtrCntrlBasRepository;
import kr.co.palnet.kac.data.ctr.repository.CtrCntrlHstryRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.UUID;
@Slf4j
@RequiredArgsConstructor
@Service
@Transactional
public class InnerSocketService {
private final CtrCntrlBasRepository ctrCntrlBasRepository;
private final CtrCntrlHstryRepository ctrCntrlHstryRepository;
public SimpleControlDto getControlId(String objectId) {
log.debug(">>>>> getControlId <<<<<");
log.debug(">>>>> objectId : {} <<<<<", objectId);
CtrCntrlBas latestControl = ctrCntrlBasRepository.findFirstByIdntfNumOrderByCreateDtDesc(objectId).orElse(null);
boolean isControl = false;
if (latestControl != null) {
CtrCntrlHstry latestHistory = ctrCntrlHstryRepository.findFirstByCntrlIdOrderBySrvrRcvDtDesc(latestControl.getCntrlId()).orElse(null);
if (latestHistory != null) {
long diffMinute = ChronoUnit.MINUTES.between(latestHistory.getSrvrRcvDt(), Instant.now());
// log.info("DIFF MINUTE : {}", diffMinute);
if ("01".equals(latestControl.getEndTypeCd()) || diffMinute > 5) {
isControl = false;
}
if (!"01".equals(latestControl.getEndTypeCd()) && diffMinute < 5) {
isControl = true;
}
} else {
isControl = false;
}
} else {
isControl = false;
}
SimpleControlDto simpleControlDto = new SimpleControlDto();
if (isControl) {
simpleControlDto.setControlId(latestControl.getCntrlId());
simpleControlDto.setTypeCd("02");
simpleControlDto.setAreaTrnsYn("E");
} else {
simpleControlDto.setControlId(UUID.randomUUID().toString());
simpleControlDto.setTypeCd("01");
simpleControlDto.setAreaTrnsYn("N");
// 기체 식별번호의 관제 ID 저장 (single ton)
// shareContext.putIdntfKey(id, controlID);
}
return simpleControlDto;
}
public static void main(String[] args) {
Instant now = Instant.now();
Instant d = now.plus(12, ChronoUnit.MINUTES);
long diffMinutes = ChronoUnit.MINUTES.between(now, d);
System.out.println(diffMinutes);
long diffMinutes2 = ChronoUnit.MINUTES.between(d, now);
System.out.println(diffMinutes2);
}
// socket으로부터 받은 dron 정보 저장
public void setDronData(DronDto dronDto) {
// TODO
}
}

4
data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlBasRepository.java

@ -3,6 +3,10 @@ package kr.co.palnet.kac.data.ctr.repository;
import kr.co.palnet.kac.data.ctr.model.CtrCntrlBas; import kr.co.palnet.kac.data.ctr.model.CtrCntrlBas;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface CtrCntrlBasRepository extends JpaRepository<CtrCntrlBas, String> { public interface CtrCntrlBasRepository extends JpaRepository<CtrCntrlBas, String> {
Optional<CtrCntrlBas> findFirstByIdntfNumOrderByCreateDtDesc(String idntfNum);
} }

3
data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlHstryRepository.java

@ -3,7 +3,10 @@ package kr.co.palnet.kac.data.ctr.repository;
import kr.co.palnet.kac.data.ctr.model.CtrCntrlHstry; import kr.co.palnet.kac.data.ctr.model.CtrCntrlHstry;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface CtrCntrlHstryRepository extends JpaRepository<CtrCntrlHstry, Integer> { public interface CtrCntrlHstryRepository extends JpaRepository<CtrCntrlHstry, Integer> {
Optional<CtrCntrlHstry> findFirstByCntrlIdOrderBySrvrRcvDtDesc(String cntrlId);
} }

Loading…
Cancel
Save