using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Data.Entity; using System.Data.Entity.Migrations; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; using XdCxRhDW.Dto; using XdCxRhDW.Api; using XdCxRhDW.Entity; using XdCxRhDW.Repostory; using XdCxRhDW.WebApi; using System.Threading; using Microsoft.Owin; namespace XdCxRhDW.App.Controllers { /// /// 任务相关接口 /// public class TaskController : BaseController { /// /// 获取客户端IP地址 /// /// [HttpGet] public AjaxResult GetClientIP() { try { var ip = RemoteIp; return Success(ip); } catch (Exception ex) { Serilog.Log.Error(ex, "获取客户端IP出错"); return Error("获取客户端IP出错"); } } /// /// 停止任务 /// /// 任务停止参数 /// [HttpPost] public async Task StopTask(TaskStopHandleDto dto) { try { using (RHDWContext db = new RHDWContext()) { var item = await db.TaskInfos.FirstOrDefaultAsync(p => p.ID == dto.ID); if (item == null) { return Error($"任务停止失败,找不到ID={dto.ID}的任务"); } if (item.TaskState == EnumTaskState.Stopped) Thread.Sleep(2000); item.TaskState = EnumTaskState.Stopped; await db.SaveChangesAsync(); } Messenger.Defalut.Pub("任务状态改变", dto.ID); if (dto.StopType == EnumTaskStopType.Properly) Serilog.Log.Information($"任务停止完成,ID={dto.ID},停止原因={dto.StopReason}"); else Serilog.Log.Error($"任务停止完成,ID={dto.ID},停止原因={dto.StopReason}"); return Success(); } catch (Exception ex) { Serilog.Log.Error(ex, $"任务停止异常.ID={dto.ID}"); return Error(ex.Message); } } } }