using System;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
using X2D1TaskServer54.Service;
using XdCxRhDW.Dto;
using XdCxRhDW.WebApi;
namespace X2D1TaskServer54.Controllers
{
///
///两星一地任务处理接口
///
public class X2D1TaskProcessingController : BaseController
{
/*******************
* !!!不要在Controller中放业务逻辑的全局变量
* !!!不要在Controller写太复杂的业务逻辑
* Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
* ********************/
private readonly TaskHistoryService _tskHservice;
private readonly TaskRealService _tskRservice;
public X2D1TaskProcessingController(TaskHistoryService tskHservice, TaskRealService tskRservice)
{
_tskHservice = tskHservice;
_tskRservice = tskRservice;
}
///
/// 开始执行两星一地无参任务
///
/// 离线任务信息
///
[HttpPost]
public AjaxResult Run(X2D1TaskHandleDto dto)
{
try
{
if (dto.TaskType == EnumTaskTypeDto.History)
{
if (_tskHservice.Stop(dto.ID))
{
Thread.Sleep(2000);
}
_tskHservice.StartAsync(dto);
}
else
{
if (_tskRservice.Stop(dto.ID))
{
Thread.Sleep(2000);
}
_tskRservice.StartAsync(dto);
}
return Success();
}
catch (Exception ex)
{
XdCxRhDW.Framework.LogHelper.Error($"【任务{dto.ID}】开始执行异常!", ex);
return Error($"【任务{dto.ID}】开始执行异常!");
}
}
///
/// 停止执行两星一地无参任务
///
///
///
[HttpPost]
public async Task Stop(TaskStopHandleDto dto)
{
try
{
await XdCxRhDW.UI.Lib.LogHelper.Warning($"用户停止了任务,ID={dto.ID}");
if (dto.TaskType == EnumTaskTypeDto.History)
_tskHservice.Stop(dto.ID);
else
_tskRservice.Stop(dto.ID);
return Success();
}
catch (Exception ex)
{
XdCxRhDW.Framework.LogHelper.Error($"【任务{dto.ID}】停止执行异常!", ex);
return Error($"【任务{dto.ID}】停止执行异常!");
}
}
}
}