using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using XdCxRhDW.Dto;
using XdCxRhDW.Entity;
using XdCxRhDW.Repostory;
using XdCxRhDW.WebApi;
namespace XdCxRhDW.App.Controllers
{
///
/// 取参考相关接口
///
public class FindRefController : BaseController
{
///
/// 添加两星一地参考信号缓存
///
/// 返回请求结果
[HttpPost]
public async Task AddX2D1RefCacheAsync(List dtos)
{
var dto = dtos.First();
try
{
TaskInfo runTask;
using (MySqlContext db = new MySqlContext())
{
if (dto.TaskID == null)
{
runTask = await db.TaskInfos.FirstOrDefaultAsync(p => p.TaskType == EnumTaskType.Group
&& p.PosType == EnumPosType.X2D1 && p.TaskState == EnumTaskState.Running);
if (runTask == null)
{
XdCxRhDW.Framework.LogHelper.Warning($"接收到两星一地无参参考信号参数,由于找不到执行中的任务忽略本次定位");
return Error($"多模式融合定位平台没有启动两星一地定位任务");
}
}
else
{
runTask = await db.TaskInfos.FirstOrDefaultAsync(p => p.ID == dto.TaskID);
if (runTask == null)
{
XdCxRhDW.Framework.LogHelper.Warning($"找不到任务,ID={dto.TaskID}");
return Error($"找不到ID={dto.TaskID}的任务");
}
}
}
TaskRefCache.Instance.AddRange(dto.TaskID.Value, dtos);
return Success();
}
catch (Exception ex)
{
XdCxRhDW.Framework.LogHelper.Error($"添加两星一地参考信号.ID={dto.TaskID}", ex);
return Error(ex.Message);
}
}
///
/// 添加两星一地目标信号缓存
///
/// 返回请求结果
[HttpPost]
public async Task AddX2D1TarCacheAsync(List dtos)
{
var dto = dtos.First();
try
{
TaskInfo runTask;
using (MySqlContext db = new MySqlContext())
{
if (dto.TaskID == null)
{
runTask = await db.TaskInfos.FirstOrDefaultAsync(p => p.TaskType == EnumTaskType.Group
&& p.PosType == EnumPosType.X2D1 && p.TaskState == EnumTaskState.Running);
if (runTask == null)
{
XdCxRhDW.Framework.LogHelper.Warning($"接收到两星一地无参目标信号参数,由于找不到执行中的任务忽略本次定位");
return Error($"多模式融合定位平台没有启动两星一地定位任务");
}
}
else
{
runTask = await db.TaskInfos.FirstOrDefaultAsync(p => p.ID == dto.TaskID);
if (runTask == null)
{
XdCxRhDW.Framework.LogHelper.Warning($"找不到任务,ID={dto.TaskID}");
return Error($"找不到ID={dto.TaskID}的任务");
}
}
}
TaskTarCache.Instance.AddRange(dto.TaskID.Value, dtos);
return Success();
}
catch (Exception ex)
{
XdCxRhDW.Framework.LogHelper.Error($"添加两星一地目标信号.ID={dto.TaskID}", ex);
return Error(ex.Message);
}
}
}
}