지대한
7 months ago
5 changed files with 132 additions and 2 deletions
@ -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(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -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
|
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue