|
|
|
@ -19,6 +19,12 @@ using DocumentFormat.OpenXml.Drawing.Charts;
|
|
|
|
|
using Org.BouncyCastle.Ocsp;
|
|
|
|
|
using System.Net.Http.Headers;
|
|
|
|
|
using DocumentFormat.OpenXml.Office2016.Drawing.ChartDrawing;
|
|
|
|
|
using System.Data.SQLite;
|
|
|
|
|
using Infrastructure.CloudSdk.minio;
|
|
|
|
|
using Infrastructure.Extensions;
|
|
|
|
|
using System.Security.Cryptography;
|
|
|
|
|
using System.Text.Json.Nodes;
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace OpenAuth.App.ServiceApp.DroneDocking
|
|
|
|
@ -27,10 +33,14 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
|
|
|
|
|
{
|
|
|
|
|
private EncryptionHelper _helper;
|
|
|
|
|
private IConfiguration configuration;
|
|
|
|
|
public DroneDockApp(EncryptionHelper helper, IConfiguration configuration, ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<DroneDocktask> repository, IAuth auth) : base(unitWork, repository, auth)
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
_helper = helper;
|
|
|
|
|
this.configuration = configuration;
|
|
|
|
|
_client = client;
|
|
|
|
|
_minioService = minioService;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -830,12 +840,12 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
|
|
|
|
|
return Response;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Response<string> UploadFile(AirPortUploadDbReq req)
|
|
|
|
|
public async Task<Response<string>> UploadFile(AirPortUploadDbReq req)
|
|
|
|
|
{
|
|
|
|
|
Response<string> Response = new Response<string>();
|
|
|
|
|
var filePath = req.filePath;
|
|
|
|
|
var uploadUrl = req.fileUrl;
|
|
|
|
|
var fileName = Path.GetFileName(filePath);
|
|
|
|
|
var fileName = req.filename;
|
|
|
|
|
byte[] fileBuffer = null;
|
|
|
|
|
HttpClient client = null;
|
|
|
|
|
MultipartFormDataContent formData = null;
|
|
|
|
@ -852,7 +862,7 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
|
|
|
|
|
fileContent.Headers.ContentDisposition.FileName = fileName;
|
|
|
|
|
//注意:务必 根据 文件扩展名,这里指定 ContentType
|
|
|
|
|
fileContent.Headers.ContentType = new
|
|
|
|
|
MediaTypeHeaderValue(fileName);
|
|
|
|
|
MediaTypeHeaderValue("application/octet-stream");
|
|
|
|
|
formData.Add(fileContent);
|
|
|
|
|
var request = new HttpRequestMessage
|
|
|
|
|
{
|
|
|
|
@ -893,33 +903,176 @@ namespace OpenAuth.App.ServiceApp.DroneDocking
|
|
|
|
|
//查询数据 检查是否有重复数据
|
|
|
|
|
var info = uow.DbfineInfo.AsQueryable().Where(r => r.taskid == taskid).First();
|
|
|
|
|
|
|
|
|
|
if (true)
|
|
|
|
|
{
|
|
|
|
|
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.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);
|
|
|
|
|
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 deleteDbinfo = "delete from DB_INFO";
|
|
|
|
|
using (var cmd = new SQLiteCommand(deleteDbinfo, sqliteConn))
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
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)";
|
|
|
|
|
using (var cmd = new SQLiteCommand(sqlInsertDbinfo, sqliteConn))
|
|
|
|
|
{
|
|
|
|
|
cmd.Parameters.AddWithValue("@VERSION", 2.0);
|
|
|
|
|
cmd.Parameters.AddWithValue("@CREATETIME", dt24);
|
|
|
|
|
cmd.Parameters.AddWithValue("@UPDATETIME", dt24);
|
|
|
|
|
cmd.Parameters.AddWithValue("@CREATEUSER", "system");
|
|
|
|
|
cmd.Parameters.AddWithValue("@DESCRIPTION", "DESCRIPTION");
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
string deleteFj = "delete from FJ";
|
|
|
|
|
using (var cmd = new SQLiteCommand(deleteFj, sqliteConn))
|
|
|
|
|
{
|
|
|
|
|
string x_lc_secret = _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;
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0; i < filigtlist.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
var flightid = filigtlist[i];
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
byte[] bytes;
|
|
|
|
|
using (MemoryStream memoryStream = new MemoryStream())
|
|
|
|
|
{
|
|
|
|
|
imageStream.Result.CopyTo(memoryStream); // 将原始流复制到MemoryStream中
|
|
|
|
|
bytes = memoryStream.ToArray(); // 获取MemoryStream的字节数组表示
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string fileHash;
|
|
|
|
|
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) " +
|
|
|
|
|
"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))
|
|
|
|
|
{
|
|
|
|
|
cmd.Parameters.AddWithValue("@BSM", pic.Id);
|
|
|
|
|
cmd.Parameters.AddWithValue("@DKLX", flightid.dklx);
|
|
|
|
|
cmd.Parameters.AddWithValue("@DKBSM", flightid.dkbh);
|
|
|
|
|
cmd.Parameters.AddWithValue("@ZDKBH", flightid.zdkbh);
|
|
|
|
|
cmd.Parameters.AddWithValue("@XZQDM", flightid.xzqdm);
|
|
|
|
|
cmd.Parameters.AddWithValue("@FJMC", pic.Name);
|
|
|
|
|
cmd.Parameters.AddWithValue("@FJLX", 1);
|
|
|
|
|
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("@XDGD", pic.RelativeAltitude);
|
|
|
|
|
cmd.Parameters.AddWithValue("@JDGD", pic.AbsoluteAltitude);
|
|
|
|
|
cmd.Parameters.AddWithValue("@Longitude", pic.Lat);
|
|
|
|
|
cmd.Parameters.AddWithValue("@Latitude", pic.Lng);
|
|
|
|
|
cmd.Parameters.AddWithValue("@PSFYJ", pic.GimbalYawDegree);
|
|
|
|
|
cmd.Parameters.AddWithValue("@PSJD", pic.GimbalYawDegree);
|
|
|
|
|
cmd.Parameters.AddWithValue("@PSHGJ", pic.GimbalYawDegree);
|
|
|
|
|
cmd.Parameters.AddWithValue("@PSJJ", pic.FocalLength);
|
|
|
|
|
cmd.Parameters.AddWithValue("@FJYSKD", pic.Width);
|
|
|
|
|
cmd.Parameters.AddWithValue("@FJYSGD", pic.Height);
|
|
|
|
|
cmd.Parameters.AddWithValue("@PSDXZXX", "");
|
|
|
|
|
cmd.Parameters.AddWithValue("@PSRY", "system");
|
|
|
|
|
cmd.Parameters.AddWithValue("@SPKZXX", "wu");
|
|
|
|
|
cmd.Parameters.AddWithValue("@ZSDM", "UAV32_LJY2FPMYDE6UDES3P3ZD7V3IKQ");
|
|
|
|
|
cmd.Parameters.AddWithValue("@JYM", "DESCRIPTION");
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sqliteConn.Close();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
AirPortUploadReq airPortUploadReq = new AirPortUploadReq();
|
|
|
|
|
airPortUploadReq.code = "AirportData";
|
|
|
|
|
airPortUploadReq.regioncode = filigtlist[0].xzqdm;
|
|
|
|
|
List<string> strings = new List<string>();
|
|
|
|
|
strings.Add(filigtlist[0].xzqdm + ".db");
|
|
|
|
|
airPortUploadReq.filenames = strings;
|
|
|
|
|
var result = await getUploadFilePath(airPortUploadReq);
|
|
|
|
|
var jsonstr = result.Result;
|
|
|
|
|
JArray jObject = JArray.Parse(jsonstr);
|
|
|
|
|
var liststr = jObject[0].Value<JObject>();
|
|
|
|
|
var write = liststr["writeurl"].ToString();
|
|
|
|
|
var read = liststr["readurl"].ToString();
|
|
|
|
|
AirPortUploadDbReq req = new AirPortUploadDbReq();
|
|
|
|
|
req.fileUrl = write;
|
|
|
|
|
req.filePath = configuration.GetSection("DroneDocking:DbFile").Value;
|
|
|
|
|
req.filename = filigtlist[0].xzqdm + ".db";
|
|
|
|
|
using (var uow = base.UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
DbfineInfo dbfine = new DbfineInfo();
|
|
|
|
|
dbfine.id = Guid.NewGuid().ToString();
|
|
|
|
|
dbfine.taskid = taskid;
|
|
|
|
|
dbfine.regioncode = filigtlist[0].xzqdm;
|
|
|
|
|
dbfine.extension = ".db";
|
|
|
|
|
dbfine.attachment_count = 1;
|
|
|
|
|
dbfine.size = 1000;
|
|
|
|
|
dbfine.count = 50;
|
|
|
|
|
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)
|
|
|
|
|