2 Commits 312220b913 ... 4ff66c3a02

Author SHA1 Message Date
  zoule 4ff66c3a02 Merge branch 'master' of http://139.155.15.221:3000/zoulei/DW5S 4 months ago
  zoule 08b62f4079 ddq 4 months ago

+ 8 - 8
DW5S.App/CorTools/DetectToolForm.cs

@@ -55,7 +55,7 @@ namespace DW5S.App.CorTools
                     string file1 = null, file2 = null;
                     try
                     {
-                        file1 = await HttpHelper.UploadFileAsync(btnFile1.Text, SysConfig.GetBaseUrl());
+                        file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
                     }
                     catch (Exception ex)
                     {
@@ -66,7 +66,7 @@ namespace DW5S.App.CorTools
                     }
                     try
                     {
-                        file2 = await HttpHelper.UploadFileAsync(btnFile2.Text, SysConfig.GetBaseUrl());
+                        file2 = await HttpHelper.UploadFileAsync(btnFile2.Text);
                     }
                     catch (Exception ex)
                     {
@@ -149,7 +149,7 @@ namespace DW5S.App.CorTools
                             t.snr = null;
                         });
                         gridView1.RefreshData();
-                        var file1 = await HttpHelper.UploadFileAsync(btnFile1.Text, SysConfig.GetBaseUrl());
+                        var file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
                         var smps = data.Select(p => new SmpPosition()
                         {
                             smpStart = p.smpstart,
@@ -241,7 +241,7 @@ namespace DW5S.App.CorTools
             {
                 dto.fsHz = double.Parse(tefs.Text) * 1e6;
                 dto.band = double.Parse(txtBand.Text);
-                dto.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text, SysConfig.GetBaseUrl());
+                dto.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
                 var dmcResult = await HttpHelper.PostRequestAsync<IEnumerable<DetectResDto>>(SysConfig.GetUrl("DetectCg/DetectCalc"), dto);
                 if (dmcResult.code == 200)
                 {
@@ -298,8 +298,8 @@ namespace DW5S.App.CorTools
             layoutControl1.Enabled = false;
             try
             {
-                xItem.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text, SysConfig.GetBaseUrl());
-                xItem.file2 = await HttpHelper.UploadFileAsync(btnFile2.Text, SysConfig.GetBaseUrl());
+                xItem.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
+                xItem.file2 = await HttpHelper.UploadFileAsync(btnFile2.Text);
             }
             catch (Exception ex)
             {
@@ -389,8 +389,8 @@ namespace DW5S.App.CorTools
                     smpCount = double.Parse(teCount.Text),
                     snrThreshold = int.Parse(teSnr.Text),
                 };
-                par.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text, SysConfig.GetBaseUrl());
-                par.file2 = await HttpHelper.UploadFileAsync(btnFile2.Text, SysConfig.GetBaseUrl());
+                par.file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
+                par.file2 = await HttpHelper.UploadFileAsync(btnFile2.Text);
                 var resp = await HttpHelper.PostRequestAsync<List<ImageResultDto>>(SysConfig.GetUrl("DetectCg/DrawImage"), par);
                 await HttpHelper.DeleteFileAsync(SysConfig.GetBaseUrl(), par.file1, par.file2);
                 if (resp.code != 200)

+ 2 - 2
DW5S.App/CorTools/GpuCalcForm.cs

@@ -63,8 +63,8 @@ namespace DW5S.App.CorTools
             string file1, file2;
             try
             {
-                file1 = await HttpHelper.UploadFileAsync(btnFile1.Text, SysConfig.GetBaseUrl());
-                file2 = await HttpHelper.UploadFileAsync(btnFile2.Text, SysConfig.GetBaseUrl());
+                file1 = await HttpHelper.UploadFileAsync(btnFile1.Text);
+                file2 = await HttpHelper.UploadFileAsync(btnFile2.Text);
             }
             catch (Exception ex)
             {

+ 1 - 1
DW5S.App/CorTools/ResampleForm.cs

@@ -92,7 +92,7 @@ namespace DW5S.App.CorTools
                 string file = null;
                 try
                 {
-                    file = await HttpHelper.UploadFileAsync(txtFile.Text, SysConfig.GetBaseUrl());
+                    file = await HttpHelper.UploadFileAsync(txtFile.Text);
                 }
                 catch (Exception ex)
                 {

+ 6 - 1
DW5S.App/MainForm.cs

@@ -101,6 +101,11 @@ namespace DW5S
             //_ = ClearLog();
             //_ = MonitorCpuAndMemory();
             //await XlLonCalc();
+
+
+            var unitOfWork = IocContainer.UnitOfWork;
+            var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;
+            await repsXl.GetAllSat();
             DxHelper.WaitHelper.CloseForm();
         }
         private Task MonitorCpuAndMemory()
@@ -152,7 +157,7 @@ namespace DW5S
                     bool succeed = false;
                     try
                     {
-                        var fileName = await HttpHelper.UploadFileAsync(file, SysConfig.GetBaseUrl());
+                        var fileName = await HttpHelper.UploadFileAsync(file);
                         XlImportDto dto = new XlImportDto() { File = fileName };
                         var res = await HttpHelper.PostRequestAsync<RecordRes>(SysConfig.GetUrl("Xl/ImportTleAsync"), dto);
                         if (res.code == 200)

+ 2 - 2
DW5S.App/UserControl/CtrlXl.cs

@@ -137,7 +137,7 @@ namespace DW5S.App.UserControl
             string file;
             try
             {
-                file = await HttpHelper.UploadFileAsync(btnOpen.Text, SysConfig.GetBaseUrl());
+                file = await HttpHelper.UploadFileAsync(btnOpen.Text);
             }
             catch (Exception ex)
             {
@@ -150,7 +150,7 @@ namespace DW5S.App.UserControl
             try
             {
                 XlImportDto dto = new XlImportDto() { File = file };
-                var result = await HttpHelper.PostRequestAsync<RecordRes>(SysConfig.GetUrl("Xl/ImportTleAsync"), dto);
+                var result = await HttpHelper.PostRequestAsync<RecordRes>(SysConfig.GetUrl("Xl/ImportTle"), dto);
                 if (result.code == 200)
                 {
                     DxHelper.MsgBoxHelper.ShowInfo($"星历导入成功.共导入{result.data.Count}条");

+ 9 - 5
DW5S.Basic/SysConfig.cs

@@ -20,15 +20,15 @@ public static class SysConfig
     {
         return utcTime.ToOffset(TimeSpan.FromHours(AppConfigHelper.Get("TimeZone", 8)));
     }
-    
+
 
     public static string GetBaseUrl()
     {
         return $"http://{IpHelper.GetLocalIp()}:{AppConfigHelper.Get("HttpPort", 8090)}/api/";
     }
-    public static string GetUrl(string url)
+    public static string GetUrl(string url, string baseUrl = null)
     {
-        if (!url.ToLower().StartsWith("http"))
+        if (url.ToLower().StartsWith("http"))
         {
             return url;
         }
@@ -36,11 +36,15 @@ public static class SysConfig
         {
             if (url.StartsWith("/"))
             {
-                return $"{GetBaseUrl}{url}";
+                url = url.Substring(1);
             }
+            if (string.IsNullOrWhiteSpace(baseUrl))
+                return $"{GetBaseUrl()}{url}";
             else
             {
-                return $"{GetBaseUrl}{url}/{url}";
+                if (!baseUrl.EndsWith("/"))
+                    baseUrl = $"{baseUrl}/";
+                return $"{baseUrl}{url}";
             }
         }
     }

+ 9 - 9
DW5S.Controller/XlController.cs

@@ -36,11 +36,11 @@ namespace DW5S.Controllers
             string line = null;
             try
             {
-                var count = await Task.Run(async () =>
+                List<XlInfo> tmp = new List<XlInfo>();
+                await Task.Run(() =>
                  {
                      var lines = System.IO.File.ReadAllLines(GetLocalFile(dto.File)).ToList();
                      lines.RemoveAll(p => string.IsNullOrWhiteSpace(p));
-                     List<XlInfo> tmp = new List<XlInfo>();
                      for (int i = 0; i < lines.Count; i += 3)
                      {
                          line = lines[i];
@@ -72,17 +72,17 @@ namespace DW5S.Controllers
                          xl.TimeUTC = dt;
                          tmp.Add(xl);
                      }
-                     var repsXl = unitOfWork.Of<XlInfo>();
-                     await repsXl.AddOrUpdateAsync(tmp);
-
-                     return tmp.Count;
+                  
                  });
-                logger.Information($"星历导入成功,共{count}条");
-                return Success(new RecordRes(count));
+                var repsXl = unitOfWork.Of<XlInfo>();
+                await repsXl.AddOrUpdateAsync(tmp);
+                await unitOfWork.SaveAsync();
+                logger.Information($"星历导入成功,共{tmp.Count}条");
+                return Success(new RecordRes(tmp.Count));
             }
             catch (Exception ex)
             {
-                string msg = $"{line}星历导入异常,不支持的格式";
+                string msg = $"{line}星历导入异常";
                 logger.Error(ex, msg);
                 return Error<RecordRes>(msg);
             }

+ 65 - 30
DW5S.Service/HttpHelper.cs

@@ -153,55 +153,90 @@ public class HttpHelper
         };
     }
 
-    public static async Task<string> UploadFileAsync(string localFile, string baseUrl, CancellationToken token = default)
+    public static async Task<string> UploadFileAsync(string localFile,string baseUrl=null, CancellationToken token = default)
     {
-        string url = SysConfig.GetUrl("File/UploadFileAsync");
+        string url = SysConfig.GetUrl("file/upload", baseUrl);
         try
         {
             var factory = IocContainer.GetService<IHttpClientFactory>();
             var client = factory.CreateClient(httpFileKey);
-            using (var fileStream = File.OpenRead(localFile))
-            using (var fileContent = new StreamContent(fileStream))
-            {
-                // 3. (可选)设置文件 MIME 类型
-                string fileName = Path.GetFileName(localFile);
-                string contentType = GetMimeType(fileName);
-                fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(contentType);
+            using var formData = new MultipartFormDataContent();
+            var fileContent = new StreamContent(File.OpenRead(localFile));
+            fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
+
+            //注意:files必须和接口中的参数保持一致
+            formData.Add(fileContent, "files", Path.GetFileName(localFile));
+
 
-                // 4. 构造 MultipartFormDataContent
-                using var formData = new MultipartFormDataContent();
-                formData.Add(fileContent, "file", fileName);
-                var response = await client.PostAsync(url, formData);
-                if (response.IsSuccessStatusCode)
+            // 发送请求
+            var response = await client.PostAsync(url, formData, token);
+            if (response.IsSuccessStatusCode)
+            {
+                string responseBody = await response.Content.ReadAsStringAsync(token);
+                var AjaxResult = JsonConvert.DeserializeObject<AjaxResult<List<string>>>(responseBody);
+                if (AjaxResult.code == 200)
                 {
-                    string responseBody = await response.Content.ReadAsStringAsync();
-                    var AjaxResult = JsonConvert.DeserializeObject<AjaxResult<string>>(responseBody);
-                    if (AjaxResult.code == 200)
-                    {
-                        return AjaxResult.data;
-                    }
-                    else
-                    {
-                        throw new Exception(AjaxResult.msg);
-                    }
+                    return AjaxResult.data.FirstOrDefault();
                 }
                 else
                 {
-                    throw new Exception($"上传文件{Path.GetFileName(localFile)}到{url}失败!");
+                    throw new Exception(AjaxResult.msg);
                 }
             }
+            else
+            {
+                throw new Exception($"上传文件{Path.GetFileName(localFile)}到{url}失败!");
+            }
+
         }
-        catch (TaskCanceledException)
+        catch (Exception ex)
         {
-            if (token != default && token.IsCancellationRequested)
-                throw new TaskCanceledException();
+            throw new Exception($"上传文件{Path.GetFileName(localFile)}到{url}失败!", ex);
+        }
+    }
+
+    public static async Task<List<string>> UploadFileAsync(IEnumerable<string> localFiles, string baseUrl=null, CancellationToken token = default)
+    {
+        string url = SysConfig.GetUrl("file/upload",baseUrl);
+        try
+        {
+            var factory = IocContainer.GetService<IHttpClientFactory>();
+            var client = factory.CreateClient(httpFileKey);
+            using var formData = new MultipartFormDataContent();
+
+            foreach (var localFile in localFiles)
+            {
+                var fileContent = new StreamContent(File.OpenRead(localFile));
+                fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
+
+                //注意:files必须和接口中的参数保持一致
+                formData.Add(fileContent, "files", Path.GetFileName(localFile));
+            }
+
+            // 发送请求
+            var response = await client.PostAsync(url, formData, token);
+            if (response.IsSuccessStatusCode)
+            {
+                string responseBody = await response.Content.ReadAsStringAsync(token);
+                var AjaxResult = JsonConvert.DeserializeObject<AjaxResult<List<string>>>(responseBody);
+                if (AjaxResult.code == 200)
+                {
+                    return AjaxResult.data;
+                }
+                else
+                {
+                    throw new Exception(AjaxResult.msg);
+                }
+            }
             else
-                throw new Exception($"上传文件{Path.GetFileName(localFile)}到{url}超时!");
+            {
+                throw new Exception($"批量上传文件到{url}失败!");
+            }
 
         }
         catch (Exception ex)
         {
-            throw new Exception($"上传文件{Path.GetFileName(localFile)}到{url}失败!", ex);
+            throw new Exception($"批量上传文件到到{url}失败!", ex);
         }
     }
 

+ 1 - 1
DW5S.WebApi/BaseController.cs

@@ -25,7 +25,7 @@ namespace DW5S.WebApi
         /// </summary>
         public BaseController()
         {
-            this.uploadFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot");
+            this.uploadFolder =AppDomain.CurrentDomain.BaseDirectory;
         }
 
         /// <summary>

+ 6 - 10
DW5S.WebApi/FileOperatorController.cs

@@ -32,7 +32,7 @@ namespace DW5S.WebApi
         /// <param name="files">表单文件集合</param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<AjaxResult<List<string>>> UploadWithRandom(List<IFormFile> files)
+        public async Task<AjaxResult<List<string>>> UploadWithRandomAsync(List<IFormFile> files)
         {
             if (files.Count == 0) return Error<List<string>>("请选择文件");
             string uploadDir = "Upload";
@@ -70,7 +70,7 @@ namespace DW5S.WebApi
         /// <param name="overwriteExisted">是否覆盖已经存在的本地文件</param>
         /// <returns></returns>
         [HttpPost]
-        public async Task<AjaxResult<List<string>>> Upload(List<IFormFile> files, bool overwriteExisted = true)
+        public async Task<AjaxResult<List<string>>> UploadAsync(List<IFormFile> files, bool overwriteExisted = true)
         {
             if (files.Count == 0) return Error<List<string>>("请选择文件");
             string uploadDir = "Upload";
@@ -85,19 +85,15 @@ namespace DW5S.WebApi
                 string localFile = Path.Combine(path, filename);
                 if (overwriteExisted)
                 {
-                    using (var stream = new FileStream(localFile, FileMode.Create))
-                    {
-                        await file.CopyToAsync(stream);
-                    }
+                    using var stream = new FileStream(localFile, FileMode.Create);
+                    await file.CopyToAsync(stream);
                 }
                 else
                 {
                     if (!System.IO.File.Exists(localFile))
                     {
-                        using (var stream = new FileStream(localFile, FileMode.Create))
-                        {
-                            await file.CopyToAsync(stream);
-                        }
+                        using var stream = new FileStream(localFile, FileMode.Create);
+                        await file.CopyToAsync(stream);
                     }
                 }
                 string fileUrl = $"{uploadDir}/{time}/{filename}";