| | |
| | | package com.ard.route.util; |
| | | |
| | | import com.ard.inspection.domain.ArdPointCloud; |
| | | import com.ard.route.domain.djuav.UavRouteReq; |
| | | import com.ard.route.enums.kml.DroneEnumValueEnums; |
| | | import java.io.*; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 工具类 |
| | | */ |
| | | public class ToolUtils { |
| | | |
| | | public static Boolean isLocal = false; |
| | | |
| | | public static String localFilePath = "KmzFile/kmz/"; |
| | | |
| | | public static String kmzPath = "kmz"; |
| | | |
| | |
| | | |
| | | // 对象序列化为字节数组 |
| | | public static byte[] serialize(Object obj) throws IOException { |
| | | if (obj == null) { |
| | | return null; |
| | | } |
| | | try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); |
| | | ObjectOutputStream oos = new ObjectOutputStream(baos)) { |
| | | oos.writeObject(obj); |
| | |
| | | try (ByteArrayInputStream bais = new ByteArrayInputStream(data); |
| | | ObjectInputStream ois = new ObjectInputStream(bais)) { |
| | | return ois.readObject(); |
| | | } |
| | | } |
| | | |
| | | public static List<ArdPointCloud> deserializeLs(byte[] data) throws IOException, ClassNotFoundException { |
| | | try (ByteArrayInputStream bais = new ByteArrayInputStream(data); |
| | | ObjectInputStream ois = new ObjectInputStream(bais)) { |
| | | return (List<ArdPointCloud>) ois.readObject(); |
| | | } |
| | | } |
| | | |
| | |
| | | return Integer.valueOf(parts[1]); |
| | | } |
| | | |
| | | /** |
| | | * 截取机型子类型 |
| | | * 参数: "0-67-1" 返回 1;格式不足三段时返回 0 |
| | | */ |
| | | public static Integer subStringSubDroneType(String str) { |
| | | String[] parts = str.split("-"); |
| | | return parts.length > 2 ? Integer.valueOf(parts[2]) : 0; |
| | | } |
| | | |
| | | /** |
| | | * 截取字符串 |
| | | * 获取经纬度高度 |
| | | */ |
| | | public static Double getDoublePoint(String str,String type) { |
| | | if (str == null || str.isEmpty()) { |
| | | return null; |
| | | } |
| | | String[] parts = str.split(","); |
| | | if ("lon".equals(type)) { |
| | | return Double.parseDouble(parts[0].trim()); |
| | | } |
| | | if ("lat".equals(type)){ |
| | | return Double.parseDouble(parts[1].trim()); |
| | | } |
| | | if ("alt".equals(type)){ |
| | | return Double.parseDouble(parts[2].trim()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 获取航线类型方法 |
| | | */ |
| | | public static String templateTypeData(UavRouteReq uavRouteReq) { |
| | | if ("waypoint".equals(uavRouteReq.getTemplateType())){ |
| | | return "0"; |
| | | } |
| | | return "1"; |
| | | } |
| | | |
| | | /** |
| | | * 获取无人机类型方法 |
| | | */ |
| | | public static String droneTypeData(UavRouteReq uavRouteReq) { |
| | | // 机场1:M30(67-0) / M30T(67-1) 需要保留 subType,避免航线记录的 aircraft 都变成 0-67-0。 |
| | | // 其它机型保持原有返回值,机场2/3 不受影响。 |
| | | if (Objects.equals(DroneEnumValueEnums.M30_M30T.getValue(), uavRouteReq.getDroneType())) { |
| | | return "0-" + uavRouteReq.getDroneType() + "-" |
| | | + (uavRouteReq.getSubDroneType() == null ? 0 : uavRouteReq.getSubDroneType()); |
| | | } |
| | | return "0-" + uavRouteReq.getDroneType() + "-0"; |
| | | } |
| | | |
| | | } |