|
|
@ -14,98 +14,61 @@ import java.util.*; |
|
|
|
@Service |
|
|
|
@Service |
|
|
|
public class ControlService { |
|
|
|
public class ControlService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public DroneControlDto dronDtoToControlDtoConvert(DroneDto dronDto) { |
|
|
|
public List<DroneControlDto> getList() { |
|
|
|
|
|
|
|
List<DroneControlDto> list = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ControlStorage controlCache = ControlStorage.getInstance(); |
|
|
|
ControlStorage controlCache = ControlStorage.getInstance(); |
|
|
|
Map<String, DroneControlDto> allHistory = controlCache.getAll(); |
|
|
|
DroneControlDto prevControlDto = controlCache.get(dronDto.getObjectId()); |
|
|
|
|
|
|
|
|
|
|
|
if (Objects.nonNull(allHistory)) { |
|
|
|
DroneControlDto controlDto = new DroneControlDto(); |
|
|
|
allHistory.forEach((k, v) -> { |
|
|
|
|
|
|
|
/* |
|
|
|
controlDto.setObjectId(dronDto.getObjectId()); |
|
|
|
int cacheCount = v.getControlCacheCount(); |
|
|
|
controlDto.setControlId(dronDto.getControlId()); |
|
|
|
|
|
|
|
controlDto.setControlStartDt(dronDto.getControlStartDt()); |
|
|
|
// 데이터가 수신 되지 않고 이전 데이터를 표출하고 있는 경우
|
|
|
|
controlDto.setObjectTypeCd(dronDto.getObjectType()); |
|
|
|
if (cacheCount == 1) { |
|
|
|
controlDto.setLat(dronDto.getLat()); |
|
|
|
if (v.isControlWarnCd() && v.isControlWarnNotyCd()) { |
|
|
|
controlDto.setLon(dronDto.getLon()); |
|
|
|
v.setControlCacheCount(2); |
|
|
|
controlDto.setElevType(dronDto.getElevType()); |
|
|
|
} |
|
|
|
controlDto.setElev(dronDto.getElev()); |
|
|
|
} |
|
|
|
controlDto.setSpeedType(dronDto.getSpeedType()); |
|
|
|
|
|
|
|
controlDto.setSpeed(dronDto.getSpeed()); |
|
|
|
// 비정상 상황 판별하여 알림 표출 X
|
|
|
|
controlDto.setBetteryLevel(dronDto.getBetteryLevel()); |
|
|
|
if (cacheCount == 2) { |
|
|
|
controlDto.setBetteryVoltage(dronDto.getBetteryVoltage()); |
|
|
|
if (v.isControlWarnCd() && v.isControlWarnNotyCd()) { |
|
|
|
controlDto.setDroneStatus(dronDto.getDroneStatus()); |
|
|
|
v.setControlWarnNotyCd(false); |
|
|
|
controlDto.setHeading(dronDto.getHeading()); |
|
|
|
} |
|
|
|
controlDto.setMoveDistance(dronDto.getMoveDistance()); |
|
|
|
} |
|
|
|
controlDto.setMoveDistanceType(dronDto.getMoveDistanceType()); |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
controlDto.setServerRcvDt(dronDto.getServerRcvDt()); |
|
|
|
list.add(v); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 기준 : 관제 시작일이 가장 느린순으로 상단에 올린다.
|
|
|
|
|
|
|
|
list.sort(Comparator.reverseOrder()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return list; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public DroneControlDto dronDtoToControlDtoConvert(DroneDto dronDTO) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ControlStorage controlCache = ControlStorage.getInstance(); |
|
|
|
|
|
|
|
DroneControlDto prevControlDTO = controlCache.get(dronDTO.getObjectId()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DroneControlDto controlDTO = new DroneControlDto(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
controlDTO.setObjectId(dronDTO.getObjectId()); |
|
|
|
|
|
|
|
controlDTO.setControlId(dronDTO.getControlId()); |
|
|
|
|
|
|
|
controlDTO.setControlStartDt(dronDTO.getControlStartDt()); |
|
|
|
|
|
|
|
controlDTO.setObjectTypeCd(dronDTO.getObjectType()); |
|
|
|
|
|
|
|
controlDTO.setLat(dronDTO.getLat()); |
|
|
|
|
|
|
|
controlDTO.setLon(dronDTO.getLon()); |
|
|
|
|
|
|
|
controlDTO.setElevType(dronDTO.getElevType()); |
|
|
|
|
|
|
|
controlDTO.setElev(dronDTO.getElev()); |
|
|
|
|
|
|
|
controlDTO.setSpeedType(dronDTO.getSpeedType()); |
|
|
|
|
|
|
|
controlDTO.setSpeed(dronDTO.getSpeed()); |
|
|
|
|
|
|
|
controlDTO.setBetteryLevel(dronDTO.getBetteryLevel()); |
|
|
|
|
|
|
|
controlDTO.setBetteryVoltage(dronDTO.getBetteryVoltage()); |
|
|
|
|
|
|
|
controlDTO.setDroneStatus(dronDTO.getDroneStatus()); |
|
|
|
|
|
|
|
controlDTO.setHeading(dronDTO.getHeading()); |
|
|
|
|
|
|
|
controlDTO.setMoveDistance(dronDTO.getMoveDistance()); |
|
|
|
|
|
|
|
controlDTO.setMoveDistanceType(dronDTO.getMoveDistanceType()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
controlDTO.setServerRcvDt(dronDTO.getServerRcvDt()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 환경 데이터 필드 추가
|
|
|
|
// 환경 데이터 필드 추가
|
|
|
|
controlDTO.setSensorCo(dronDTO.getSensorCo()); |
|
|
|
controlDto.setSensorCo(dronDto.getSensorCo()); |
|
|
|
controlDTO.setSensorSo2(dronDTO.getSensorSo2()); |
|
|
|
controlDto.setSensorSo2(dronDto.getSensorSo2()); |
|
|
|
controlDTO.setSensorNo2(dronDTO.getSensorNo2()); |
|
|
|
controlDto.setSensorNo2(dronDto.getSensorNo2()); |
|
|
|
controlDTO.setSensorO3(dronDTO.getSensorO3()); |
|
|
|
controlDto.setSensorO3(dronDto.getSensorO3()); |
|
|
|
controlDTO.setSensorDust(dronDTO.getSensorDust()); |
|
|
|
controlDto.setSensorDust(dronDto.getSensorDust()); |
|
|
|
|
|
|
|
|
|
|
|
// 비정상 상황 식별코드 추가
|
|
|
|
// 비정상 상황 식별코드 추가
|
|
|
|
controlDTO.setControlWarnCd(dronDTO.isControlWarnCd()); |
|
|
|
controlDto.setControlWarnCd(dronDto.isControlWarnCd()); |
|
|
|
|
|
|
|
|
|
|
|
if (prevControlDTO == null) { |
|
|
|
if (prevControlDto == null) { |
|
|
|
if (controlDTO.isControlWarnCd()) { |
|
|
|
if (controlDto.isControlWarnCd()) { |
|
|
|
controlDTO.setControlWarnNotyCd(true); // 최초 비정상 발생
|
|
|
|
controlDto.setControlWarnNotyCd(true); // 최초 비정상 발생
|
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if (prevControlDTO.isControlWarnCd() && controlDTO.isControlWarnCd()) { |
|
|
|
if (prevControlDto.isControlWarnCd() && controlDto.isControlWarnCd()) { |
|
|
|
controlDTO.setControlWarnNotyCd(false); // 비정상 -> 비정상
|
|
|
|
controlDto.setControlWarnNotyCd(false); // 비정상 -> 비정상
|
|
|
|
} |
|
|
|
} |
|
|
|
if (prevControlDTO.isControlWarnCd() && !controlDTO.isControlWarnCd()) { |
|
|
|
if (prevControlDto.isControlWarnCd() && !controlDto.isControlWarnCd()) { |
|
|
|
controlDTO.setControlWarnNotyCd(false); // 비정상 -> 정상
|
|
|
|
controlDto.setControlWarnNotyCd(false); // 비정상 -> 정상
|
|
|
|
} |
|
|
|
} |
|
|
|
if (!prevControlDTO.isControlWarnCd() && controlDTO.isControlWarnCd()) { |
|
|
|
if (!prevControlDto.isControlWarnCd() && controlDto.isControlWarnCd()) { |
|
|
|
controlDTO.setControlWarnNotyCd(true); // 정상 -> 비정상상
|
|
|
|
controlDto.setControlWarnNotyCd(true); // 정상 -> 비정상상
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
controlDTO.setControlCacheCount(1); |
|
|
|
controlDto.setControlCacheCount(1); |
|
|
|
controlDTO.setRegDt(dronDTO.getRegDt()); |
|
|
|
controlDto.setRegDt(dronDto.getRegDt()); |
|
|
|
|
|
|
|
|
|
|
|
return controlDTO; |
|
|
|
return controlDto; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|