|  |  | 
 |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
 |  |  | import com.moral.api.service.OrganizationService; | 
 |  |  | import com.moral.api.service.SpecialDeviceService; | 
 |  |  | import com.moral.api.utils.UnitConvertUtils; | 
 |  |  | import com.moral.constant.RedisConstants; | 
 |  |  | import com.moral.util.DateUtils; | 
 |  |  | import com.moral.util.GeodesyUtils; | 
 |  |  | import com.moral.util.MathUtils; | 
 |  |  | import com.moral.util.UnitConvertUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.util.ObjectUtils; | 
 |  |  |  | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.text.SimpleDateFormat; | 
 |  |  | import java.util.*; | 
 |  |  | import java.util.concurrent.ConcurrentHashMap; | 
 |  |  | import java.util.function.Predicate; | 
 |  |  | 
 |  |  |                     dateMap.put("startTime", slotStartDate); | 
 |  |  |                     dateMap.put("endTime", slotEndDate); | 
 |  |  |                     dateMap.put("batch", mKey); | 
 |  |  |                     dateMap.put("total",mValue.size()); | 
 |  |  |                     timeSlots.add(dateMap); | 
 |  |  |                 }); | 
 |  |  |             }); | 
 |  |  | 
 |  |  |         for (HistorySecondUav data : datas) { | 
 |  |  |             String value = data.getValue(); | 
 |  |  |             Map<String, Object> valueMap = JSON.parseObject(value, Map.class); | 
 |  |  |             //判断value里面有没有高度 | 
 |  |  |             if (!valueMap.containsKey("flyhig")|| !valueMap.containsKey("flylat")|| !valueMap.containsKey("flylon")){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             //获取高度 | 
 |  |  |             Double height = Double.valueOf((String) valueMap.get("flyhig")); | 
 |  |  |             if (height < lowestHeight) | 
 |  |  | 
 |  |  |         for (HistorySecondUav data : datas) { | 
 |  |  |             String value = data.getValue(); | 
 |  |  |             Map<String, Object> valueMap = JSON.parseObject(value, Map.class); | 
 |  |  |             //判断value里面有没有高度 | 
 |  |  |             if (!valueMap.containsKey("flyhig")|| !valueMap.containsKey("flylat")|| !valueMap.containsKey("flylon")){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             //获取高度 | 
 |  |  |             Double height = Double.valueOf((String) valueMap.get("flyhig")); | 
 |  |  |             //加上最低点绝对值 | 
 |  |  | 
 |  |  |         } | 
 |  |  |         //筛选无人机数据,保持每个点之间的距离在2米以上 | 
 |  |  |         datas = filterDatas(datas); | 
 |  |  |         if (datas.size()<2){ | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         //转换单位 | 
 |  |  |         unitConvert(datas); | 
 |  |  |         return datas; | 
 |  |  | 
 |  |  |         datas.remove(0); | 
 |  |  |         for (HistorySecondUav data : datas) { | 
 |  |  |             Double distance = getDistance(tempData, data); | 
 |  |  |             if (distance==null){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             if (distance > filterDistance) { | 
 |  |  |                 result.add(data); | 
 |  |  |                 tempData = data; | 
 |  |  | 
 |  |  |         String value2 = uav2.getValue(); | 
 |  |  |         Map<String, Object> value1Map = JSON.parseObject(value1, Map.class); | 
 |  |  |         Map<String, Object> value2Map = JSON.parseObject(value2, Map.class); | 
 |  |  |         //判断这两个数据里面有没有经纬度 | 
 |  |  |         if (!value1Map.containsKey("flylon")||!value1Map.containsKey("flylat")||!value1Map.containsKey("flyhig")|| | 
 |  |  |                 !value2Map.containsKey("flylon")||!value2Map.containsKey("flylat")||!value2Map.containsKey("flyhig")){ | 
 |  |  |             return null; | 
 |  |  |         } | 
 |  |  |         //获取数据1的经纬度和高度 | 
 |  |  |         Double longtitude1 = Double.valueOf((String) value1Map.get("flylon")); | 
 |  |  |         Double latitude1 = Double.valueOf((String) value1Map.get("flylat")); | 
 |  |  | 
 |  |  |             String value = JSON.toJSONString(valueMap); | 
 |  |  |             data.setValue(value); | 
 |  |  |         } | 
 |  |  |         System.out.println(111); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |