|
|
|
@ -19,6 +19,9 @@ using OpenAuth.WebApi.CloudSdk;
|
|
|
|
|
using SqlSugar;
|
|
|
|
|
using System.Dynamic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using NPOI.HSSF.Record;
|
|
|
|
|
using OpenAuth.App.Request;
|
|
|
|
|
using OpenAuth.App.ServiceApp.AirLine.Request;
|
|
|
|
|
|
|
|
|
|
namespace OpenAuth.App.ServiceApp
|
|
|
|
|
{
|
|
|
|
@ -26,15 +29,18 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
{
|
|
|
|
|
private readonly MqttClientManager _mqttClientManager;
|
|
|
|
|
private readonly MinioService _minioService;
|
|
|
|
|
private readonly OpenJobApp _openJobApp;
|
|
|
|
|
CommonDataManager _commonDataManager;
|
|
|
|
|
|
|
|
|
|
public ManageApp(ISugarUnitOfWork<SugarDbContext> unitWork, ISimpleClient<LasaDronePort> repository, IAuth auth,
|
|
|
|
|
MqttClientManager mqttClientManager, CommonDataManager commonDataManager, MinioService minioService)
|
|
|
|
|
MqttClientManager mqttClientManager, CommonDataManager commonDataManager, MinioService minioService,
|
|
|
|
|
OpenJobApp openJobApp)
|
|
|
|
|
: base(unitWork, repository, auth)
|
|
|
|
|
{
|
|
|
|
|
_mqttClientManager = mqttClientManager;
|
|
|
|
|
_minioService = minioService;
|
|
|
|
|
_commonDataManager = commonDataManager;
|
|
|
|
|
_openJobApp = openJobApp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 机场管理
|
|
|
|
@ -46,14 +52,32 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
/// <param name="pageSize"></param>
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<Response<PageInfo<List<LasaDronePort>>>> GetPageList(int page, int limit, string key)
|
|
|
|
|
public async Task<Response<PageInfo<List<LasaDronePort>>>> GetPageList(int page, int limit, string sn,
|
|
|
|
|
string type, string workspaceid)
|
|
|
|
|
{
|
|
|
|
|
RefAsync<int> totalCount = 0;
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var list = await db.LasaDronePort.AsQueryable().Includes(a => a.UavList)
|
|
|
|
|
.LeftJoin<LasaSpaceDevice>((a,b)=>a.Id==b.DeviceId)
|
|
|
|
|
.Where(a => a.IsDelete == false)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(key), a => a.Name.Contains(key))
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(sn), (a, b) => a.Sn == sn)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(type), (a, b) => a.TypeId == type)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(workspaceid), (a, b) => b.WorkSpaceId == workspaceid)
|
|
|
|
|
.Select((a,b)=>new LasaDronePort
|
|
|
|
|
{
|
|
|
|
|
Id = a.Id,
|
|
|
|
|
Name = a.Name,
|
|
|
|
|
TypeId = a.TypeId,
|
|
|
|
|
FirmwareVersion = a.FirmwareVersion,
|
|
|
|
|
CreateTime = a.CreateTime,
|
|
|
|
|
UpdateTime = a.UpdateTime,
|
|
|
|
|
OrgId = a.OrgId,
|
|
|
|
|
Sn = a.Sn,
|
|
|
|
|
UavList = a.UavList,
|
|
|
|
|
GateWay = a.GateWay,
|
|
|
|
|
WorkSpaceId = b.WorkSpaceId
|
|
|
|
|
})
|
|
|
|
|
.ToPageListAsync(page, limit, totalCount);
|
|
|
|
|
return new Response<PageInfo<List<LasaDronePort>>>
|
|
|
|
|
{
|
|
|
|
@ -71,6 +95,13 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
{
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
//删除项目中的机场数据
|
|
|
|
|
await db.LasaSpaceDevice.DeleteAsync(r => r.DeviceId == info.Id);
|
|
|
|
|
await db.LasaSpaceDevice.InsertAsync(new LasaSpaceDevice
|
|
|
|
|
{
|
|
|
|
|
DeviceId = info.Id,
|
|
|
|
|
WorkSpaceId = info.WorkSpaceId
|
|
|
|
|
});
|
|
|
|
|
var flag = await db.LasaDronePort.UpdateAsync(it => new LasaDronePort()
|
|
|
|
|
{
|
|
|
|
|
Name = info.Name,
|
|
|
|
@ -143,16 +174,20 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
/// <param name="limit"></param>
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<Response<PageInfo<List<dynamic>>>> GetUavPageList(int page, int limit, string key)
|
|
|
|
|
public async Task<Response<PageInfo<List<dynamic>>>> GetUavPageList(int page, int limit, string sn, string type,
|
|
|
|
|
string workspaceid)
|
|
|
|
|
{
|
|
|
|
|
RefAsync<int> totalCount = 0;
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var list = await db.LasaUav.AsQueryable()
|
|
|
|
|
.LeftJoin<LasaDronePort>((a, b) => a.PId == b.Id)
|
|
|
|
|
.Where((a, b) => a.IsDelete == false)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(key), (a, b) => a.Name.Contains(key))
|
|
|
|
|
.Select<dynamic>((a, b) => new
|
|
|
|
|
.LeftJoin<LasaSpaceDevice>((a, b,c) => b.Id == c.DeviceId)
|
|
|
|
|
.Where((a, b, c) => a.IsDelete == false)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(sn), (a, b, c) => a.Sn == sn)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(type), (a, b, c) => a.TypeId == type)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(workspaceid), (a, b, c) => c.WorkSpaceId == workspaceid)
|
|
|
|
|
.Select<dynamic>((a, b,c) => new
|
|
|
|
|
{
|
|
|
|
|
id = a.Id,
|
|
|
|
|
name = a.Name,
|
|
|
|
@ -163,7 +198,7 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
updateTime = a.UpdateTime,
|
|
|
|
|
isDelete = a.IsDelete,
|
|
|
|
|
pName = b.Name, // 机场名称
|
|
|
|
|
workSpaceId = a.WorkSpaceId,
|
|
|
|
|
workSpaceId = c.WorkSpaceId,
|
|
|
|
|
firmwareVersion = a.FirmwareVersion,
|
|
|
|
|
})
|
|
|
|
|
.ToPageListAsync(page, limit, totalCount);
|
|
|
|
@ -173,6 +208,7 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取机场sn获取无人机列表
|
|
|
|
|
/// </summary>
|
|
|
|
@ -283,6 +319,19 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//导出无人机信息
|
|
|
|
|
public async Task<string> GetUavSn()
|
|
|
|
|
{
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var snList = await db.LasaUav.AsQueryable().Where(r => r.IsDelete == false).Select(r => r.Sn)
|
|
|
|
|
.ToListAsync();
|
|
|
|
|
var result = string.Join(Environment.NewLine, snList);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取任务列表
|
|
|
|
|
/// </summary>
|
|
|
|
@ -290,13 +339,15 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
/// <param name="limit"></param>
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<Response<PageInfo<List<LasaTask>>>> GetTaskPageList(int page, int limit, string key)
|
|
|
|
|
public async Task<Response<PageInfo<List<LasaTask>>>> GetTaskPageList(int page, int limit, string key,
|
|
|
|
|
int? status)
|
|
|
|
|
{
|
|
|
|
|
RefAsync<int> totalCount = 0;
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var list = await db.LasaTask.AsQueryable()
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(key), a => a.TaskName.Contains(key))
|
|
|
|
|
.WhereIF(status != null, a => a.Status.Equals(status))
|
|
|
|
|
.ToPageListAsync(page, limit, totalCount);
|
|
|
|
|
return new Response<PageInfo<List<LasaTask>>>
|
|
|
|
|
{
|
|
|
|
@ -310,10 +361,35 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
{
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var user = _auth.GetCurrentUser().User;
|
|
|
|
|
task.Id = Guid.NewGuid().ToString();
|
|
|
|
|
task.CreateId = _auth.GetCurrentUser().User.Id;
|
|
|
|
|
task.CreateId = user.Id;
|
|
|
|
|
task.CreateUserName = user.Name;
|
|
|
|
|
task.CreateTime = DateTime.Now;
|
|
|
|
|
var flag = await db.LasaTask.InsertAsync(task);
|
|
|
|
|
// todo 判断任务类型,添加openjob记录 (openjob 增删改)
|
|
|
|
|
// //{"0":"立即任务","1":"定时任务",
|
|
|
|
|
var type = task.TaskType;
|
|
|
|
|
if (type.Equals(1)) // 定时任务
|
|
|
|
|
{
|
|
|
|
|
AddOrUpdateOpenJobReq record = new AddOrUpdateOpenJobReq()
|
|
|
|
|
{
|
|
|
|
|
JobName = $"{task.Id}",
|
|
|
|
|
JobType = 0, // 本地任务
|
|
|
|
|
JobCall = "OpenAuth.App.BaseApp.Jobs.TaskJob",
|
|
|
|
|
JobCallParams = "{\"taskId\":\"" + task.Id + "\"}",
|
|
|
|
|
Cron = task.PeriodicFormula,
|
|
|
|
|
Status = 1, // 开启运行 todo 关于修改后关闭问题
|
|
|
|
|
Remark = "定时任务",
|
|
|
|
|
};
|
|
|
|
|
_openJobApp.Add(record);
|
|
|
|
|
}
|
|
|
|
|
else if (type.Equals(0))
|
|
|
|
|
{
|
|
|
|
|
// 调用飞行任务
|
|
|
|
|
await ExecuteFlyTask(task.Id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (db.Commit())
|
|
|
|
|
return new Response<bool> { Result = true, Message = "添加成功" };
|
|
|
|
|
else
|
|
|
|
@ -337,13 +413,43 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
//删除任务
|
|
|
|
|
public async Task<Response<bool>> DeleteTask(string id)
|
|
|
|
|
{
|
|
|
|
|
var task = await Repository
|
|
|
|
|
.ChangeRepository<SugarRepositiry<LasaTask>>()
|
|
|
|
|
.AsQueryable()
|
|
|
|
|
.Where(it => it.Id == id).SingleAsync();
|
|
|
|
|
if (task == null)
|
|
|
|
|
{
|
|
|
|
|
return new Response<bool> { Result = false, Message = "任务不存在" };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (task.CompletedTime != null) // 定时任务
|
|
|
|
|
{
|
|
|
|
|
return new Response<bool> { Result = false, Message = "已完成任务禁止删除" };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var flag = await db.LasaTask.DeleteAsync(it => it.Id == id);
|
|
|
|
|
var taskId = task.Id;
|
|
|
|
|
var mediaFileList = await db.LasaMediaFile.AsQueryable()
|
|
|
|
|
.Where(it => it.TaskId == taskId)
|
|
|
|
|
.ToListAsync();
|
|
|
|
|
foreach (var item in mediaFileList)
|
|
|
|
|
{
|
|
|
|
|
await _minioService.DeleteFile(item.ObjectKey);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 定时任务,
|
|
|
|
|
if (task.TaskType.Equals(1))
|
|
|
|
|
{
|
|
|
|
|
await db.SysOpenJob.AsDeleteable()
|
|
|
|
|
.Where(it => it.JobCallParams.Contains(taskId))
|
|
|
|
|
.ExecuteCommandAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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 = "删除失败" };
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -356,14 +462,18 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
/// <param name="limit"></param>
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public async Task<Response<PageInfo<List<LasaAirLine>>>> GetAirLinePageList(int page, int limit, string key)
|
|
|
|
|
public async Task<Response<PageInfo<List<LasaAirLine>>>> GetAirLinePageList(AirLineListRequestPage req)
|
|
|
|
|
{
|
|
|
|
|
RefAsync<int> totalCount = 0;
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var list = await db.LasaAirLine.AsQueryable()
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(key), a => a.AirLineName.Contains(key))
|
|
|
|
|
.ToPageListAsync(page, limit, totalCount);
|
|
|
|
|
var list = await db.LasaAirLine.AsQueryable().LeftJoin<LasaUav>((a, b) => a.UavId == b.Id)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(req.UavTypeId),(a,b) => b.TypeId == req.UavTypeId)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(req.key), a => a.AirLineName.Contains(req.key))
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(req.AirLineName), a => a.AirLineName.Contains(req.AirLineName))
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(req.AirLineType), a => a.AirLineType.Equals(req.AirLineType))
|
|
|
|
|
.OrderByIF(true, a => a.CreateTime, req.Ascending ? OrderByType.Asc : OrderByType.Desc)
|
|
|
|
|
.ToPageListAsync(req.page, req.limit, totalCount);
|
|
|
|
|
return new Response<PageInfo<List<LasaAirLine>>>
|
|
|
|
|
{
|
|
|
|
|
Result = new PageInfo<List<LasaAirLine>> { Items = list, Total = totalCount }
|
|
|
|
@ -445,7 +555,7 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var list = await db.LasaWorkspace.AsQueryable()
|
|
|
|
|
.Where(a=>a.IsDelete==false)
|
|
|
|
|
.Where(a => a.IsDelete == false)
|
|
|
|
|
.WhereIF(!string.IsNullOrEmpty(key), a => a.WorkspaceName.Contains(key))
|
|
|
|
|
.WhereIF(state != 0, a => a.Sate == state)
|
|
|
|
|
.WhereIF(isjoin == 1, a => ids.Contains(a.Id))
|
|
|
|
@ -656,6 +766,8 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
// todo 保存任务时,执行任务
|
|
|
|
|
|
|
|
|
|
public async Task ExecuteFlyTask(string taskId)
|
|
|
|
|
{
|
|
|
|
|
// 任务信息
|
|
|
|
@ -1063,7 +1175,6 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
|
|
|
|
|
//修改图斑数据
|
|
|
|
|
var flagGeom = await db.Ado.ExecuteCommandAsync(geomSql.ToString());
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
if (transFlag.IsSuccess)
|
|
|
|
|
return new Response<string>
|
|
|
|
@ -1204,7 +1315,8 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
//thing/product/{gateway_sn}/services
|
|
|
|
|
await _mqttClientManager.PublishAsync("thing/product/8UUXN5400A079H/services", JsonConvert.SerializeObject(request));
|
|
|
|
|
await _mqttClientManager.PublishAsync("thing/product/8UUXN5400A079H/services",
|
|
|
|
|
JsonConvert.SerializeObject(request));
|
|
|
|
|
return new Response<bool>()
|
|
|
|
|
{
|
|
|
|
|
Result = true
|
|
|
|
@ -1224,7 +1336,8 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
video_id = "8UUXN5400A079H/165-0-7/normal-0"
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
await _mqttClientManager.PublishAsync("thing/product/8UUXN5400A079H/services", JsonConvert.SerializeObject(request));
|
|
|
|
|
await _mqttClientManager.PublishAsync("thing/product/8UUXN5400A079H/services",
|
|
|
|
|
JsonConvert.SerializeObject(request));
|
|
|
|
|
return new Response<bool>()
|
|
|
|
|
{
|
|
|
|
|
Result = true
|
|
|
|
@ -1232,12 +1345,15 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 基本信息统计
|
|
|
|
|
|
|
|
|
|
public async Task<Response<JObject>> GetBasicInfo()
|
|
|
|
|
{
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var dronInfo = await db.LasaDronePort.AsQueryable().Where(r => r.IsDelete == false && r.TypeId.Contains("Dock")).CountAsync();
|
|
|
|
|
var otherInfo = await db.LasaDronePort.AsQueryable().Where(r => r.IsDelete == false && !r.TypeId.Contains("Dock")).CountAsync();
|
|
|
|
|
var dronInfo = await db.LasaDronePort.AsQueryable()
|
|
|
|
|
.Where(r => r.IsDelete == false && r.TypeId.Contains("Dock")).CountAsync();
|
|
|
|
|
var otherInfo = await db.LasaDronePort.AsQueryable()
|
|
|
|
|
.Where(r => r.IsDelete == false && !r.TypeId.Contains("Dock")).CountAsync();
|
|
|
|
|
var pilotInfo = await db.SysUserRole.AsQueryable().Where(r => r.RoleId == 555252989157446).CountAsync();
|
|
|
|
|
var taskInfo = await db.LasaTask.AsQueryable().CountAsync();
|
|
|
|
|
JObject obj = new JObject
|
|
|
|
@ -1249,8 +1365,8 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
};
|
|
|
|
|
return new Response<JObject> { Result = obj, Message = "获取数据成功" };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|