123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.IO;
- using System.Web.Http;
- using XdCxRhDW.Dto;
- using XdCxRhDW.TaskServer.Service;
- using XdCxRhDW.TaskServer.Task;
- using XdCxRhDW.WebApi;
- namespace XdCxRhDW.TaskServer.Controllers
- {
- /// <summary>
- ///离线任务处理接口
- /// </summary>
- public class HistoryTaskProcessingController : BaseController
- {
- /*******************
- * !!!不要在Controller中放业务逻辑的全局变量
- * !!!不要在Controller写太复杂的业务逻辑
- * Controller主要就是调用Service层的东西。Service层执行业务逻辑和调用Repository层操作数据库
- * ********************/
- public List<HistoryTaskI> allTask = new List<HistoryTaskI>();
- private readonly TestService _testService;
- public HistoryTaskProcessingController(TestService testService)
- {
- _testService = testService;
- }
- /// <summary>
- /// 执行离线任务
- /// </summary>
- /// <param name="dto">离线任务信息</param>
- /// <returns></returns>
- [HttpPost]
- public AjaxResult Run(HistoryTaskProcessingDto dto)
- {
- try
- {
- //方式1:从构造函数注入
- var service1 = _testService;
- //方式2:从容器中主动获取
- var service2 = AutofacUtil.GetService<TestService>();
- //选一种简单的方式就行
- 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);
- allTask.Add(x2D1);
- }
- else
- {
- return Error($"历史任务不支持定位模式{dto.PosType.GetEnumDisplayName()}");
- }
- return Success();
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, "历史任务处理出错!");
- return Error("历史任务处理出错");
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="TaskId"></param>
- /// <returns></returns>
- [HttpPost]
- public AjaxResult Stop(int TaskId)
- {
- try
- {
- //方式1:从构造函数注入
- var service1 = _testService;
- //方式2:从容器中主动获取
- var service2 = AutofacUtil.GetService<TestService>();
- //选一种简单的方式就行
- LogHelper.Info($"接收停止历史任务编号:{TaskId}");
- var history = allTask.Find(t => t.TaskDto.ID == TaskId);
- if (history != null)
- {
- history.Stop();
- allTask.Remove(history);
- }
- return Success();
- }
- catch (Exception ex)
- {
- Serilog.Log.Error(ex, "停止历史任务处理出错!");
- return Error("停止历史任务处理出错");
- }
- }
- }
- }
|