删除飞行任务时,如果任务已经下发,则取消任务

main
陈伟 2 months ago
parent 8c5cce7877
commit c5b1b7b1b5

@ -422,13 +422,44 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "任务不存在" };
}
if (task.CompletedTime != null) // 定时任务
if (task.CompletedTime != null) // 已完成任务(无论成功失败)
{
return new Response<bool> { Result = false, Message = "已完成任务禁止删除" };
}
using (var db = UnitWork.CreateContext())
{
// todo 如果任务已经开始取消任务
if (task.Status.Equals(1))
{
var flightId = task.FlightId;
if (!string.IsNullOrEmpty(flightId))
{
var dronePort = await Repository.ChangeRepository<SugarRepositiry<LasaDronePort>>()
.GetByIdAsync(task.TaskDronePort);
if (dronePort == null)
{
throw new Exception("指定机场不存在");
}
var serialNo = dronePort.Sn;
// 取消任务
var cancelTaskTopic = $"thing/product/{serialNo}/services";
var cancelTaskRequest = new TopicServicesRequest<object>()
{
method = "flighttask_undo",
tid = Guid.NewGuid().ToString(),
bid = Guid.NewGuid().ToString(),
timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds(),
data = new
{
flight_ids = new[] { task.FlightId }
}
};
await _mqttClientManager.PublishAsync(cancelTaskTopic,
JsonConvert.SerializeObject(cancelTaskRequest));
}
}
var flag = await db.LasaTask.DeleteAsync(it => it.Id == id);
var taskId = task.Id;
var mediaFileList = await db.LasaMediaFile.AsQueryable()

Loading…
Cancel
Save