diff --git a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/pom.xml b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/pom.xml
index 28b9e15..f19a4d6 100644
--- a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/pom.xml
+++ b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/pom.xml
@@ -11,6 +11,7 @@
skyeye-common-extend
扩展工具包
+ 1.0.0
diff --git a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/FileUtil.java b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/FileUtil.java
index 1ea8f66..4be84c1 100644
--- a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/FileUtil.java
+++ b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/FileUtil.java
@@ -4,6 +4,7 @@ import com.zhangy.skyeye.common.extend.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Files;
@@ -15,6 +16,29 @@ import java.nio.file.StandardCopyOption;
@Slf4j
public class FileUtil {
+ public static byte[] read(String filePath) {
+ return read(new File(filePath));
+ }
+
+ /**
+ * 读取文件
+ *
+ * @param file
+ * @return 文件数据
+ */
+ public static byte[] read(File file) {
+ if (!file.exists()) {
+ return null;
+ }
+ try (FileInputStream fis = new FileInputStream(file)) {
+ byte[] data = new byte[fis.available()];
+ fis.read(data);
+ return data;
+ } catch (IOException ex) {
+ throw ServiceException.errorLog("读取文件[" + file.getName() + "]错误!" + ex.getMessage());
+ }
+ }
+
/**
* 复制文件,如果目标文件已存在则会抛异常
* @param src
diff --git a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/MapUtil.java b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/MapUtil.java
index 66f3d1b..4a8aba4 100644
--- a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/MapUtil.java
+++ b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/MapUtil.java
@@ -112,7 +112,7 @@ public class MapUtil {
* @param value
* @param
*/
- public static void putList(Map> map, String key, T value) {
+ public static void putList(Map> map, K key, T value) {
List list;
if (map.containsKey(key)) {
list = map.get(key);
diff --git a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/NumberUtil.java b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/NumberUtil.java
index f1102b7..df5ea50 100644
--- a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/NumberUtil.java
+++ b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/NumberUtil.java
@@ -1,10 +1,20 @@
package com.zhangy.skyeye.common.extend.util;
+import java.math.BigDecimal;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
public class NumberUtil {
+ /**
+ * 相加
+ */
+ public static double add(double v1, double v2) {
+ BigDecimal b1 = new BigDecimal(v1);
+ BigDecimal b2 = new BigDecimal(v2);
+ return b1.add(b2).doubleValue();
+ }
+
/**
* 判断包装类型是否非空且有效
*
diff --git a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/ObjectUtil.java b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/ObjectUtil.java
index 9178df3..b924cd2 100644
--- a/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/ObjectUtil.java
+++ b/backend/Skyeye-sys-dev/skyeye-common/skyeye-common-extend/src/main/java/com/zhangy/skyeye/common/extend/util/ObjectUtil.java
@@ -65,7 +65,7 @@ public class ObjectUtil {
* @param value
* @param
*/
- public static void put(Map> map, String key, T value) {
+ public static void put(Map> map, K key, T value){
MapUtil.putList(map, key, value);
}
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/pom.xml b/backend/Skyeye-sys-dev/skyeye-service-manager/pom.xml
index ece1050..57e0701 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/pom.xml
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/pom.xml
@@ -16,7 +16,7 @@
com.zhangy
skyeye-common-extend
- 1.0.0.RELEASE
+ 1.0.0
@@ -130,6 +130,16 @@
quartz-jobs
2.3.2
-->
+
+ net.java.dev.jna
+ jna
+ 5.13.0
+
+
+ net.java.dev.jna
+ jna-platform
+ 5.13.0
+
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmJobController.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmJobController.java
index 12c38c4..de5b623 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmJobController.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/controller/JmJobController.java
@@ -5,6 +5,7 @@ import com.zhangy.skyeye.common.extend.anno.IgnoreAuth;
import com.zhangy.skyeye.common.extend.enums.EnumUtil;
import com.zhangy.skyeye.common.extend.exception.ServiceException;
import com.zhangy.skyeye.common.extend.util.DateUtil;
+import com.zhangy.skyeye.common.pojo.result.Result;
import com.zhangy.skyeye.jm.consts.JmJobModeEnum;
import com.zhangy.skyeye.jm.dto.JmJobDTO;
import com.zhangy.skyeye.jm.dto.JmJobPageDTO;
@@ -62,6 +63,15 @@ public class JmJobController {
return jobService.selectDetail(id);
}
+ /**
+ * 查询前端详情
+ */
+ @GetMapping("/info")
+ public Object selectInfo(@RequestParam Long jobId) {
+ JmJobDTO job = jobService.selectInfo(jobId);
+ return Result.successData(job == null ? null : job.getInfo1());
+ }
+
/**
* 新增
*/
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/dto/JmAirlinePlanParam.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/dto/JmAirlinePlanParam.java
new file mode 100644
index 0000000..049ef0b
--- /dev/null
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/dto/JmAirlinePlanParam.java
@@ -0,0 +1,45 @@
+package com.zhangy.skyeye.jm.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.zhangy.skyeye.jm.entity.JmJob;
+import com.zhangy.skyeye.jm.entity.JmJobPoint;
+import com.zhangy.skyeye.jm.entity.JmJobUav;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 任务 dto,用于保存接口参数 和 详情查询返回值
+ */
+@Data
+public class JmAirlinePlanParam implements Serializable {
+
+ /**
+ * 任务目标 1 点,2 区域
+ */
+ private Integer targetType = 2;
+
+ /**
+ * 成像模式
+ * @see com.zhangy.skyeye.sar.consts.SarImageModeEnum
+ */
+ @NotNull(message = "成像模式不能为空")
+ private Byte imageMode;
+
+ /** 任务点 */
+ @Valid
+ @NotEmpty(message = "任务点不能为空")
+ private List> pointList;
+
+ /** 无人机 */
+ @Valid
+ @NotEmpty(message = "无人机不能为空")
+ private List uavList;
+
+}
+
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/dto/JmAirlineStatusDTO.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/dto/JmAirlineStatusDTO.java
index 0888857..418bc45 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/dto/JmAirlineStatusDTO.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/dto/JmAirlineStatusDTO.java
@@ -49,4 +49,7 @@ public class JmAirlineStatusDTO {
/** 载荷ID */
private Long payloadId;
+
+ // 前一张右上、右下
+ private Double[] beforeRight;
}
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmImage.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmImage.java
index c75692c..853368f 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmImage.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmImage.java
@@ -33,15 +33,15 @@ public class JmImage extends GeoTiffDTO {
/** 影像名称,默认文件名 */
private String name;
- /** 图像帧序号 */
- private Integer frameNo;
-
/** 文件ID */
private Long fileId;
/** 归一化前最大值 */
private Float max;
+ /** 航线的图片序号 */
+ private Integer imageNo;
+
/*
非数据库字段
*/
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJob.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJob.java
index 2fee533..b73baa7 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJob.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJob.java
@@ -27,15 +27,29 @@ public class JmJob implements Serializable {
/** 定时任务表达式 */
private String cronExpression;
-
- /** 航线模式;1 点模式,2 区域规划模式,3 航线创建 */
+
+ /**
+ * 航线模式
+ * @see com.zhangy.skyeye.jm.consts.JmJobModeEnum
+ */
@NotNull(message = "航线模式不能为空")
private Integer mode;
+ @NotNull(message = "成像模式不能为空")
+ private Byte imageMode;
+
+ /**
+ * 任务目标 1 点,2 区域
+ */
+ private Integer targetType = 2;
+
/** 创建时间 */
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
+ /** 前端内容 */
+ private String info1;
+
/*======================
任务执行字段
=====================*/
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPayload.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPayload.java
index 8c7fe37..1f2e26f 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPayload.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPayload.java
@@ -45,8 +45,8 @@ public class JmJobPayload implements Serializable {
private Byte direction;
/** 分辨率 */
- @NotNull(message = "分辨率不能为空")
- private Float resolution;
+ //@NotNull(message = "分辨率不能为空")
+ private Float resolution = 0.3f;
/** 极化方式 */
//@NotNull(message = "极化方式不能为空")
@@ -59,8 +59,7 @@ public class JmJobPayload implements Serializable {
private byte moto;
/** 成像亮度倍数,用于地面端接收图片后的调整 */
- @NotNull(message = "图像亮度不能为空")
- private Integer imageLight;
+ private Integer imageLight = 1;
/** 雷达朝向与飞机朝向夹角 -180~180 */
private Integer headingDiff = 0;
@@ -89,7 +88,7 @@ public class JmJobPayload implements Serializable {
private String ip;
/** 载荷类型 */
- private String type;
+ private String type = "SAR";
/** sar低精度图像 */
private List imageList;
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPoint.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPoint.java
index 76c891c..a31b9c7 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPoint.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/entity/JmJobPoint.java
@@ -1,10 +1,12 @@
package com.zhangy.skyeye.jm.entity;
import lombok.Data;
+import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
+@NoArgsConstructor
@Data
public class JmJobPoint implements Serializable {
@@ -27,4 +29,9 @@ public class JmJobPoint implements Serializable {
/** 纬度 */
@NotNull(message = "任务点纬度不能为空")
private Double latitude;
+
+ public JmJobPoint (Double longitude, Double latitude) {
+ this.longitude = longitude;
+ this.latitude = latitude;
+ }
}
\ No newline at end of file
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmAirlineExecMapper.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmAirlineExecMapper.java
index 6733321..49f73e2 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmAirlineExecMapper.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmAirlineExecMapper.java
@@ -66,7 +66,7 @@ public interface JmAirlineExecMapper {
/**
* 按任务删除
*
- * @param jobId 任务ID,必需
+ * @param jobId 任务配置ID,必需
*/
int deleteByJob(Long... jobId);
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmJobMapper.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmJobMapper.java
index d52fd05..392e3fc 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmJobMapper.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/mapper/JmJobMapper.java
@@ -2,6 +2,7 @@ package com.zhangy.skyeye.jm.mapper;
import com.zhangy.skyeye.jm.dto.JmJobDTO;
import com.zhangy.skyeye.jm.dto.JmJobQueryDTO;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhangy.skyeye.common.extend.dto.PageDTO;
@@ -26,7 +27,12 @@ public interface JmJobMapper {
* 按主键查询
*/
List selectById(Long... id);
-
+
+ /**
+ * 查询任务的前端结构
+ */
+ JmJobDTO selectInfo(@Param("jobId") Long jobId);
+
/**
* 新增
*/
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmAirlineExecService.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmAirlineExecService.java
index 08ad396..dad4d4a 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmAirlineExecService.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmAirlineExecService.java
@@ -50,9 +50,9 @@ public interface JmAirlineExecService {
void updateNotNull(JmAirlineExec e);
/**
- * 按任务执行删除
+ * 按任务删除
*
- * @param jobExecId 任务执行ID
+ * @param jobId 任务配置ID
*/
- void deleteByJobExec(Long... jobExecId);
+ void deleteByJob(Long... jobId);
}
\ No newline at end of file
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmAirlinePlanService.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmAirlinePlanService.java
new file mode 100644
index 0000000..9a3a14a
--- /dev/null
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmAirlinePlanService.java
@@ -0,0 +1,29 @@
+package com.zhangy.skyeye.jm.service;
+
+import com.zhangy.skyeye.jm.consts.JmJobModeEnum;
+import com.zhangy.skyeye.jm.dto.JmJobDTO;
+import com.zhangy.skyeye.jm.entity.JmAirline;
+import com.zhangy.skyeye.jm.entity.JmJobPoint;
+import com.zhangy.skyeye.jm.entity.JmJobUav;
+import com.zhangy.skyeye.sar.consts.SarImageModeEnum;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 航线规划
+ */
+public interface JmAirlinePlanService {
+
+ /**
+ * 规划航线
+ *
+ * @param jobMode 任务模式
+ * @param imageMode 成像模式
+ * @param uavList 无人机
+ * @param pointList 任务区域
+ * @return K - uavId,V - airlines
+ */
+ Map> plan(JmJobModeEnum jobMode, SarImageModeEnum imageMode, Integer targetType,
+ List uavList, List> pointList);
+}
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmImageService.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmImageService.java
index 9128f10..8cace46 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmImageService.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmImageService.java
@@ -39,7 +39,7 @@ public interface JmImageService {
/**
* 按航线查询低精度图像
*/
- JmImage selectLowByAirline(Long airlineExecId);
+ List selectLowByAirline(Long airlineExecId);
/**
* 按主键查询详情
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmJobService.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmJobService.java
index af7ec62..6c9e2e4 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmJobService.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/JmJobService.java
@@ -27,6 +27,8 @@ public interface JmJobService {
*/
List selectById(Long... id);
+ JmJobDTO selectInfo(Long jobId);
+
/**
* 查询详情
*/
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmAirlineExecServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmAirlineExecServiceImpl.java
index 626b719..abfb0ef 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmAirlineExecServiceImpl.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmAirlineExecServiceImpl.java
@@ -93,9 +93,9 @@ public class JmAirlineExecServiceImpl implements JmAirlineExecService {
@Transactional
@Override
- public void deleteByJobExec(Long... jobExecId) {
- if (ObjectUtil.isNotEmpty(jobExecId)) {
- airlineExecMapper.deleteByJob(jobExecId);
+ public void deleteByJob(Long... jobId) {
+ if (ObjectUtil.isNotEmpty(jobId)) {
+ airlineExecMapper.deleteByJob(jobId);
}
}
}
\ No newline at end of file
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmAirlinePlanServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmAirlinePlanServiceImpl.java
new file mode 100644
index 0000000..2ba8fce
--- /dev/null
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmAirlinePlanServiceImpl.java
@@ -0,0 +1,215 @@
+package com.zhangy.skyeye.jm.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.zhangy.skyeye.common.extend.exception.ServiceException;
+import com.zhangy.skyeye.common.extend.util.ObjectUtil;
+import com.zhangy.skyeye.device.consts.PayloadTypeEnum;
+import com.zhangy.skyeye.device.entity.SkyeyePayload;
+import com.zhangy.skyeye.device.service.IPayloadService;
+import com.zhangy.skyeye.jm.consts.JmJobModeEnum;
+import com.zhangy.skyeye.jm.dto.JmSarStatusDTO;
+import com.zhangy.skyeye.jm.entity.JmAirline;
+import com.zhangy.skyeye.jm.entity.JmJobPayload;
+import com.zhangy.skyeye.jm.entity.JmJobPoint;
+import com.zhangy.skyeye.jm.entity.JmJobUav;
+import com.zhangy.skyeye.jm.service.JmAirlinePlanService;
+import com.zhangy.skyeye.py.dto.*;
+import com.zhangy.skyeye.py.service.IPyAirlineService;
+import com.zhangy.skyeye.sar.consts.SarImageModeEnum;
+import com.zhangy.skyeye.sar.dto.SarFlightPlanDTO;
+import com.zhangy.skyeye.sar.util.SpotlightPlanner;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * 航线规划
+ */
+@Service
+public class JmAirlinePlanServiceImpl implements JmAirlinePlanService {
+
+ @Autowired
+ private IPayloadService payloadService;
+
+ @Autowired
+ private IPyAirlineService ktkxService;
+
+ @Override
+ public Map> plan(JmJobModeEnum jobMode, SarImageModeEnum imageMode, Integer targetType,
+ List uavList, List> pointList) {
+ checkParam(jobMode, imageMode, targetType);
+ // 非航线模式需要调算法生成航线,需要从缓存取sar坐标
+ Map> airlineGroup = null;
+ // 1)聚束
+ if (imageMode == SarImageModeEnum.JS) {
+ return planJs(uavList.get(0), pointList);
+ } else if (jobMode == JmJobModeEnum.QUICK) { // 2)快速
+ return ktkxService.getAirline(toKtkxParam(pointList, uavList));
+ }
+ // 3)航线创建
+ return null;
+ }
+
+ /**
+ * 校验参数
+ *
+ * @param jobMode
+ * @param imageMode
+ * @param uavList
+ * @param pointList
+ */
+ private void checkParam(JmJobModeEnum jobMode, SarImageModeEnum imageMode, Integer targetType) {
+ if (imageMode == SarImageModeEnum.JS) {
+ if (jobMode == JmJobModeEnum.CREATE) {
+ throw ServiceException.noLog("航线创建模式不支持聚束模式");
+ }
+ if (targetType == 2) {
+ throw ServiceException.noLog("聚束模式只能使用点模式");
+ }
+ }
+ }
+
+ /**
+ * 聚束模式
+ *
+ * @param uav 无人机
+ * @param points 目标点
+ * @return 航线
+ */
+ public Map> planJs(JmJobUav uav, List> points) {
+ Map> result = new HashMap<>();
+ // 补充载荷信息
+ JmJobPayload sar = uav.getSar0();
+ SkyeyePayload payload = payloadService.getOne(sar.getPayloadId());
+ sar.setIp(payload.getIp());
+ // 取起飞点位置
+ JmSarStatusDTO statusDTO = payloadService.getLastStatus(sar.getIp());
+ double startLon = statusDTO.getLongitude();
+ double startLat = statusDTO.getLatitude();
+ uav.setStartLon(startLon);
+ uav.setStartLat(startLat);
+ JmJobPoint home = new JmJobPoint(startLon, startLat);
+ for (List targets: points) {
+ JmJobPoint target = targets.get(0);
+ if (target == null) {
+ continue;
+ }
+ JmAirline airline = planJs(uav, home, target);
+ ObjectUtil.put(result, uav.getUavId(), airline);
+ // 初始化起点
+ home.setLongitude(airline.getEndLon());
+ home.setLatitude(airline.getEndLat());
+ }
+ return result;
+ }
+
+ /**
+ * 聚束模式
+ *
+ * @param uav 无人机
+ * @param home 起飞点
+ * @param point 目标点
+ * @return 航线
+ */
+ public JmAirline planJs(JmJobUav uav, JmJobPoint home, JmJobPoint target) {
+ JmJobPayload sar = uav.getSar0();
+
+ SarFlightPlanDTO plan = SpotlightPlanner.optimizeRoute(target.getLongitude(), target.getLatitude(),
+ home.getLongitude(), home.getLatitude(),
+ uav.getHeight(), sar.getTheta(), sar.getDirection());
+ JmAirline airline = new JmAirline();
+ airline.setFlightType((byte)0);
+ double height = plan.getHeight();
+ airline.setFlightStartLon(plan.getPowerOnLon());
+ airline.setFlightStartLat(plan.getPowerOnLat());
+ airline.setFlightStartHeight(height); // 相对起飞点高度
+
+ airline.setFlightEndLon(plan.getPowerOffLon());
+ airline.setFlightEndLat(plan.getPowerOffLat());
+ airline.setFlightEndHeight(height); // 相对起飞点高度
+
+ airline.setGroundStartLon(target.getLongitude());
+ airline.setGroundStartLat(target.getLatitude());
+ airline.setGroundStartHeight(0d); // 相对起飞点高度
+
+ airline.setTargetCentroidLon(target.getLongitude());
+ airline.setTargetCentroidLat(target.getLatitude());
+ airline.setTargetCentroidHeight(0d); // 相对起飞点高度
+
+ airline.setTargetWidth(sar.getWidth());
+ airline.setTargetLength(sar.getLength());
+ double sarHeadingAngle = plan.getFlightHeadingAngle() - sar.getDirection() * 90; // 轴向角
+ airline.setTargetHeading(sarHeadingAngle);
+
+ airline.setStartLon(plan.getStartLon());
+ airline.setStartLat(plan.getStartLat());
+ airline.setStartHeight(height); // 相对起飞点高度
+
+ airline.setEndLon(plan.getEndLon());
+ airline.setEndLat(plan.getEndLat());
+ airline.setEndHeight(height); // 相对起飞点高度
+
+ airline.setSpeed(uav.getSpeed());
+ airline.setHeight(height);
+ airline.setDirection(sar.getDirection());
+ airline.setSquintAngle(0d);
+ airline.setGrazingAngle(90 - sar.getTheta());
+ return airline;
+ }
+
+ /**
+ * 转为航线算法参数
+ */
+ private PyAirlineParamDTO toKtkxParam(List> pointList, List uavList) {
+ List pyPointList = new ArrayList<>();
+ List pyUavList = new ArrayList<>();
+ for (int i = 0; i < uavList.size(); i++) {
+ JmJobUav u = uavList.get(i);
+ // 区域
+ List points = pointList.get(i);
+ double[][] coords = points.stream()
+ .map(point -> new double[] { point.getLongitude(), point.getLatitude() })
+ .toArray(double[][]::new);
+ pyPointList.add(new PyAirlineTargetDTO(i, coords));
+
+ // 载荷
+ JmJobPayload sar = u.getPayloadList()
+ .stream()
+ .filter(jp -> {
+ Long payloadId = jp.getPayloadId();
+ SkyeyePayload p = payloadService.getOne(payloadId);
+ if (p != null && p.getType().equals(PayloadTypeEnum.SAR.getCode())) {
+ jp.setIp(p.getIp());
+ return true;
+ }
+ return false;
+ })
+ .findFirst()
+ .orElseThrow( () -> ServiceException.errorLog("存在无人机缺少sar类型载荷"));
+
+ PyAirlineUavDTO uav = BeanUtil.copyProperties(u, PyAirlineUavDTO.class);
+ JmSarStatusDTO statusDTO = payloadService.getLastStatus(sar.getIp());
+ double startLon = statusDTO.getLongitude();
+ double startLat = statusDTO.getLatitude();
+ if (u.getStartAltitude() == null) {
+ u.setStartAltitude((double) statusDTO.getAltitude());
+ }
+ uav.setId(u.getUavId());
+ uav.setStartCoord(new double[] {startLon, startLat});
+ uav.setEndCoord(new double[] {startLon, startLat});
+ uav.setConstraint(u.getHeight());
+ PyAirlinePayloadDTO payload = BeanUtil.copyProperties(sar, PyAirlinePayloadDTO.class);
+ payload.setType(PayloadTypeEnum.SAR.getCode());
+ uav.setPayload(payload);
+ pyUavList.add(uav);
+ }
+ PyAirlineUavDTO[] uavs = pyUavList.toArray(new PyAirlineUavDTO[pyUavList.size()]);
+ PyAirlineTargetDTO[] targets = pyPointList.toArray(new PyAirlineTargetDTO[pyPointList.size()]);
+
+ PyAirlineParamDTO param = new PyAirlineParamDTO();
+ param.setTargets(targets);
+ param.setUavs(uavs);
+ return param;
+ }
+}
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmImageServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmImageServiceImpl.java
index 9253093..66bef57 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmImageServiceImpl.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmImageServiceImpl.java
@@ -45,8 +45,8 @@ public class JmImageServiceImpl implements JmImageService {
@Autowired
private JmImageItemService imageItemService;
-// @Autowired
-// private IPyImageService detectService;
+ @Autowired
+ private IPyImageService detectService;
@Autowired
private JmJobPayloadService jobPayloadService;
@@ -113,9 +113,9 @@ public class JmImageServiceImpl implements JmImageService {
}
@Override
- public JmImage selectLowByAirline(Long airlineExecId) {
+ public List selectLowByAirline(Long airlineExecId) {
List list = imageMapper.selectByAirline(FileTypeEnum.SAR_IMAGE_LOW.getValue(), airlineExecId);
- return ObjectUtil.isEmpty(list) ? null : list.get(0);
+ return list;
}
@Override
@@ -293,13 +293,13 @@ public class JmImageServiceImpl implements JmImageService {
// 1.删除已有识别结果
imageItemService.deleteByImage(id);
List list = imageMapper.selectById(id);
-// for (JmImage e : list) {
-// PyImageDTO[] voArr = detectService.getImageIdentify(e.toDetectParamVo());
-// if (ObjectUtil.isNotEmpty(voArr)) {
-// List itemList = imageItemService.insert(e, voArr);
-// e.setItemList(itemList);
-// }
-// }
+ for (JmImage e : list) {
+ PyImageDTO[] voArr = detectService.getImageIdentify(e.toDetectParamVo());
+ if (ObjectUtil.isNotEmpty(voArr)) {
+ List itemList = imageItemService.insert(e, voArr);
+ e.setItemList(itemList);
+ }
+ }
return list;
}
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobExecServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobExecServiceImpl.java
index 5a223df..9eeff3b 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobExecServiceImpl.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobExecServiceImpl.java
@@ -65,6 +65,9 @@ public class JmJobExecServiceImpl implements JmJobExecService {
@Override
public List selectByConf(Long... confId) {
+ if (ObjectUtil.isEmpty(confId)) {
+ return null;
+ }
return jobExecMapper.selectByConf(confId);
}
@@ -181,14 +184,7 @@ public class JmJobExecServiceImpl implements JmJobExecService {
@Override
public void deleteByJobConf(Long... jobConfId) {
Long[] jobExecIds = jobExecMapper.selectByConf(jobConfId).stream().map(e -> e.getId()).toArray(Long[]::new);
- jmAirlineExecService.deleteByJobExec(jobExecIds);
+ jmAirlineExecService.deleteByJob(jobConfId);
jobExecMapper.deleteByConf(jobConfId);
- for (Long id : jobExecIds) { // 删除非文件管理的文件
- FileUtil.delete(
- fileTypeService.getDirectoryPath(FileTypeEnum.UAV_KMZ, id)[0],
- fileTypeService.getDirectoryPath(FileTypeEnum.UAV_TXT, id)[0],
- fileTypeService.getDirectoryPath(FileTypeEnum.SAR_WAVE, id)[0]
- );
- }
}
}
\ No newline at end of file
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java
index 2059b82..594fd46 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobServiceImpl.java
@@ -26,17 +26,16 @@ import com.zhangy.skyeye.publics.consts.FileTypeEnum;
import com.zhangy.skyeye.publics.consts.UavAirlineUploadEnum;
import com.zhangy.skyeye.publics.service.SysFileTypeService;
import com.zhangy.skyeye.publics.utils.CoordUtil;
-import com.zhangy.skyeye.py.dto.PyAirlineParamDTO;
-import com.zhangy.skyeye.py.dto.PyAirlinePayloadDTO;
-import com.zhangy.skyeye.py.dto.PyAirlineTargetDTO;
-import com.zhangy.skyeye.py.dto.PyAirlineUavDTO;
import com.zhangy.skyeye.py.service.IPyAirlineService;
import com.zhangy.skyeye.quartz.service.QuartzService;
+import com.zhangy.skyeye.sar.consts.SarImageModeEnum;
import com.zhangy.skyeye.sar.dto.SarControlParamDTO;
import com.zhangy.skyeye.sar.enums.SarControlTypeEnum;
import com.zhangy.skyeye.sar.enums.SarDirectionEnum;
import com.zhangy.skyeye.sar.enums.SarIMUStatusEnum;
import com.zhangy.skyeye.sar.service.ISarControlService;
+import com.zhangy.skyeye.sar.service.ISarMtiPointService;
+import com.zhangy.skyeye.sar.service.ISarMtiTrailService;
//import com.zhangy.skyeye.smp.dto.SmpSubscriptResDTO;
//import com.zhangy.skyeye.smp.dto.SmpWayPointDTO;
//import com.zhangy.skyeye.smp.service.ISmpSubscriptService;
@@ -53,7 +52,6 @@ import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
-import java.util.stream.IntStream;
@Slf4j
@Service
@@ -77,10 +75,12 @@ public class JmJobServiceImpl implements JmJobService {
// @Autowired
// private ISmpSubscriptService smpSubscriptService;
- @Autowired
- private ISarControlService controlInfoService;
@Autowired
private ISarControlService sarControlService;
+ @Autowired
+ private ISarMtiPointService sarMtiPointService;
+ @Autowired
+ private ISarMtiTrailService sarMtiTrailService;
@Autowired
private IPayloadService payloadService;
@@ -95,6 +95,9 @@ public class JmJobServiceImpl implements JmJobService {
@Autowired
private QuartzService quartzService;
+
+ @Autowired
+ private JmAirlinePlanService jmAirlinePlanService;
@Override
public IPage selectPage(JmJobPageDTO param) {
@@ -136,6 +139,11 @@ public class JmJobServiceImpl implements JmJobService {
return jobMapper.selectById(id);
}
+ @Override
+ public JmJobDTO selectInfo(Long jobId) {
+ return jobMapper.selectInfo(jobId);
+ }
+
@Override
public JmJobDTO selectDetail(Long id) {
Map>> pointGroup = jobPointService.selectMapByJob(id);
@@ -148,15 +156,11 @@ public class JmJobServiceImpl implements JmJobService {
@Transactional
@Override
- public JmJobDTO save(JmJobModeEnum mode, JmJobDTO e) {
- // 查询本次所有载荷信息
- Long[] payloadIds = e.getUavList()
- .stream()
- .flatMap(uav -> uav.getPayloadList().stream().map(JmJobPayload::getPayloadId))
- .toArray(Long[]::new);
+ public JmJobDTO save(JmJobModeEnum jobMode, JmJobDTO e) {
+ SarImageModeEnum imageMode = EnumUtil.parseEx(SarImageModeEnum.class, e.getImageMode());
// 非航线模式需要调算法生成航线,需要从缓存取sar坐标
- Map> airlineGroup = mode == JmJobModeEnum.CREATE
- ? null : ktkxService.getAirline(toKtkxParam(e));
+ Map> airlineGroup = jmAirlinePlanService.plan(jobMode, imageMode, e.getTargetType(),
+ e.getUavList(), e.getPointList());
// 校验并加载数据
checkAndSetUav(e.getUavList(), airlineGroup);
return insert(e);
@@ -190,66 +194,6 @@ public class JmJobServiceImpl implements JmJobService {
return e;
}
- /**
- * 转为航线算法参数
- */
- private PyAirlineParamDTO toKtkxParam(JmJobDTO e) {
- List> pointList = e.getPointList();
- // 任务区域
- PyAirlineTargetDTO[] targets = IntStream.range(0, pointList.size())
- .mapToObj(i -> {
- List list = pointList.get(i);
- double[][] coords = list.stream()
- .map(point -> new double[] { point.getLongitude(), point.getLatitude() })
- .toArray(double[][]::new);
- return new PyAirlineTargetDTO(i, coords);
- })
- .toArray(PyAirlineTargetDTO[]::new);
- // 无人机
- PyAirlineUavDTO[] uavs = e.getUavList().stream()
- .map(u -> {
- // 载荷
- JmJobPayload sar = u.getPayloadList()
- .stream()
- .filter(jp -> {
- Long payloadId = jp.getPayloadId();
- SkyeyePayload p = payloadService.getOne(payloadId);
- if (p != null && p.getType().equals(PayloadTypeEnum.SAR.getCode())) {
- jp.setIp(p.getIp());
- return true;
- }
- return false;
- })
- .findFirst()
- .orElseThrow( () -> ServiceException.errorLog("存在无人机缺少sar类型载荷"));
- PyAirlineUavDTO uav = BeanUtil.copyProperties(u, PyAirlineUavDTO.class);
- JmSarStatusDTO statusDTO = payloadService.getLastStatus(sar.getIp());
- double startLon = statusDTO.getLongitude();
- double startLat = statusDTO.getLatitude();
- u.setStartLon(startLon);
- u.setStartLat(startLat);
- u.setEndLon(startLon);
- u.setEndLat(startLat);
- if (u.getStartAltitude() == null) {
- u.setStartAltitude((double) statusDTO.getAltitude());
- }
- uav.setId(u.getUavId());
- uav.setStartCoord(new double[] {startLon, startLat});
- uav.setEndCoord(new double[] {startLon, startLat});
- uav.setConstraint(u.getHeight());
- PyAirlinePayloadDTO payload = BeanUtil.copyProperties(sar, PyAirlinePayloadDTO.class);
- payload.setType(PayloadTypeEnum.SAR.getCode());
- uav.setPayload(payload);
- return uav;
- })
- .toArray(PyAirlineUavDTO[]::new);
-
- PyAirlineParamDTO param = new PyAirlineParamDTO();
- param.setTargets(targets);
- param.setUavs(uavs);
- return param;
- }
-
/**
* 校验载荷,有且只能有一个sar。并补充载荷信息
*
@@ -351,7 +295,7 @@ public class JmJobServiceImpl implements JmJobService {
airline.setDirection(sar.getDirection());
}
// 每条航线同高度,故计算坐标点距离不考虑高度
- int airlineDistance = CoordUtil.getPlaneDistanceInt(airline.getStartLon(), airline.getStartLat(), airline.getEndLon(), airline.getEndLat());
+ int airlineDistance = (int) CoordUtil.calculateDistance(airline.getStartLon(), airline.getStartLat(), airline.getEndLon(), airline.getEndLat());
airline.setDistance(airlineDistance);
com.zhangy.skyeye.common.extend.util.BeanUtil.validationEx(airline);
});
@@ -360,11 +304,30 @@ public class JmJobServiceImpl implements JmJobService {
@Transactional
@Override
public int delete(Long... ids) {
+ Long[] jobExecIds = jmJobExecService.selectByConf(ids).stream().map(e -> e.getId()).toArray(Long[]::new);
List list = jobMapper.selectById(ids);
jobStatusService.remove(ids);
jobPointService.deleteByJob(ids);
jobUavService.deleteByJob(ids);
jmJobExecService.deleteByJobConf(ids);
+
+ sarMtiPointService.deleteByJob(ids);
+ sarMtiTrailService.deleteByJob(ids);
+ // 目录
+ if (jobExecIds != null) {
+ for (Long id : jobExecIds) {
+ FileUtil.delete(
+ fileTypeService.getDirectoryPath(FileTypeEnum.UAV_KMZ, id)[0],
+ fileTypeService.getDirectoryPath(FileTypeEnum.SAR_WAVE, id)[0],
+ fileTypeService.getDirectoryPath(FileTypeEnum.SAR_IMAGE_LOW, id)[0],
+ fileTypeService.getDirectoryPath(FileTypeEnum.SAR_IMAGE_LOW_SRC, id)[0],
+ fileTypeService.getDirectoryPath(FileTypeEnum.SAR_IMAGE_HIGH, id)[0],
+ fileTypeService.getDirectoryPath(FileTypeEnum.SAR_IMAGE_HIGH_SRC, id)[0],
+ fileTypeService.getDirectoryPath(FileTypeEnum.SAR_MTI_LIB, id)[0]
+ );
+ }
+ }
+
for (JmJobDTO dto : list) {
if (dto.getType() > 1) {
quartzService.deleteJob(dto.getId().toString(), JmScheduleDTO.GROUP);
@@ -474,7 +437,7 @@ public class JmJobServiceImpl implements JmJobService {
SarControlParamDTO controlParam = new SarControlParamDTO();
controlParam.setControlType(SarControlTypeEnum.ENDALL);
controlParam.setIp(ip);
- controlInfoService.sendUdp(controlParam);
+ sarControlService.sendUdp(controlParam);
// 标记缓存状态,确保断连重新发送请求时不会重复执行
// uav.setSarStatus(ExecStatusEnum.OVER);
});
@@ -485,6 +448,11 @@ public class JmJobServiceImpl implements JmJobService {
job.setId(id);
job.setStatus(ExecStatusEnum.OVER.getValue());
jobMapper.updateNotNull(job);
+
+ JmJobExec jobExec = new JmJobExec();
+ jobExec.setConfId(id);
+ jobExec.setStatus(ExecStatusEnum.OVER.getValue());
+ jmJobExecService.updateNotNull(jobExec);
}
@Override
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java
index 174bc03..04be971 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobStatusServiceImpl.java
@@ -72,7 +72,7 @@ public class JmJobStatusServiceImpl implements JmJobStatusService {
public JmAirlineStatusDTO getCurrAirline(String payloadIp) {
for (JmJobStatusDTO jvo : jobStatusMap.values()) {
for (JmUavStatusDTO uvo : jvo.getUavMap().values()) {
- if (uvo.getSarIp().endsWith(payloadIp)) {
+ if (uvo.getSarIp().equals(payloadIp)) {
for (JmAirlineStatusDTO a : uvo.getAirlineList()) {
if (a.getStatus() == ExecStatusEnum.PROCESSING) {
return a;
@@ -237,7 +237,7 @@ public class JmJobStatusServiceImpl implements JmJobStatusService {
ExecStatusEnum aStatus = avo.getStatus();
switch (aStatus) {
case PROCESSING:
- distanced += CoordUtil.getPlaneDistanceInt(
+ distanced += CoordUtil.calculateDistance(
curr.getLongitude(), curr.getLatitude(),
avo.getStartLon(), avo.getStartLat());
case NOT:
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobUavServiceImpl.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobUavServiceImpl.java
index 486189e..b6c2627 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobUavServiceImpl.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/service/impl/JmJobUavServiceImpl.java
@@ -50,7 +50,7 @@ public class JmJobUavServiceImpl implements JmJobUavService {
@Getter
private UavAirlineUploadEnum airlineUploadType;
- @Value("${ld.uav.upload}")
+ @Value("${skyeye.uav.upload}")
public void setAirlineUploadType(String value) {
this.airlineUploadType = EnumUtil.parseEx(UavAirlineUploadEnum.class, value);
}
@@ -125,8 +125,7 @@ public class JmJobUavServiceImpl implements JmJobUavService {
})
.toArray(JmJobUav[]::new)
);
- String[] kmzDirPath = fileTypeService.getDirectoryPath(FileTypeEnum.UAV_KMZ, jobId);
- String[] txtFilePath = fileTypeService.getFilePath(FileTypeEnum.UAV_TXT, jobId, "航线.txt");
+
list.forEach(uav -> {
Long uavId = uav.getUavId();
jobPayloadService.insert(jobId, uavId, uav.getPayloadList());
diff --git a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/task/JmTaskScheduler.java b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/task/JmTaskScheduler.java
index 07e4c71..04b0997 100644
--- a/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/task/JmTaskScheduler.java
+++ b/backend/Skyeye-sys-dev/skyeye-service-manager/src/main/java/com/zhangy/skyeye/jm/task/JmTaskScheduler.java
@@ -3,6 +3,7 @@ package com.zhangy.skyeye.jm.task;
import com.zhangy.skyeye.redis.utils.RedisUtil;
import com.zhangy.skyeye.device.entity.SkyeyePayload;
import com.zhangy.skyeye.device.service.IPayloadService;
+import com.zhangy.skyeye.jm.dto.JmJobStatusDTO;
import com.zhangy.skyeye.publics.consts.CacheKey;
import com.zhangy.skyeye.publics.service.ISysLoginService;
import com.zhangy.skyeye.sar.enums.SarControlTypeEnum;
@@ -10,13 +11,16 @@ import com.zhangy.skyeye.jm.service.JmJobStatusService;
import com.zhangy.skyeye.sar.exception.SarConnectException;
import com.zhangy.skyeye.sar.service.ISarControlService;
// import com.zhangy.skyeye.smp.dto.SmpUavStatusWsDTO;
+import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
+import java.util.Collection;
import java.util.List;
/**
@@ -26,6 +30,10 @@ import java.util.List;
@Service
public class JmTaskScheduler {
+ @Value("${skyeye.debug:false}")
+ @Setter
+ private boolean isDebug;
+
@Autowired
private RedisUtil redisUtil;
@@ -58,11 +66,11 @@ public class JmTaskScheduler {
// if (!loginService.hasLogged()) {
// return;
// }
-// // 从缓存查询所有sar
-// List sarList = payloadService.getSar(null);
-// if (ObjectUtil.isEmpty(sarList)) {
-// return;
-// }
+ // 从缓存查询所有sar
+// Collection list = jobStatusService.getAll();
+// Map jobSarMap = list.stream()
+// .flatMap(job -> job.getUavMap().values().stream())
+// .collect(Collectors.toMap(JmUavStatusDTO::getSarId, Function.identity(), (k1, k2) -> k1));
// // 从内存查询所有任务中的雷达
// Map jobSarMap = jobStatusService.getAll().stream()
// .flatMap(job -> job.getUavMap().values().stream())
@@ -107,7 +115,7 @@ public class JmTaskScheduler {
*/
@Scheduled(fixedRate = 10000)
public void connectSar() {
- if (!loginService.hasLogged()) { // 断开
+ if (!loginService.hasLogged() || isDebug) { // 断开
/*Map