Ver código fonte

Merge branch 'master' of http://139.155.15.221:3000/zoulei/XdCxRhDW

gongqiuhong 1 ano atrás
pai
commit
329f4c67af

BIN
Database.db


+ 20 - 84
XdCxRhDW.App/CorTools/DetectToolForm.cs

@@ -30,9 +30,7 @@ namespace XdCxRhDW.App.CorTools
     public partial class DetectToolForm : DevExpress.XtraEditors.XtraForm
     {
         static readonly string inifile = Path.Combine(Application.StartupPath, "par.ini");
-        volatile bool beRunning = false;
-        private string uploadUrL;
-        private string token;
+        private string baseUrl;
         BindingList<CafResult> gridSource = new BindingList<CafResult>();
 
         public DetectToolForm()
@@ -102,6 +100,14 @@ namespace XdCxRhDW.App.CorTools
             this.gridControl1.DataSource = gridSource;
             btnCheck.Enabled = !ckKY.Checked && !ckIBS.Checked && !chkDama.Checked ? false : true;
             ReadIni();
+            using (RHDWContext db = new RHDWContext())
+            {
+                var res = await db.SysSetings.FirstOrDefaultAsync();
+                if (res != null)
+                {
+                    this.baseUrl = $"http://{IpHelper.GetLocalIp()}:{res.HttpPort}/api/";
+                }
+            }
         }
 
         private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
@@ -135,7 +141,7 @@ namespace XdCxRhDW.App.CorTools
         /// <param name="e"></param>
         private void gridView1_MouseDown(object sender, MouseEventArgs e)
         {
-            if (e.Button == MouseButtons.Right && !beRunning)
+            if (e.Button == MouseButtons.Right)
             {
                 popupMenu1.ShowPopup(Cursor.Position);
             }
@@ -220,34 +226,22 @@ namespace XdCxRhDW.App.CorTools
             dto.dmcType = dmcType;
             try
             {
-                using (RHDWContext db = new RHDWContext())
-                {
-                    var res = await db.SysSetings.FirstOrDefaultAsync();
-                    if (res != null)
-                    {
-                        uploadUrL = $"http://{IpHelper.GetLocalIp()}:{res.HttpPort}/api/DetectCg";
-                    }
-                }
-                dto.file1 = UpLoadFile(btnFile1.Text);
+                dto.file1 = HttpHelper.UploadFile(btnFile1.Text, baseUrl + "File/UploadFileAsync");
                 dto.fsHz = double.Parse(tefs.Text) * 1e6;
-                // 构建上传请求的 Uri
-                string uploadUri = $"{uploadUrL}/DetectCalc";
-
                 var content = new StringContent(JsonConvert.SerializeObject(dto), System.Text.Encoding.UTF8, "application/json");
-                var dmcResult = HttpHelper.PostRequest<IEnumerable<DetectResDto>>(uploadUri, content);
+                var dmcResult = HttpHelper.PostRequest<IEnumerable<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", content);
                 if (dmcResult != null)
                 {
                     gridSource.Clear();
                     foreach (var dmcItem in dmcResult)
                     {
-                        token = dmcItem.Token;
                         gridSource.Add(new CafResult()
                         {
                             file1 = btnFile1.Text,
                             file2 = btnFile2.Text,
                             smpstart = dmcItem.Start,
                             smplen = dmcItem.Length,
-                            tm=dmcItem.TimeMs,
+                            tm = dmcItem.TimeMs,
                         });
                     }
                 }
@@ -316,16 +310,8 @@ namespace XdCxRhDW.App.CorTools
             XcorrStruct xItem = new XcorrStruct();
             try
             {
-                using (RHDWContext db = new RHDWContext())
-                {
-                    var res = await db.SysSetings.FirstOrDefaultAsync();
-                    if (res != null)
-                    {
-                        uploadUrL = $"http://{IpHelper.GetLocalIp()}:{res.HttpPort}/api/DetectCg";
-                    }
-                }
-                xItem.file1 = UpLoadFile(btnFile1.Text);
-                xItem.file2 = UpLoadFile(btnFile2.Text);
+                xItem.file1 = HttpHelper.UploadFile(btnFile1.Text, baseUrl + "File/UploadFileAsync");
+                xItem.file2 = HttpHelper.UploadFile(btnFile2.Text, baseUrl + "File/UploadFileAsync");
                 xItem.smpCount = int.Parse(teCount.Text);
                 xItem.samplingRate = Convert.ToInt32(double.Parse(tefs.Text) * 1e6);
                 xItem.dtCenter = int.Parse(teCenter.Text);
@@ -358,29 +344,24 @@ namespace XdCxRhDW.App.CorTools
 
             WriteIni();
             btnCalc.Text = "停止";
-            beRunning = true;
             gridSource.Clear();
             foreach (var xcitem in xcorrs)
             {
-                // 构建上传请求的 Uri
-                string uploadUri = $"{uploadUrL}/EstimationCalc";
-
                 var content = new StringContent(JsonConvert.SerializeObject(xcitem), System.Text.Encoding.UTF8, "application/json");
                 try
                 {
-                    var result = HttpHelper.PostRequest<EstimationResDto>(uploadUri, content);
+                    var result = HttpHelper.PostRequest<CpuCgResDto>(baseUrl+ "DetectCg/CpuCgCalc", content);
                     if (result != null)
                     {
-                        token = result.Token;
                         gridSource.Add(new CafResult()
                         {
                             file1 = btnFile1.Text,
                             file2 = btnFile2.Text,
                             smpstart = result.Smpstart,
                             smplen = result.Smplen,
-                            dt=result.Dt,
-                            df= result.Df,
-                            snr= result.Snr,
+                            dt = result.Dt,
+                            df = result.Df,
+                            snr = result.Snr,
                             tm = result.TimeMs,
                         });
                         gridView1.FocusedRowHandle = gridSource.Count - 1;
@@ -395,54 +376,12 @@ namespace XdCxRhDW.App.CorTools
             }
 
             btnCalc.Text = "计算";
-            beRunning = false;
 
         }
         private void StopCalc()
-        {   // 构建上传请求的 Uri
-            string uploadUri = $"{uploadUrL}/StopEstimationCalc?token={token}";
-            var content = new StringContent("", System.Text.Encoding.UTF8, "application/json");
-            try
-            {
-                var result = HttpHelper.PostRequest<bool>(uploadUri, content);
-                if (result)
-                {
-                    DxHelper.MsgBoxHelper.ShowInfo($"停止成功");
-                }
-            }
-            catch (Exception)
-            {
-            }
+        {  
         }
-        private string UpLoadFile(string filePath)
-        {
-            string file = string.Empty;
-
-            // 构建上传请求的 Uri
-            string uploadUri = $"{uploadUrL}/UploadFile";
-            try
-            {
-                // 添加文件内容到 MultipartFormDataContent
-                byte[] fileBytes = File.ReadAllBytes(filePath);
 
-                // 创建 MultipartFormDataContent 用于封装文件内容
-                MultipartFormDataContent content = new MultipartFormDataContent();
-                ByteArrayContent fileContent = new ByteArrayContent(fileBytes);
-                content.Add(fileContent, "file", Path.GetFileName(filePath));
-
-                // 发送上传请求
-               var filedto = HttpHelper.PostRequest<FileUploadResDto>(uploadUri, content);
-                if (filedto != null)
-                {
-                    file = filedto.FileName;
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new Exception($"上传文件{filePath}到{uploadUri}失败!");
-            }
-            return file;
-        }
         private async Task<CafResult> ExecuteCorAsync(XcorrStruct xItem)
         {
 
@@ -453,20 +392,17 @@ namespace XdCxRhDW.App.CorTools
             {
                 DxHelper.MsgBoxHelper.ShowError($"内部错误");
                 btnCalc.Text = "计算";
-                beRunning = false;
                 return null;
             }
             else if (result.flag == -1)
             {
                 DxHelper.MsgBoxHelper.ShowError($"计算所需数据超出文件范围");
                 btnCalc.Text = "计算";
-                beRunning = false;
                 return null;
             }
             else if (result.flag == -3)
             {
                 btnCalc.Text = "计算";
-                beRunning = false;
                 return null;
             }
             return result;

+ 1 - 9
XdCxRhDW.App/ExtensionsDev/MapControlEx.cs

@@ -1423,19 +1423,11 @@ public static class MapControlEx
     /// <param name="wcKm"></param>
     /// <param name="dots"></param>
     /// <param name="patterncount"></param>
-    public static void DrawGdopLineTwo(this MapControl ctrl, string wcKm, IEnumerable<(double lon, double lat)> dots, int patterncount, bool isClear = true)
+    public static void DrawGdopLineTwo(this MapControl ctrl, string wcKm, IEnumerable<(double lon, double lat)> dots, int patterncount)
     {
         if (dots == null || !dots.Any()) return;
         string identify = "DrawGdopLine_";
         var innerData = ctrl.Tag as InnerData;
-        if (isClear)
-        {
-            var mapItem = innerData.mMapStorage.Items.Find(m => m.Tag.ToString().StartsWith(identify));
-            if (mapItem != null)
-            {
-                innerData.mMapStorage.Items.Remove(mapItem);
-            }
-        }
         //多条线 两个点绘制一个线段 1和2一个线段 3和4一个线段
         List<MapPolyline> polylines = new List<MapPolyline>();
         int index = 0;

+ 4 - 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;
@@ -20,6 +21,9 @@ namespace XdCxRhDW
         static Program()
         {
             AppDomain.CurrentDomain.SetData("PRIVATE_BINPATH", "AddIns;");
+            string paths = Environment.GetEnvironmentVariable("PATH");
+            string dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Api\GDOP误差椭圆\GDOP\");
+            Environment.SetEnvironmentVariable("PATH", $"{paths};{dllPath}");
             var m = typeof(AppDomainSetup).GetMethod("UpdateContextProperty", BindingFlags.NonPublic | BindingFlags.Static);
             var funsion = typeof(AppDomain).GetMethod("GetFusionContext", BindingFlags.NonPublic | BindingFlags.Instance);
             m.Invoke(null, new object[] { funsion.Invoke(AppDomain.CurrentDomain, null), "PRIVATE_BINPATH", "AddIns;" });

+ 6 - 5
XdCxRhDW.App/Properties/licenses.licx

@@ -1,9 +1,10 @@
-DevExpress.XtraMap.MapControl, DevExpress.XtraMap.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.SearchLookUpEdit, DevExpress.XtraGrid.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
 DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraMap.MapControl, DevExpress.XtraMap.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
 DevExpress.XtraEditors.ImageComboBoxEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
 DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
 DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.SearchLookUpEdit, DevExpress.XtraGrid.v23.2, Version=23.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

+ 1 - 1
XdCxRhDW.App/UserControl/X1D1GDOPParam.cs

@@ -36,7 +36,7 @@ namespace XdCxRhDW.App.UserControl
             txtCXStation.UseDoubleClickToSelectAll();
             this.txtCapTime.DateTime = item.SigTime;
             this.txtDtousErr1.EditValue = 1;
-            this.txtSatLocErr1.EditValue = 1000;
+            this.txtSatLocErr1.EditValue = 10000;
             this.txtCxErr.EditValue = 0.001;
             List<string> xlall = new List<string>();
             string mainTle = string.Empty;

+ 1 - 1
XdCxRhDW.App/UserControl/X2D1GDOPParam.cs

@@ -36,7 +36,7 @@ namespace XdCxRhDW.App.UserControl
             txtRefLocation1.UseDoubleClickToSelectAll();
             this.txtCapTime.DateTime = item.SigTime;
             this.txtDtousErr1.EditValue = 1;
-            this.txtSatLocErr1.EditValue = 1000;
+            this.txtSatLocErr1.EditValue = 10000;
             List<string> xlall = new List<string>();
             string mainTle = string.Empty;
             string adjaTle = string.Empty;

+ 3 - 3
XdCxRhDW.App/UserControl/X2DFGDOPParam.cs

@@ -37,7 +37,7 @@ namespace XdCxRhDW.App.UserControl
             txtTleLeo2.UseDoubleClickToSelectAll();
             txtRefLocation1.UseDoubleClickToSelectAll();
             this.txtCapTime.DateTime = item.SigTime;
-            this.txtSatLocErr1.EditValue = 1000;
+            this.txtSatLocErr1.EditValue = 10000;
             this.txtEphVelErr1.EditValue = 0.1;
             this.txtDfoErr1.EditValue = 0.01;
             this.txtDtousErr1.EditValue = 1;
@@ -54,8 +54,8 @@ namespace XdCxRhDW.App.UserControl
                 {
                     this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
                 }
-                this.txtFu1.EditValue = cg.TarFreqUp.HasValue ? cg.TarFreqUp.Value : 950;
-                this.txtFu2.EditValue = cg.RefFreqUp.HasValue ? cg.RefFreqUp.Value : 950;
+                this.txtFu1.EditValue = cg.TarFreqUp.HasValue ? cg.TarFreqUp.Value * 1e-6 : 950;
+                this.txtFu2.EditValue = cg.RefFreqUp.HasValue ? cg.RefFreqUp.Value * 1e-6 : 950;
 
                 var xlList = db.XlInfos.OrderBy(p => p.SatName).OrderByDescending(p => p.TimeBJ).ToList();
                 xlall.AddRange(xlList.Select(m => m.TwoLine));

+ 3 - 3
XdCxRhDW.App/UserControl/X3DFGDOPParam .cs

@@ -39,7 +39,7 @@ namespace XdCxRhDW.App.UserControl
             txtTleLeo3.UseDoubleClickToSelectAll();
             txtRefLocation1.UseDoubleClickToSelectAll();
             this.txtCapTime.DateTime = item.SigTime;
-            this.txtSatLocErr1.EditValue = 1000;
+            this.txtSatLocErr1.EditValue = 10000;
             this.txtEphVelErr1.EditValue = 0.1;
             this.txtDfoErr1.EditValue = 0.01;
 
@@ -56,8 +56,8 @@ namespace XdCxRhDW.App.UserControl
                 {
                     this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
                 }
-                this.txtFu1.EditValue = cg.TarFreqUp.HasValue ? cg.TarFreqUp.Value : 950;
-                this.txtFu2.EditValue = cg.RefFreqUp.HasValue ? cg.RefFreqUp.Value : 950;
+                this.txtFu1.EditValue = cg.TarFreqUp.HasValue ? cg.TarFreqUp.Value * 1e-6 : 950;
+                this.txtFu2.EditValue = cg.RefFreqUp.HasValue ? cg.RefFreqUp.Value * 1e-6 : 950;
 
                 var xlList = db.XlInfos.OrderBy(p => p.SatName).OrderByDescending(p => p.TimeBJ).ToList();
                 xlall.AddRange(xlList.Select(m => m.TwoLine));

+ 1 - 1
XdCxRhDW.App/UserControl/X3GDOPParam.cs

@@ -34,7 +34,7 @@ namespace XdCxRhDW.App.UserControl
             txtRefLocation1.UseDoubleClickToSelectAll();
             this.txtCapTime.DateTime = item.SigTime;
             this.txtDtousErr1.EditValue = 1;
-            this.txtSatLocErr1.EditValue = 1000;
+            this.txtSatLocErr1.EditValue = 10000;
 
             PosResType = item.PosResType;
             if (PosResType == EnumPosResType.X3NoRef)

+ 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);
             }
         }
 

BIN
XdCxRhDW.Core/Api/GDOP误差椭圆/GDOP/mfc100u.dll


BIN
XdCxRhDW.Core/Api/GDOP误差椭圆/GDOP/msvcr100.dll


+ 1 - 0
XdCxRhDW.Core/Api/GDOP误差椭圆/GdopHelper.cs

@@ -39,6 +39,7 @@ namespace XdCxRhDW.Core.Api
             }
             else
             {
+
                 GDOPApi.Gdop2Sat1DRef(mainLines, adajLines, timeSpan, cdbPos, refPos, dtousErr, ephLocErr, level, level.Length, resCount, out res, satllh);
 
             }

+ 37 - 18
XdCxRhDW.Core/HttpHelper.cs

@@ -1,34 +1,36 @@
 using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Net.Http;
 using System.Text;
 using System.Threading.Tasks;
 using XdCxRhDw.Dto;
+using XdCxRhDW.Repostory.EFContext;
 
 namespace XdCxRhDW.Core
 {
     public class HttpHelper
     {
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="url"></param>
-        /// <param name="data"></param>
-        /// <returns></returns>
-        public static string PostRequest(string url, HttpContent data)
-        {
-            var handler = new HttpClientHandler() { UseCookies = false };
-            HttpClient client = new HttpClient(handler);
-            client.Timeout = TimeSpan.FromSeconds(10);
-            var message = new HttpRequestMessage(HttpMethod.Post, url);
-            message.Content = data;
-            var response = client.SendAsync(message).Result;
-            response.EnsureSuccessStatusCode();
-            var result = response.Content.ReadAsStringAsync().Result;
-            return result;
-        }
+        ///// <summary>
+        ///// 
+        ///// </summary>
+        ///// <param name="url"></param>
+        ///// <param name="data"></param>
+        ///// <returns></returns>
+        //public static string PostRequest(string url, HttpContent data)
+        //{
+        //    var handler = new HttpClientHandler() { UseCookies = false };
+        //    HttpClient client = new HttpClient(handler);
+        //    client.Timeout = TimeSpan.FromSeconds(10);
+        //    var message = new HttpRequestMessage(HttpMethod.Post, url);
+        //    message.Content = data;
+        //    var response = client.SendAsync(message).Result;
+        //    response.EnsureSuccessStatusCode();
+        //    var result = response.Content.ReadAsStringAsync().Result;
+        //    return result;
+        //}
         /// <summary>
         /// 
         /// </summary>
@@ -57,5 +59,22 @@ namespace XdCxRhDW.Core
                 throw new Exception(AjaxResult.msg);
             }
         }
+        public static string UploadFile(string localFile, string uploadUrl)
+        {
+            try
+            {
+                // 添加文件内容到 MultipartFormDataContent
+                byte[] fileBytes = File.ReadAllBytes(localFile);
+                MultipartFormDataContent content = new MultipartFormDataContent();
+                ByteArrayContent fileContent = new ByteArrayContent(fileBytes);
+                content.Add(fileContent, "file", Path.GetFileName(localFile));
+                var filedto = HttpHelper.PostRequest<FileUploadResDto>(uploadUrl, content);
+                return filedto.FileName;
+            }
+            catch
+            {
+                throw new Exception($"上传文件{Path.GetFileName(localFile)}到{uploadUrl}失败!");
+            }
+        }
     }
 }

+ 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);
+        }
 
     }
 }

+ 7 - 20
XdCxRhDW.WebApi/Controllers/FileController.cs

@@ -12,7 +12,7 @@ using XdCxRhDw.Dto;
 namespace XdCxRhDW.WebApi.Controllers
 {
     /// <summary>
-    /// 检测参估功能相关接口
+    ///文件上传接口
     /// </summary>
     public class FileController : BaseController
     {
@@ -29,15 +29,15 @@ namespace XdCxRhDW.WebApi.Controllers
         /// <summary>
         /// 上传文件
         /// </summary>
-        /// <param name="file">文件</param>
         /// <returns></returns>
         [HttpPost, SwaggerForm]
-        public async Task<AjaxResult<FileUploadResDto>> UploadFileAsync(HttpPostedFileBase httpFile)
+        public async Task<AjaxResult<FileUploadResDto>> UploadFileAsync()
         {
-            //if (!Request.Content.IsMimeMultipartContent("form-data"))
-            //{
-            //    return Error<FileDto>("请求数据不是multipart/form-data类型");
-            //}
+            if (!Request.Content.IsMimeMultipartContent("form-data"))
+            {
+                bool s=Request.Content.IsFormData();
+                return Error<FileUploadResDto>("请求数据不是form-data类型");
+            }
             var provider = new MultipartMemoryStreamProvider();
             await Request.Content.ReadAsMultipartAsync(provider);
             Directory.CreateDirectory(uploadFolder);
@@ -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" />