2 Commits 1f418b62ff ... ce66006ab7

Auteur SHA1 Bericht Datum
  zoule ce66006ab7 Merge branch 'master' of http://139.155.15.221:3000/zoulei/DW5S 3 maanden geleden
  zoule 67a50dd023 增加缓存 3 maanden geleden

File diff suppressed because it is too large
+ 40 - 3
DW5S.App/DxHelper/SvgHelper.cs


+ 4 - 0
DW5S.App/MainForm.cs

@@ -103,6 +103,10 @@ namespace DW5S
             //_ = MonitorCpuAndMemory();
             //await XlLonCalc();
 
+            btnRecTx.ImageOptions.SvgImage = SvgHelper.CreateAntRec();
+            btnRefTx.ImageOptions.SvgImage = SvgHelper.CreateAntRef();
+            btnCxTx.ImageOptions.SvgImage = SvgHelper.CreateAntRadar();
+            btnSample.ImageOptions.SvgImage = SvgHelper.CreateSampleFile();
 
             var unitOfWork = IocContainer.UnitOfWork;
             var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;

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

@@ -409,11 +409,11 @@ namespace DW5S.App.UserControl
             if (station != null)
             {
                 if (mapControl1.ExistFixedImg($"SatTx_{station.SatTxLon}_{station.SatTxLat}", station.SatTxLat, station.SatTxLon))
-                    mapControl1.DrawFixedImg("Tx", $"SatTx_{station.SatTxLon}_{station.SatTxLat}", station.SatTxLat, station.SatTxLon, DxHelper.SvgHelper.CreateAnt(width: 16, height: 16), $"[卫星接收天线]\r\n经度:{station.SatTxLon}°\r\n纬度:{station.SatTxLat}°");
+                    mapControl1.DrawFixedImg("Tx", $"SatTx_{station.SatTxLon}_{station.SatTxLat}", station.SatTxLat, station.SatTxLon, DxHelper.SvgHelper.CreatePentagram(width: 16, height: 16), $"[卫星接收天线]\r\n经度:{station.SatTxLon}°\r\n纬度:{station.SatTxLat}°");
                 if (station.CdbTxLon != null)
                 {
                     if (mapControl1.ExistFixedImg($"SatTx_{station.CdbTxLon.Value}_{station.CdbTxLat.Value}", station.CdbTxLat.Value, station.CdbTxLon.Value))
-                        mapControl1.DrawFixedImg("Tx", $"CdbTx_{station.CdbTxLon.Value}_{station.CdbTxLat.Value}", station.CdbTxLat.Value, station.CdbTxLon.Value, DxHelper.SvgHelper.CreateAnt(width: 16, height: 16), $"[超短接收天线]\r\n经度:{station.CdbTxLon.Value}°\r\n纬度:{station.CdbTxLat.Value}°");
+                        mapControl1.DrawFixedImg("Tx", $"CdbTx_{station.CdbTxLon.Value}_{station.CdbTxLat.Value}", station.CdbTxLat.Value, station.CdbTxLon.Value, DxHelper.SvgHelper.CreatePentagram(width: 16, height: 16), $"[超短接收天线]\r\n经度:{station.CdbTxLon.Value}°\r\n纬度:{station.CdbTxLat.Value}°");
                 }
                 if (station.RefLon != null)
                 {

+ 5 - 3
DW5S.App/UserControl/CtrlSat.cs

@@ -1,6 +1,7 @@
 using DW5S.App.EditForms;
 using DW5S.Entity;
 using DW5S.Repostory;
+using Microsoft.Extensions.Caching.Memory;
 using System;
 using System.Collections.Generic;
 using System.Data;
@@ -29,6 +30,7 @@ namespace DW5S.App.UserControl
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsSat = unitOfWork.Of<SatInfo>();
                 var items = await repsSat.GetAllAsync(p => p.SatName);
+                IocContainer.Cache.Set(CacheKeys.AllSat, items);
                 list.AddRange(items.To<List<SatViewModel>>());
             }
             catch (Exception ex)
@@ -49,7 +51,7 @@ namespace DW5S.App.UserControl
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsSat = unitOfWork.Of<SatInfo>();
                 var satInfo = await repsSat.AddOrUpdateAsync(addItem.To<SatInfo>());
-                await unitOfWork.SaveAsync();
+                await unitOfWork.SaveAsync(typeof(SatInfo));
                 addItem.Id = satInfo.Id;
                 return addItem;
             }
@@ -71,7 +73,7 @@ namespace DW5S.App.UserControl
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsSat = unitOfWork.Of<SatInfo>();
                 await repsSat.AddOrUpdateAsync(editItem.To<SatInfo>());
-                await unitOfWork.SaveAsync();
+                await unitOfWork.SaveAsync(typeof(SatInfo));
                 return editItem;
             }
             catch (Exception ex)
@@ -90,7 +92,7 @@ namespace DW5S.App.UserControl
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsSat = unitOfWork.Of<SatInfo>();
                 await repsSat.DeleteAsync(list.To<List<SatInfo>>());
-                await unitOfWork.SaveAsync();
+                await unitOfWork.SaveAsync(typeof(SatInfo));
                 return true;
             }
             catch (Exception ex)

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

@@ -7,6 +7,7 @@ using DW5S.Repostory;
 using DW5S.ViewModel;
 using DxHelper;
 using ExtensionsDev;
+using Microsoft.Extensions.Caching.Memory;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -144,7 +145,7 @@ namespace DW5S.App.UserControl
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsXl = unitOfWork.Of<XlInfo>();
                 var count = await repsXl.DeleteAsync(list.To<List<XlInfo>>());
-                await unitOfWork.SaveAsync();
+                await unitOfWork.SaveAsync(typeof(XlInfo));
                 ctrlPage1.RefreshData();
                 IocContainer.Logger.Information($"删除选中星历,共删除了{count}条星历记录");
                 return true;
@@ -170,7 +171,7 @@ namespace DW5S.App.UserControl
                 var unitOfWork = IocContainer.UnitOfWork;
                 var repsXl = unitOfWork.Of<XlInfo>();
                 var count = await repsXl.DeleteAsync(p => true);
-                await unitOfWork.SaveAsync();
+                await unitOfWork.SaveAsync(typeof(XlInfo));
                 ctrlPage1.RefreshData();
                 IocContainer.Logger.Information($"删除所有星历,共删除了{count}条星历记录");
                 return true;

+ 1 - 1
DW5S.Controller/XlController.cs

@@ -76,7 +76,7 @@ namespace DW5S.Controllers
                  });
                 var repsXl = unitOfWork.Of<XlInfo>();
                 await repsXl.AddOrUpdateAsync(tmp);
-                await unitOfWork.SaveAsync();
+                await unitOfWork.SaveAsync(typeof(XlInfo));
                 logger.Information($"星历导入成功,共{tmp.Count}条");
                 return Success(new RecordRes(tmp.Count));
             }

+ 16 - 0
DW5S.Repostory/CacheKeys.cs

@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace DW5S.Repostory
+{
+    public static class CacheKeys
+    {
+        public const string AllXlSat = "AllXlSat";
+
+        public const string AllSat = "AllSat";
+            
+    }
+}

+ 4 - 0
DW5S.Repostory/IocContainer.cs

@@ -1,5 +1,6 @@
 using Autofac;
 using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Caching.Memory;
 using Serilog;
 using System;
 using System.Collections.Generic;
@@ -15,11 +16,14 @@ namespace DW5S.Repostory
         {
             Container = container;
             Logger=GetService<ILogger>();
+            Cache = GetService<IMemoryCache>();
         }
         private static ILifetimeScope Container;
 
         public static ILogger Logger { get; private set; }
 
+        public static IMemoryCache Cache { get; private set; }
+
         public static IUnitOfWork UnitOfWork
         {
             get

+ 7 - 0
DW5S.Repostory/Repository/XlRepository.cs

@@ -1,6 +1,7 @@
 using DW5S.Entity;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Caching.Memory;
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -41,6 +42,11 @@ namespace DW5S.Repostory
 
         public async Task<IEnumerable<SatInfo>> GetAllSat()
         {
+            var list = IocContainer.Cache.Get<IEnumerable<SatInfo>>(CacheKeys.AllXlSat);
+            if (list != null)
+            {
+                return list;
+            }
             var data = await dbSet.GroupBy(p => p.SatCode).Select(p => p.FirstOrDefault()).ToListAsync();
             var sats = data.Select(p => new SatInfo()
             {
@@ -48,6 +54,7 @@ namespace DW5S.Repostory
                 SatName = p.SatName,
                 SatLon = p.Lon,
             }).ToList();
+            IocContainer.Cache.Set(CacheKeys.AllXlSat, sats, TimeSpan.FromDays(1));
             return sats;
         }
 

+ 19 - 2
DW5S.Repostory/UnitOfWork.cs

@@ -14,7 +14,13 @@ namespace DW5S.Repostory
         IRepository<TEntity, long> OfLong<TEntity>() where TEntity : BaseEntity<long>;
 
         IRepository<TEntity,IDType> OfType<TEntity, IDType>() where TEntity : BaseEntity<IDType>;
-        Task<int> SaveAsync();
+
+        /// <summary>
+        /// 保存
+        /// </summary>
+        /// <param name="changedEntityTypes">变化的模型,用于清空模型对应的缓存</param>
+        /// <returns></returns>
+        Task<int> SaveAsync(params Type[] changedEntityTypes);
     }
     public class UnitOfWork : IUnitOfWork
     {
@@ -44,8 +50,19 @@ namespace DW5S.Repostory
             this.ctx = ctx;
         }
 
-        public async Task<int> SaveAsync()
+        public async Task<int> SaveAsync(params Type[] changedEntityTypes)
         {
+            if (changedEntityTypes != null)
+            {
+                if (changedEntityTypes.Contains(typeof(XlInfo)))
+                {
+                    IocContainer.Cache.Remove(CacheKeys.AllXlSat);
+                }
+                else if (changedEntityTypes.Contains(typeof(SatInfo)))
+                {
+                    IocContainer.Cache.Remove(CacheKeys.AllSat);
+                }
+            }
             return await ctx.SaveChangesAsync();
         }
         public async ValueTask DisposeAsync()

Some files were not shown because too many files changed in this diff