|
|
|
@ -11,7 +11,6 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
import java.time.Instant; |
|
|
|
|
import java.time.ZoneId; |
|
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
@ -26,13 +25,18 @@ public class ScheduledService {
|
|
|
|
|
|
|
|
|
|
@Scheduled(fixedDelay = 2 * 1000) |
|
|
|
|
public void sendDataByHistory() { |
|
|
|
|
|
|
|
|
|
DroneStorage droneStorage = DroneStorage.getInstance(); |
|
|
|
|
Map<String, List<DroneDto>> history = droneStorage.getAllByHistory(); |
|
|
|
|
|
|
|
|
|
log.info("sendDataByHistory size : {}", history.keySet().size()); |
|
|
|
|
// list 합
|
|
|
|
|
history.values().stream().map(List::size).reduce(Integer::sum).ifPresent(s -> log.info("list size sum : {}", s)); |
|
|
|
|
if (!history.isEmpty()) { |
|
|
|
|
if (kacAppService.sendDataAll(history)) { |
|
|
|
|
history.values().forEach(droneDtoList -> droneDtoList.forEach(droneDto -> droneDto.setSendHistroy(true))); |
|
|
|
|
} |
|
|
|
|
history.values().forEach(droneDtoList -> droneDtoList.forEach(droneDto -> droneDto.setSendHistroy(true))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
@ -44,58 +48,56 @@ public class ScheduledService {
|
|
|
|
|
DroneStorage droneStorage = DroneStorage.getInstance(); |
|
|
|
|
List<DroneDto> list = droneStorage.getAllByUtm(); |
|
|
|
|
|
|
|
|
|
// 가공
|
|
|
|
|
List<UtmDto.DroneInfo> droneInfoList = list.stream().map(model -> { |
|
|
|
|
UtmDto.DroneInfo droneInfo = UtmDto.DroneInfo.builder() |
|
|
|
|
.id(model.getObjectId()) |
|
|
|
|
.latitude(model.getLat().toString()) |
|
|
|
|
.longitude(model.getLon().toString()) |
|
|
|
|
.height(model.getElev().toString()) |
|
|
|
|
.build(); |
|
|
|
|
return droneInfo; |
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
try { |
|
|
|
|
|
|
|
|
|
if (droneInfoList.isEmpty()) return; |
|
|
|
|
List<UtmDto.DroneInfo> droneInfoList = list.stream().map(model -> { |
|
|
|
|
UtmDto.DroneInfo droneInfo = UtmDto.DroneInfo.builder() |
|
|
|
|
.id(model.getObjectId()) |
|
|
|
|
.latitude(model.getLat().toString()) |
|
|
|
|
.longitude(model.getLon().toString()) |
|
|
|
|
.height(model.getElev().toString()) |
|
|
|
|
.build(); |
|
|
|
|
return droneInfo; |
|
|
|
|
}).collect(Collectors.toList()); |
|
|
|
|
// 가공
|
|
|
|
|
|
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss") |
|
|
|
|
.withZone(ZoneId.of("Asia/Seoul")); |
|
|
|
|
String dateStr = formatter.format(Instant.now()); |
|
|
|
|
if (droneInfoList.isEmpty()) return; |
|
|
|
|
|
|
|
|
|
UtmDto utmDto = UtmDto.builder() |
|
|
|
|
.GPSime(dateStr) |
|
|
|
|
.droneInfo(droneInfoList) |
|
|
|
|
.build(); |
|
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss") |
|
|
|
|
.withZone(ZoneId.of("Asia/Seoul")); |
|
|
|
|
String dateStr = formatter.format(Instant.now()); |
|
|
|
|
|
|
|
|
|
UtmDto utmDto = UtmDto.builder() |
|
|
|
|
.GPSime(dateStr) |
|
|
|
|
.droneInfo(droneInfoList) |
|
|
|
|
.build(); |
|
|
|
|
|
|
|
|
|
// if (externalService.sendDataToUtm(utmDto)) {
|
|
|
|
|
// list.forEach(drone -> drone.setSendUtm(true));
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// TODO 현재 통신이 안되므로 모두 보낸다는 가정으로 진행
|
|
|
|
|
list.forEach(drone -> drone.setSendUtm(true)); |
|
|
|
|
// TODO 현재 통신이 안되므로 모두 보낸다는 가정으로 진행
|
|
|
|
|
list.forEach(drone -> drone.setSendUtm(true)); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("ERROR : {}", e.getMessage(), e); |
|
|
|
|
if (list != null) { |
|
|
|
|
log.warn("list : {}", list.size()); |
|
|
|
|
} else { |
|
|
|
|
log.warn("list is null"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 사용을 다한 데이터 제거
|
|
|
|
|
@Scheduled(fixedDelay = 1000 * 30) |
|
|
|
|
@Scheduled(fixedDelay = 30 * 1000) |
|
|
|
|
public void removeDrone() { |
|
|
|
|
log.debug(">>>> removeDrone <<<<<"); |
|
|
|
|
log.info(">>>> removeDrone <<<<<"); |
|
|
|
|
DroneStorage droneStorage = DroneStorage.getInstance(); |
|
|
|
|
Map<String, List<DroneDto>> all = droneStorage.getAll(); |
|
|
|
|
if (all != null) { |
|
|
|
|
log.debug(">>>> remove drone before size : {}::{}", all.keySet().size(), all.values().stream().reduce((list, result) -> { |
|
|
|
|
result.addAll(list); |
|
|
|
|
return result; |
|
|
|
|
}).orElse(new ArrayList<>()).size()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
droneStorage.removeByCondition(); |
|
|
|
|
|
|
|
|
|
if (all != null) { |
|
|
|
|
log.debug(">>>> remove drone before size : {}::{}", all.keySet().size(), all.values().stream().reduce((list, result) -> { |
|
|
|
|
result.addAll(list); |
|
|
|
|
return result; |
|
|
|
|
}).orElse(new ArrayList<>()).size()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|