TaskController.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 Microsoft.Extensions.Logging;
  16. using Serilog.Core;
  17. namespace DW5S.App.Controllers
  18. {
  19. /// <summary>
  20. /// 任务相关接口
  21. /// </summary>
  22. public class TaskController : BaseController
  23. {
  24. [Autowired]
  25. private readonly ILogger logger;
  26. [Autowired]
  27. private readonly UnitOfWork unitOfWork;
  28. /// <summary>
  29. /// 获取客户端IP地址
  30. /// </summary>
  31. /// <returns></returns>
  32. [HttpGet]
  33. public AjaxResult<string> GetClientIP()
  34. {
  35. try
  36. {
  37. var ip = RemoteIp;
  38. return Success(ip);
  39. }
  40. catch (Exception ex)
  41. {
  42. string error = "获取客户端IP出错";
  43. logger.LogError(ex, error);
  44. return Error<string>(error);
  45. }
  46. }
  47. /// <summary>
  48. /// 停止任务
  49. /// </summary>
  50. /// <param name="dto">任务停止参数</param>
  51. /// <returns></returns>
  52. [HttpPost]
  53. public async Task<AjaxResult> StopAsync(TaskStopHandleDto dto)
  54. {
  55. try
  56. {
  57. var repsTask = unitOfWork.Of<TaskInfo>();
  58. var item = await repsTask.GetByIdAsync(dto.ID);
  59. if (item == null)
  60. {
  61. return Error($"任务停止失败,找不到ID={dto.ID}的任务");
  62. }
  63. if (item.TaskState == EnumTaskState.Stopped)
  64. Thread.Sleep(2000);
  65. item.TaskState = EnumTaskState.Stopped;
  66. await repsTask.AddOrUpdateAsync(item);
  67. await unitOfWork.SaveAsync();
  68. Messenger.Defalut.Pub("任务状态改变", dto.ID);
  69. if (dto.StopType == EnumTaskStopType.Properly)
  70. logger.LogInformation($"任务停止完成,ID={dto.ID},停止原因={dto.StopReason}");
  71. else
  72. logger.LogError($"任务停止完成,ID={dto.ID},停止原因={dto.StopReason}");
  73. return Success();
  74. }
  75. catch (Exception ex)
  76. {
  77. string msg = $"任务停止异常.ID={dto.ID}";
  78. logger.LogError(ex, msg);
  79. return Error(msg);
  80. }
  81. }
  82. }
  83. }