|
@@ -24,6 +24,7 @@ import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Random;
|
|
|
|
|
|
@Api(tags = "需求管理")
|
|
|
@RestController
|
|
@@ -107,9 +108,9 @@ public class DemandManagerController {
|
|
|
List<QueryTargetRelationPointAddDTO> req = new ArrayList<>();
|
|
|
|
|
|
|
|
|
- String parentIdOld = targetDemandMapper.getParentIdByParentId(parentId+"_E");
|
|
|
+ String parentIdOld = targetDemandMapper.getParentIdByParentId(parentId + "_E");
|
|
|
|
|
|
- Integer index = parentIdOld==null?1:Integer.parseInt(parentIdOld.split("_")[3].replace("E",""))+1;
|
|
|
+ Integer index = parentIdOld == null ? 1 : Integer.parseInt(parentIdOld.split("_")[3].replace("E", "")) + 1;
|
|
|
|
|
|
for (QueryImportDemandDTO queryImportDemandDTO : list) {
|
|
|
QueryTargetRelationPointAddDTO queryTargetRelationPointAddDTO = new QueryTargetRelationPointAddDTO();
|
|
@@ -140,4 +141,102 @@ public class DemandManagerController {
|
|
|
return Result.success();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @ApiOperation(value = "test")
|
|
|
+ @PostMapping("/test")
|
|
|
+ public Result test(double lat1, double lat2, double lng1, double lng2, int num) {
|
|
|
+ List<QueryTargetRelationPointAddDTO> list = new ArrayList<>();
|
|
|
+ // 中国的大致边界
|
|
|
+ for (int i = 0; i < num; i++) {
|
|
|
+ QueryTargetRelationPointAddDTO dto = new QueryTargetRelationPointAddDTO();
|
|
|
+ //double centerLat = randomDouble(lat1, lat2);
|
|
|
+ //double centerLng = randomDouble(lng1, lng2);
|
|
|
+
|
|
|
+ // 生成一个基准点(不在中国境内)
|
|
|
+ Random random = new Random();
|
|
|
+ double baseLat = getRandomLatitude(random);
|
|
|
+ double baseLon = getRandomLongitude(random);
|
|
|
+
|
|
|
+ // 确保基准点不在中国境内
|
|
|
+ while (isInChina(baseLat, baseLon)) {
|
|
|
+ baseLat = getRandomLatitude(random);
|
|
|
+ baseLon = getRandomLongitude(random);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ List<double[]> points = generateRandomPoints(4, baseLat, baseLon);
|
|
|
+ List<PointDTO> dtoList = new ArrayList<>();
|
|
|
+ for (int i1 = 0; i1 < points.size(); i1++) {
|
|
|
+ double[] point = points.get(i1);
|
|
|
+ PointDTO pointDTO = new PointDTO();
|
|
|
+ pointDTO.setLat(point[0]);
|
|
|
+ pointDTO.setLng(point[1]);
|
|
|
+
|
|
|
+ pointDTO.setSequence(i1 + 1);
|
|
|
+ dtoList.add(pointDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ dto.setPointDTOList(dtoList);
|
|
|
+ list.add(dto);
|
|
|
+
|
|
|
+ int a = 1001 + i;
|
|
|
+
|
|
|
+ dto.setTargetName("0214区域目标" + a);
|
|
|
+ dto.setParentId("250214_XQCH_10002_M" + a);
|
|
|
+ dto.setType(2);
|
|
|
+ }
|
|
|
+ relationTargetService.addTargetRelationPoint(list);
|
|
|
+ return Result.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<double[]> generateRandomPoints(int numPoints, double centerLat, double centerLon) {
|
|
|
+ List<double[]> points = new ArrayList<>();
|
|
|
+
|
|
|
+ double EARTH_RADIUS = 6371;
|
|
|
+
|
|
|
+ // 选择一个不在中国境内的区域,这里选择太平洋中部
|
|
|
+ // 计算 200km 对应的纬度和经度变化量
|
|
|
+ double latChange = (200 / EARTH_RADIUS) * (180 / Math.PI);
|
|
|
+ double lonChange = (200 / (EARTH_RADIUS * Math.cos(Math.toRadians(centerLat)))) * (180 / Math.PI);
|
|
|
+
|
|
|
+ // 计算四个角点的经纬度
|
|
|
+ double northEastLat = centerLat + latChange / 2;
|
|
|
+ double northEastLon = centerLon + lonChange / 2;
|
|
|
+
|
|
|
+ double southEastLat = centerLat - latChange / 2;
|
|
|
+ double southEastLon = centerLon + lonChange / 2;
|
|
|
+
|
|
|
+ double northWestLat = centerLat + latChange / 2;
|
|
|
+ double northWestLon = centerLon - lonChange / 2;
|
|
|
+
|
|
|
+ double southWestLat = centerLat - latChange / 2;
|
|
|
+ double southWestLon = centerLon - lonChange / 2;
|
|
|
+ // 计算四个角点的经纬度
|
|
|
+ points.add(new double[]{northEastLat, northEastLon});
|
|
|
+ points.add(new double[]{southEastLat, southEastLon});
|
|
|
+ points.add(new double[]{southWestLat, southWestLon});
|
|
|
+ points.add(new double[]{northWestLat, northWestLon});
|
|
|
+ return points;
|
|
|
+ }
|
|
|
+
|
|
|
+ private double randomDouble(double min, double max) {
|
|
|
+ Random random = new Random();
|
|
|
+ return min + (max - min) * random.nextDouble();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成随机纬度(-90到90)
|
|
|
+ private double getRandomLatitude(Random random) {
|
|
|
+ return -90.0 + random.nextDouble() * 180.0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成随机经度(-180到180)
|
|
|
+ private double getRandomLongitude(Random random) {
|
|
|
+ return -180.0 + random.nextDouble() * 360.0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断点是否在中国境内
|
|
|
+ private static boolean isInChina(double lat, double lon) {
|
|
|
+ return lat >= 18.0 && lat <= 53.0 &&
|
|
|
+ lon >= 73.0 && lon <= 153.0;
|
|
|
+ }
|
|
|
}
|