Browse Source

[feat]#天奥

chenfangchao 2 years ago
parent
commit
5eb38d18ad

+ 2 - 0
es-track-common/src/main/java/cn/com/taiji/constants/TopicConstants.java

@@ -12,4 +12,6 @@ public class TopicConstants {
     public static final String BEIDOU_TOPIC = "taiji_ax_beidou_dynamic_ship";
 
     public static final String HLX_ONE_LEVEL = "taiji_ax_hlx_zww_dynamic_fusion_ship_gis";
+
+    public static final String TIANAO_TOPIC = "taiji_ax_tianao_radar_fusion";
 }

+ 36 - 0
es-track-common/src/main/java/cn/com/taiji/entity/TianaoNewRadar.java

@@ -0,0 +1,36 @@
+package cn.com.taiji.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author chenfangchao
+ * @title: TianaoRadar
+ * @projectName es-track-analysis
+ * @description: TODO
+ * @date 2023/2/6 5:38 PM
+ */
+@Data
+public class TianaoNewRadar implements Serializable {
+    private static final long serialVersionUID = -8434894021166439952L;
+    private String id;
+    private String shipId;
+    private String fusionTime;
+    private Double latitude;
+    private String shiptracktime;
+    private String shipName;
+    private String fusionBatchNum;
+    private Double altitude;
+    private Double course;
+    private Double longitude;
+    private Integer radarCode;
+    private String receiveTime;
+    private String reliability;
+    private Double speed;
+    private Double targetSize;
+    private String traceState;
+    private String collectTime;
+    private String shipTrack;
+    private Double targetProper;
+}

tianao-analysis/src/main/java/cn/com/taiji/entity/TianaoRadar.java → es-track-common/src/main/java/cn/com/taiji/entity/TianaoRadar.java


+ 45 - 0
es-track-common/src/main/java/cn/com/taiji/utils/LocationUtils.java

@@ -64,6 +64,51 @@ public class LocationUtils {
     }
 
 
+    public static List<Location> generateLogLatTianao(String startTime, String endTime, Double startLog, Double startLat, Double endLog, Double endLat) {
+        List<Location> list = new ArrayList<>();
+        try {
+            final int seconds = 1000;
+            //经纬度差
+            Double difflog = Math.abs(startLog - endLog);
+            Double difflat = Math.abs(startLat - endLat);
+            //相差秒数
+            long diffSeconds = diffSeconds(startTime, endTime);
+            //平均经纬度差
+            Double avgLog = difflog / diffSeconds;
+            Double avgLat = difflat / diffSeconds;
+            //开始时间时间戳
+            long startTimeStamp = dateToStamp(startTime);
+            long endTimeStamp = dateToStamp(endTime);
+            Double resLog = startLog;
+            Double resLat = startLat;
+            long startTimeStampNew = startTimeStamp + seconds;
+            //判断时间大小关系
+            if (startTimeStampNew < endTimeStamp) {
+                for (long i = startTimeStamp + seconds; i < endTimeStamp; i += seconds) {
+                    resLog = avgLog + resLog;
+                    resLat = avgLat + resLat;
+                    double bdLog = doubleDown(resLog);
+                    double bdLat = doubleDown(resLat);
+                    Location location = new Location(bdLog,bdLat);
+                    list.add(location);
+                }
+            } else {
+                for (long i = endTimeStamp + seconds; i < startTimeStampNew; i += seconds) {
+                    resLog = avgLog + resLog;
+                    resLat = avgLat + resLat;
+                    double bdLog = doubleDown(resLog);
+                    double bdLat = doubleDown(resLat);
+                    Location location = new Location(bdLog,bdLat);
+                    list.add(location);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+
+
     public static double doubleDown(Double data) {
         try {
             BigDecimal bd = new BigDecimal(data);

+ 6 - 0
simulation-track/src/main/java/cn/com/taiji/controller/SimulationTrackController.java

@@ -39,4 +39,10 @@ public class SimulationTrackController {
         simulationTrackService.beidouaisTrack(status);
     }
 
+
+    @GetMapping("/tianao")
+    public void tianaoTrack(@RequestParam("status") Integer status){
+        simulationTrackService.tianaoTrack(status);
+    }
+
 }

+ 2 - 0
simulation-track/src/main/java/cn/com/taiji/service/SimulationTrackService.java

@@ -14,4 +14,6 @@ public interface SimulationTrackService {
     void aisTrack(Integer status);
 
     void beidouaisTrack(Integer status);
+
+    void tianaoTrack(Integer status);
 }

+ 111 - 4
simulation-track/src/main/java/cn/com/taiji/service/impl/SimulationTrackImpl.java

@@ -1,9 +1,7 @@
 package cn.com.taiji.service.impl;
 
 import cn.com.taiji.constants.TopicConstants;
-import cn.com.taiji.entity.BeidouShipTrackDTO;
-import cn.com.taiji.entity.HlxOneLevelTrackDTO;
-import cn.com.taiji.entity.Location;
+import cn.com.taiji.entity.*;
 import cn.com.taiji.service.SimulationTrackService;
 import cn.com.taiji.utils.LocationUtils;
 import cn.hutool.core.date.DateUtil;
@@ -35,7 +33,6 @@ public class SimulationTrackImpl implements SimulationTrackService {
 
 
     public static void main(String[] args) {
-        List<Location> list = LocationUtils.generateLogLat("2023-02-03 00:00:00", "2023-02-03 00:00:50", 109.287806, 19.718716, 101.287806, 19.918716);
     }
 
 
@@ -53,6 +50,11 @@ public class SimulationTrackImpl implements SimulationTrackService {
     private Integer beidouhlxOneLevelStatus;
 
 
+    HashSet<Thread> tianaoTherads = new HashSet<>();
+
+    private Integer tianaoStatus;
+
+
     @Override
     public void beidouTrack(Integer status) {
         //开始位置 109.67642971192785,18.18460507789732 三亚位置 西州
@@ -292,4 +294,109 @@ public class SimulationTrackImpl implements SimulationTrackService {
         }
     }
 
+    @Override
+    public void tianaoTrack(Integer status) {
+        tianaoStatus = status;
+        if (0 == tianaoStatus) {
+            Thread thread = new Thread(() -> {
+                while (true) {
+                    if (tianaoStatus == 1) {
+                        Thread.currentThread().interrupt();
+                    } else {
+                        //开始位置1 109.09300314810106,19.671012727042697
+                        //结束位置1 109.09690281197237,19.669125831751618
+                        List<Location> list1 = LocationUtils.generateLogLatTianao("2023-02-19 14:00:00", "2023-02-19 14:30:00", 109.09300314810106, 19.671012727042697, 109.09690281197237, 19.669125831751618);
+                        for (Location location : list1) {
+                            TianaoNewRadar tianaoRadar = new TianaoNewRadar();
+                            tianaoRadar.setId("202302191");
+                            tianaoRadar.setShipId("202302191");
+                            tianaoRadar.setFusionTime(DateUtil.now());
+                            tianaoRadar.setShiptracktime(DateUtil.now());
+                            tianaoRadar.setShipName("天奥模拟船舶1");
+                            tianaoRadar.setFusionBatchNum("202302191");
+                            tianaoRadar.setAltitude(15D);
+                            tianaoRadar.setCourse(180D);
+                            tianaoRadar.setRadarCode(202302191);
+                            tianaoRadar.setReceiveTime(DateUtil.now());
+                            tianaoRadar.setReliability("0.9");
+                            tianaoRadar.setSpeed(18D);
+                            tianaoRadar.setTargetSize(10D);
+                            tianaoRadar.setTraceState("T");
+                            tianaoRadar.setCollectTime(DateUtil.now());
+                            tianaoRadar.setShipTrack("202302191");
+                            tianaoRadar.setTargetProper(1D);
+
+                            tianaoRadar.setLatitude(location.getLat());
+                            tianaoRadar.setLongitude(location.getLog());
+
+                            String data = JSONUtil.toJsonStr(tianaoRadar);
+                            try {
+                                Thread.sleep(2500);
+                                kafkaTemplate.send(TopicConstants.TIANAO_TOPIC, data);
+                                log.info(DateUtil.now() + "模拟天奥船舶:天奥模拟船舶1,FusionBatchNum为202302191完成");
+                            } catch (InterruptedException e) {
+                                Thread.currentThread().interrupt();
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+                }
+            });
+            Thread thread1 = new Thread(() -> {
+                while (true) {
+                    if (tianaoStatus == 1) {
+                        Thread.currentThread().interrupt();
+                    } else {
+                        //开始位置2 109.0929925146248,19.67097869991864
+                        //结束位置2 109.0968340253979,19.66891947202822
+                        List<Location> list2 = LocationUtils.generateLogLatTianao("2023-02-19 14:00:00", "2023-02-19 14:30:00", 109.0929925146248, 19.67097869991864, 109.0968340253979, 19.66891947202822);
+                        for (Location location : list2) {
+                            TianaoNewRadar tianaoRadar = new TianaoNewRadar();
+                            tianaoRadar.setId("202302192");
+                            tianaoRadar.setShipId("202302192");
+                            tianaoRadar.setAltitude(15D);
+                            tianaoRadar.setFusionTime(DateUtil.now());
+                            tianaoRadar.setShiptracktime(DateUtil.now());
+                            tianaoRadar.setShipName("天奥模拟船舶2");
+                            tianaoRadar.setFusionBatchNum("202302192");
+                            tianaoRadar.setCourse(180D);
+                            tianaoRadar.setRadarCode(202302192);
+                            tianaoRadar.setReceiveTime(DateUtil.now());
+                            tianaoRadar.setReliability("0.9");
+                            tianaoRadar.setSpeed(18D);
+                            tianaoRadar.setTargetSize(10D);
+                            tianaoRadar.setTraceState("T");
+                            tianaoRadar.setCollectTime(DateUtil.now());
+                            tianaoRadar.setShipTrack("202302192");
+                            tianaoRadar.setTargetProper(0.9D);
+
+                            tianaoRadar.setLatitude(location.getLat());
+                            tianaoRadar.setLongitude(location.getLog());
+
+                            String data = JSONUtil.toJsonStr(tianaoRadar);
+                            try {
+                                Thread.sleep(2500);
+                                kafkaTemplate.send(TopicConstants.TIANAO_TOPIC, data);
+                                log.info(DateUtil.now() + "模拟天奥船舶:天奥模拟船舶2,FusionBatchNum为202302192完成");
+                            } catch (InterruptedException e) {
+                                Thread.currentThread().interrupt();
+                                e.printStackTrace();
+                            }
+                        }
+                    }
+                }
+            });
+            thread.start();
+            thread1.start();
+            tianaoTherads.add(thread);
+            tianaoTherads.add(thread1);
+        }
+        if (1 == tianaoStatus) {
+            for (Thread item : tianaoTherads) {
+                item.interrupt();
+            }
+        }
+
+    }
+
 }