Compare commits

...

4 Commits

Author SHA1 Message Date
陈伟 bd0d14ba6f 1.bugfix:缺少特性
2.无人机查询添加查询字段
2025-10-15 09:48:22 +08:00
陈伟 9398410000 Merge remote-tracking branch 'origin/main' 2025-10-15 09:47:55 +08:00
陈伟 5214dac6a9 添加范围内无人机查询 2025-10-15 09:36:03 +08:00
陈伟 50ce0633a6 大飞机开启推流关闭推流接口 2025-10-09 08:37:52 +08:00
6 changed files with 109 additions and 18 deletions

View File

@ -1,17 +1,23 @@
using System.Dynamic;
using Infrastructure;
using Newtonsoft.Json;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using OpenAuth.WebApi;
using SqlSugar;
namespace OpenAuth.App.ServiceApp;
public class LasaAircraftServiceApp : SqlSugarBaseApp<LasaAircraft, SugarDbContext>
{
public LasaAircraftServiceApp(ISugarUnitOfWork<SugarDbContext> unitWork,
private readonly MqttClientManager _mqttClientManager;
public LasaAircraftServiceApp(MqttClientManager mqttClientManager, ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<LasaAircraft> repository, IAuth auth) : base(unitWork, repository, auth)
{
_mqttClientManager = mqttClientManager;
}
public async Task<Response<bool>> AddLasaAircraft(LasaAircraft info)
@ -102,4 +108,39 @@ public class LasaAircraftServiceApp : SqlSugarBaseApp<LasaAircraft, SugarDbConte
Result = await Repository.GetByIdAsync(id)
};
}
public async Task<Response<bool>> StartLiveStreaming(string id)
{
var lasaAircraft = await Repository.GetByIdAsync(id);
// 主题参考thing/product/1581F8HGX254V00A0BUY/osd
dynamic data = new ExpandoObject();
data.method = "live_start_push";
data.data.url = ""; // todo
data.video_quality = 3; // "0":"自适应","1":"流畅","2":"标清","3":"高清","4":"超清"
// todo 发送消息
// todo 关于监听反馈消息
String sn = lasaAircraft.Sn;
await _mqttClientManager.PublishAsync("thing/aircraft/{sn}/service",
JsonConvert.SerializeObject(data));
return new Response<bool>
{
Result = true,
Message = "推流命令已发送"
};
}
public async Task<Response<bool>> StopLiveStreaming(string id)
{
var lasaAircraft = await Repository.GetByIdAsync(id);
dynamic data = new ExpandoObject();
data.method = "live_start_push";
String sn = lasaAircraft.Sn;
await _mqttClientManager.PublishAsync("thing/aircraft/{sn}/service",
JsonConvert.SerializeObject(data));
return new Response<bool>
{
Result = true,
Message = "停止推流命令已发送"
};
}
}

View File

@ -1220,7 +1220,7 @@ namespace OpenAuth.App.ServiceApp
FlightId = data.flight_id,
ExternalTaskId = task.ExternalTaskId
});
var taskUpdate1 = new LasaTask
{
Id = taskId,
@ -1232,7 +1232,7 @@ namespace OpenAuth.App.ServiceApp
.AsUpdateable(taskUpdate1)
.IgnoreNullColumns()
.ExecuteCommandAsync();
return new Response<bool>(){Result = true};
return new Response<bool>() { Result = true };
}
public async Task PendingFlyTask(string taskId)
@ -2884,12 +2884,13 @@ namespace OpenAuth.App.ServiceApp
int year = int.Parse(array[0]);
int month = int.Parse(array[1]);
start = new DateTime(year, month, 1);
end = start.AddMonths(1).AddMilliseconds(-1);;
end = start.AddMonths(1).AddMilliseconds(-1);
;
}
var taskHistoryList = await Repository.ChangeRepository<SugarRepositiry<LasaTaskHistory>>()
.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(date),
.WhereIF(!string.IsNullOrEmpty(date),
r => r.ExecuteTime >= start && r.ExecuteTime <= end)
.Where(r => r.TaskId == taskId)
.OrderByDescending(r => r.ExecuteTime)
@ -2899,5 +2900,30 @@ namespace OpenAuth.App.ServiceApp
Result = taskHistoryList
};
}
public async Task<Response<dynamic>> ListDronePort(string lng, string lat)
{
var sql =
@$"WITH target_point AS ( SELECT ST_SetSRID ( ST_MakePoint ( '{lng}', '{lat}' ), 4326 ) AS geom )
SELECT
b.""Id"" AS DronePortId,
b.""Name"" AS DronePortName,
u.""Sn"",b.""GateWay"",
ST_AsText ( b.""WorkArea"" ) AS coverage_wkt,
ST_AsText ( tp.geom ) AS point_location
FROM
lasa_droneport b left join lasa_uav u on u.""PId"" = b.""Id"",
target_point tp
WHERE
ST_Covers ( b.""WorkArea"", tp.geom )
AND b.""IsDelete"" = 'false' and u.""IsDelete"" = 'false'
";
var x = await Repository.AsSugarClient().SqlQueryable<dynamic>(sql).ToListAsync();
return new Response<dynamic>
{
Result = x
};
}
}
}

View File

@ -64,6 +64,7 @@ public class ConfigSubscribe : IJob
"thing/product/+/services_reply",
"thing/product/+/events",
"thing/product/+/requests",
"thing/aircraft/+/service_reply" //大飞机推流消息
//"thing/product/+/osd",
//"thing/product/+/status"
};

View File

@ -5,19 +5,19 @@ namespace OpenAuth.Repository.Domain
[SugarTable("lasa_droneport")]
public class LasaDronePort
{
[SugarColumn(IsPrimaryKey = true)]
public string Id { get; set; }
public string Name { get; set; }
public string TypeId { get; set; }
public string SerialNumber { get; set; }
public string FirmwareVersion { get; set; }
public int BindStatus { get; set; }
[SugarColumn(IsPrimaryKey = true)] public string Id { get; set; }
public string Name { get; set; }
public string TypeId { get; set; }
public string SerialNumber { get; set; }
public string FirmwareVersion { get; set; }
public int BindStatus { get; set; }
public DateTime? UpdateTime { get; set; }
public DateTime? CreateTime { get; set; }
public string OrgId { get; set; }
public string Sn { get; set; }
public string DevicePicUrl { get; set; }
public string OrgId { get; set; }
public string Sn { get; set; }
public string DevicePicUrl { get; set; }
public string Did { get; set; }
/// <summary>
/// Desc:是否删除
/// Default:false
@ -25,9 +25,14 @@ namespace OpenAuth.Repository.Domain
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsDelete { get; set; }
public string WorkSpaceId { get; set; }
public string GateWay { get; set; }
//
public string WorkArea { get; set; }
public int? Status { get; set; }
[Navigate(NavigateType.OneToMany, nameof(LasaUav.PId))]
public List<LasaUav> UavList { get; set; }
}
}
}

View File

@ -76,4 +76,14 @@ public class LasaAircraftController : ControllerBase
{
return await _app.GetLasaAircraft(id);
}
[HttpPost]
public async Task<Response<bool>> StartLiveStreaming(string id)
{
return await _app.StartLiveStreaming(id);
}
[HttpPost]
public async Task<Response<bool>> StopLiveStreaming(string id)
{
return await _app.StopLiveStreaming(id);
}
}

View File

@ -966,7 +966,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="taskId"></param>
/// <returns></returns>
[HttpGet]
public async Task<Response<dynamic>> GetTaskHistoryList(string taskId,string date)
public async Task<Response<dynamic>> GetTaskHistoryList(string taskId, string date)
{
if (string.IsNullOrEmpty(taskId))
{
@ -976,7 +976,15 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
Message = "参数缺失"
};
}
return await _app.GetTaskHistoryList(taskId,date);
return await _app.GetTaskHistoryList(taskId, date);
}
[HttpGet]
[AllowAnonymous]
public async Task<Response<dynamic>> ListDronePort(string lng, string lat)
{
return await _app.ListDronePort(lng, lat);
}
}
}