main
洁 任 2 weeks ago
commit f242822bf3

@ -0,0 +1,52 @@
using Infrastructure;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using SqlSugar;
namespace OpenAuth.App.ServiceApp.AI;
public class AiAchievementServiceApp : SqlSugarBaseApp<LasaAiAchievement, SugarDbContext>
{
public AiAchievementServiceApp(ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<LasaAiAchievement> repository, IAuth auth) : base(unitWork, repository, auth)
{
}
public async Task<Response<PageInfo<List<LasaAiAchievement>>>> GetAiAchievementList(PageReq req)
{
RefAsync<int> total = 0;
var page = await Repository.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(req.key), x => x.Title.Contains(req.key))
.ToPageListAsync(req.page, req.limit, total);
return new Response<PageInfo<List<LasaAiAchievement>>>()
{
Result = new PageInfo<List<LasaAiAchievement>>()
{
Items = page,
Total = total.Value
}
};
}
public async Task<Response<LasaAiAchievement>> GetAiAchievement(string id)
{
var result = await Repository.GetByIdAsync(id);
if (result != null)
{
var images = await Repository
.ChangeRepository<SugarRepositiry<LasaAiAchievementDetail>>()
.AsQueryable()
.Where(x => x.AiAchievementId == id)
.ToListAsync();
result.AiAchievementDetailList = images;
}
return new Response<LasaAiAchievement>()
{
Result = result
};
}
}

@ -6,7 +6,7 @@ using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using SqlSugar;
namespace OpenAuth.App.ServiceApp;
namespace OpenAuth.App.ServiceApp.Algo;
public class AlgoInstanceServiceApp : SqlSugarBaseApp<LasaAlgoInstance, SugarDbContext>
{

@ -6,7 +6,6 @@ using OpenAuth.App.Interface;
using SqlSugar;
using Infrastructure;
using Infrastructure.Helpers;
using System.Text.Json;
using OpenAuth.App.ServiceApp.Response;
using Microsoft.Extensions.Configuration;
using OpenAuth.App.ServiceApp.DroneDocking.Request;
@ -20,11 +19,16 @@ using Org.BouncyCastle.Ocsp;
using System.Net.Http.Headers;
using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
using System.Data.SQLite;
using System.Dynamic;
using Infrastructure.CloudSdk.minio;
using Infrastructure.Extensions;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Text.Json.Nodes;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using OpenAuth.WebApi;
using JsonSerializer = System.Text.Json.JsonSerializer;
namespace OpenAuth.App.ServiceApp.DroneDocking
@ -35,12 +39,17 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
private IConfiguration configuration;
private readonly ISqlSugarClient _client;
private readonly MinioService _minioService;
public DroneDockApp(EncryptionHelper helper, IConfiguration configuration, ISqlSugarClient client, MinioService minioService, ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<DroneDocktask> repository, IAuth auth) : base(unitWork, repository, auth)
private readonly MqttClientManager _mqttClientManager;
public DroneDockApp(EncryptionHelper helper, IConfiguration configuration, ISqlSugarClient client,
MinioService minioService, MqttClientManager mqttClientManager, ISugarUnitOfWork<SugarDbContext> unitWork,
ISimpleClient<DroneDocktask> repository, IAuth auth) : base(unitWork, repository, auth)
{
_helper = helper;
this.configuration = configuration;
_client = client;
_minioService = minioService;
_mqttClientManager = mqttClientManager;
}
/// <summary>
@ -48,7 +57,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<Response<string>> RegistService(AirPortRegistReq req )
public async Task<Response<string>> RegistService(AirPortRegistReq req)
{
Response<string> Response = new Response<string>();
@ -125,7 +134,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
{
try
{
string url = configuration.GetSection("DroneDocking:Url").Value+ "/droneAirport/addDevice";
string url = configuration.GetSection("DroneDocking:Url").Value + "/droneAirport/addDevice";
string x_lc_secret = _helper.getxseret();
string centercode = "UAV32_LJY2FPMYDE6UDES3P3ZD7V3IKQ";
string x_token = _helper.GetToken(centercode);
@ -260,7 +269,8 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
string url = "http://localhost:10042/zhcfzx/droneAirport/AddTask";
string x_lc_secret = _helper.getxseret();
string centercode = "UAV32_LJY2FPMYDE6UDES3P3ZD7V3IKQ";
string x_token = "API32_HENJOZMPBYKEXNVLFMY3Y5W5SQ.1751622229582.fmCjIucQYyq4YZe4CnSStN/rHcwjZTxUsDuXeXJfrYn0bwoaV1/IW8mcFwtLw8JHjowvMJrmPyy/QZAhssxQCQ==";
string x_token =
"API32_HENJOZMPBYKEXNVLFMY3Y5W5SQ.1751622229582.fmCjIucQYyq4YZe4CnSStN/rHcwjZTxUsDuXeXJfrYn0bwoaV1/IW8mcFwtLw8JHjowvMJrmPyy/QZAhssxQCQ==";
// 序列化为 JSON 字符串
string json = JsonSerializer.Serialize(req);
@ -321,7 +331,8 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
string url = $"http://localhost:10042/zhcfzx/droneAirport/cancelTask?taskid={taskid}";
//string x_lc_secret = _helper.getxseret();
string centercode = "UAV32_LJY2FPMYDE6UDES3P3ZD7V3IKQ";
string x_token = "API32_HENJOZMPBYKEXNVLFMY3Y5W5SQ.1751622229582.fmCjIucQYyq4YZe4CnSStN/rHcwjZTxUsDuXeXJfrYn0bwoaV1/IW8mcFwtLw8JHjowvMJrmPyy/QZAhssxQCQ==";
string x_token =
"API32_HENJOZMPBYKEXNVLFMY3Y5W5SQ.1751622229582.fmCjIucQYyq4YZe4CnSStN/rHcwjZTxUsDuXeXJfrYn0bwoaV1/IW8mcFwtLw8JHjowvMJrmPyy/QZAhssxQCQ==";
// 添加请求头
client.DefaultRequestHeaders.Add("x-lc-token", x_token);
@ -362,53 +373,52 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<ResData> AddTask(string req,string secret)
public async Task<ResData> AddTask(string req, string secret)
{
ResData Response = new ResData();
//解密数据
byte[] secretbyte = Convert.FromBase64String(secret); //x-lc-secret
byte[] reqbyte = Convert.FromBase64String(req); //返回数据
byte[] secretbyte = Convert.FromBase64String(secret); //x-lc-secret
byte[] reqbyte = Convert.FromBase64String(req); //返回数据
string data = _helper.Decrypt(secretbyte, reqbyte);
//序列化返回数据并处理
var task = JsonSerializer.Deserialize<AirPortTaskReq>(data);
string ids = "";
foreach(var item in task.deviceid)
foreach (var item in task.deviceid)
{
}
//task数据生成
DroneDocktask dt= new DroneDocktask();
dt.id=Guid.NewGuid().ToString();
dt.deviceid= string.Join(",", task.deviceid);
dt.bizidname=task.bizidname.ToString();
DroneDocktask dt = new DroneDocktask();
dt.id = Guid.NewGuid().ToString();
dt.deviceid = string.Join(",", task.deviceid);
dt.bizidname = task.bizidname.ToString();
dt.taskid = task.taskid;
dt.taskname = task.taskname;
dt.datacode= task.datacode;
dt.datacode = task.datacode;
dt.state = 0;
dt.createtime = DateTime.Now;
//taskdetail数据生成
List<DroneDocktaskdetail> dalist= new List<DroneDocktaskdetail>();
if (task.tasklist.Count > 0 )
List<DroneDocktaskdetail> dalist = new List<DroneDocktaskdetail>();
if (task.tasklist.Count > 0)
{
foreach(var item in task.tasklist)
foreach (var item in task.tasklist)
{
DroneDocktaskdetail da= new DroneDocktaskdetail();
DroneDocktaskdetail da = new DroneDocktaskdetail();
da.id = Guid.NewGuid().ToString();
da.taskid = dt.id;
da.bz=item.bz;
da.dkbh=item.dkbh;
da.dkfw=item.dkfw;
da.dkmj=item.dkmj;
da.dkmc=item.dkmc;
da.xzqdm=item.xzqdm;
da.zdkbh=item.zdkbh;
da.bsm=item.bsm;
da.dklx=item.dklx;
da.bz = item.bz;
da.dkbh = item.dkbh;
da.dkfw = item.dkfw;
da.dkmj = item.dkmj;
da.dkmc = item.dkmc;
da.xzqdm = item.xzqdm;
da.zdkbh = item.zdkbh;
da.bsm = item.bsm;
da.dklx = item.dklx;
dalist.Add(da);
}
}
@ -463,8 +473,8 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
Response.Code = 500;
Response.Secret = x_lc_secret;
return Response;
}
}
}
}
}
@ -478,8 +488,8 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
ResData Response = new ResData();
//解密数据
byte[] secretbyte = Convert.FromBase64String(secret); //x-lc-secret
byte[] reqbyte = Convert.FromBase64String(req); //返回数据
byte[] secretbyte = Convert.FromBase64String(secret); //x-lc-secret
byte[] reqbyte = Convert.FromBase64String(req); //返回数据
string data = _helper.Decrypt(secretbyte, reqbyte);
//序列化返回数据并处理
@ -488,8 +498,8 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
using (var uow = base.UnitWork.CreateContext())
{
//查询数据
var info=uow.DroneDocktask.AsQueryable().Where(r=>r.taskid==task.taskid).First();
if (info != null)
var info = uow.DroneDocktask.AsQueryable().Where(r => r.taskid == task.taskid).First();
if (info != null)
{
if (info.state == 0)
{
@ -514,6 +524,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
dalist.Add(da);
}
}
await uow.DroneDocktaskdetail.DeleteAsync(r => r.taskid == info.taskid);
await uow.DroneDocktaskdetail.InsertRangeAsync(dalist);
var flag = uow.Commit();
@ -571,7 +582,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
Response.Code = 500;
Response.Secret = x_lc_secret;
return Response;
}
}
}
}
@ -592,7 +603,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
{
var flag = await uow.DroneDocktask.UpdateAsync(it => new DroneDocktask()
{
state=3
state = 3
}, it => it.id == info.id);
//返回数据
@ -620,7 +631,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
Response.Code = 500;
Response.Secret = x_lc_secret;
return Response;
}
}
}
else
{
@ -643,38 +654,173 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<ResData> getDroneStatus(string deviceid)
public async Task<ResData> GetDroneStatus(string deviceid)
{
ResData Response = new ResData();
string data = "{\r\n\"code\": 200,\r\n\"data\": {\r\n\"mode_code\":0,\r\n\"longitude\":122.45,\r\n\"latitude\":30.45,\r\n\"height\":80,\r\n\"elevation\":50,\r\n\"gimbal_pitch\":-45,\r\n\"gimbal_yaw\":23,\r\n\"battery_capacity_percent\":35,\r\n\"gps_state\":2,\r\n},\r\n\"message\": \"获取无人机机场状态成功!\",\r\n\"traceid\": \"xxx\"\r\n}";
//todo deviceid
if (true)
/*string data = @"
{
""code"": 200,
""data"": {
""mode_code"": 0,
""longitude"": 122.45,
""latitude"": 30.45,
""height"": 80,
""elevation"": 50,
""gimbal_pitch"": -45,
""gimbal_yaw"": 23,
""battery_capacity_percent"": 35,
""gps_state"": 2
},
""message"": """",
""traceid"": ""xxx""
}
";*/
dynamic data = new ExpandoObject();
var dock = await Repository
.ChangeRepository<SugarRepositiry<LasaDronePort>>()
.AsQueryable()
.LeftJoin<LasaUav>((a, b) => a.Id == b.PId)
.Where((a, b) => b.Sn == deviceid).FirstAsync();
if (dock == null) // 无人机不在线
{
string x_lc_secret = _helper.getxseret();
data.code = 200;
dynamic inData = new ExpandoObject();
inData.mode_code = 1; // 不在线
data.message = "获取无人机状态成功";
}
else
{
data.code = 200;
var dockOsdTopic = $"thing/product/{dock.Sn}/osd";
var now = DateTime.Now;
var time = now.AddSeconds(-5);
var log = await Repository
.ChangeRepository<SugarRepositiry<LasaLog>>()
.AsQueryable()
.Where(r => r.Topic == dockOsdTopic)
.Where(r => r.CreateTime > time) // 查询5秒以内数据
.Where(r => SqlFunc.JsonLike(r.Data, "drone_in_dock"))
.OrderByDescending(r => r.CreateTime)
.FirstAsync();
if (log != null)
{
// 当前时间
var dockOsdData =
JsonConvert.DeserializeObject<JObject>(JsonConvert.DeserializeObject<string>(log.Data));
//drone_in_dock 0":"舱外","1":"舱内"
var droneInDock = dockOsdData["data"]?["drone_in_dock"]?.Value<int>();
if (droneInDock == 0) // 飞行任务状态
{
var droneOsdTopic = $"thing/product/{deviceid}/osd";
log = await Repository
.ChangeRepository<SugarRepositiry<LasaLog>>()
.AsQueryable()
.Where(r => r.Topic == droneOsdTopic)
.Where(r => r.CreateTime > time) // 查询5秒以内数据
.OrderByDescending(r => r.CreateTime)
.FirstAsync();
if (log != null)
{
var droneOsdData =
JsonConvert.DeserializeObject<JObject>(JsonConvert.DeserializeObject<string>(log.Data));
var longitude = Math.Round(droneOsdData["data"]?["longitude"]?.Value<decimal>() ?? 0m, 7);
var latitude = Math.Round(droneOsdData["data"]?["latitude"]?.Value<decimal>() ?? 0m, 7);
var height = Math.Round(droneOsdData["data"]?["height"]?.Value<decimal>() ?? 0m, 2);
var elevation = Math.Round(droneOsdData["data"]?["elevation"]?.Value<decimal>() ?? 0m, 2);
// 云台信息
var payload99 = droneOsdData["data"]?["99-0-0"];
var gimbalPitch = payload99?["gimbal_pitch"]?.Value<double>();
var gimbalYaw = payload99?["gimbal_yaw"]?.Value<double>();
//var gimbalRoll = payload99?["gimbal_roll"]?.Value<double>();
var batteryCapacityPercent =
droneOsdData["data"]?["battery"]?["capacity_percent"]?.Value<int>();
var quality = droneOsdData["data"]?["position_state"]?["quality"]?.Value<int>();
dynamic inData = new ExpandoObject();
// mode_code 0:在线1:不在线2:任务执行中
inData.mode_code = 2;
inData.longitude = longitude;
inData.latitude = latitude;
inData.height = height;
inData.elevation = elevation;
inData.gimbal_pitch = gimbalPitch;
inData.gimbal_yaw = gimbalYaw;
//data.gimbal_roll = gimbalRoll;
inData.battery_capacity_percent = batteryCapacityPercent;
inData.gps_state = quality switch
{
< 2 => 1, // 低精度
< 10 => 2, // 高精度
_ => 3 // rtk定位
};
data.data = inData;
data.message = "获取无人机状态成功!";
data.traceid = Guid.NewGuid().ToString();
}
else
{
data.code = 502;
data.message = "获取无人机状态失败";
}
}
else
{
// 舱内 关机或者开机状态
// 这里取机场osd日志信息
dynamic inData = new ExpandoObject();
inData.battery_capacity_percent =
dockOsdData["data"]?["drone_charge_state"]?["capacity_percent"]?.Value<int>();
inData.elevation = 0;
inData.mode_code = 0;
var longitude = Math.Round(dockOsdData["data"]?["longitude"]?.Value<decimal>() ?? 0m, 7);
var latitude = Math.Round(dockOsdData["data"]?["latitude"]?.Value<decimal>() ?? 0m, 7);
var height = Math.Round(dockOsdData["data"]?["height"]?.Value<decimal>() ?? 0m, 2);
inData.longitude = longitude;
inData.latitude = latitude;
inData.height = height;
var quality = dockOsdData["data"]?["position_state"]?["quality"]?.Value<int>();
inData.gps_state = quality switch
{
< 2 => 1,
< 10 => 2,
_ => 3
};
data.data = inData;
data.traceid = Guid.NewGuid().ToString();
data.code = 200;
data.message = "获取无人机状态成功";
}
}
}
var response = new ResData();
if (data.code == 200)
{
string xLcSecret = _helper.getxseret();
// 转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data));
var encryptedResData = _helper.Encrypt(bytes);
Response.Result = encryptedResData;
Response.Message = "获取无人机机场状态成功!";
Response.Code = 200;
Response.Secret = x_lc_secret;
return Response;
response.Result = encryptedResData;
response.Message = "获取无人机状态成功!";
response.Code = 200;
response.Secret = xLcSecret;
return response;
}
else
{
string x_lc_secret = _helper.getxseret();
string xLcSecret = _helper.getxseret();
// 转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(" ");
var encryptedResData = _helper.Encrypt(bytes);
Response.Result = encryptedResData;
Response.Message = "获取无人机机场状态失败!";
Response.Code = 500;
Response.Secret = x_lc_secret;
return Response;
response.Result = encryptedResData;
response.Message = "获取无人机状态失败!";
response.Code = 500;
response.Secret = xLcSecret;
return response;
}
}
/// <summary>
/// 无人机任务查询
/// </summary>
@ -685,8 +831,8 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
ResData Response = new ResData();
//解密数据
byte[] secretbyte = Convert.FromBase64String(secret); //x-lc-secret
byte[] reqbyte = Convert.FromBase64String(req); //返回数据
byte[] secretbyte = Convert.FromBase64String(secret); //x-lc-secret
byte[] reqbyte = Convert.FromBase64String(req); //返回数据
string data = _helper.Decrypt(secretbyte, reqbyte);
//序列化返回数据并处理
@ -703,9 +849,8 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
Response.Code = 200;
Response.Secret = x_lc_secret;
return Response;
}
/// <summary>
/// 无人机机场设备注册/更新
/// </summary>
@ -858,11 +1003,11 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
formData = new MultipartFormDataContent();
var fileContent = new ByteArrayContent(fileBuffer);
fileContent.Headers.ContentDisposition = new
ContentDispositionHeaderValue("attachment");
ContentDispositionHeaderValue("attachment");
fileContent.Headers.ContentDisposition.FileName = fileName;
//注意:务必 根据 文件扩展名,这里指定 ContentType
fileContent.Headers.ContentType = new
MediaTypeHeaderValue("application/octet-stream");
MediaTypeHeaderValue("application/octet-stream");
formData.Add(fileContent);
var request = new HttpRequestMessage
{
@ -875,7 +1020,6 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
if (string.IsNullOrWhiteSpace(result))
{
Response.Result = result;
}
}
catch (Exception ex)
@ -888,76 +1032,78 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
formData?.Dispose();
client?.Dispose();
}
return Response;
}
/// <summary>
/// 无人机状态获取
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<ResData> getResult(string taskid)
/// <summary>
/// 无人机状态获取
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
public async Task<ResData> getResult(string taskid)
{
ResData Response = new ResData();
using (var uow = base.UnitWork.CreateContext())
{
//查询数据 检查是否有重复数据
var info = uow.DbfineInfo.AsQueryable().Where(r => r.taskid == taskid).First();
string json = JsonSerializer.Serialize(info);
string x_lc_secret = _helper.getxseret();
// 转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(json);
var encryptedResData = _helper.Encrypt(bytes);
Response.Result = encryptedResData;
Response.Message = "获取无人机成果成功!";
Response.Code = 200;
Response.Secret = x_lc_secret;
return Response;
string json = JsonSerializer.Serialize(info);
string x_lc_secret = _helper.getxseret();
// 转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(json);
var encryptedResData = _helper.Encrypt(bytes);
Response.Result = encryptedResData;
Response.Message = "获取无人机成果成功!";
Response.Code = 200;
Response.Secret = x_lc_secret;
return Response;
}
}
public async void InsertDb(string taskid) {
var sqliteconnect = configuration.GetSection("DroneDocking:DbFile").Value;
string _sqliteConnection = "DataSource = "+ sqliteconnect + "; Version = 3; ";
string sql = "select * from drone_docktaskdetail where taskid='" + taskid + "'";
var filigtlist = _client.Ado.SqlQuery<DroneDocktaskdetail>(sql);
public async void InsertDb(string taskid)
{
var sqliteconnect = configuration.GetSection("DroneDocking:DbFile").Value;
string _sqliteConnection = "DataSource = " + sqliteconnect + "; Version = 3; ";
string sql = "select * from drone_docktaskdetail where taskid='" + taskid + "'";
var filigtlist = _client.Ado.SqlQuery<DroneDocktaskdetail>(sql);
using (var sqliteConn = new SQLiteConnection(_sqliteConnection))
{
sqliteConn.Open();
string deleteDbinfo1 = "delete from JMXX";
using (var cmd2 = new SQLiteCommand(deleteDbinfo1, sqliteConn))
{
cmd2.ExecuteNonQuery();
}
string sqlInsert = "INSERT INTO JMXX (ZSDM, SZZS,ZSBFJGDM,ZSBFJGGY) VALUES (@ZSDM, @SZZS,@ZSBFJGDM,@ZSBFJGGY)";
using (var cmd1 = new SQLiteCommand(sqlInsert, sqliteConn))
{
cmd1.Parameters.AddWithValue("@ZSDM", "UAV32_LJY2FPMYDE6UDES3P3ZD7V3IKQ");
cmd1.Parameters.AddWithValue("@SZZS", "eyJvcmdjb2RlIjoiOTEzNzEzMDAzMjgzOTg1NzdRIiwib3JnbmFtZSI6IuWxseS4nOaFp+WIm+S/oeaBr+enkeaKgOaciemZkOWFrOWPuCIsImNlcnRjb2RlIjoiVUFWMzJfTEpZMkZQTVlERTZVREVTM1AzWkQ3VjNJS1EiLCJjZXJ0b3JnY29kZSI6IjEyMTAwMDAwNDAwMDEwMzk4UCIsImNlcnRvcmduYW1lIjoi5Lit5Zu95Zu95Zyf5YuY5rWL6KeE5YiS6Zmi5omn5rOV5qih5Z2XIiwiZXhwaXJhdGlvbiI6IjIwMjYtMDctMDEgMTU6NDY6MjAiLCJwdWJsaWNrZXkiOiIwNEYxQkYxQkVGRDYzRjE2RTVEQjNCQ0QzMkNBNUQ5QThFOERGN0FERDY3RDZDNEYyOTNGQjIzRjdCREE3NEY1MkQzMUI4RERBRDAzRDk1NUQ1NjY1MDVBMTVEOEI3REJFODNCNDIzNzhCOEU4NzQ5QzBFQjZFMkZCQzg2Nz" +
"U4MzhCIiwic2lnbiI6IjJBQTIyNDkwQzYxNkI0NjEzNUY2MDRBNDczNjFCQjJGRDcxMEJGOTdBQjcyNDdCMzYxQzc2N0NGQTNGNzcyMTQ0MkExQzhDMUVBRTIxRkEwQUZEMzJGRDg1NjdDMDg1MThGRUY4NTg2RUVCNkE4OTE1MDVBQjUxRjZDNDUyRUM2IiwiY2VydHR5cGUiOiLml6DkurrmnLrkuL7or4Hor4HkuaYiLCJyZWdpb25jb2RlIjoiMzcxMzAwIn0=");
cmd1.Parameters.AddWithValue("@ZSBFJGDM", "91371300328398577Q");
cmd1.Parameters.AddWithValue("@ZSBFJGGY", "04F1BF1BEFD63F16E5DB3BCD32CA5D9A8E8DF7ADD67D6C4F293FB23F7BDA74F52D31B8DDAD03D955D566505A15D8B7DBE83B42378B8E8749C0EB6E2FBC8675838B");
cmd1.ExecuteNonQuery();
}
string deleteDbinfo1 = "delete from JMXX";
using (var cmd2 = new SQLiteCommand(deleteDbinfo1, sqliteConn))
{
cmd2.ExecuteNonQuery();
}
string sqlInsert =
"INSERT INTO JMXX (ZSDM, SZZS,ZSBFJGDM,ZSBFJGGY) VALUES (@ZSDM, @SZZS,@ZSBFJGDM,@ZSBFJGGY)";
using (var cmd1 = new SQLiteCommand(sqlInsert, sqliteConn))
{
cmd1.Parameters.AddWithValue("@ZSDM", "UAV32_LJY2FPMYDE6UDES3P3ZD7V3IKQ");
cmd1.Parameters.AddWithValue("@SZZS",
"eyJvcmdjb2RlIjoiOTEzNzEzMDAzMjgzOTg1NzdRIiwib3JnbmFtZSI6IuWxseS4nOaFp+WIm+S/oeaBr+enkeaKgOaciemZkOWFrOWPuCIsImNlcnRjb2RlIjoiVUFWMzJfTEpZMkZQTVlERTZVREVTM1AzWkQ3VjNJS1EiLCJjZXJ0b3JnY29kZSI6IjEyMTAwMDAwNDAwMDEwMzk4UCIsImNlcnRvcmduYW1lIjoi5Lit5Zu95Zu95Zyf5YuY5rWL6KeE5YiS6Zmi5omn5rOV5qih5Z2XIiwiZXhwaXJhdGlvbiI6IjIwMjYtMDctMDEgMTU6NDY6MjAiLCJwdWJsaWNrZXkiOiIwNEYxQkYxQkVGRDYzRjE2RTVEQjNCQ0QzMkNBNUQ5QThFOERGN0FERDY3RDZDNEYyOTNGQjIzRjdCREE3NEY1MkQzMUI4RERBRDAzRDk1NUQ1NjY1MDVBMTVEOEI3REJFODNCNDIzNzhCOEU4NzQ5QzBFQjZFMkZCQzg2Nz" +
"U4MzhCIiwic2lnbiI6IjJBQTIyNDkwQzYxNkI0NjEzNUY2MDRBNDczNjFCQjJGRDcxMEJGOTdBQjcyNDdCMzYxQzc2N0NGQTNGNzcyMTQ0MkExQzhDMUVBRTIxRkEwQUZEMzJGRDg1NjdDMDg1MThGRUY4NTg2RUVCNkE4OTE1MDVBQjUxRjZDNDUyRUM2IiwiY2VydHR5cGUiOiLml6DkurrmnLrkuL7or4Hor4HkuaYiLCJyZWdpb25jb2RlIjoiMzcxMzAwIn0=");
cmd1.Parameters.AddWithValue("@ZSBFJGDM", "91371300328398577Q");
cmd1.Parameters.AddWithValue("@ZSBFJGGY",
"04F1BF1BEFD63F16E5DB3BCD32CA5D9A8E8DF7ADD67D6C4F293FB23F7BDA74F52D31B8DDAD03D955D566505A15D8B7DBE83B42378B8E8749C0EB6E2FBC8675838B");
cmd1.ExecuteNonQuery();
}
string deleteDbinfo = "delete from DB_INFO";
using (var cmd = new SQLiteCommand(deleteDbinfo, sqliteConn))
{
cmd.ExecuteNonQuery();
}
DateTime dt = DateTime.Now;
string dt24 = dt.ToString("yyyy-MM-dd HH:mm:ss");
string sqlInsertDbinfo = "INSERT INTO DB_INFO (VERSION, CREATETIME,UPDATETIME,CREATEUSER,DESCRIPTION) VALUES (@VERSION, @CREATETIME,@UPDATETIME,@CREATEUSER,@DESCRIPTION)";
string sqlInsertDbinfo =
"INSERT INTO DB_INFO (VERSION, CREATETIME,UPDATETIME,CREATEUSER,DESCRIPTION) VALUES (@VERSION, @CREATETIME,@UPDATETIME,@CREATEUSER,@DESCRIPTION)";
using (var cmd = new SQLiteCommand(sqlInsertDbinfo, sqliteConn))
{
cmd.Parameters.AddWithValue("@VERSION", 2.0);
@ -967,27 +1113,29 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
cmd.Parameters.AddWithValue("@DESCRIPTION", "DESCRIPTION");
cmd.ExecuteNonQuery();
}
string deleteFj = "delete from FJ";
using (var cmd = new SQLiteCommand(deleteFj, sqliteConn))
{
cmd.ExecuteNonQuery();
}
for (int i = 0; i < filigtlist.Count; i++)
{
var flightid = filigtlist[i];
string fligthpicsql = "select * from lasa_mediafile where \"FlightId\"='"+ flightid.flighttaskid+"'";
string fligthpicsql = "select * from lasa_mediafile where \"FlightId\"='" + flightid.flighttaskid +
"'";
var pics = _client.Ado.SqlQuery<LasaMediaFile>(fligthpicsql);
for (int j = 0; j < pics.Count; j++)
{
var pic = pics[j];
var imageStream = _minioService.GetObjectAsStream("", pic.ObjectKey+"");
if (imageStream.Result==null)
var imageStream = _minioService.GetObjectAsStream("", pic.ObjectKey + "");
if (imageStream.Result == null)
{
continue;
}
byte[] bytes;
using (MemoryStream memoryStream = new MemoryStream())
{
@ -996,12 +1144,15 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
}
string fileHash;
using (var sha256 = SHA256.Create()) {
var hashBytes = sha256.ComputeHash(bytes);
using (var sha256 = SHA256.Create())
{
var hashBytes = sha256.ComputeHash(bytes);
fileHash = BitConverter.ToString(hashBytes).Replace("-",
"").ToLower();
}
string sqlintoFj = "INSERT INTO FJ (BSM, DKLX,DKBSM,ZDKBH,XZQDM,FJMC,FJLX,PSTZ,FJ,FJHXZ,PSSJ,XDGD,JDGD,Longitude,Latitude,PSFYJ,PSJD,PSHGJ,PSJJ,FJYSKD,FJYSGD,PSDXZXX,PSRY,SPKZXX,ZSDM,JYM) " +
"").ToLower();
}
string sqlintoFj =
"INSERT INTO FJ (BSM, DKLX,DKBSM,ZDKBH,XZQDM,FJMC,FJLX,PSTZ,FJ,FJHXZ,PSSJ,XDGD,JDGD,Longitude,Latitude,PSFYJ,PSJD,PSHGJ,PSJJ,FJYSKD,FJYSGD,PSDXZXX,PSRY,SPKZXX,ZSDM,JYM) " +
"VALUES (@BSM, @DKLX,@DKBSM,@ZDKBH,@XZQDM,@FJMC,@FJLX,@PSTZ,@FJ,@FJHXZ,@PSSJ,@XDGD,@JDGD,@Longitude,@Latitude,@PSFYJ,@PSJD,@PSHGJ,@PSJJ,@FJYSKD,@FJYSGD,@PSDXZXX,@PSRY,@SPKZXX,@ZSDM,@JYM)";
using (var cmd = new SQLiteCommand(sqlintoFj, sqliteConn))
{
@ -1015,7 +1166,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
cmd.Parameters.AddWithValue("@PSTZ", "Y");
cmd.Parameters.AddWithValue("@FJ", bytes);
cmd.Parameters.AddWithValue("@FJHXZ", fileHash);
cmd.Parameters.AddWithValue("@PSSJ",pic.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"));
cmd.Parameters.AddWithValue("@PSSJ", pic.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"));
cmd.Parameters.AddWithValue("@XDGD", pic.RelativeAltitude);
cmd.Parameters.AddWithValue("@JDGD", pic.AbsoluteAltitude);
cmd.Parameters.AddWithValue("@Longitude", pic.Lat);
@ -1035,9 +1186,10 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
}
}
}
sqliteConn.Close();
}
}
AirPortUploadReq airPortUploadReq = new AirPortUploadReq();
airPortUploadReq.code = "AirportData";
airPortUploadReq.regioncode = filigtlist[0].xzqdm;
@ -1067,13 +1219,14 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
dbfine.url = read;
dbfine.hashcode = "adewfdafdaf";
var info = await uow.DbfineInfo.InsertAsync(dbfine);
uow.Commit();
Console.WriteLine(info);
}
await UploadFile(req);
}
// 安全获取响应头值的方法
private static string GetHeaderValue(HttpResponseMessage response, string headerName)
{
@ -1141,30 +1294,32 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
//获取飞行数据
public async Task<Response<DroneDockflightRes>> GetDroneDockflightInfos(string taskid)
{
DroneDockflightRes res=new DroneDockflightRes();
var detailinfo=await Repository.ChangeRepository<SugarRepositiry<DroneDocktaskdetail>>()
DroneDockflightRes res = new DroneDockflightRes();
var detailinfo = await Repository.ChangeRepository<SugarRepositiry<DroneDocktaskdetail>>()
.AsQueryable()
.Where(r=>r.flighttaskid==taskid)
.Where(r => r.flighttaskid == taskid)
.ToListAsync();
if (detailinfo.Count > 0)
{
var taskId= detailinfo[0].taskid;
var taskId = detailinfo[0].taskid;
var taskinfo = await Repository.AsQueryable().Where(r => r.id == taskId).FirstAsync();
var flighttaskinfo= await Repository.ChangeRepository<SugarRepositiry<LasaTask>>()
.AsQueryable()
.Where(r => r.FlightId == taskid)
.FirstAsync();
var flighttaskinfo = await Repository.ChangeRepository<SugarRepositiry<LasaTask>>()
.AsQueryable()
.Where(r => r.FlightId == taskid)
.FirstAsync();
if (taskinfo != null)
{
res.bizidname = taskinfo.bizidname;
res.taskname = taskinfo.taskname;
}
res.tasklist = detailinfo;
if(flighttaskinfo != null)
if (flighttaskinfo != null)
{
res.taskExecuteTime =Convert.ToDateTime(flighttaskinfo.ExecuteTime).ToString("yyyy-MM-dd HH:mm:ss");
res.waylineName=flighttaskinfo.TaskAirLineName;
res.flightTaskType=Convert.ToInt32(flighttaskinfo.FlightTaskType);
res.taskExecuteTime =
Convert.ToDateTime(flighttaskinfo.ExecuteTime).ToString("yyyy-MM-dd HH:mm:ss");
res.waylineName = flighttaskinfo.TaskAirLineName;
res.flightTaskType = Convert.ToInt32(flighttaskinfo.FlightTaskType);
switch (flighttaskinfo.Status)
{
case 0:
@ -1176,7 +1331,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
break;
case 2:
res.flightTaskState = 3;
res.flightTaskState = 3;
break;
case 5:
@ -1187,14 +1342,12 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
break;
}
}
}
return new Response<DroneDockflightRes>
{
Result = res
};
}
}
}
}

@ -601,7 +601,7 @@ namespace OpenAuth.App.ServiceApp
}
//添加航线
public async Task<Response<bool>> AddAirLine(LasaAirLine lasaAirLine)
public async Task<Response<string>> AddAirLine(LasaAirLine lasaAirLine)
{
using (var db = UnitWork.CreateContext())
{
@ -610,9 +610,9 @@ namespace OpenAuth.App.ServiceApp
lasaAirLine.CreateTime = DateTime.Now;
var flag = await db.LasaAirLine.InsertAsync(lasaAirLine);
if (db.Commit())
return new Response<bool> { Result = true, Message = "添加成功" };
return new Response<string> { Result = lasaAirLine.Id, Message = "添加成功" };
else
return new Response<bool> { Result = false, Message = "添加失败" };
return new Response<string> { Result = "", Message = "添加失败" };
}
}

@ -0,0 +1,39 @@
using SqlSugar;
namespace OpenAuth.Repository.Domain;
[SugarTable("lasa_aiachievement")]
public class LasaAiAchievement
{
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
public string Id { get; set; }
[SugarColumn(ColumnName = "Title")]
public string Title { get; set; }
[SugarColumn(ColumnName = "ConfidenceLevel")]
public float? ConfidenceLevel { get; set; }
[SugarColumn(ColumnName = "Lng")]
public float? Lng { get; set; }
[SugarColumn(ColumnName = "Lat")]
public float? Lat { get; set; }
[SugarColumn(ColumnName = "Address")]
public string Address { get; set; }
[SugarColumn(ColumnName = "CreateTime")]
public DateTime? CreateTime { get; set; }
[SugarColumn(ColumnName = "PayloadModel")]
public string PayloadModel { get; set; }
[SugarColumn(ColumnName = "AiModel")]
public string AiModel { get; set; }
[SugarColumn(ColumnName = "Cover")]
public string Cover { get; set; }
[SugarColumn(IsIgnore = true)] public List<LasaAiAchievementDetail> AiAchievementDetailList { get; set; }
}

@ -0,0 +1,15 @@
using SqlSugar;
namespace OpenAuth.Repository.Domain;
[SugarTable("lasa_aiachievement_detail")]
public class LasaAiAchievementDetail
{
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
public string Id { get; set; }
[SugarColumn(ColumnName = "Image")] public string Image { get; set; }
[SugarColumn(ColumnName = "AiAchievementId")]
public string AiAchievementId { get; set; }
}

@ -0,0 +1,44 @@
using Infrastructure;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.Request;
using OpenAuth.App.ServiceApp.AI;
using OpenAuth.Repository.Domain;
namespace OpenAuth.WebApi.Controllers.ServiceControllers;
/// <summary>
/// AI成果控制器
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class AiAchievementController : ControllerBase
{
private readonly AiAchievementServiceApp _app;
public AiAchievementController(AiAchievementServiceApp app)
{
_app = app;
}
/// <summary>
/// AI成果列表
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
[HttpGet]
public async Task<Response<PageInfo<List<LasaAiAchievement>>>> GetAiAchievementList([FromQuery] PageReq req)
{
return await _app.GetAiAchievementList(req);
}
/// <summary>
/// AI成果详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet]
public async Task<Response<LasaAiAchievement>> GetAiAchievement(string id)
{
return await _app.GetAiAchievement(id);
}
}

@ -1,6 +1,7 @@
using Infrastructure;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.ServiceApp;
using OpenAuth.App.ServiceApp.Algo;
using OpenAuth.App.ServiceApp.Algo.Request;
using OpenAuth.Repository.Domain;

@ -290,25 +290,32 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
}
/// <summary>
/// 省任务获取无人机状态信息
/// </summary>
/// <param name="deviceid"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpGet]
[AllowAnonymous]
[Route("/zhcfzx/droneAirport/getDroneStatus")]
public async Task<ReciveData<string>> getDroneStatus( string deviceid)
public async Task<ReciveData<string>> GetDroneStatus(string deviceid)
{
var result = new ReciveData<string>();
if (Request.Headers.TryGetValue("x-lc-token", out var tokenValue))
{
var tokenflag = _helper.Verify(tokenValue);
// todo 完成后,需要恢复
//var tokenflag = _helper.Verify(tokenValue);
var tokenflag = true;
if (tokenflag)
{
try
{
var data = await _app.getDroneStatus(deviceid);
var data = await _app.GetDroneStatus(deviceid);
result.data = data.Result;
result.code = data.Code;
result.message = data.Message;
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
Response.Headers.Add("x-lc-secret", data.Secret);
}
@ -316,8 +323,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
{
result.code = 200;
result.message = "error";
//Request.Headers.TryGetValue("traceid", out var traceid);
//result.traceid = traceid;
result.traceid = Guid.NewGuid().ToString();
}
return result;
@ -563,7 +569,6 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
[HttpGet]
[AllowAnonymous]
public async Task<ReciveData<string>> dbupload (string taskid)
{
var result = new ReciveData<string>();

@ -365,7 +365,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<Response<bool>> AddAirLine(LasaAirLine info)
public async Task<Response<string>> AddAirLine(LasaAirLine info)
{
return await _app.AddAirLine(info);
}

@ -71,6 +71,7 @@ namespace OpenAuth.WebApi.Model.mqtt
{
topics.AddRange(new[]
{
// $"thing/product/1581F8HGX254V00A0BUY/osd",
$"thing/product/{sn}/osd"
});
}

Loading…
Cancel
Save