using DevExpress.Utils.Extensions;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Web.Http;
using XdCxRhDW.Dto;
using XdCxRhDW.TaskServer.Service;
using XdCxRhDW.TaskServer.Task;
using XdCxRhDW.WebApi;
namespace XdCxRhDW.TaskServer.Controllers
{
///
///离线任务处理接口
///
public class HistoryTaskProcessingController : BaseController
{
/*******************
* !!!不要在Controller中放业务逻辑的全局变量
* !!!不要在Controller写太复杂的业务逻辑
* Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
* ********************/
private readonly HistoryTaskService _service;
public HistoryTaskProcessingController(HistoryTaskService service)
{
_service = service;
}
///
/// 执行离线任务
///
/// 离线任务信息
///
[HttpPost]
public AjaxResult Run(HistoryTaskProcessingDto dto)
{
try
{
_service.allTask.RemoveAll(a => a.IsRuning == false);
LogHelper.Info($"接收到历史任务编号:{dto.ID}");
//dto.StartTime = new DateTime(2024, 03, 24, 12, 00, 00);
//dto.DateDirFormat = "yyyyMMddHH";
//dto.CapDir = @"D:\\data";
//dto.SigType = EnumSigTypeDto.SX;
//dto.PosType = EnumPosTypeDto.X2D1;
//dto.TaskCheckType = EnumTaskCheckTypeDto.DAMA;
if (!Directory.Exists(dto.CapDir))
{
LogHelper.Error($"采集路径:{dto.CapDir}不存在");
return Error($"采集路径:{dto.CapDir}不存在");
}
if (dto.PosType == EnumPosTypeDto.X2D1)
{
X2D1Task x2D1 = new X2D1Task();
x2D1.Start(dto);
_service.allTask.Add(x2D1);
}
else
{
return Error($"历史任务不支持定位模式{dto.PosType.GetEnumDisplayName()}");
}
return Success();
}
catch (Exception ex)
{
Serilog.Log.Error(ex, "历史任务处理出错!");
return Error("历史任务处理出错");
}
}
///
/// 历史任务停止
///
///
///
[HttpPost]
public AjaxResult Stop(HistoryTaskStopDto dto)
{
try
{
LogHelper.Info($"接收停止历史任务编号:{dto.ID}");
var historys = _service.allTask.Where(t => t.TaskDto.ID == dto.ID);
foreach (var item in historys)
{
item.Stop();
}
_service.allTask.Remove(t => t.TaskDto.ID == dto.ID);
return Success();
}
catch (Exception ex)
{
Serilog.Log.Error(ex, "停止历史任务处理出错!");
return Error("停止历史任务处理出错");
}
}
}
}