zoulei 1 year ago
parent
commit
59d6025c34

+ 1 - 1
XdCxRhDW.App/CorTools/DetectToolForm.cs

@@ -350,7 +350,7 @@ namespace XdCxRhDW.App.CorTools
                 var content = new StringContent(JsonConvert.SerializeObject(xcitem), System.Text.Encoding.UTF8, "application/json");
                 try
                 {
-                    var result = HttpHelper.PostRequest<EstimationResDto>(baseUrl+ "DetectCg/EstimationCalc", content);
+                    var result = HttpHelper.PostRequest<CpuCgResDto>(baseUrl+ "DetectCg/CpuCgCalc", content);
                     if (result != null)
                     {
                         gridSource.Add(new CafResult()

+ 1 - 0
XdCxRhDW.App/Program.cs

@@ -1,5 +1,6 @@
 using DevExpress.LookAndFeel;
 using DevExpress.XtraEditors;
+using DevExpress.XtraMap.Drawing.DirectD3D9;
 using Serilog;
 using System;
 using System.Collections.Generic;

+ 1 - 1
XdCxRhDW.Core/Api/Cpu参估/CafResult.cs

@@ -27,7 +27,7 @@ namespace XdCxRhDW.Core.Api
         /// <summary>
         /// 耗时(ms)
         /// </summary>
-        public double tm { get; set; }
+        public int tm { get; set; }
 
         /// <summary>
         /// 开始样点

+ 2 - 2
XdCxRhDW.Core/Api/Cpu参估/DmcResult.cs

@@ -13,7 +13,7 @@ namespace XdCxRhDW.Core.Api
         {
         }
 
-        public DmcResult(int start, int length, string userName,double times)
+        public DmcResult(int start, int length, string userName,int times)
         {
             Start = start;
             Length = length;
@@ -27,6 +27,6 @@ namespace XdCxRhDW.Core.Api
 
         public string UserName { get; set; }
 
-        public double Times { get; set; }
+        public int Times { get; set; }//ms
     }
 }

+ 3 - 3
XdCxRhDW.Core/Api/Cpu参估/XcorrUtils.cs

@@ -66,7 +66,7 @@ namespace XdCxRhDW.Core.Api
                 res.FromLine(str);
                 res.file1 = xs.file1;
                 res.file2 = xs.file2;
-                res.tm = Math.Round(stopWatch.Elapsed.TotalMilliseconds, 4);
+                res.tm = (int)stopWatch.Elapsed.TotalMilliseconds;
                 res.smpstart = xs.smpStart;
                 res.smplen = xs.smpCount;
             });
@@ -117,7 +117,7 @@ namespace XdCxRhDW.Core.Api
              });
         }
 
-        public static IEnumerable<DmcResult> ConvertDmcResult(string res, double tm)
+        private IEnumerable<DmcResult> ConvertDmcResult(string res, double tm)
         {
             var lines = res.Split(Environment.NewLine.ToArray(), StringSplitOptions.RemoveEmptyEntries);
             foreach (var line in lines)
@@ -129,7 +129,7 @@ namespace XdCxRhDW.Core.Api
                 string userName = "";
                 if (items.Length >= 3)
                     userName = items[2];
-                yield return new DmcResult(start, length, userName, Math.Round(tm, 4));
+                yield return new DmcResult(start, length, userName, (int)tm);
             }
         }
 

+ 66 - 145
XdCxRhDW.WebApi/Controllers/DetectCgController.cs

@@ -10,7 +10,6 @@ using System.Web.Http;
 using XdCxRhDw.Dto;
 using XdCxRhDW.Core.Api;
 using XdCxRhDW.WebApi;
-using XdCxRhDW.WebApi.Service;
 
 namespace XdCxRhDW.WebApi.Controllers
 {
@@ -20,72 +19,30 @@ namespace XdCxRhDW.WebApi.Controllers
     public class DetectCgController : BaseController
     {
         private readonly string uploadFolder;
-        private readonly DetectService service;
 
         /// <summary>
         /// 
         /// </summary>
-        /// <param name="service"></param>
-        public DetectCgController(DetectService service)
+        public DetectCgController()
         {
             this.uploadFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot");
-            this.service = service;
         }
-        private static readonly object thisLock = new object();
-        Dictionary<string, XcorrUtils> keyValues = new Dictionary<string, XcorrUtils>();
 
-        private (bool, string) ValidateCalcParam(CalcDto dto)
-        {
-            if (dto == null)
-            {
-                return (false, "参估计算参数格式错误!");
-            }
-            if (string.IsNullOrEmpty(dto.file1))
-            {
-                return (false, "参估计算参数数据文件[file1]不能为空!");
-            }
-            if (string.IsNullOrEmpty(dto.file2))
-            {
-                return (false, "参估计算参数数据文件[file2]不能为空!");
-            }
-            if (!File.Exists(dto.file1))
-            {
-                return (false, $"参估计算参数数据文件[{dto.file1}]不存在!");
-            }
-            if (!File.Exists(dto.file2))
-            {
-                return (false, $"参估计算参数数据文件[{dto.file2}]不存在!");
-            }
-            if (dto.dtRange <= 0)
-            {
-                return (false, "参估计算参数时差范围[dtRange]不能小于等于0!");
-            }
-            if (dto.smpStart < 0)
-            {
-                return (false, "参估计算参数开始样点[smpStart]不能小于0!");
-            }
-            if (dto.smpCount < 0)
-            {
-                return (false, "参估计算参数样点数[smpCount]不能小于0!");
-            }
-            return (true, string.Empty);
-        }
         /// <summary>
         /// CPU参估计算
         /// </summary>
-        /// <param name="dto"></param>
+        /// <param name="dto">CPU参估参数</param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<AjaxResult<EstimationResDto>> EstimationCalc(CalcDto dto)
+        public async Task<AjaxResult<CpuCgResDto>> CpuCgCalc(CpuCgDto dto)
         {
-            var token = Request.GetCorrelationId().ToString();
             dto.file1 = Path.Combine(uploadFolder, dto.file1);
             dto.file2 = Path.Combine(uploadFolder, dto.file2);
             var vpres = ValidateCalcParam(dto);
             if (!vpres.Item1)
             {
                 Serilog.Log.Warning(vpres.Item2);
-                return Error<EstimationResDto>(vpres.Item2);
+                return Error<CpuCgResDto>(vpres.Item2);
             }
             XcorrStruct xItem = new XcorrStruct();
             xItem.file1 = dto.file1;
@@ -109,27 +66,22 @@ namespace XdCxRhDW.WebApi.Controllers
             xItem.smpStart = dto.smpStart;
             xItem.snrThreshold = dto.snrThreshold;
 
-            EstimationResDto resDto = new EstimationResDto();
+            CpuCgResDto resDto = new CpuCgResDto();
             try
             {
                 XcorrUtils xcorr = new XcorrUtils();
-                lock (thisLock)
-                {
-                    keyValues.Add(token, xcorr);
-                }
                 var result = await xcorr.Calc(xItem);
                 //开始计算
                 if (result.flag == -2)
                 {
                     Serilog.Log.Warning("参估计算内部错误!");
-                    return Error<EstimationResDto>("参估计算内部错误!");
+                    return Error<CpuCgResDto>("参估计算内部错误!");
                 }
                 else if (result.flag == -1)
                 {
                     Serilog.Log.Warning("参估计算所需数据超出文件范围!");
-                    return Error<EstimationResDto>("参估计算所需数据超出文件范围!");
+                    return Error<CpuCgResDto>("参估计算所需数据超出文件范围!");
                 }
-                resDto.Token = token;
                 resDto.TimeMs = result.tm;
                 resDto.Smpstart = result.smpstart;
                 resDto.Smplen = result.smplen;
@@ -146,14 +98,10 @@ namespace XdCxRhDW.WebApi.Controllers
             }
             catch (Exception ex)
             {
-                return Error<EstimationResDto>($"执行参估计算异常,{ex.Message}");
+                return Error<CpuCgResDto>($"执行参估计算异常,{ex.Message}");
             }
             finally
             {
-                lock (thisLock)
-                {
-                    keyValues.Remove(token);
-                }
                 try
                 {
                     //删除计算得文件
@@ -168,61 +116,10 @@ namespace XdCxRhDW.WebApi.Controllers
 
         }
 
-        /// <summary>
-        /// 参估计算停止
-        /// </summary>
-        /// <param name="token"></param>
-        /// <returns></returns>
-        //[HttpPost]
-        //public async Task<AjaxResult<bool>> StopEstimationCalc(string token)
-        //{
-        //    return await Task.Run(() =>
-        //    {
-        //        lock (thisLock)
-        //        {
-        //            if (keyValues.ContainsKey(token))
-        //            {
-        //                keyValues[token].StopCalc();
-        //                return Success(true);
-        //            }
-        //            else
-        //            {
-        //                return Success(false);
-        //            }
-        //        }
-        //    });
-
-        //}
-
-
-
-        private (bool, string) ValidateDetectParam(DetectDto dto)
-        {
-            if (dto == null)
-            {
-                return (false, "检测计算参数格式错误!");
-            }
-            if (string.IsNullOrEmpty(dto.file1))
-            {
-                return (false, "检测计算参数数据文件[file1]不能为空!");
-            }
-            if (!File.Exists(dto.file1))
-            {
-                return (false, $"检测计算参数数据文件[{dto.file1}]不存在!");
-            }
-            bool containsValue = Enum.IsDefined(typeof(DmcType), dto.dmcType);
-            if (!containsValue)
-            {
-                return (false, $"检测计算参数[dmcType]检测类型值{dto.dmcType}不存在!");
-            }
-
-            return (true, string.Empty);
-        }
-
         /// <summary>
         /// 信号检测(支持DAMA、IBS、能量检测)
         /// </summary>
-        /// <param name="dto"></param>
+        /// <param name="dto">信号检测参数</param>
         /// <returns></returns>
         [HttpPost]
         public async Task<AjaxResult<IEnumerable<DetectResDto>>> DetectCalc(DetectDto dto)
@@ -239,10 +136,6 @@ namespace XdCxRhDW.WebApi.Controllers
             try
             {
                 XcorrUtils xcorr = new XcorrUtils();
-                lock (thisLock)
-                {
-                    keyValues.Add(token, xcorr);
-                }
                 var dmcResult = await xcorr.DmcCheckAsync(dto.file1, dto.fsHz, dto.dmcType);
                 foreach (var dmcItem in dmcResult)
                 {
@@ -260,10 +153,6 @@ namespace XdCxRhDW.WebApi.Controllers
             }
             finally
             {
-                lock (thisLock)
-                {
-                    //keyValues.Remove(token);
-                }
                 try
                 {
                     //删除检测的文件
@@ -273,37 +162,69 @@ namespace XdCxRhDW.WebApi.Controllers
                 {
                 }
             }
-
             return Success<IEnumerable<DetectResDto>>(list);
 
         }
 
-        /// <summary>
-        /// 信号检测停止
-        /// </summary>
-        /// <param name="token"></param>
-        /// <returns></returns>
-        //[HttpPost]
-        //public async Task<AjaxResult<bool>> StopDetectCalc(string token)
-        //{
-        //    return await Task.Run(() =>
-        //    {
-        //        lock (thisLock)
-        //        {
-        //            if (keyValues.ContainsKey(token))
-        //            {
-        //                keyValues[token].StopDm();
-        //                return Success(true);
-        //            }
-        //            else
-        //            {
-        //                return Success(false);
-        //            }
-        //        }
-        //    });
+        private (bool, string) ValidateCalcParam(CpuCgDto dto)
+        {
+            if (dto == null)
+            {
+                return (false, "参估计算参数格式错误!");
+            }
+            if (string.IsNullOrEmpty(dto.file1))
+            {
+                return (false, "参估计算参数数据文件[file1]不能为空!");
+            }
+            if (string.IsNullOrEmpty(dto.file2))
+            {
+                return (false, "参估计算参数数据文件[file2]不能为空!");
+            }
+            if (!File.Exists(dto.file1))
+            {
+                return (false, $"参估计算参数数据文件[{Path.GetFileName(dto.file1)}]不存在!");
+            }
+            if (!File.Exists(dto.file2))
+            {
+                return (false, $"参估计算参数数据文件[{Path.GetFileName(dto.file2)}]不存在!");
+            }
+            if (dto.dtRange <= 0)
+            {
+                return (false, "参估计算参数时差范围[dtRange]不能小于等于0!");
+            }
+            if (dto.smpStart < 0)
+            {
+                return (false, "参估计算参数开始样点[smpStart]不能小于0!");
+            }
+            if (dto.smpCount < 0)
+            {
+                return (false, "参估计算参数样点数[smpCount]不能小于0!");
+            }
+            return (true, string.Empty);
+        }
 
-        //}
+        private (bool, string) ValidateDetectParam(DetectDto dto)
+        {
+            if (dto == null)
+            {
+                return (false, "检测计算参数格式错误!");
+            }
+            if (string.IsNullOrEmpty(dto.file1))
+            {
+                return (false, "检测计算参数数据文件[file1]不能为空!");
+            }
+            if (!File.Exists(dto.file1))
+            {
+                return (false, $"检测计算参数数据文件[{dto.file1}]不存在!");
+            }
+            bool containsValue = Enum.IsDefined(typeof(DmcType), dto.dmcType);
+            if (!containsValue)
+            {
+                return (false, $"检测计算参数[dmcType]检测类型值{dto.dmcType}不存在!");
+            }
 
+            return (true, string.Empty);
+        }
 
     }
 }

+ 1 - 14
XdCxRhDW.WebApi/Controllers/FileController.cs

@@ -12,7 +12,7 @@ using XdCxRhDw.Dto;
 namespace XdCxRhDW.WebApi.Controllers
 {
     /// <summary>
-    /// 检测参估功能相关接口
+    ///文件上传接口
     /// </summary>
     public class FileController : BaseController
     {
@@ -74,18 +74,5 @@ namespace XdCxRhDW.WebApi.Controllers
             });
             return Success(fileDto);
         }
-
-        /// <summary>
-        /// 文件下载
-        /// </summary>
-        /// <param name="dto">文件下载参数,值来自文件上传返回的结果</param>
-        /// <returns></returns>
-        [HttpPost]
-        public async Task<AjaxResult<byte[]>> DownloadFileAsync(FileDownloadDto dto)
-        {
-            string file=Path.Combine(uploadFolder, dto.FileName);
-            var data=File.ReadAllBytes(file);
-            return Success(data);
-        }
     }
 }

+ 0 - 67
XdCxRhDW.WebApi/Service/DetectService.cs

@@ -1,67 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using XdCxRhDW.Core.Api;
-
-namespace XdCxRhDW.WebApi.Service
-{
-    /// <summary>
-    /// 测试Service
-    /// </summary>
-    public class DetectService
-    {
-        private static readonly object thisLock = new object();
-        Dictionary<string, XcorrUtils> keyValues = new Dictionary<string, XcorrUtils>();
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public DetectService()
-        {
-            int code = this.GetHashCode();
-        }
-        /// <summary>
-        /// 存储token
-        /// </summary>
-        /// <param name="token"></param>
-        /// <param name="xcorr"></param>
-        public void Add(string token, XcorrUtils xcorr)
-        {
-            lock (thisLock)
-            {
-                keyValues.Add(token, xcorr);
-            }
-        }
-        /// <summary>
-        /// 移除totken
-        /// </summary>
-        /// <param name="token"></param>
-        public void Remove(string token)
-        {
-            lock (thisLock)
-            {
-                keyValues.Remove(token);
-            }
-        }
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="token"></param>
-        public XcorrUtils Get(string token)
-        {
-            lock (thisLock)
-            {
-                if (keyValues.ContainsKey(token))
-                {
-                    return keyValues[token];
-                }
-                else
-                {
-                    return null;
-                }
-            }
-        }
-    }
-}

+ 2 - 3
XdCxRhDW.WebApi/Startup.cs

@@ -52,7 +52,7 @@ namespace XdCxRhDW.WebApi
         public void Configuration(IAppBuilder app)
         {
             //启用目录浏览和静态文件
-            Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot"));
+            Directory.CreateDirectory("wwwroot");
             var physicalFileSystem = new PhysicalFileSystem(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot"));//目录浏览物理地址
            
             var options = new FileServerOptions
@@ -68,10 +68,8 @@ namespace XdCxRhDW.WebApi
 
             HttpConfiguration config = new HttpConfiguration();
             IEnumerable<ModelValidatorProvider> modelValidatorProviders = config.Services.GetModelValidatorProviders();
-
             DataAnnotationsModelValidatorProvider provider = (DataAnnotationsModelValidatorProvider)
                     modelValidatorProviders.Single(x => x is DataAnnotationsModelValidatorProvider);
-
             provider.RegisterDefaultValidatableObjectAdapter(typeof(CustomModelValidator));
 
             JsonSerializerSettings setting = new JsonSerializerSettings()
@@ -124,6 +122,7 @@ namespace XdCxRhDW.WebApi
             app.UseAutofacWebApi(config);
 
             app.UseCors(CorsOptions.AllowAll);
+
             app.UseWebApi(config);
         }
 

+ 3 - 1
XdCxRhDW.WebApi/XdCxRhDW.WebApi.csproj

@@ -192,7 +192,6 @@
     <Compile Include="Controllers\DetectCgController.cs" />
     <Compile Include="Controllers\PosController.cs" />
     <Compile Include="Controllers\XlController.cs" />
-    <Compile Include="Service\DetectService.cs" />
     <Compile Include="Startup.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -216,6 +215,9 @@
       <Name>XdCxRhDW.Repostory</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <Folder Include="Service\" />
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
     <PropertyGroup>

+ 17 - 6
XdCxRhDw.Dto/CalcDto.cs → XdCxRhDw.Dto/CpuCgDto.cs

@@ -9,9 +9,10 @@ using System.Windows.Markup;
 namespace XdCxRhDw.Dto
 {
     /// <summary>
-    /// 参计计算参数DTo
+    /// CPU参估参数
     /// </summary>
-    public class CalcDto
+    [CustomValidation(typeof(CpuCgDto), "Validate")]
+    public class CpuCgDto : IValidatableObject
     {
         /// <summary>
         /// 上传后返回的文件名
@@ -26,19 +27,20 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 开始样点
         /// </summary>
-        public int smpStart { get; set; }  
+        [Range(2, 4)]
+        public int smpStart { get; set; }
         /// <summary>
         /// 样点数(0表示文件末尾)
         /// </summary>
-        public int smpCount { get; set; }      
+        public int smpCount { get; set; }
         /// <summary>
         /// 采样率(Hz)
         /// </summary>
-        public double samplingRate { get; set; } 
+        public double samplingRate { get; set; }
         /// <summary>
         /// 时差中心(us)
         /// </summary>
-        public double dtCenter { get; set; } 
+        public double dtCenter { get; set; }
         /// <summary>
         /// 时差范围(us)
         /// </summary>
@@ -52,5 +54,14 @@ namespace XdCxRhDw.Dto
         /// </summary>
         public double snrThreshold { get; set; }
 
+        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
+        {
+            var results = new List<ValidationResult>();
+            if (this.smpStart <= 0)
+            {
+                results.Add(new ValidationResult("smpStart must be larger than 2"));
+            }
+            return results;
+        }
     }
 }

+ 13 - 19
XdCxRhDw.Dto/EstimationResDto.cs → XdCxRhDw.Dto/CpuCgResDto.cs

@@ -7,9 +7,9 @@ using System.Threading.Tasks;
 namespace XdCxRhDw.Dto
 {
     /// <summary>
-    /// 参估结果DTO
+    /// CPU参估结果DTO
     /// </summary>
-    public class EstimationResDto
+    public class CpuCgResDto
     {
         /// <summary>
         /// 文件1名称
@@ -21,6 +21,16 @@ namespace XdCxRhDw.Dto
         /// </summary>
         public string File2 { get; set; }
 
+        /// <summary>
+        /// 开始样点
+        /// </summary>
+        public long Smpstart { get; set; }
+
+        /// <summary>
+        /// 样点长度
+        /// </summary>
+        public long Smplen { get; set; }
+
         /// <summary>
         /// 相关时差,单位:us
         /// </summary>
@@ -39,22 +49,6 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 耗时(ms)
         /// </summary>
-        public double TimeMs { get; set; }
-
-        /// <summary>
-        /// 标识
-        /// </summary>
-        public string Token { get; set; }
-
-        /// <summary>
-        /// 开始样点
-        /// </summary>
-        public long Smpstart { get; set; }
-
-        /// <summary>
-        /// 样点长度
-        /// </summary>
-        public long Smplen { get; set; }
-
+        public int TimeMs { get; set; }
     }
 }

+ 1 - 1
XdCxRhDw.Dto/DetectResDto.cs

@@ -51,7 +51,7 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 耗时(ms)
         /// </summary>
-        public double TimeMs { get; set; }
+        public int TimeMs { get; set; }
 
         /// <summary>
         /// 标识

+ 2 - 2
XdCxRhDw.Dto/XdCxRhDw.Dto.csproj

@@ -46,13 +46,13 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="CalcDto.cs" />
+    <Compile Include="CpuCgDto.cs" />
     <Compile Include="AjaxResult.cs" />
     <Compile Include="FileDownloadDto.cs" />
     <Compile Include="EnumPosResTypeDto.cs" />
     <Compile Include="DetectDto.cs" />
     <Compile Include="DetectResDto.cs" />
-    <Compile Include="EstimationResDto.cs" />
+    <Compile Include="CpuCgResDto.cs" />
     <Compile Include="FileUploadResDto.cs" />
     <Compile Include="PosDto\RHNoXlPosDto.cs" />
     <Compile Include="PosDto\RHNoXlNoParPosDto.cs" />