From 344ce76577b2694b5526b67d5adb770a9e92f523 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Sat, 23 Mar 2024 11:56:42 +0800
Subject: [PATCH] 保存航线飞行断点信息

---
 src/main/java/com/dji/sample/wayline/service/impl/FlightTaskServiceImpl.java           |   32 ++++++++++
 src/main/java/com/dji/sample/wayline/service/impl/WaylineJobBreakPointServiceImpl.java |   28 +++++++++
 src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java              |   13 ++++
 src/main/java/com/dji/sample/wayline/model/dto/WaylineTaskProgressExtBreakPoint.java   |   21 +++++--
 src/main/java/com/dji/sample/wayline/model/entity/WaylineJobBreakPointEntity.java      |   64 +++++++++++++++++++++
 src/main/java/com/dji/sample/wayline/service/IWaylineJobBreakPointService.java         |   14 ++++
 6 files changed, 165 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java
new file mode 100644
index 0000000..6840172
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobBreakPointMapper.java
@@ -0,0 +1,13 @@
+package com.dji.sample.wayline.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dji.sample.wayline.model.entity.WaylineJobBreakPointEntity;
+
+/**
+ * @PROJECT_NAME: drone
+ * @DESCRIPTION:
+ * @USER: aix
+ * @DATE: 2024/3/23 11:09
+ */
+public interface IWaylineJobBreakPointMapper extends BaseMapper<WaylineJobBreakPointEntity> {
+}
diff --git a/src/main/java/com/dji/sample/wayline/model/dto/WaylineTaskProgressExtBreakPoint.java b/src/main/java/com/dji/sample/wayline/model/dto/WaylineTaskProgressExtBreakPoint.java
index 44e92f3..26444e0 100644
--- a/src/main/java/com/dji/sample/wayline/model/dto/WaylineTaskProgressExtBreakPoint.java
+++ b/src/main/java/com/dji/sample/wayline/model/dto/WaylineTaskProgressExtBreakPoint.java
@@ -1,5 +1,6 @@
 package com.dji.sample.wayline.model.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
 
 /**
@@ -11,14 +12,22 @@
 @Data
 public class WaylineTaskProgressExtBreakPoint {
 
-    private Integer attitudeHead;
-    private Integer breakReason;
-    private Integer height;
     private Integer index;
-    private Integer latitude;
-    private Integer longitude;
-    private Integer progress;
+
     private Integer state;
+
+    private Double progress;
+
     private Integer waylineId;
 
+    private Integer breakReason;
+
+    private Integer latitude;
+
+    private Integer longitude;
+
+    private Integer height;
+
+    private Integer attitudeHead;
+
 }
diff --git a/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobBreakPointEntity.java b/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobBreakPointEntity.java
new file mode 100644
index 0000000..9e3dec3
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/model/entity/WaylineJobBreakPointEntity.java
@@ -0,0 +1,64 @@
+package com.dji.sample.wayline.model.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/6/1
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@TableName(value = "wayline_job_break_point",autoResultMap = true)
+public class WaylineJobBreakPointEntity implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("job_id")
+    private String jobId;
+
+    @TableField("index")
+    private Integer index;
+
+    @TableField("state")
+    private Integer state;
+
+    @TableField("progress")
+    private Double progress;
+
+    @TableField("wayline_id")
+    private Integer waylineId;
+
+    @TableField("break_reason")
+    private Integer breakReason;
+
+    @TableField("latitude")
+    private Integer latitude;
+
+    @TableField("longitude")
+    private Integer longitude;
+
+    @TableField("height")
+    private Integer height;
+
+    @TableField("attitudehead")
+    private Integer attitudeHead;
+
+    @TableField(value = "create_time", fill = FieldFill.INSERT)
+    private Long createTime;
+
+    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+
+}
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineJobBreakPointService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineJobBreakPointService.java
new file mode 100644
index 0000000..b5bfc38
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineJobBreakPointService.java
@@ -0,0 +1,14 @@
+package com.dji.sample.wayline.service;
+
+import com.dji.sample.wayline.model.entity.WaylineJobBreakPointEntity;
+
+/**
+ * @PROJECT_NAME: drone
+ * @DESCRIPTION:
+ * @USER: aix
+ * @DATE: 2024/3/23 11:07
+ */
+public interface IWaylineJobBreakPointService {
+
+    public boolean addWaylineJobBreakPoint(WaylineJobBreakPointEntity entity);
+}
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/FlightTaskServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/FlightTaskServiceImpl.java
index 47a0442..8d33865 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/FlightTaskServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/FlightTaskServiceImpl.java
@@ -14,10 +14,13 @@
 import com.dji.sample.media.model.MediaFileCountDTO;
 import com.dji.sample.wayline.model.dto.WaylineJobDTO;
 import com.dji.sample.wayline.model.dto.WaylineJobKey;
+import com.dji.sample.wayline.model.dto.WaylineTaskProgressExtBreakPoint;
 import com.dji.sample.wayline.model.dto.WaylineTaskProgressReceiver;
+import com.dji.sample.wayline.model.entity.WaylineJobBreakPointEntity;
 import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum;
 import com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum;
 import com.dji.sample.wayline.service.IFlightTaskService;
+import com.dji.sample.wayline.service.IWaylineJobBreakPointService;
 import com.dji.sample.wayline.service.IWaylineJobService;
 import com.dji.sample.wayline.service.IWaylineRedisService;
 import com.fasterxml.jackson.core.type.TypeReference;
@@ -63,6 +66,9 @@
     @Autowired
     private IWaylineRedisService waylineRedisService;
 
+    @Autowired
+    private IWaylineJobBreakPointService waylineJobBreakPointService;
+
     /**
      * Handle the progress messages of the flight tasks reported by the dock.
      * 处理机场上报的飞行任务进度信息
@@ -85,7 +91,31 @@
         log.info("任务进度: {}", output.getProgress().toString());
 
         if (null != output.getExt().getBreakPoint()) {
-            log.info("任务进度 ===> 断点信息:{}", output.getExt().getBreakPoint().toString());
+            WaylineTaskProgressExtBreakPoint breakPoint = output.getExt().getBreakPoint();
+            log.info("任务进度 ===> 断点信息:{}", breakPoint.toString());
+            // 保存断点信息
+            try {
+                Boolean isAddBp = waylineJobBreakPointService.addWaylineJobBreakPoint(WaylineJobBreakPointEntity.builder()
+                        .jobId(receiver.getBid())
+                        .index(breakPoint.getIndex())
+                        .state(breakPoint.getState())
+                        .progress(breakPoint.getProgress())
+                        .waylineId(breakPoint.getWaylineId())
+                        .breakReason(breakPoint.getBreakReason())
+                        .latitude(breakPoint.getLatitude())
+                        .longitude(breakPoint.getLongitude())
+                        .height(breakPoint.getHeight())
+                        .attitudeHead(breakPoint.getAttitudeHead())
+                        .build());
+                if (isAddBp) {
+                    log.info("任务进度 ===> 断点信息 ===> 保存成功:{}", breakPoint.toString());
+                } else {
+                    log.info("任务进度 ===> 断点信息 ===> 保存失败:{}", breakPoint.toString());
+                }
+            }catch (Exception e) {
+                log.info("任务进度 ===> 断点信息 ===> 保存失败:{},\n {}", breakPoint.toString(),e.getMessage());
+            }
+
         }
 
         if (eventsReceiver.getResult() != ResponseResult.CODE_SUCCESS) {
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobBreakPointServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobBreakPointServiceImpl.java
new file mode 100644
index 0000000..e456ed2
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobBreakPointServiceImpl.java
@@ -0,0 +1,28 @@
+package com.dji.sample.wayline.service.impl;
+
+import com.dji.sample.wayline.dao.IWaylineJobBreakPointMapper;
+import com.dji.sample.wayline.model.entity.WaylineJobBreakPointEntity;
+import com.dji.sample.wayline.service.IWaylineJobBreakPointService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @PROJECT_NAME: drone
+ * @DESCRIPTION:
+ * @USER: aix
+ * @DATE: 2024/3/23 11:21
+ */
+@Service
+@Transactional
+public class WaylineJobBreakPointServiceImpl implements IWaylineJobBreakPointService {
+
+    @Autowired
+    private IWaylineJobBreakPointMapper mapper;
+
+    @Override
+    public boolean addWaylineJobBreakPoint(WaylineJobBreakPointEntity entity) {
+        int insertId = mapper.insert(entity);
+        return insertId>0;
+    }
+}

--
Gitblit v1.9.3