|
|
|
@ -5,6 +5,7 @@ using Infrastructure;
|
|
|
|
|
using Infrastructure.CloudSdk.minio;
|
|
|
|
|
using Infrastructure.CloudSdk.wayline;
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
|
using Microsoft.IdentityModel.Tokens;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
using OpenAuth.App.BaseApp.Base;
|
|
|
|
@ -238,7 +239,7 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取机场sn获取无人机列表
|
|
|
|
|
/// </summary>
|
|
|
|
@ -389,6 +390,9 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
//添加任务
|
|
|
|
|
public async Task<Response<bool>> AddTask(LasaTask task)
|
|
|
|
|
{
|
|
|
|
|
var airLine = await Repository
|
|
|
|
|
.ChangeRepository<SugarRepositiry<LasaAirLine>>()
|
|
|
|
|
.GetByIdAsync(task.AirLineId);
|
|
|
|
|
using (var db = UnitWork.CreateContext())
|
|
|
|
|
{
|
|
|
|
|
var user = _auth.GetCurrentUser().User;
|
|
|
|
@ -397,29 +401,40 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
task.CreateUserName = user.Name;
|
|
|
|
|
task.CreateTime = DateTime.Now;
|
|
|
|
|
//task.FlightId = Guid.NewGuid().ToString();
|
|
|
|
|
// todo 根据
|
|
|
|
|
// 如:执行时长,单次定时的时间
|
|
|
|
|
// 0-飞行计划 1-指点飞行
|
|
|
|
|
task.FlightTaskType = 0; //
|
|
|
|
|
task.PlanExecuteDuration = airLine.ScheduleTime;
|
|
|
|
|
task.ExpectedFileCount = airLine.PictureTotal;
|
|
|
|
|
var flag = await db.LasaTask.InsertAsync(task);
|
|
|
|
|
// //{"0":"立即任务","1":"定时任务",
|
|
|
|
|
var type = task.TaskType;
|
|
|
|
|
if (type.Equals(1)) // 定时任务
|
|
|
|
|
{
|
|
|
|
|
// 0 0 10 23 7 ? 2025
|
|
|
|
|
// 计算执行时间
|
|
|
|
|
//task.ScheduledStartTime = DateTime.Now;
|
|
|
|
|
//task.ScheduledEndTime = DateTime.Now.AddHours(1);
|
|
|
|
|
AddOrUpdateOpenJobReq record = new AddOrUpdateOpenJobReq()
|
|
|
|
|
{
|
|
|
|
|
JobName = $"{task.Id}",
|
|
|
|
|
JobType = 0, // 本地任务
|
|
|
|
|
JobCall = "OpenAuth.App.BaseApp.Jobs.TaskJob",
|
|
|
|
|
JobCall = "OpenAuth.App.ServiceApp.FlyTaskJob",
|
|
|
|
|
JobCallParams = "{\"taskId\":\"" + task.Id + "\"}",
|
|
|
|
|
Cron = task.PeriodicFormula,
|
|
|
|
|
Status = 1, // 开启运行 todo 关于修改后关闭问题
|
|
|
|
|
Remark = "定时任务",
|
|
|
|
|
};
|
|
|
|
|
_openJobApp.Add(record);
|
|
|
|
|
var jobId = _openJobApp.Add(record);
|
|
|
|
|
_openJobApp.StartJob(jobId);
|
|
|
|
|
}
|
|
|
|
|
else if (type.Equals(0))
|
|
|
|
|
{
|
|
|
|
|
var x = DateTime.Now;
|
|
|
|
|
// 计算执行时间
|
|
|
|
|
task.ExecuteTime = x;
|
|
|
|
|
task.ScheduledStartTime = x;
|
|
|
|
|
task.ScheduledEndTime = x.AddMilliseconds(task.PlanExecuteDuration);
|
|
|
|
|
// 调用飞行任务
|
|
|
|
|
await ExecuteFlyTask(task.Id);
|
|
|
|
|
}
|
|
|
|
@ -840,12 +855,28 @@ namespace OpenAuth.App.ServiceApp
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
// todo 保存任务时,执行任务
|
|
|
|
|
|
|
|
|
|
public async Task ExecuteFlyTask(string taskId)
|
|
|
|
|
{
|
|
|
|
|
// 任务信息
|
|
|
|
|
var task = await Repository.ChangeRepository<SugarRepositiry<LasaTask>>().GetByIdAsync(taskId);
|
|
|
|
|
// 如果任务被挂起,则直接失败
|
|
|
|
|
if (task.Status == 3)
|
|
|
|
|
{
|
|
|
|
|
var taskUpdate = new LasaTask
|
|
|
|
|
{
|
|
|
|
|
Id = taskId,
|
|
|
|
|
//任务因挂起失败
|
|
|
|
|
Status = 2,
|
|
|
|
|
Reason = "任务因挂起执行失败"
|
|
|
|
|
};
|
|
|
|
|
await Repository
|
|
|
|
|
.ChangeRepository<SugarRepositiry<LasaTask>>()
|
|
|
|
|
.AsUpdateable(taskUpdate)
|
|
|
|
|
.IgnoreNullColumns()
|
|
|
|
|
.ExecuteCommandAsync();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 航线文件信息
|
|
|
|
|
var airLine = await Repository.ChangeRepository<SugarRepositiry<LasaAirLine>>()
|
|
|
|
|
.GetByIdAsync(task.AirLineId);
|
|
|
|
|