GpuCgController.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. using System.Web.Http;
  7. using XdCxRhDW.Dto;
  8. using XdCxRhDW.WebApi;
  9. namespace GpuCgServer.Controllers
  10. {
  11. /// <summary>
  12. /// Gpu参估接口
  13. /// </summary>
  14. public class GpuCgController : BaseController
  15. {
  16. /// <summary>
  17. /// GPU参估计算(需要先上传文件)
  18. /// </summary>
  19. /// <param name="dto">GPU参估参数</param>
  20. /// <returns></returns>
  21. [HttpPost]
  22. public async Task<AjaxResult<List<GpuCgResponseDto>>> Calc(GpuCgRequestDto dto)
  23. {
  24. dto.file1 = GetLocalFile(dto.file1);
  25. dto.file2 = GetLocalFile(dto.file2);
  26. FileInfo file1 = new FileInfo(dto.file1);
  27. FileInfo file2 = new FileInfo(dto.file2);
  28. long totalsamp = file1.Length < file2.Length ? file1.Length / 4 : file2.Length / 4;
  29. //样点数为0时计算所有样本
  30. if (dto.smpCount == 0)
  31. {
  32. dto.smpCount = totalsamp;
  33. }
  34. else if (dto.smpCount > 0 && dto.smpCount < 1)
  35. {
  36. dto.smpCount = (long)(totalsamp * dto.smpCount);
  37. }
  38. CpuCgResDto resDto = new CpuCgResDto();
  39. try
  40. {
  41. var result = await Task.Run(() =>
  42. {
  43. return GpuCgHelper.Calc(dto.file1, dto.file2, dto.samplingRate, dto.smpCount,
  44. dto.dtCenter, dto.dtRange, dto.dfRange, dto.snrThreshold, dto.TimeoutSeconds);
  45. });
  46. return Success(result);
  47. }
  48. catch (Exception ex)
  49. {
  50. Serilog.Log.Error(ex, $"执行GPU参估异常,{ex.Message}");
  51. return Error<List<GpuCgResponseDto>>($"执行GPU参估异常,{ex.Message}");
  52. }
  53. }
  54. }
  55. }