123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- 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 System.Diagnostics;
- namespace XdCxRhDW.App.Controllers
- {
- /// <summary>
- /// 任务相关接口
- /// </summary>
- public class TaskController : BaseController
- {
- /// <summary>
- /// 获取客户端IP地址
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- public async Task<AjaxResult<string>> GetClientIP()
- {
- try
- {
- var ip = RemoteIp;
- return Success(ip);
- }
- catch (Exception ex)
- {
- await XdCxRhDW.UI.Lib.LogHelper.Error("获取客户端IP出错", ex);
- return Error<string>("获取客户端IP出错");
- }
- }
- /// <summary>
- /// 推算参考时差
- /// </summary>
- /// <param name="dto">卫星参数</param>
- /// <returns></returns>
- [HttpPost]
- public async Task<AjaxResult<RefCafResultDto>> GetRefCalcAsync(SatDto dto)
- {
- try
- {
- var dtos = await RefCgRepository.GetLatestAsync(dto.SatCode, dto.SigTime);
- var cgOrderList = dtos.OrderBy(d => d.SigTime).ToList();
- var point1 = cgOrderList.Where(c => c.SigTime <= dto.SigTime).FirstOrDefault();
- var point2 = cgOrderList.Where(c => c.SigTime >= dto.SigTime).FirstOrDefault();
- var refdto = new RefCafResultDto();
- if (point1 == null || point2 == null)
- {
- refdto.dt = 0;
- refdto.df = 0;
- refdto.snr = 0;
- }
- else
- {
- double refDto = RefCgRepository.CalSigTimeDto(dto.SigTime, point1.SigTime, point2.SigTime, point1.YbDto, point2.YbDto);
- refdto.dt = refDto * 1e6;
- }
- return Success(refdto);
- }
- catch (Exception ex)
- {
- return Error<RefCafResultDto>(ex.Message);
- }
- }
- /// <summary>
- /// 停止任务
- /// </summary>
- /// <param name="dto">任务停止参数</param>
- /// <returns></returns>
- [HttpPost]
- public async Task<AjaxResult> 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)
- {
- XdCxRhDW.Framework.LogHelper.Error($"任务停止异常.ID={dto.ID}", ex);
- return Error(ex.Message);
- }
- }
- }
- }
|