지대한
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