TaskController.cs 2.6 KB

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