jinpengyong
2023-07-28 63bf75616f1bcba51d23932cdcdbe3c3fe5643d8
chore:测试提交
1 files modified
72 ■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/UAVController.java 72 ●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/controller/UAVController.java
@@ -86,15 +86,11 @@
        ArrayList<Double> flyLatList = new ArrayList<>();
        //经度
        ArrayList<Double> flyLonList = new ArrayList<>();
//        HashMap<String, Object> map = new HashMap<>();
//        String mac ="p5dnd7a0243592";
//        String time1 ="2023-05-14 10:40:00";
//        String time2 ="2023-05-14 11:10:00";
//        map.put("mac",mac);
//        map.put("time1",time1);
//        map.put("time2",time2);
//        map.put("height",0.5);
//        List<UAVResultDTO> uavResultDTOS = historySecondUavMapper.reList(map);
//        String mac ="p5dnd7a0243591";
//        String time1 ="2023-07-19 14:14:08";
//        String time2 ="2023-07-19 14:35:29";
//
////        List<UAVResultDTO> uavResultDTOS = historySecondUavMapper.reList(map);
//        QueryWrapper<HistorySecondUav> queryWrapper = new QueryWrapper<>();
//        queryWrapper.select("value");
//        queryWrapper.eq("mac",mac);
@@ -166,15 +162,31 @@
                }
            }
        }
        ArrayList<Integer> list2 = new ArrayList<>();
        ArrayList<UAVResultDTO> uavResultDTOS1 = new ArrayList<>();
        for (UAVGteForDTO uavGteForDTO : list) {
            ArrayList<String> list1 = new ArrayList<>();
            ArrayList<String[]> doubleArrayList = new ArrayList<>();
            doubleArrayList.add(uavGteForDTO.getLeftTop());
            doubleArrayList.add(uavGteForDTO.getLeftBottom());
            doubleArrayList.add(uavGteForDTO.getRightTop());
            doubleArrayList.add(uavGteForDTO.getRightBottom());
//            UAVResultDTO result = getResult(doubleArrayList);
//            uavResultDTOS1.add(result);
            UAVResultDTO result = getResults(doubleArrayList);
            for (int i = 0; i < historySecondUavs.size(); i++) {
                HistorySecondUav historySecondUav = historySecondUavs.get(i);
                String value = historySecondUav.getValue();
                Map map1 = JSON.parseObject(value, Map.class);
                String flylat = map1.get("flylat").toString();
                String flylon = map1.get("flylon").toString();
                //判断点是否在区域内
                boolean flag = isInPolygon(flylon,flylat,doubleArrayList);
                if (flag){
                    list2.add(list2.size()+1);
                    list1.add(historySecondUav.getValue());
                    historySecondUavs.remove(i);
                }
            }
            uavResultDTOS1.add(result);
        }
        if (!ObjectUtils.isEmpty(uavResultDTOS1)){
            return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),uavResultDTOS1);
@@ -405,8 +417,12 @@
                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
        //处理查询业务
        List<UAVQueryTimeSlotDTO> dtos = historySecondUavService.queryTimeSlot(form);
        if (ObjectUtils.isEmpty(dtos)){
            return new ResultMessage(ResponseCodeEnum.TARGET_IS_NULL,null);
        }
        //封装vo层
        UAVQueryTimeSlotVOs vo = UAVQueryTimeSlotVOs.convert(dtos);
        //返回数据
        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),vo);
    }
@@ -504,6 +520,40 @@
//        return uavResultDTO;
    }
    //获取中心点
    public static UAVResultDTO getResults(ArrayList<String[]> doubleArrayList){
        UAVResultDTO uavResultDTO = new UAVResultDTO();
        int total = doubleArrayList.size();
        double X = 0, Y = 0, Z = 0;
        for (int i = 0; i < total; i++) {
            double lat, lon, x, y, z;
            String[] strings = doubleArrayList.get(i);
            lon = Double.parseDouble(strings[0]) * Math.PI / 180;
            lat = Double.parseDouble(strings[1]) * Math.PI / 180;
            x = Math.cos(lat) * Math.cos(lon);
            y = Math.cos(lat) * Math.sin(lon);
            z = Math.sin(lat);
            X += x;
            Y += y;
            Z += z;
        }
        X = X / total;
        Y = Y / total;
        Z = Z / total;
        double Lon = Math.atan2(Y, X);
        double Hyp = Math.sqrt(X * X + Y * Y);
        double Lat = Math.atan2(Z, Hyp);
        double rsLon = Lon * 180 / Math.PI;
        double rsLat = Lat * 180 / Math.PI;
        uavResultDTO.setFlyLon(rsLon);
        uavResultDTO.setFlyLat(rsLat);
//        return rsLon+"_"+rsLat;
        return uavResultDTO;
    }
    /**
     * 将经纬度点集合转换为GeneralPath对象
     *