TaskController.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.Data.SqlClient;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using DW5S.DTO;
  10. using DW5S.Entity;
  11. using DW5S.Repostory;
  12. using System.Threading;
  13. using DW5S.WebApi;
  14. using Microsoft.AspNetCore.Mvc;
  15. using Serilog;
  16. using Serilog.Core;
  17. using DW5S.Service;
  18. namespace DW5S.Controllers
  19. {
  20. /// <summary>
  21. /// 任务相关接口
  22. /// </summary>
  23. public class TaskController : BaseController
  24. {
  25. ILogger logger { get; set; }
  26. IUnitOfWork unitOfWork { get; set; }
  27. /// <summary>
  28. /// 获取客户端IP地址
  29. /// </summary>
  30. /// <returns></returns>
  31. [HttpGet]
  32. public AjaxResult<string> GetClientIP()
  33. {
  34. try
  35. {
  36. var ip = RemoteIp;
  37. return Success(ip);
  38. }
  39. catch (Exception ex)
  40. {
  41. string error = "获取客户端IP出错";
  42. logger.Error(ex, error);
  43. return Error<string>(error);
  44. }
  45. }
  46. /// <summary>
  47. /// 停止任务
  48. /// </summary>
  49. /// <param name="dto">任务停止参数</param>
  50. /// <returns></returns>
  51. [HttpPost]
  52. public async Task<AjaxResult> StopAsync(TaskStopHandleDto dto)
  53. {
  54. try
  55. {
  56. var repsTask = unitOfWork.Of<TaskInfo>();
  57. var item = await repsTask.GetByIdAsync(dto.ID);
  58. if (item == null)
  59. {
  60. return Error($"任务停止失败,找不到ID={dto.ID}的任务");
  61. }
  62. if (item.TaskState == EnumTaskState.Stopped)
  63. Thread.Sleep(2000);
  64. item.TaskState = EnumTaskState.Stopped;
  65. await repsTask.AddOrUpdateAsync(item);
  66. await unitOfWork.SaveAsync();
  67. Messenger.Defalut.Pub("任务状态改变", dto.ID);
  68. if (dto.StopType == EnumTaskStopType.Properly)
  69. logger.Information($"任务停止完成,ID={dto.ID},停止原因={dto.StopReason}");
  70. else
  71. logger.Error($"任务停止完成,ID={dto.ID},停止原因={dto.StopReason}");
  72. return Success();
  73. }
  74. catch (Exception ex)
  75. {
  76. string msg = $"任务停止异常.ID={dto.ID}";
  77. logger.Error(ex, msg);
  78. return Error(msg);
  79. }
  80. }
  81. }
  82. }