【新增】上传飞行记录接口

This commit is contained in:
2025-11-18 10:50:17 +08:00
parent 78ff89ba0d
commit b44214f74a
4 changed files with 121 additions and 3 deletions

View File

@@ -0,0 +1,67 @@
package com.corewing.app.dto.api;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class uploadReplaySessionRequest {
private Long id;
private String name;
private String description;
private Long startTime;
private Long endTime;
private Long duration; // 持续时间(秒)
private Long dataCount; // 数据点数量
private Date createdAt;
private Date updatedAt;
List<TrajectoryData> trajectoryDataList;
}
@Data
class TrajectoryData {
private Long id;
private Long sessionId;
private Long timestamp;
// 基础遥测数据
private Long rc;
private Long gps;
private Long gpsStatus;
private double voltage;
private double cellVoltage;
private Long consumption;
private double current;
private double speed;
private double airSpeed;
private double vSpeed;
private double altitude;
private double distance;
private double range;
private Long throttle;
private Long windDirection;
private double windSpeed;
private Long heading;
private double roll;
private double pitch;
private double yaw;
// 扩展数据
private double compassHeading;
private double droneLat;
private double droneLon;
private double homeLat;
private double homeLon;
private String mapType;
private Boolean showTrajectory;
private String flightMode;
private Long vehicleType;
private Long autopilotType;
private Boolean isArmed;
}

View File

@@ -2,11 +2,10 @@ package com.corewing.app.modules.app;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import com.corewing.app.common.Result; import com.corewing.app.common.Result;
import com.corewing.app.dto.api.uploadReplaySessionRequest;
import com.corewing.app.entity.ReplaySession; import com.corewing.app.entity.ReplaySession;
import com.corewing.app.service.ReplaySessionService; import com.corewing.app.service.ReplaySessionService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
@@ -18,9 +17,23 @@ public class AppReplaySessionController {
@Resource @Resource
private ReplaySessionService replaySessionService; private ReplaySessionService replaySessionService;
/**
* 获取飞行记录
* @return
*/
@GetMapping("/getReplayList") @GetMapping("/getReplayList")
public Result<List<ReplaySession>> getReplayList() { public Result<List<ReplaySession>> getReplayList() {
return Result.success(replaySessionService.getReplayList(StpUtil.getLoginId())); return Result.success(replaySessionService.getReplayList(StpUtil.getLoginId()));
} }
/**
* 上传飞行记录
* @param uploadReplaySessionRequests
* @return
*/
@PostMapping("/uploadReplaySession")
public Result<Boolean> uploadReplaySession(@RequestBody List<uploadReplaySessionRequest> uploadReplaySessionRequests) {
return Result.isBool(replaySessionService.uploadReplaySession(uploadReplaySessionRequests));
}
} }

View File

@@ -1,6 +1,7 @@
package com.corewing.app.service; package com.corewing.app.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.corewing.app.dto.api.uploadReplaySessionRequest;
import com.corewing.app.entity.ReplaySession; import com.corewing.app.entity.ReplaySession;
import java.util.List; import java.util.List;
@@ -8,4 +9,6 @@ import java.util.List;
public interface ReplaySessionService extends IService<ReplaySession> { public interface ReplaySessionService extends IService<ReplaySession> {
List<ReplaySession> getReplayList(Object loginId); List<ReplaySession> getReplayList(Object loginId);
boolean uploadReplaySession(List<uploadReplaySessionRequest> uploadReplaySessionRequests);
} }

View File

@@ -2,19 +2,54 @@ package com.corewing.app.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.corewing.app.dto.api.uploadReplaySessionRequest;
import com.corewing.app.entity.ReplaySession; import com.corewing.app.entity.ReplaySession;
import com.corewing.app.mapper.ReplaySessionMapper; import com.corewing.app.mapper.ReplaySessionMapper;
import com.corewing.app.service.ReplaySessionService; import com.corewing.app.service.ReplaySessionService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
@Service @Service
public class ReplaySessionServiceImpl extends ServiceImpl<ReplaySessionMapper, ReplaySession> implements ReplaySessionService { public class ReplaySessionServiceImpl extends ServiceImpl<ReplaySessionMapper, ReplaySession> implements ReplaySessionService {
private final Gson gson;
public ReplaySessionServiceImpl(Gson gson) {
this.gson = gson;
}
@Override @Override
public List<ReplaySession> getReplayList(Object loginId) { public List<ReplaySession> getReplayList(Object loginId) {
LambdaQueryWrapper<ReplaySession> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ReplaySession> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ReplaySession::getUserId, loginId); queryWrapper.eq(ReplaySession::getUserId, loginId);
return this.list(queryWrapper); return this.list(queryWrapper);
} }
@Transactional
@Override
public boolean uploadReplaySession(List<uploadReplaySessionRequest> uploadReplaySessionRequests) {
uploadReplaySessionRequests.forEach(replaySessionRequest -> {
ReplaySession replaySession = new ReplaySession();
replaySession.setId(replaySessionRequest.getId());
replaySession.setName(replaySessionRequest.getName());
replaySession.setDuration(replaySessionRequest.getDuration());
replaySession.setStartTime(replaySessionRequest.getStartTime());
replaySession.setEndTime(replaySessionRequest.getEndTime());
replaySession.setDescription(replaySessionRequest.getDescription());
replaySession.setDataCount(replaySessionRequest.getDataCount());
replaySession.setCreatedAt(replaySessionRequest.getCreatedAt());
replaySession.setUpdatedAt(replaySessionRequest.getUpdatedAt());
saveOrUpdate(replaySession);
String json = gson.toJson(replaySessionRequest.getTrajectoryDataList());
System.out.println(json);
});
return true;
}
} }