diff --git a/app/kac-app/build.gradle b/app/kac-app/build.gradle index 215278e..d73864c 100644 --- a/app/kac-app/build.gradle +++ b/app/kac-app/build.gradle @@ -21,7 +21,7 @@ dependencies { // implementation "org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4:1.16" implementation("org.springframework:spring-tx") // jpa -// implementation "$boot:spring-boot-starter-data-jpa" + implementation "$boot:spring-boot-starter-data-jpa" // querydsl // implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" @@ -37,12 +37,13 @@ dependencies { implementation project(":common:core") // implementation project(":common:config-db") implementation project(":common:util") + implementation project(":common:model") implementation project(":web:security") implementation project(":web:api-common") + implementation project(":data:ctr") // implementation project(":data:cns") // implementation project(":data:com") -// implementation project(":data:ctr") // implementation project(":data:flt") // implementation project(":data:other") // implementation project(":data:pty") diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/controller/InnerSocketController.java b/app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/controller/InnerSocketController.java new file mode 100644 index 0000000..ecc7c09 --- /dev/null +++ b/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 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 receiverDronData(@RequestBody DronDto dronDto) { + log.debug(">>>>> receiver <<<<<"); + innerSocketService.setDronData(dronDto); + return ResponseEntity.ok().build(); + } + +} diff --git a/app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/service/InnerSocketService.java b/app/kac-app/src/main/java/kr/co/palnet/kac/app/api/v1/inner/socket/service/InnerSocketService.java new file mode 100644 index 0000000..487d36c --- /dev/null +++ b/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 + } +} diff --git a/data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlBasRepository.java b/data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlBasRepository.java index 08debca..aa6618c 100644 --- a/data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlBasRepository.java +++ b/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 org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface CtrCntrlBasRepository extends JpaRepository { + Optional findFirstByIdntfNumOrderByCreateDtDesc(String idntfNum); + } diff --git a/data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlHstryRepository.java b/data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlHstryRepository.java index 98c6b9a..ebb395b 100644 --- a/data/ctr/src/main/java/kr/co/palnet/kac/data/ctr/repository/CtrCntrlHstryRepository.java +++ b/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 org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface CtrCntrlHstryRepository extends JpaRepository { + Optional findFirstByCntrlIdOrderBySrvrRcvDtDesc(String cntrlId); }