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; using System.Diagnostics; namespace XdCxRhDW.App.Controllers { /// /// 任务相关接口 /// public class TaskController : BaseController { /// /// 获取客户端IP地址 /// /// [HttpGet] public async Task> GetClientIP() { try { var ip = RemoteIp; return Success(ip); } catch (Exception ex) { await LogHelper.Error("获取客户端IP出错", ex); 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(); } using (RHDWLogContext db = new RHDWLogContext()) { LogRes res = new LogRes() { LogTime = DateTime.Now, Module = Process.GetCurrentProcess().ProcessName, LogType = EnumLogType.Info, Msg = $"任务停止完成,ID={dto.ID},停止原因={dto.StopReason}", }; db.LogRes.Add(res); await db.SaveChangesAsync(); } Messenger.Defalut.Pub("任务状态改变", dto.ID); return Success(); } catch (Exception ex) { Serilog.Log.Error(ex, $"任务停止异常.ID={dto.ID}"); return Error(ex.Message); } } } }