Browse Source

飞行任务问题修改 航点问题修改 航线任务列表查询修改

S0025136190 1 year ago
parent
commit
4d9c6fad3a

+ 34 - 15
Backend/sample/src/main/java/com/dji/sample/manage/service/impl/SDKDeviceService.java

@@ -39,6 +39,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -302,6 +303,7 @@ public class SDKDeviceService extends AbstractDeviceService {
                     log.info("==============飞机降落 执行添加飞行轨迹====:" + flightTask.toString());
                     //添加飞行轨迹
                     FlightTaskDTO task = addFlightPoint(flightTask,device,data);
+                    log.info("==============飞机降落 更新飞行任务====:" + task.toString());
                     //更新飞行任务
                     updateFlightTask(task);
 
@@ -396,21 +398,28 @@ public class SDKDeviceService extends AbstractDeviceService {
                         flightTaskService.addHomePoint(flightTrackEntity);
                     }
                 }
-                //添加轨迹信息
-                FlightTrackEntity flightTrackEntity = FlightTrackEntity.builder()
-                        .taskId(task.getId())
-                        .modeCode(data.getModeCode().getCode())
-                        .longitude(data.getLongitude().doubleValue())
-                        .latitude(data.getLatitude().doubleValue())
-                        .altitude(data.getHeight().doubleValue())
-                        .elevation(data.getElevation().doubleValue())
-                        .type(FlightPointTypeEnum.HAND.getType())
-                        .createTime(System.currentTimeMillis()).build();
-                flightTaskService.addFlightPoint(flightTrackEntity);
-                log.info("添加轨迹完成: task:" + task.getTaskName());
-                //记录添加时间
-                deviceRedisService.setLastDroneTrack(device.getDeviceSn(), flightTrackEntity);
-                return task;
+                if(!lastPoint.isPresent()) {
+                    return null;
+                }
+                long btwTime = System.currentTimeMillis() - lastPoint.get().getCreateTime();
+                if(btwTime >= CustomConfiguration.frequency * 1000) {
+                    //添加轨迹信息
+                    FlightTrackEntity flightTrackEntity = FlightTrackEntity.builder()
+                            .taskId(task.getId())
+                            .modeCode(data.getModeCode().getCode())
+                            .longitude(data.getLongitude().doubleValue())
+                            .latitude(data.getLatitude().doubleValue())
+                            .altitude(data.getHeight().doubleValue())
+                            .elevation(data.getElevation().doubleValue())
+                            .type(FlightPointTypeEnum.HAND.getType())
+                            .createTime(System.currentTimeMillis()).build();
+                    flightTaskService.addFlightPoint(flightTrackEntity);
+                    log.info("添加轨迹完成: task:" + task.getTaskName());
+                    //记录添加时间
+                    deviceRedisService.setLastDroneTrack(device.getDeviceSn(), flightTrackEntity);
+                    return task;
+                }
+
             }
             return null;
         }
@@ -455,6 +464,7 @@ public class SDKDeviceService extends AbstractDeviceService {
     }
 
     private FlightTaskDTO createFlightTask(DeviceDTO device) {
+        log.info("我进来了");
         Date curTime = new Date();
         String taskName = getTaskName(curTime, device.getDeviceSn());
         return flightTaskService.createFlightTask(FlightTaskEntity.builder()
@@ -744,4 +754,13 @@ public class SDKDeviceService extends AbstractDeviceService {
         }
     }
 
+    private  boolean areEqual(double a, double b) {
+        // 将 double 值转换为 BigDecimal
+        BigDecimal bdA = new BigDecimal(Double.toString(a));
+        BigDecimal bdB = new BigDecimal(Double.toString(b));
+
+        // 使用 BigDecimal 的 compareTo 方法进行比较
+        return bdA.compareTo(bdB) == 0;
+    }
+
 }

+ 3 - 1
Backend/sample/src/main/java/com/dji/sample/map/service/impl/FlightTrackTaskServiceImpl.java

@@ -262,7 +262,9 @@ public class FlightTrackTaskServiceImpl implements IFlightTrackTaskService {
     @Override
     public FlightTaskDTO createFlightTask(FlightTaskEntity flightTaskEntity) {
         FlightTaskEntity entity = mapper.selectOne(new LambdaQueryWrapper<FlightTaskEntity>()
-                .eq(FlightTaskEntity::getTaskName, flightTaskEntity.getTaskName())
+                //.eq(FlightTaskEntity::getTaskName, flightTaskEntity.getTaskName())
+                .eq(FlightTaskEntity::getDeviceSn, flightTaskEntity.getDeviceSn())
+                .isNull(FlightTaskEntity::getEndTime)
                 .eq(FlightTaskEntity::getWorkspaceId,flightTaskEntity.getWorkspaceId()));
         if(entity  == null) {
             int result = mapper.insert(flightTaskEntity);

+ 5 - 1
Backend/sample/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java

@@ -60,8 +60,12 @@ public class WaylineJobController {
     @GetMapping("/{workspace_id}/jobs")
     public HttpResultResponse<PaginationData<WaylineJobDTO>> getJobs(@RequestParam(defaultValue = "1") Long page,
                                                                      @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
+                                                                     @RequestParam(required = false) Long begin_time,
+                                                                     @RequestParam(required = false) Long end_time,
+                                                                     @RequestParam(required = false) String search_info,
+                                                                     @RequestParam String snList,
                                                                      @PathVariable(name = "workspace_id") String workspaceId) {
-        PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize);
+        PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceId(workspaceId, page, pageSize,begin_time,end_time,search_info,snList);
         return HttpResultResponse.success(data);
     }
 

+ 81 - 0
Backend/sample/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java

@@ -2,6 +2,10 @@ package com.dji.sample.wayline.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dji.sample.wayline.model.entity.WaylineJobEntity;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * @author sean
@@ -9,4 +13,81 @@ import com.dji.sample.wayline.model.entity.WaylineJobEntity;
  * @date 2022/6/1
  */
 public interface IWaylineJobMapper extends BaseMapper<WaylineJobEntity> {
+
+    @Select("<script>" +
+            " select wj.id" +
+            "   ,wj.job_id jobId " +
+            "   ,wj.name jobId " +
+            "   ,wj.file_id fileId " +
+            "   ,wj.dock_sn dockSn " +
+            "   ,wj.workspace_id workspaceId " +
+            "   ,wj.task_type taskType " +
+            "   ,wj.wayline_type waylineType " +
+            "   ,wj.username  " +
+            "   ,wj.execute_time executeTime " +
+            "   ,wj.end_time endTime " +
+            "   ,wj.error_code errorCode " +
+            "   ,wj.status  " +
+            "   ,wj.rth_altitude rthAltitude " +
+            "   ,wj.out_of_control outOfControlAction " +
+            "   ,wj.media_count mediaCount " +
+            "   ,wj.create_time createTime " +
+            "   ,wj.update_time updateTime " +
+            "   ,wj.begin_time beginTime " +
+            "   ,wj.completed_time completedTime " +
+            "   ,wj.parent_id parentId " +
+            " from wayline_job wj" +
+            " left join wayline_file wf on wj.file_id = wf.wayline_id " +
+            " where wj.workspace_id = #{workspaceId} " +
+            " <if test='null != beginTime '>" +
+            " and wj.begin_time &lt; #{beginTime}  " +
+            " </if>" +
+            " <if test='null != endTime '>" +
+            " and wj.end_time &gt; #{endTime}) " +
+            " </if>" +
+            " <if test=' null != searchInfo '>" +
+            " and (wj.name like #{searchInfo} or wf.name like  #{searchInfo} )" +
+            " </if>" +
+            " <if test='snList != null and !snList.isEmpty()'>" +
+            " and wj.dock_sn in" +
+            " <foreach item='item' index='index' collection='snList' open='(' separator=',' close=')'>" +
+            " #{item}" +
+            " </foreach>" +
+            " </if>" +
+            " order by wj.id" +
+            " limit #{page}, #{pageSize}" +
+            "</script>")
+    List<WaylineJobEntity> selectJobList(@Param("page") long page,
+                                         @Param("pageSize") long pageSize,
+                                         @Param("beginTime") Long beginTime,
+                                         @Param("endTime") Long endTime,
+                                         @Param("searchInfo") String searchInfo,
+                                         @Param("workspaceId") String workspaceId,
+                                        @Param("snList") List<String> snList);
+
+    @Select("<script>" +
+            " select count(wj.id) total from wayline_job wj" +
+            " left join wayline_file wf on wj.file_id = wf.wayline_id " +
+            " where wj.workspace_id = #{workspaceId} " +
+            " <if test='null != beginTime '>" +
+            " and wj.begin_time &lt; #{beginTime}  " +
+            " </if>" +
+            " <if test=' null != endTime '>" +
+            " and wj.end_time &gt; #{endTime}) " +
+            " </if>" +
+            " <if test=' null != searchInfo '>" +
+            " and (wj.name like #{searchInfo} or wf.name like  #{searchInfo} )" +
+            " </if>" +
+            " <if test='snList != null and !snList.isEmpty()'>" +
+            " and wj.dock_sn in" +
+            " <foreach item='item' index='index' collection='snList' open='(' separator=',' close=')'>" +
+            " #{item}" +
+            " </foreach>" +
+            " </if>" +
+            "</script>")
+    long selectTotal(@Param("beginTime") Long beginTime,
+                    @Param("endTime") Long endTime,
+                    @Param("searchInfo") String searchInfo,
+                    @Param("workspaceId") String workspaceId,
+                     @Param("snList") List<String> snList);
 }

+ 1 - 1
Backend/sample/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java

@@ -66,7 +66,7 @@ public interface IWaylineJobService {
      * @param pageSize
      * @return
      */
-    PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize);
+    PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize,Long begin_time,Long end_time,String search_info,String snList);
 
     /**
      * Query the wayline execution status of the dock.

+ 2 - 0
Backend/sample/src/main/java/com/dji/sample/wayline/service/IWaylinePointService.java

@@ -14,4 +14,6 @@ import java.util.List;
 public interface IWaylinePointService {
 
     void isnertPoint(List<WaylinePointDTO> list ,String waylineId);
+
+    void delPoint(String waylineId);
 }

+ 1 - 0
Backend/sample/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java

@@ -193,6 +193,7 @@ public class WaylineFileServiceImpl implements IWaylineFileService {
                 .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
                 .eq(WaylineFileEntity::getWaylineId, waylineId))
                 > 0;
+        waylinePointService.delPoint(waylineId);
         if (!isDel) {
             return false;
         }

+ 7 - 8
Backend/sample/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java

@@ -7,6 +7,7 @@ import com.dji.sample.component.mqtt.model.EventsReceiver;
 import com.dji.sample.component.redis.RedisConst;
 import com.dji.sample.component.redis.RedisOpsUtils;
 import com.dji.sample.manage.model.dto.DeviceDTO;
+import com.dji.sample.manage.model.entity.DeviceLogsEntity;
 import com.dji.sample.manage.service.IDeviceRedisService;
 import com.dji.sample.manage.service.IDeviceService;
 import com.dji.sample.media.model.MediaFileCountDTO;
@@ -151,18 +152,16 @@ public class WaylineJobServiceImpl implements IWaylineJobService {
     }
 
     @Override
-    public PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize) {
-        Page<WaylineJobEntity> pageData = mapper.selectPage(
-                new Page<WaylineJobEntity>(page, pageSize),
-                new LambdaQueryWrapper<WaylineJobEntity>()
-                        .eq(WaylineJobEntity::getWorkspaceId, workspaceId)
-                        .orderByDesc(WaylineJobEntity::getId));
-        List<WaylineJobDTO> records = pageData.getRecords()
+    public PaginationData<WaylineJobDTO> getJobsByWorkspaceId(String workspaceId, long page, long pageSize,Long begin_time,Long end_time,String search_info,String snList) {
+        List<String> dockSnlist = Arrays.asList(snList.split(","));
+        List<WaylineJobEntity> list = mapper.selectJobList(page-1,pageSize,begin_time,end_time,search_info,workspaceId,dockSnlist);
+        long total = mapper.selectTotal(begin_time,end_time,search_info,workspaceId,dockSnlist);
+        List<WaylineJobDTO> records = list
                 .stream()
                 .map(this::entity2Dto)
                 .collect(Collectors.toList());
 
-        return new PaginationData<WaylineJobDTO>(records, new Pagination(pageData.getCurrent(), pageData.getSize(), pageData.getTotal()));
+        return new PaginationData<WaylineJobDTO>(records, new Pagination(page, pageSize, total));
     }
 
     private WaylineJobEntity dto2Entity(WaylineJobDTO dto) {

+ 8 - 0
Backend/sample/src/main/java/com/dji/sample/wayline/service/impl/WaylinePointServiceImpl.java

@@ -1,6 +1,7 @@
 package com.dji.sample.wayline.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.dji.sample.wayline.dao.IWaylinePointMapper;
 import com.dji.sample.wayline.model.dto.WaylinePointDTO;
 import com.dji.sample.wayline.model.entity.WaylinePointEntity;
@@ -35,6 +36,13 @@ public class WaylinePointServiceImpl implements IWaylinePointService {
         }
     }
 
+    @Override
+    public void delPoint(String waylineId) {
+        QueryWrapper<WaylinePointEntity> wrapper = new QueryWrapper<>();
+        wrapper.lambda().eq(WaylinePointEntity::getWaylineId ,waylineId);
+        mapper.delete(wrapper);
+    }
+
     private WaylinePointEntity dtoToEntity(WaylinePointDTO dto){
         WaylinePointEntity entity = new WaylinePointEntity();
         entity.setPointIndex(dto.getPointIndex());