Merge remote-tracking branch 'origin/main'

# Conflicts:
#	OpenAuth.App/ServiceApp/ManageApp.cs
feature-flyModify
陈伟 2025-06-12 13:57:45 +08:00
commit db582313f3
8 changed files with 415 additions and 199 deletions

View File

@ -512,17 +512,17 @@ namespace OpenAuth.App
{
using (var uow = base.UnitWork.CreateContext())
{
foreach (var item in uow.Db.DbMaintenance.GetTableInfoList().Where(r => r.Name.ToLower().StartsWith("lasa_workspace")))
foreach (var item in uow.Db.DbMaintenance.GetTableInfoList().Where(r => r.Name.ToLower().StartsWith("lasa_spacelockfly")))
{
//string entityName = item.Name.Substring(0, 1).ToUpper() + item.Name.Substring(1, 7).ToLower() + item.Name.Substring(9, 1).ToUpper() + item.Name.Substring(10).ToLower();/*实体名大写*/
string entityName = "LasaWorkspace1";
string entityName = "LasaSpaceLockFly";
uow.Db.MappingTables.Add(entityName, item.Name);
//foreach (var col in db.DbMaintenance.GetColumnInfosByTableName(item.Name))
//{
// db.MappingColumns.Add(col.DbColumnName.ToUpper() /*类的属性大写*/, col.DbColumnName, entityName);
//}
}
uow.Db.DbFirst.Where(r => r.ToLower().StartsWith("lasa_workspace")).IsCreateAttribute().CreateClassFile("E:\\低空态势感知\\code\\OpenAuth.Repository\\Domain", "OpenAuth.Repository.Domain");
uow.Db.DbFirst.Where(r => r.ToLower().StartsWith("lasa_spacelockfly")).IsCreateAttribute().CreateClassFile("E:\\低空态势感知\\code\\OpenAuth.Repository\\Domain", "OpenAuth.Repository.Domain");
uow.Commit();
}
return "更新实体成功";

View File

@ -1,7 +1,9 @@
using Infrastructure;
using DocumentFormat.OpenXml.Wordprocessing;
using Infrastructure;
using OpenAuth.App.BaseApp.Base;
using OpenAuth.App.Interface;
using OpenAuth.App.ServiceApp.Request;
using OpenAuth.App.ServiceApp.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using OpenAuth.WebApi.CloudSdk;
@ -11,8 +13,7 @@ namespace OpenAuth.App.ServiceApp
{
public class ManageApp : SqlSugarBaseApp<LasaDronePort, SugarDbContext>
{
public ManageApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<LasaDronePort> repository, IAuth auth)
: base(unitWork, repository, auth)
public ManageApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<LasaDronePort> repository, IAuth auth) : base(unitWork, repository, auth)
{
}
@ -32,14 +33,12 @@ namespace OpenAuth.App.ServiceApp
PageSize = pageSize,
TotalCount = totalCount
};
var list = await Repository.GetPageListAsync(it => it.Name.Contains(key), pageModel, it => it.UpdateTime,
OrderByType.Desc);
var list = await Repository.GetPageListAsync(it => it.Name.Contains(key), pageModel, it => it.UpdateTime, OrderByType.Desc);
return new Response<PageInfo<List<LasaDronePort>>>
{
Result = new PageInfo<List<LasaDronePort>> { Items = list, Total = totalCount }
};
}
/// <summary>
/// 获取无人机列表
/// </summary>
@ -83,7 +82,6 @@ namespace OpenAuth.App.ServiceApp
};
}
}
//添加任务
public async Task<Response<bool>> AddTask(LasaTask task)
{
@ -93,18 +91,17 @@ namespace OpenAuth.App.ServiceApp
task.CreateId = _auth.GetCurrentUser().User.Id;
task.CreateTime = DateTime.Now;
var flag = await db.LasaTask.InsertAsync(task);
if (db.Commit())
if(db.Commit())
return new Response<bool> { Result = true, Message = "添加成功" };
else
return new Response<bool> { Result = false, Message = "添加失败" };
return new Response<bool> { Result = false, Message = "添加失败" };
}
}
//编辑任务
public async Task<Response<bool>> EditTask(LasaTask task)
{
using (var db = UnitWork.CreateContext())
{
{
var flag = await db.LasaTask.UpdateAsync(task);
if (db.Commit())
return new Response<bool> { Result = true, Message = "编辑成功" };
@ -112,7 +109,6 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "编辑失败" };
}
}
//删除任务
public async Task<Response<bool>> DeleteTask(string id)
{
@ -125,9 +121,7 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "删除失败" };
}
}
#region 航线管理
/// <summary>
/// 获取航线列表
/// </summary>
@ -149,7 +143,6 @@ namespace OpenAuth.App.ServiceApp
};
}
}
//添加航线
public async Task<Response<bool>> AddAirLine(LasaAirLine lasaAirLine)
{
@ -165,7 +158,6 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "添加失败" };
}
}
//编辑航线
public async Task<Response<bool>> EditAirLine(LasaAirLine lasaAirLine)
{
@ -178,7 +170,6 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "编辑失败" };
}
}
//删除航线
public async Task<Response<bool>> DeleteAirLine(string id)
{
@ -194,9 +185,7 @@ namespace OpenAuth.App.ServiceApp
//生成航线文件
#endregion
#region 项目管理
#region 项目管理
/// <summary>
/// 获取项目列表
/// </summary>
@ -209,29 +198,40 @@ namespace OpenAuth.App.ServiceApp
{
var list = await db.LasaWorkspace.AsQueryable()
.WhereIF(!string.IsNullOrEmpty(key), a => a.WorkspaceName.Contains(key))
.LeftJoin<SysUser>((a,u)=>a.CreateId==u.Id)
.Select<dynamic>((a, u) => new
{
a.Id,
a.WorkspaceName,
a.WorkspaceDesc,
a.Sate,
a.CreateTime,
a.CreateId,
u.Account,
u.Name
})
.ToListAsync();
return new Response<List<LasaWorkspace>>
{
Result = list
Result = list
};
}
}
//添加项目
public async Task<Response<bool>> AddWorkspace(WorkSpace info)
{
using (var db = UnitWork.CreateContext())
{
LasaWorkspace lasaWorkspace = info.LasaWorkspace;
LasaWorkspace lasaWorkspace= info.LasaWorkspace;
lasaWorkspace.Id = Guid.NewGuid().ToString();
lasaWorkspace.CreateId = _auth.GetCurrentUser().User.Id;
lasaWorkspace.CreateTime = DateTime.Now;
List<LasaSpaceDevice> devices = new List<LasaSpaceDevice>();
foreach (var item in info.DeviceIds)
List<LasaSpaceDevice> devices= new List<LasaSpaceDevice>();
foreach(var item in info.DeviceIds)
{
LasaSpaceDevice sd = new LasaSpaceDevice();
sd.WorkSpaceId = lasaWorkspace.Id;
sd.WorkSpaceId=lasaWorkspace.Id;
sd.DeviceId = item;
devices.Add(sd);
}
@ -245,6 +245,12 @@ namespace OpenAuth.App.ServiceApp
users.Add(sd);
}
foreach (var item in info.Lockfly)
{
item.Id = Guid.NewGuid().ToString();
item.WorkSpaceId= lasaWorkspace.Id;
await db.LasaSpaceLockFly.InsertAsync(item);
}
await db.LasaWorkspace.InsertAsync(lasaWorkspace);
await db.LasaSpaceDevice.InsertRangeAsync(devices);
await db.LasaSpaceUser.InsertRangeAsync(users);
@ -254,7 +260,6 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "添加失败" };
}
}
//编辑项目
public async Task<Response<bool>> EditWorkspace(WorkSpace info)
{
@ -279,10 +284,23 @@ namespace OpenAuth.App.ServiceApp
sd.UserId = item;
users.Add(sd);
}
foreach (var item in info.Lockfly)
{
if (!string.IsNullOrEmpty(item.Id))
{
await db.LasaSpaceLockFly.UpdateAsync(item);
}
else
{
item.Id = Guid.NewGuid().ToString();
item.WorkSpaceId = lasaWorkspace.Id;
await db.LasaSpaceLockFly.InsertAsync(item);
}
}
await db.LasaSpaceDevice.DeleteAsync(r => r.WorkSpaceId == lasaWorkspace.Id);
await db.LasaSpaceDevice.DeleteAsync(r=>r.WorkSpaceId == lasaWorkspace.Id);
await db.LasaSpaceDevice.InsertRangeAsync(devices);
await db.LasaSpaceUser.DeleteAsync(r => r.WorkSpaceId == lasaWorkspace.Id);
await db.LasaSpaceUser.DeleteAsync(r=>r.WorkSpaceId==lasaWorkspace.Id);
await db.LasaSpaceUser.InsertRangeAsync(users);
if (db.Commit())
return new Response<bool> { Result = true, Message = "编辑成功" };
@ -290,6 +308,55 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "编辑失败" };
}
}
//获取无人机信息
public async Task<Response<List<LasaUav>>> GetUavList()
{
using (var db = UnitWork.CreateContext())
{
var list=db.LasaSpaceDevice.AsQueryable()?.Select(r=>r.DeviceId).ToList();
var uavlist = await db.LasaUav.AsQueryable()
.Where(r=>!list.Contains(r.Id))
.ToListAsync();
return new Response<List<LasaUav>>
{
Result=uavlist
};
}
}
/// <summary>
/// 根据项目id获取项目信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<Response<WorkSpaceRes>> GetWorkSpaceById(string id)
{
using (var db = UnitWork.CreateContext())
{
WorkSpaceRes res=new WorkSpaceRes();
var workspace= await db.LasaWorkspace.AsQueryable().Where(r=>r.Id==id).FirstAsync();
var sysuser = db.User.AsQueryable()
.LeftJoin<LasaSpaceUser>((r, a) => r.Id == a.UserId)
.Where((r, a) => a.WorkSpaceId == id)
.Select((r, a) => r).ToList();
var uav=db.LasaUav.AsQueryable()
.LeftJoin<LasaSpaceDevice>((r,a)=>r.Id==a.DeviceId)
.Where((r,a)=>a.WorkSpaceId==id)
.Select((r,a)=>r).ToList();
var lockfly=db.LasaSpaceLockFly.AsQueryable().Where(r=>r.WorkSpaceId==id).ToList();
res.users = sysuser;
res.lasaUavs = uav;
res.lasaSpaceLockFlies = lockfly;
res.workspace = workspace;
return new Response<WorkSpaceRes>
{
Result = res
};
}
}
//删除项目
public async Task<Response<bool>> DeleteWorkspace(string id)
@ -306,7 +373,6 @@ namespace OpenAuth.App.ServiceApp
return new Response<bool> { Result = false, Message = "删除失败" };
}
}
#endregion
public async Task ExecuteFlyTask(string taskId)
@ -324,4 +390,4 @@ namespace OpenAuth.App.ServiceApp
// todo
}
}
}
}

View File

@ -12,5 +12,6 @@ namespace OpenAuth.App.ServiceApp.Request
public LasaWorkspace LasaWorkspace { get; set; }
public List<long> UserIds { get; set; }
public List<string> DeviceIds { get; set; }
public List<LasaSpaceLockFly> Lockfly { get; set; }
}
}

View File

@ -0,0 +1,17 @@
using OpenAuth.Repository.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OpenAuth.App.ServiceApp.Response
{
public class WorkSpaceRes
{
public LasaWorkspace workspace { get; set; }
public List<SysUser> users { get; set; }
public List<LasaUav> lasaUavs { get; set; }
public List<LasaSpaceLockFly> lasaSpaceLockFlies { get; set; }
}
}

View File

@ -0,0 +1,63 @@
using System;
using System.Linq;
using System.Text;
using SqlSugar;
namespace OpenAuth.Repository.Domain
{
///<summary>
///项目阻飞参数表
///</summary>
[SugarTable("lasa_spacelockfly")]
public partial class LasaSpaceLockFly
{
public LasaSpaceLockFly(){
WindSpeed = 0;
WeatherWindSpeed=0;
}
/// <summary>
/// Desc:主键
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true)]
public string Id {get;set;}
/// <summary>
/// Desc:名称
/// Default:
/// Nullable:True
/// </summary>
public string Name {get;set;}
/// <summary>
/// Desc:风速
/// Default:
/// Nullable:True
/// </summary>
public int WindSpeed {get;set;}
/// <summary>
/// Desc:天气预报风速
/// Default:
/// Nullable:True
/// </summary>
public int WeatherWindSpeed {get;set;}
/// <summary>
/// Desc:雨量
/// Default:
/// Nullable:True
/// </summary>
public string RainFall {get;set;}
/// <summary>
/// Desc:雨量
/// Default:
/// Nullable:True
/// </summary>
public string WorkSpaceId { get; set; }
}
}

View File

@ -11,171 +11,194 @@ namespace OpenAuth.Repository.Domain
[SugarTable("lasa_workspace")]
public partial class LasaWorkspace
{
public LasaWorkspace(){
public LasaWorkspace()
{
// 初始化所有bool字段为false
IsAllowRequestCode = false;
IsCloudBlockFlight = false;
IsWeatherBlockFlight = false;
IsMultipleAircraft = false;
IsAirportRecord = false;
IsAircraftRecord = false;
IsLiveShare = false;
IsMediaShare = false;
IsDeviceTrans = false;
IsDeicePlaneTrans = false;
IsDelete = false;
}
/// <summary>
/// Desc:标识
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true)]
public string Id { get; set; }
/// <summary>
/// Desc:项目名称
/// Default:
/// Nullable:False
/// </summary>
public string WorkspaceName { get; set; }
/// <summary>
/// Desc:项目描述
/// Default:
/// Nullable:False
/// </summary>
public string WorkspaceDesc { get; set; }
/// <summary>
/// Desc:平台名称
/// Default:
/// Nullable:True
/// </summary>
public string PlatformName { get; set; }
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// Desc:创建人
/// Default:
/// Nullable:True
/// </summary>
public long? CreateId { get; set; }
/// <summary>
/// Desc:绑定码
/// Default:
/// Nullable:True
/// </summary>
public string BindCode { get; set; }
/// <summary>
/// Desc:作业中心点经度
/// Default:0
/// Nullable:True
/// </summary>
public decimal? CenterLng { get; set; }
/// <summary>
/// Desc:作业中心点维度
/// Default:
/// Nullable:True
/// </summary>
public decimal? CenterLat { get; set; }
/// <summary>
/// Desc:是否允许申请码加入项目
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsAllowRequestCode { get; set; }
/// <summary>
/// Desc:申请码
/// Default:
/// Nullable:True
/// </summary>
public string RequestCode { get; set; }
/// <summary>
/// Desc:申请码截止时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime? RequestCodeCutOffTime { get; set; }
/// <summary>
/// Desc:云端阻飞
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsCloudBlockFlight { get; set; }
/// <summary>
/// Desc:天气预报阻飞
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsWeatherBlockFlight { get; set; }
/// <summary>
/// Desc:多机安全起降
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsMultipleAircraft { get; set; }
/// <summary>
/// Desc:机场自动录制
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsAirportRecord { get; set; }
/// <summary>
/// Desc:飞行器自动录制
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsAircraftRecord { get; set; }
/// <summary>
/// Desc:直播分享
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsLiveShare { get; set; }
/// <summary>
/// Desc:媒体分享
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsMediaShare { get; set; }
/// <summary>
/// Desc:设备直传
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsDeviceTrans { get; set; }
/// <summary>
/// Desc:设备直传--计划设置
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsDeicePlaneTrans { get; set; }
/// <summary>
/// Desc:项目状态0进行中1已归档
/// Default:
/// Nullable:True
/// </summary>
public short Sate { get; set; }
}
/// <summary>
/// Desc:标识
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey=true)]
public string Id {get;set;}
/// <summary>
/// Desc:项目名称
/// Default:
/// Nullable:False
/// </summary>
public string WorkspaceName {get;set;}
/// <summary>
/// Desc:项目描述
/// Default:
/// Nullable:False
/// </summary>
public string WorkspaceDesc {get;set;}
/// <summary>
/// Desc:平台名称
/// Default:
/// Nullable:True
/// </summary>
public string PlatformName {get;set;}
/// <summary>
/// Desc:创建时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime? CreateTime {get;set;}
/// <summary>
/// Desc:创建人
/// Default:
/// Nullable:True
/// </summary>
public long? CreateId {get;set;}
/// <summary>
/// Desc:绑定码
/// Default:
/// Nullable:True
/// </summary>
public string BindCode {get;set;}
/// <summary>
/// Desc:作业中心点经度
/// Default:0
/// Nullable:True
/// </summary>
public decimal? CenterLng {get;set;}
/// <summary>
/// Desc:作业中心点维度
/// Default:
/// Nullable:True
/// </summary>
public decimal? CenterLat {get;set;}
/// <summary>
/// Desc:是否允许申请码加入项目
/// Default:false
/// Nullable:True
/// </summary>
public bool IsAllowRequestCode {get;set;}
/// <summary>
/// Desc:申请码
/// Default:
/// Nullable:True
/// </summary>
public string RequestCode {get;set;}
/// <summary>
/// Desc:申请码截止时间
/// Default:
/// Nullable:True
/// </summary>
public DateTime? RequestCodeCutOffTime {get;set;}
/// <summary>
/// Desc:云端阻飞
/// Default:false
/// Nullable:True
/// </summary>
public bool IsCloudBlockFlight {get;set;}
/// <summary>
/// Desc:天气预报阻飞
/// Default:false
/// Nullable:True
/// </summary>
public bool IsWeatherBlockFlight {get;set;}
/// <summary>
/// Desc:多机安全起降
/// Default:false
/// Nullable:True
/// </summary>
public bool IsMultipleAircraft {get;set;}
/// <summary>
/// Desc:机场自动录制
/// Default:false
/// Nullable:True
/// </summary>
public bool IsAirportRecord {get;set;}
/// <summary>
/// Desc:飞行器自动录制
/// Default:false
/// Nullable:True
/// </summary>
public bool IsAircraftRecord {get;set;}
/// <summary>
/// Desc:直播分享
/// Default:false
/// Nullable:True
/// </summary>
public bool IsLiveShare {get;set;}
/// <summary>
/// Desc:媒体分享
/// Default:false
/// Nullable:True
/// </summary>
public bool IsMediaShare {get;set;}
/// <summary>
/// Desc:设备直传
/// Default:false
/// Nullable:True
/// </summary>
public bool IsDeviceTrans {get;set;}
/// <summary>
/// Desc:设备直传--计划设置
/// Default:false
/// Nullable:True
/// </summary>
public bool IsDeicePlaneTrans {get;set;}
/// <summary>
/// Desc:项目状态0进行中1已归档
/// Default:
/// Nullable:True
/// </summary>
public short Sate {get;set;}
/// <summary>
/// Desc:是否删除
/// Default:false
/// Nullable:True
/// </summary>
public bool IsDelete {get;set;}
/// <summary>
/// Desc:是否删除
/// Default:false
/// Nullable:True
/// </summary>
[SugarColumn(DefaultValue = "false")]
public bool IsDelete { get; set; }
}
}

View File

@ -67,6 +67,7 @@ namespace OpenAuth.Repository
public SugarRepositiry<LasaWorkspace> LasaWorkspace { get; set; }
public SugarRepositiry<LasaSpaceUser> LasaSpaceUser { get; set; }
public SugarRepositiry<LasaSpaceDevice> LasaSpaceDevice { get; set; }
public SugarRepositiry<LasaSpaceLockFly> LasaSpaceLockFly { get; set; }
#endregion
}
}

View File

@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using OpenAuth.App.ServiceApp;
using OpenAuth.App.ServiceApp.Request;
using OpenAuth.App.ServiceApp.Response;
using OpenAuth.Repository.Domain;
namespace OpenAuth.WebApi.Controllers.ServiceControllers
@ -258,9 +259,9 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
/// <param name="key"></param>
/// <returns></returns>
[HttpGet]
public async Task<Response<List<LasaWorkspace>>> GetWorkspaceList(string key)
public async Task<Response<List<dynamic>>> GetWorkspaceList(string key)
{
var result = new Response<List<LasaWorkspace>>();
var result = new Response<List<dynamic>>();
try
{
result = await _app.GetWorkspaceList(key);
@ -304,6 +305,50 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
return await _app.DeleteWorkspace(id);
}
/// <summary>
/// 获取无人机列表,添加项目使用
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
[HttpGet]
public async Task<Response<List<LasaUav>>> GetUavList()
{
var result = new Response<List<LasaUav>>();
try
{
result = await _app.GetUavList();
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
/// <summary>
/// 根据项目id获取项目信息编辑项目使用
/// </summary>
/// <param name="id">项目id</param>
/// <returns></returns>
[HttpGet]
public async Task<Response<WorkSpaceRes>> GetWorkSpaceById(string id)
{
var result = new Response<WorkSpaceRes>();
try
{
result = await _app.GetWorkSpaceById(id);
}
catch (Exception ex)
{
result.Code = 500;
result.Message = ex.Message;
}
return result;
}
#endregion
// 航线任务在云端的 共享查看、下发执行、取消以及进度上报等功能。