123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- 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.WebApi;
- using XdCxRhDW.X2D1TaskServer.Service;
- using XdCxRhDW.X2D1TaskServer.Tasks;
- namespace XdCxRhDW.X2D1TaskServer.Controllers
- {
- /// <summary>
- ///离线任务处理接口
- /// </summary>
- public class HistoryTaskProcessingController : BaseController
- {
- /*******************
- * !!!不要在Controller中放业务逻辑的全局变量
- * !!!不要在Controller写太复杂的业务逻辑
- * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
- * ********************/
- private readonly HistoryTaskService _service;
- public HistoryTaskProcessingController(HistoryTaskService service)
- {
- _service = service;
- }
- /// <summary>
- /// 执行离线任务
- /// </summary>
- /// <param name="dto">离线任务信息</param>
- /// <returns></returns>
- [HttpPost]
- public AjaxResult Run(HistoryTaskProcessingDto dto)
- {
- try
- {
- _service.allTask.RemoveAll(a => a.IsRuning == false);
- LogHelper.Info($"接收到开始执行任务[{dto.TaskName}],ID={dto.ID}");
- 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.ID}】执行异常,暂不支持{dto.PosType.GetEnumDisplayName()}");
- }
- return Success();
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, $"【任务{dto.ID}】开始执行异常!");
- return Error($"【任务{dto.ID}】开始执行异常!");
- }
- }
- /// <summary>
- /// 历史任务停止
- /// </summary>
- /// <param name="dto"></param>
- /// <returns></returns>
- [HttpPost]
- public AjaxResult Stop(HistoryTaskStopDto dto)
- {
- try
- {
- LogHelper.Info($"接收到停止执行任务,ID={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, $"【任务{dto.ID}】停止执行异常!");
- return Error($"【任务{dto.ID}】停止执行异常!");
- }
- }
- }
- }
|