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.ID = 1; //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("停止历史任务处理出错"); } } } }