gongqiuhong пре 1 година
родитељ
комит
b054e8764a
30 измењених фајлова са 784 додато и 376 уклоњено
  1. 21 17
      XdCxRhDW.App/Controllers/PosController.cs
  2. 7 4
      XdCxRhDW.App/EditForms/X1D1DTOParamEditor.cs
  3. 8 5
      XdCxRhDW.App/EditForms/X1D1PosParamEditor.cs
  4. 6 3
      XdCxRhDW.App/EditForms/X2D1DTOParamEditor.cs
  5. 6 3
      XdCxRhDW.App/EditForms/X2D1PosParamEditor.cs
  6. 6 3
      XdCxRhDW.App/EditForms/X2DTOParamEditor.cs
  7. 6 3
      XdCxRhDW.App/EditForms/X2PosParamEditor.cs
  8. 6 3
      XdCxRhDW.App/EditForms/X3DTOParamEditor.cs
  9. 6 3
      XdCxRhDW.App/EditForms/X3DfoPosParamEditor.cs
  10. 6 3
      XdCxRhDW.App/EditForms/X3PosParamEditor.cs
  11. 46 28
      XdCxRhDW.App/ExtensionsDev/MapControlEx.cs
  12. 6 6
      XdCxRhDW.App/MainForm.Designer.cs
  13. 15 0
      XdCxRhDW.App/MainForm.cs
  14. 18 11
      XdCxRhDW.App/PopupControl/ShowCgCtrl.cs
  15. 5 2
      XdCxRhDW.App/PopupControl/ShowCheckCtrl.cs
  16. 5 2
      XdCxRhDW.App/PopupControl/ShowCxCtrl.cs
  17. 12 5
      XdCxRhDW.App/UserControl/CtrlCgRes.cs
  18. 153 79
      XdCxRhDW.App/UserControl/CtrlHome.cs
  19. 94 48
      XdCxRhDW.App/UserControl/CtrlSysSettings.Designer.cs
  20. 69 43
      XdCxRhDW.App/UserControl/CtrlSysSettings.cs
  21. 3 0
      XdCxRhDW.App/UserControl/CtrlSysSettings.resx
  22. 18 14
      XdCxRhDW.App/UserControl/X1D1GDOPParam.cs
  23. 18 17
      XdCxRhDW.App/UserControl/X2D1GDOPParam.cs
  24. 18 16
      XdCxRhDW.App/UserControl/X2DFGDOPParam.cs
  25. 21 19
      XdCxRhDW.App/UserControl/X3DFGDOPParam .cs
  26. 19 16
      XdCxRhDW.App/UserControl/X3GDOPParam.cs
  27. 8 3
      XdCxRhDW.Entity/EntityEnum.cs
  28. 17 0
      XdCxRhDW.Entity/SysSetings.cs
  29. 158 18
      XdCxRhDW.Repostory/EFContext/RHDWContext.cs
  30. 3 2
      XdCxRhDW.WebApi/Startup.cs

+ 21 - 17
XdCxRhDW.App/Controllers/PosController.cs

@@ -57,7 +57,7 @@ namespace XdCxRhDW.App.Controllers
                 }
             }
 
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -174,7 +174,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.MainCode}的ECEF星历出错.{ephMain.msg}");
                 return Error<PosResDto>($"推算卫星{dto.MainCode}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -283,7 +283,7 @@ namespace XdCxRhDW.App.Controllers
                 }
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -423,7 +423,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.AdjaCode}的ECEF星历出错.{ephAdja.msg}");
                 return Error<PosResDto>($"推算卫星{dto.AdjaCode}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -535,7 +535,7 @@ namespace XdCxRhDW.App.Controllers
                 }
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -670,7 +670,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.AdjaCode}的ECEF星历出错.{ephAdja.msg}");
                 return Error<PosResDto>($"推算卫星{dto.AdjaCode}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -780,7 +780,7 @@ namespace XdCxRhDW.App.Controllers
                 }
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -923,7 +923,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.AdjaCode}的ECEF星历出错.{ephAdja.msg}");
                 return Error<PosResDto>($"推算卫星{dto.AdjaCode}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -1044,7 +1044,7 @@ namespace XdCxRhDW.App.Controllers
                 }
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -1204,7 +1204,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.Adja2Code}的ECEF星历出错.{ephAdja2.msg}");
                 return Error<PosResDto>($"推算卫星{dto.Adja2Code}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -1322,7 +1322,7 @@ namespace XdCxRhDW.App.Controllers
                 }
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -1476,7 +1476,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.Adja2Code}的ECEF星历出错.{ephAdja2.msg}");
                 return Error<PosResDto>($"推算卫星{dto.Adja2Code}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -1591,7 +1591,7 @@ namespace XdCxRhDW.App.Controllers
                 }
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -1753,7 +1753,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.Adja2Code}的ECEF星历出错.{ephAdja2.msg}");
                 return Error<PosResDto>($"推算卫星{dto.Adja2Code}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -1875,7 +1875,7 @@ namespace XdCxRhDW.App.Controllers
                 }
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -2014,7 +2014,7 @@ namespace XdCxRhDW.App.Controllers
                 Serilog.Log.Error($"推算卫星{dto.AdjaCode}的ECEF星历出错.{ephAdja.msg}");
                 return Error<PosResDto>($"推算卫星{dto.AdjaCode}的ECEF星历出错");
             }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime))
+            using (RHDWPartContext db = RHDWPartContext.GetContext(dto.SigTime,true))
             {
                 var StationRes = db.StationRes.Add(new StationRes()
                 {
@@ -2174,6 +2174,7 @@ namespace XdCxRhDW.App.Controllers
                     var dayFile = Path.Combine(dir, item);
                     using (RHDWPartContext db = RHDWPartContext.GetContext(dayFile))
                     {
+                        if (!db.DatabaseExist) continue;
                         var query = db.PosRes.Where(p => p.SigTime >= start && p.SigTime <= end && p.TaskInfoID == dto.TaskInfoID);
                         if (!dto.IncludeInvalidate)
                             query = query.Where(p => p.PosLon != 999);
@@ -2240,6 +2241,7 @@ namespace XdCxRhDW.App.Controllers
                     var dayFile = Path.Combine(dir, item);
                     using (RHDWPartContext db = RHDWPartContext.GetContext(dayFile))
                     {
+                        if (!db.DatabaseExist) continue;
                         var query = db.PosRes.Where(p => p.SigTime >= start && p.SigTime <= end && p.TaskInfoID == dto.TaskInfoID);
                         if (!dto.IncludeInvalidate)
                             query = query.Where(p => p.PosLon != 999);
@@ -2250,10 +2252,11 @@ namespace XdCxRhDW.App.Controllers
                         foreach (var itemPos in posRes)
                         {
                             var repos = new RePosRes();
+                            repos.ID = itemPos.ID;
                             repos.SigTime = itemPos.SigTime;
                             repos.PosLon = itemPos.PosLon;
                             repos.PosLat = itemPos.PosLat;
-                            repos.MirrLon= itemPos.MirrLon;
+                            repos.MirrLon = itemPos.MirrLon;
                             repos.MirrLat = itemPos.MirrLat;
                             repos.TaskInfoID = itemPos.TaskInfoID;
                             repos.FreqUpHz = itemPos.FreqUpHz;
@@ -2314,6 +2317,7 @@ namespace XdCxRhDW.App.Controllers
                     {
                         using (RHDWPartContext db = RHDWPartContext.GetContext(dayFile))
                         {
+                            if (!db.DatabaseExist) continue;
                             var query = db.PosRes.Where(p => p.TaskInfoID == dto.TaskInfoID);
                             if (!dto.IncludeInvalidate)
                             {

+ 7 - 4
XdCxRhDW.App/EditForms/X1D1DTOParamEditor.cs

@@ -54,15 +54,18 @@ namespace XdCxRhDW.App.EditForms
         private async void X1D1DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 listSat = await db.SatInfos.ToListAsync();
             }
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {
@@ -137,7 +140,7 @@ namespace XdCxRhDW.App.EditForms
 
         private async void btnEphCalc_Click(object sender, EventArgs e)
         {
-            
+
             if (this.sigTime.DateTime == DateTime.MinValue)
             {
                 DxHelper.MsgBoxHelper.ShowWarning("信号时间不能为空!");

+ 8 - 5
XdCxRhDW.App/EditForms/X1D1PosParamEditor.cs

@@ -58,17 +58,20 @@ namespace XdCxRhDW.App.EditForms
         private async void X1D1DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
-            CxRes cx;
+            CxRes cx=null;
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
-                cx = await db.CxRes.Where(m => m.ID == info.CxResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                    cx = await db.CxRes.Where(m => m.ID == info.CxResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 6 - 3
XdCxRhDW.App/EditForms/X2D1DTOParamEditor.cs

@@ -55,15 +55,18 @@ namespace XdCxRhDW.App.EditForms
         private async void X2D1DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 listSat = await db.SatInfos.ToListAsync();
             }
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 6 - 3
XdCxRhDW.App/EditForms/X2D1PosParamEditor.cs

@@ -50,15 +50,18 @@ namespace XdCxRhDW.App.EditForms
         private async void X2D1DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 6 - 3
XdCxRhDW.App/EditForms/X2DTOParamEditor.cs

@@ -55,15 +55,18 @@ namespace XdCxRhDW.App.EditForms
         private async void X2DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 listSat = await db.SatInfos.ToListAsync();
             }
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 6 - 3
XdCxRhDW.App/EditForms/X2PosParamEditor.cs

@@ -55,15 +55,18 @@ namespace XdCxRhDW.App.EditForms
         private async void X2DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 6 - 3
XdCxRhDW.App/EditForms/X3DTOParamEditor.cs

@@ -47,15 +47,18 @@ namespace XdCxRhDW.App.EditForms
         private async void X3DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 listSat = await db.SatInfos.ToListAsync();
             }
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 6 - 3
XdCxRhDW.App/EditForms/X3DfoPosParamEditor.cs

@@ -49,15 +49,18 @@ namespace XdCxRhDW.App.EditForms
         private async void X3DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWContext db = new RHDWContext())
             {
                 settings = await db.SysSetings.FirstOrDefaultAsync();
             }
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 6 - 3
XdCxRhDW.App/EditForms/X3PosParamEditor.cs

@@ -44,11 +44,14 @@ namespace XdCxRhDW.App.EditForms
         private async void X3DTOParamEditor_Load(object sender, EventArgs e)
         {
 
-            StationRes station;
+            StationRes station=null;
             using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
             {
-                cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                if (db.DatabaseExist)
+                {
+                    cg = await db.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
+                }
             }
             if (cg != null)
             {

+ 46 - 28
XdCxRhDW.App/ExtensionsDev/MapControlEx.cs

@@ -60,7 +60,7 @@ public enum GoogleMapType
 
 /// <summary>
 /// MapControl扩展类,封装了常用的非业务基础功能.
-/// 内置了4个图层,ImageTileLayer、DrawLayer、FixedDrawLayer、PosLayer.
+/// 内置了3个图层DrawLayer、FixedDrawLayer、PosLayer.
 /// 必须首先调用UseDefalutOptions函数
 /// </summary>
 public static class MapControlEx
@@ -319,11 +319,6 @@ public static class MapControlEx
         ctrl.NavigationPanelOptions.CoordinatesStyle.Font = new Font("微软雅黑", 10F);
         ctrl.NavigationPanelOptions.ScaleStyle.Font = new Font("微软雅黑", 10F);
 
-        // Create ImageTileLayer
-        ImageLayer layer = new ImageLayer() { Name = "ImageTileLayer" };
-
-        ctrl.Layers.Add(layer);
-
         //地图绘制加载(标点、测距、框选等元素载体图层).用来绘制可擦除的元素
         var layerDraw = new VectorItemsLayer() { Name = "DrawLayer" };
         var drawDataStorage = new MapItemStorage();
@@ -839,12 +834,23 @@ public static class MapControlEx
         }
         if (localGmdbDataEnable)
         {
+            RemoveWmtsLyaer(ctrl);
+            ImageLayer layer = new ImageLayer() { Name = "WMTS:Local" };
+            ctrl.Layers.Add(layer);
             var provider = new ImageTileDataProvider();//地图瓦片提供者
             provider.TileSource = new ImageTileSource();//地图瓦片数据源接口实现
-            ctrl.GetImageLayer().DataProvider = provider;
+            layer.DataProvider = provider;
         }
         return ctrl;
     }
+    private static void RemoveWmtsLyaer(MapControl ctrl)
+    {
+        var layers = ctrl.Layers.Where(p => p.Name.StartsWith("WMTS:")).ToList();
+        foreach (var item in layers)
+        {
+            ctrl.Layers.Remove(item);
+        }
+    }
     /// <summary>
     /// 使用WMTS图源
     /// </summary>
@@ -855,12 +861,7 @@ public static class MapControlEx
     /// <returns></returns>
     public static MapControl UseWMTS(this MapControl ctrl, string url, EnumWmtsSource source, EnumMapLayerType layerType)
     {
-        //var provider = new HttpMapDataProvider();
-        //var tileSource = provider.TileSource as HttpTileSource;
-        //tileSource.HttpServerAddr = url;
-        //tileSource.WmtsSource = source;
-        //tileSource.LayerType = layerType;
-        //ctrl.GetImageLayer().DataProvider = provider;
+        RemoveWmtsLyaer(ctrl);
         if (source == EnumWmtsSource.SJZX)
         {
             if (layerType.HasFlag(EnumMapLayerType.SatMap))
@@ -871,10 +872,12 @@ public static class MapControlEx
                 tileSource.WmtsSource = source;
                 tileSource.LayerType = layerType;
                 tileSource.LayerName = "satellite";
-                ImageLayer satelliteImageLayer = new ImageLayer();
+                ImageLayer satelliteImageLayer = new ImageLayer()
+                {
+                     Name="WMTS:SJZX-SatMap"
+                };
                 ctrl.Layers.Add(satelliteImageLayer);
                 satelliteImageLayer.DataProvider = provider;
-                //ctrl.GetImageLayer().DataProvider = provider;
             }
             if (layerType.HasFlag(EnumMapLayerType.RoadMap) || layerType.HasFlag(EnumMapLayerType.XZQH_Map))
             {
@@ -884,7 +887,10 @@ public static class MapControlEx
                 tileSource.WmtsSource = source;
                 tileSource.LayerType = layerType;
                 tileSource.LayerName = "electron";
-                ImageLayer electronImageLayer = new ImageLayer();
+                ImageLayer electronImageLayer = new ImageLayer()
+                {
+                    Name="WMTS:SJZX-Electron"
+                };
                 ctrl.Layers.Add(electronImageLayer);
                 electronImageLayer.DataProvider = provider;
             }
@@ -899,10 +905,12 @@ public static class MapControlEx
                 tileSource.WmtsSource = source;
                 tileSource.LayerType = layerType;
                 tileSource.LayerName = "NaturalEarthII";
-                ImageLayer naturalEarthIIImageLayer = new ImageLayer();
+                ImageLayer naturalEarthIIImageLayer = new ImageLayer()
+                {
+                    Name = "WMTS:ZCJ-NaturalEarthII"
+                };
                 ctrl.Layers.Add(naturalEarthIIImageLayer);
                 naturalEarthIIImageLayer.DataProvider = provider;
-                //ctrl.GetImageLayer().DataProvider = provider;
             }
             if (layerType.HasFlag(EnumMapLayerType.RoadMap))
             {
@@ -912,7 +920,10 @@ public static class MapControlEx
                 tileSource.WmtsSource = source;
                 tileSource.LayerType = layerType;
                 tileSource.LayerName = "roadmap-final";
-                ImageLayer roadmapIImageLayer = new ImageLayer();
+                ImageLayer roadmapIImageLayer = new ImageLayer()
+                {
+                    Name = "WMTS:ZCJ-Roadmap"
+                };
                 ctrl.Layers.Add(roadmapIImageLayer);
                 roadmapIImageLayer.DataProvider = provider;
             }
@@ -924,7 +935,10 @@ public static class MapControlEx
                 tileSource.WmtsSource = source;
                 tileSource.LayerType = layerType;
                 tileSource.LayerName = "overlay-final";
-                ImageLayer overlayImageLayer = new ImageLayer();
+                ImageLayer overlayImageLayer = new ImageLayer()
+                { 
+                    Name = "WMTS:ZCJ-Overlay"
+                };
                 ctrl.Layers.Add(overlayImageLayer);
                 overlayImageLayer.DataProvider = provider;
             }
@@ -955,6 +969,7 @@ public static class MapControlEx
         {
             throw new ArgumentNullException(nameof(layerName));
         }
+        RemoveWmtsLyaer(ctrl);
         var provider = new WmsDataProvider();//地图瓦片提供者
         provider.ServerUri = url;
         if (!string.IsNullOrWhiteSpace(layerName))
@@ -968,7 +983,9 @@ public static class MapControlEx
         //    if (string.IsNullOrWhiteSpace(layerName))
         //        provider.ActiveLayerName = e.Layers[0].Name;
         //};
-        ctrl.GetImageLayer().DataProvider = provider;
+        ImageLayer layer = new ImageLayer() { Name="WMTS:Wms"};
+        layer.DataProvider = provider;
+        ctrl.Layers.Add(layer);
         return ctrl;
     }
 
@@ -1842,10 +1859,10 @@ public static class MapControlEx
     /// </summary>
     /// <param name="ctrl"></param>
     /// <returns></returns>
-    public static ImageLayer GetImageLayer(this MapControl ctrl)
+    public static List<ImageLayer> GetImageLayer(this MapControl ctrl)
     {
         if (ctrl.Layers == null) return null;
-        return (ImageLayer)ctrl.Layers["ImageTileLayer"];
+        return ctrl.Layers.Where(p => p.Name.StartsWith("WMTS:")).Select(p => (ImageLayer)p).ToList();
     }
 
     /// <summary>
@@ -1880,17 +1897,18 @@ public static class MapControlEx
     }
 
     /// <summary>
-    /// 设置地图类型.默认为Normal
+    /// 设置本地地图类型.默认为Normal
     /// 该方法为所有MapControl实例设置地图类型
     /// </summary>
     /// <param name="mapType"></param>
-    public static void SetMapType(GoogleMapType mapType)
+    public static void SetLocalMapType(GoogleMapType mapType)
     {
         mMapType = mapType;
         listMapCtrl.ForEach(t =>
         {
-            if (t.GetImageLayer() == null) return;
-            var provider = t.GetImageLayer().DataProvider as MapTileDataProviderBase;
+            var localLayer =t.GetImageLayer()?.FirstOrDefault(p=>p.Name=="WMTS:Local");
+            if (localLayer == null) return;
+            var provider = localLayer.DataProvider as MapTileDataProviderBase;
             provider?.ClearCache();
             t.Refresh();
         });
@@ -2659,7 +2677,7 @@ public static class MapControlEx
                     string imgUrl = string.Empty;
                     if (WmtsSource == EnumWmtsSource.SJZX)
                     {
-                      
+
                         imgUrl = $"{HttpServerAddr}?lyr={LayerName}&x={tilePositionX}&y={tilePositionY}&z={zoomLevel}";
                     }
                     else

+ 6 - 6
XdCxRhDW.App/MainForm.Designer.cs

@@ -28,10 +28,11 @@
         /// </summary>
         private void InitializeComponent()
         {
+            this.components = new System.ComponentModel.Container();
             this.components = new System.ComponentModel.Container();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
-            DevExpress.Utils.SuperToolTip superToolTip1 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipItem toolTipItem1 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.Utils.SuperToolTip superToolTip5 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem5 = new DevExpress.Utils.ToolTipItem();
             this.ribbon = new DevExpress.XtraBars.Ribbon.RibbonControl();
             this.skinPaletteDropDownButtonItem1 = new DevExpress.XtraBars.SkinPaletteDropDownButtonItem();
             this.btnOpenApi = new DevExpress.XtraBars.BarButtonItem();
@@ -112,9 +113,9 @@
             this.btnOpenApi.Id = 21;
             this.btnOpenApi.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnOpenApi.ImageOptions.SvgImage")));
             this.btnOpenApi.Name = "btnOpenApi";
-            toolTipItem1.Text = "查看接口文档";
-            superToolTip1.Items.Add(toolTipItem1);
-            this.btnOpenApi.SuperTip = superToolTip1;
+            toolTipItem5.Text = "查看接口文档";
+            superToolTip5.Items.Add(toolTipItem5);
+            this.btnOpenApi.SuperTip = superToolTip5;
             this.btnOpenApi.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.btnOpenApi_ItemClick);
             // 
             // btnTask
@@ -302,7 +303,6 @@
             this.IsMdiContainer = true;
             this.Name = "MainForm";
             this.Ribbon = this.ribbon;
-            this.Text = "多模式融合定位平台";
             this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
             this.Load += new System.EventHandler(this.MainForm_Load);
             ((System.ComponentModel.ISupportInitialize)(this.ribbon)).EndInit();

+ 15 - 0
XdCxRhDW.App/MainForm.cs

@@ -54,8 +54,23 @@ namespace XdCxRhDW
             btn_ItemClick(null, null);
             ServerContext.Instance.Init();
         }
+        private string text;
         private async void MainForm_Load(object sender, EventArgs e)
         {
+            this.text = this.Text;
+            this.HtmlText = $"<size=12>{this.text}";
+            using (RHDWContext db = new RHDWContext())
+            {
+               var settings = await db.SysSetings.FirstOrDefaultAsync();
+                if (settings != null)
+                {
+                    this.HtmlText = $"<size=12>{text}(<size=9>{settings.TimeZoneDisplayName}</size>)";
+                }
+            }
+            Messenger.Defalut.Sub<SysSetings>("时区改变", settings=>
+            {
+                this.HtmlText = $"<size=12>{text}(<size=9>{settings.TimeZoneDisplayName}</size>)";
+            });
             _ = XlScan();
             _ = XlClear();
             await XlLonCalc();

+ 18 - 11
XdCxRhDW.App/PopupControl/ShowCgCtrl.cs

@@ -30,7 +30,7 @@ namespace XdCxRhDW.App.PopupControl
         }
 
         public ShowCgCtrl(PosRes posItem)
-            :this()
+            : this()
         {
             this.posItem = posItem;
         }
@@ -44,6 +44,10 @@ namespace XdCxRhDW.App.PopupControl
             List<ModelCg> list = new List<ModelCg>();
             using (RHDWPartContext db = RHDWPartContext.GetContext(posItem.SigTime))
             {
+                if (!db.DatabaseExist)
+                {
+                    return;
+                }
                 var cgEntity = db.CgRes.Where(p => p.ID == posItem.CgResID).FirstOrDefault();
                 if (cgEntity == null) return;
 
@@ -98,7 +102,7 @@ namespace XdCxRhDW.App.PopupControl
                     list.Add(item);
                 }
                 //超短
-                if (cgEntity.DtoCdb!=null)
+                if (cgEntity.DtoCdb != null)
                 {
                     ModelCg item = new ModelCg()
                     {
@@ -132,16 +136,19 @@ namespace XdCxRhDW.App.PopupControl
             {
                 using (RHDWPartContext db = RHDWPartContext.GetContext(cgItem.SigTime))
                 {
-                    var data = await db.CgXgfRes.Where(p => p.CgResID == cgItem.ID && p.CgType == cgItem.CgType).ToListAsync();
-                    listXgf.AddRange(data.Select(p => new ModelCgXgf
+                    if (db.DatabaseExist)
                     {
-                        ID = p.ID,
-                        Dto = p.Dto,
-                        Dfo = p.Dfo,
-                        Snr = p.Snr,
-                        CreateTime = p.CreateTime,
-                        UpdateTime = p.UpdateTime,
-                    }));
+                        var data = await db.CgXgfRes.Where(p => p.CgResID == cgItem.ID && p.CgType == cgItem.CgType).ToListAsync();
+                        listXgf.AddRange(data.Select(p => new ModelCgXgf
+                        {
+                            ID = p.ID,
+                            Dto = p.Dto,
+                            Dfo = p.Dfo,
+                            Snr = p.Snr,
+                            CreateTime = p.CreateTime,
+                            UpdateTime = p.UpdateTime,
+                        }));
+                    }
                 }
                 //查询相关峰结果
             }

+ 5 - 2
XdCxRhDW.App/PopupControl/ShowCheckCtrl.cs

@@ -36,9 +36,12 @@ namespace XdCxRhDW.App.PopupControl
                 return;
             using (RHDWPartContext db = RHDWPartContext.GetContext(posItem.SigTime))
             {
-                var items =await db.CheckRes.Where(p => p.ID == posItem.CheckResID).ToListAsync();
+                if (db.DatabaseExist)
+                {
+                    var items = await db.CheckRes.Where(p => p.ID == posItem.CheckResID).ToListAsync();
 
-                this.list.AddRange(items);
+                    this.list.AddRange(items);
+                }
             }
             gridView1.RefreshData();
         }

+ 5 - 2
XdCxRhDW.App/PopupControl/ShowCxCtrl.cs

@@ -34,9 +34,12 @@ namespace XdCxRhDW.App.PopupControl
         {
             using (RHDWPartContext db = RHDWPartContext.GetContext(posItem.SigTime))
             {
-                var items =await db.CxRes.Where(p => p.ID == posItem.CxResID).ToListAsync();
+                if (db.DatabaseExist)
+                {
+                    var items = await db.CxRes.Where(p => p.ID == posItem.CxResID).ToListAsync();
 
-                this.list.AddRange(items);
+                    this.list.AddRange(items);
+                }
             }
             gridView1.RefreshData();
         }

+ 12 - 5
XdCxRhDW.App/UserControl/CtrlCgRes.cs

@@ -68,9 +68,12 @@ namespace XdCxRhDW.App.UserControl
                     var ids = groupItem.Select(m => m.ID).ToList();
                     using (RHDWPartContext db = RHDWPartContext.GetContext(groupItem.First().SigTime))
                     {
-                        List<CgRes> list = await db.CgRes.Where(p => ids.Contains(p.ID)).ToListAsync();
-                        db.CgRes.RemoveRange(list);
-                        await db.SaveChangesAsync();
+                        if (db.DatabaseExist)
+                        {
+                            List<CgRes> list = await db.CgRes.Where(p => ids.Contains(p.ID)).ToListAsync();
+                            db.CgRes.RemoveRange(list);
+                            await db.SaveChangesAsync();
+                        }
                     }
                 }
                 return true;
@@ -160,6 +163,7 @@ namespace XdCxRhDW.App.UserControl
                         {
                             using (RHDWPartContext db = RHDWPartContext.GetContext(dayFile))
                             {
+                                if (!db.DatabaseExist) continue;
                                 if (db.CgRes.Any(p => p.TaskID == ((TaskInfo)txtTask.EditValue).ID))
                                     end = await db.CgRes.Where(p => p.TaskID == ((TaskInfo)txtTask.EditValue).ID).MaxAsync(p => p.SigTime);
                             }
@@ -184,8 +188,11 @@ namespace XdCxRhDW.App.UserControl
                 {
                     using (RHDWPartContext db = RHDWPartContext.GetContext(endDay))
                     {
-                        var cgRes = await db.CgRes.Where(w => w.SigTime >= start && w.SigTime <= end && w.TaskID == ((TaskInfo)txtTask.EditValue).ID).OrderByDescending(o => o.SigTime).ToListAsync();
-                        list.AddRange(cgRes);
+                        if (db.DatabaseExist)
+                        {
+                            var cgRes = await db.CgRes.Where(w => w.SigTime >= start && w.SigTime <= end && w.TaskID == ((TaskInfo)txtTask.EditValue).ID).OrderByDescending(o => o.SigTime).ToListAsync();
+                            list.AddRange(cgRes);
+                        }
                     }
                     endDay = endDay.AddDays(-1);
                 }

+ 153 - 79
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -64,7 +64,7 @@ namespace XdCxRhDW.App.UserControl
         private async void CtrlHome_Load(object sender, EventArgs e)
         {
             Messenger.Defalut.Sub<ModelPosRes>("新增定位点", OnPosAdd);
-            Messenger.Defalut.Sub<SysSetings>("系统配置改变", OnSysSetingsChanged);
+            Messenger.Defalut.Sub<SysSetings>("地图类型改变", OnSysSetingsChanged);
             Messenger.Defalut.Sub<int>("任务状态改变", async id =>
             {
 
@@ -122,7 +122,7 @@ namespace XdCxRhDW.App.UserControl
                 if (settings == null)
                 {
                     mapControl1.UseLocalDb();
-                    DxHelper.MsgBoxHelper.ShowWarning($"请在系统设置中配置IP端口信息");
+                    DxHelper.MsgBoxHelper.ShowWarning($"请在系统设置中配置基础信息");
                     return;
                 }
                 try
@@ -367,17 +367,20 @@ namespace XdCxRhDW.App.UserControl
             if (posItem == null) return;
             using (RHDWPartContext db = RHDWPartContext.GetContext(posItem.SigTime))
             {
-                var station = db.StationRes.Where(p => p.ID == posItem.StationResID).FirstOrDefault();
-                if (station != null)
+                if (db.DatabaseExist)
                 {
-                    mapControl1.DrawFixedImg("Tx", station.SatTxLat, station.SatTxLon, DxHelper.SvgHelper.CreateAnt(width: 16, height: 16), $"[卫星接收天线]\r\n经度:{station.SatTxLon}°\r\n纬度:{station.SatTxLat}°");
-                    if (station.CdbTxLon != null)
-                        mapControl1.DrawFixedImg("Tx", station.CdbTxLat.Value, station.CdbTxLon.Value, DxHelper.SvgHelper.CreateAnt(width: 16, height: 16), $"[超短接收天线]\r\n经度:{station.CdbTxLon.Value}°\r\n纬度:{station.CdbTxLat.Value}°");
-                    if (station.RefLon != null)
-                        mapControl1.DrawFixedImg("Tx", station.RefLat.Value, station.RefLon.Value, DxHelper.SvgHelper.CreatePentagram(width: 16, height: 16), $"[参考站]\r\n经度:{station.RefLon.Value}°\r\n纬度:{station.RefLat.Value}°");
-                    if (station.CxLon != null)
-                        mapControl1.DrawFixedImg("Tx", station.CxLat.Value, station.CxLon.Value, DxHelper.SvgHelper.CreatePentagram(width: 16, height: 16), $"[测向站]\r\n经度:{station.CxLon.Value}°\r\n纬度:{station.CxLat.Value}°");
+                    var station = db.StationRes.Where(p => p.ID == posItem.StationResID).FirstOrDefault();
+                    if (station != null)
+                    {
+                        mapControl1.DrawFixedImg("Tx", station.SatTxLat, station.SatTxLon, DxHelper.SvgHelper.CreateAnt(width: 16, height: 16), $"[卫星接收天线]\r\n经度:{station.SatTxLon}°\r\n纬度:{station.SatTxLat}°");
+                        if (station.CdbTxLon != null)
+                            mapControl1.DrawFixedImg("Tx", station.CdbTxLat.Value, station.CdbTxLon.Value, DxHelper.SvgHelper.CreateAnt(width: 16, height: 16), $"[超短接收天线]\r\n经度:{station.CdbTxLon.Value}°\r\n纬度:{station.CdbTxLat.Value}°");
+                        if (station.RefLon != null)
+                            mapControl1.DrawFixedImg("Tx", station.RefLat.Value, station.RefLon.Value, DxHelper.SvgHelper.CreatePentagram(width: 16, height: 16), $"[参考站]\r\n经度:{station.RefLon.Value}°\r\n纬度:{station.RefLat.Value}°");
+                        if (station.CxLon != null)
+                            mapControl1.DrawFixedImg("Tx", station.CxLat.Value, station.CxLon.Value, DxHelper.SvgHelper.CreatePentagram(width: 16, height: 16), $"[测向站]\r\n经度:{station.CxLon.Value}°\r\n纬度:{station.CxLat.Value}°");
 
+                    }
                 }
             }
         }
@@ -855,9 +858,12 @@ namespace XdCxRhDW.App.UserControl
                     var ids = groupItem.Select(m => m.ID).ToList();
                     using (RHDWPartContext db = RHDWPartContext.GetContext(groupItem.First().SigTime))
                     {
-                        var array = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
-                        db.PosRes.RemoveRange(array);
-                        await db.SaveChangesAsync();
+                        if (db.DatabaseExist)
+                        {
+                            var array = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
+                            db.PosRes.RemoveRange(array);
+                            await db.SaveChangesAsync();
+                        }
                     }
                 }
                 return true;
@@ -905,13 +911,16 @@ namespace XdCxRhDW.App.UserControl
                 case EnumPosResType.X2Dfo:
                     try
                     {
-                        StationRes station;
-                        CgRes cg;
+                        StationRes station=null;
+                        CgRes cg=null;
 
                         using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
                         {
-                            cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
-                            station = await db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefaultAsync();
+                            if (db.DatabaseExist)
+                            {
+                                cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
+                                station = await db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefaultAsync();
+                            }
                         }
                         if (cg == null)
                         {
@@ -990,12 +999,15 @@ namespace XdCxRhDW.App.UserControl
         {
             try
             {
-                CxRes cx;
-                StationRes station;
+                CxRes cx=null;
+                StationRes station=null;
                 using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
                 {
-                    cx = await db.CxRes.Where(m => m.ID == item.CxResID.Value).FirstOrDefaultAsync();
-                    station = await db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefaultAsync();
+                    if (db.DatabaseExist)
+                    {
+                        cx = await db.CxRes.Where(m => m.ID == item.CxResID.Value).FirstOrDefaultAsync();
+                        station = await db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefaultAsync();
+                    }
                 }
                 if (cx == null)
                 {
@@ -1130,47 +1142,81 @@ namespace XdCxRhDW.App.UserControl
             {
                 foreach (var item in items)
                 {
+                    double[] res = new double[6];
+                    var StationRes = new StationRes()
+                    {
+                        SatTxLon = item.StationRes.SatTxLon,
+                        SatTxLat = item.StationRes.SatTxLat,
+                        CdbTxLon = item.StationRes.CdbTxLon,
+                        CdbTxLat = item.StationRes.CdbTxLat,
+                        CxLon = item.StationRes.CxLon,
+                        CxLat = item.StationRes.CxLat,
+                        RefLon = item.StationRes.RefLon,
+                        RefLat = item.StationRes.RefLat,
+                    };
+
+                    var mainxlInfo = await XlRepository.GetLatestAsync(item.CgRes.MainCode.Value, item.SigTime);
+                    if (mainxlInfo == null)
+                    {
+                        Serilog.Log.Error($"重新定位异常:卫星:{item.CgRes.MainCode.Value}未找到对应的星历信息,请导入星历");
+                        continue;
+                    }
+                    var maineph = EphHelper.Calc(mainxlInfo.TwoLine, item.SigTime);
+                    var CgRes = new CgRes()
+                    {
+                        SigTime = item.SigTime,
+                        MainX = maineph.X,
+                        MainY = maineph.Y,
+                        MainZ = maineph.Z,
+                        MainVx = maineph.VX,
+                        MainVy = maineph.VY,
+                        MainVz = maineph.VZ,
+                    };
                     switch (item.PosResType)
                     {
                         case EnumPosResType.X1D1CX:
-                            var StationRes = new StationRes()
-                            {
-                                SatTxLon = item.StationRes.SatTxLon,
-                                SatTxLat = item.StationRes.SatTxLat,
-                                CdbTxLon = item.StationRes.CdbTxLon,
-                                CdbTxLat = item.StationRes.CdbTxLat,
-                                CxLon = item.StationRes.CxLon,
-                                CxLat = item.StationRes.CxLat,
-                                RefLon = item.StationRes.RefLon,
-                                RefLat = item.StationRes.RefLat,
-                            };
-                            var mainxlInfo = await XlRepository.GetLatestAsync(item.CgRes.MainCode.Value, item.SigTime);
-                            if (mainxlInfo == null)
-                            {
-                                Serilog.Log.Error($"重新定位异常:卫星:{item.CgRes.MainCode.Value}未找到对应的星历信息,请导入星历");
-                                continue;
-                            }
-                            var maineph = EphHelper.Calc(mainxlInfo.TwoLine, item.SigTime);
-                            var cgRes = new CgRes()
-                            {
-                                SigTime = item.SigTime,
-                                DtoCdb = item.CgRes.DtoCdb,
-                                YbMainDto = item.CgRes.YbMainDto,
-                                MainX = maineph.X,
-                                MainY = maineph.Y,
-                                MainZ = maineph.Z,
-                            };
+
+                            CgRes.DtoCdb = item.CgRes.DtoCdb;
+                            CgRes.YbMainDto = item.CgRes.YbMainDto;
                             var cxRes = new CxRes()
                             {
                                 SigTime = item.SigTime,
                                 Fx = item.CxRes.Fx,
                             };
-                            var res = PosApi.X1D1_Pos(cgRes, StationRes, cxRes);
-
+                            res = PosApi.X1D1_Pos(CgRes, StationRes, cxRes);
+                            item.PosLon = res[0];
+                            item.PosLat = res[1];
+                            item.MirrLon = res[3];
+                            item.MirrLat = res[4];
                             break;
                         case EnumPosResType.X2D1:
                         case EnumPosResType.X2D1NoRef:
 
+                            var xlInfo1 = await XlRepository.GetLatestAsync(item.CgRes.Adja1Code.Value, item.SigTime);
+                            if (xlInfo1 == null)
+                            {
+                                Serilog.Log.Error($"重新定位异常:卫星:{item.CgRes.Adja1Code.Value}未找到对应的星历信息,请导入星历");
+                                continue;
+                            }
+                            var eph1 = EphHelper.Calc(xlInfo1.TwoLine, item.SigTime);
+                            CgRes.Dto1 = item.CgRes.Dto1;
+                            CgRes.Dfo1 = item.CgRes.Dfo1;
+                            CgRes.Snr1 = item.CgRes.Snr1;
+                            CgRes.DtoCdb = item.CgRes.DtoCdb;
+                            CgRes.DfoCdb = item.CgRes.DfoCdb;
+                            CgRes.SnrCdb = item.CgRes.SnrCdb;
+                            CgRes.YbMainDto = item.CgRes.YbMainDto;
+                            CgRes.YbAdja1Dto = item.CgRes.YbAdja1Dto;
+                            CgRes.MainCode = item.CgRes.MainCode;
+                            CgRes.Adja1Code = item.CgRes.Adja1Code;
+                            CgRes.Adja1X = eph1.X;
+                            CgRes.Adja1Y = eph1.Y;
+                            CgRes.Adja1Z = eph1.Z;
+                            res = item.PosResType == EnumPosResType.X2D1 ? PosApi.X2D1_Pos(CgRes, StationRes) : PosApi.X2D1_PosNoRef(CgRes, StationRes);
+                            item.PosLon = res[0];
+                            item.PosLat = res[1];
+                            item.MirrLon = res[3];
+                            item.MirrLat = res[4];
                             break;
                         case EnumPosResType.X3:
                         case EnumPosResType.X3NoRef:
@@ -1192,19 +1238,35 @@ namespace XdCxRhDW.App.UserControl
                     var ids = groupItem.Select(m => m.ID).ToList();
                     using (RHDWPartContext db = RHDWPartContext.GetContext(groupItem.First().SigTime))
                     {
-                        var tarItems = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
-                        tarItems.ForEach(t =>
+                        if (db.DatabaseExist)
                         {
-                            var repos = items.First(p => p.ID == t.ID);
-                            t.PosLon = repos.PosLon;
-                            t.PosLat = repos.PosLat;
-                            t.MirrLon = repos.MirrLon;
-                            t.MirrLat = repos.MirrLat;
-                        });
-                        db.PosRes.AddOrUpdate(tarItems);
-                        await db.SaveChangesAsync();
+                            var tarItems = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
+                            tarItems.ForEach(t =>
+                            {
+                                var repos = items.First(p => p.ID == t.ID);
+                                t.PosLon = repos.PosLon;
+                                t.PosLat = repos.PosLat;
+                                t.MirrLon = repos.MirrLon;
+                                t.MirrLat = repos.MirrLat;
+                            });
+                            db.PosRes.AddOrUpdate(tarItems);
+                            await db.SaveChangesAsync();
+                        }
                     }
                 }
+                //var posids = items.Select(s => s.ID);
+                //var ds = this.gridHomePosRes.DataSource as List<ModelPosRes>;
+                //ds.Where(w => posids.Contains(w.ID)).ForEach(t =>
+                //{
+                //    var repos = items.First(i => i.ID == t.ID);
+                //    t.PosLon = repos.PosLon;
+                //    t.PosLat = repos.PosLat;
+                //    t.MirrLon = repos.MirrLon;
+                //    t.MirrLat = repos.MirrLat;
+                //});
+                //gridView2.RefreshData();
+                Serilog.Log.Warning($"共重新定位了{items.Count()}个定位点的目标信息");
+                MsgBoxHelper.ShowInfo($"共重新定位了{items.Count()}个定位点的目标信息");
 
 
             });
@@ -1271,9 +1333,12 @@ namespace XdCxRhDW.App.UserControl
                 long? targetID = 0;
                 using (RHDWPartContext db = RHDWPartContext.GetContext(items.First().SigTime))
                 {
-                    var idRes = items.First().ID;
-                    var target = await db.PosRes.Where(p => p.ID == idRes).FirstOrDefaultAsync() as PosRes;
-                    targetID = target.TargetInfoID;
+                    if (db.DatabaseExist)
+                    {
+                        var idRes = items.First().ID;
+                        var target = await db.PosRes.Where(p => p.ID == idRes).FirstOrDefaultAsync() as PosRes;
+                        targetID = target.TargetInfoID;
+                    }
                 }
                 TargetInfo info = null;
                 if (targetID > 0)
@@ -1294,16 +1359,19 @@ namespace XdCxRhDW.App.UserControl
                     var ids = groupItems.Select(p => p.ID);
                     using (RHDWPartContext db = RHDWPartContext.GetContext(groupItems.First().SigTime))
                     {
-                        var tarItems = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
-                        tarItems.ForEach(t =>
+                        if (db.DatabaseExist)
                         {
-                            t.TargetInfoID = tar.ID;
-                            t.ColorKey = tar.TargeColor;
-                        });
-                        posResIdList.AddRange(tarItems.Select(s => s.ID));
-                        mapControl1.UpdatePosItem(tarItems);
-                        db.PosRes.AddOrUpdate(tarItems);
-                        await db.SaveChangesAsync();
+                            var tarItems = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
+                            tarItems.ForEach(t =>
+                            {
+                                t.TargetInfoID = tar.ID;
+                                t.ColorKey = tar.TargeColor;
+                            });
+                            posResIdList.AddRange(tarItems.Select(s => s.ID));
+                            mapControl1.UpdatePosItem(tarItems);
+                            db.PosRes.AddOrUpdate(tarItems);
+                            await db.SaveChangesAsync();
+                        }
                     }
                 }
                 var ds = this.gridHomePosRes.DataSource as List<ModelPosRes>;
@@ -1368,9 +1436,12 @@ namespace XdCxRhDW.App.UserControl
                     var ids = groupItem.Select(m => m.ID).ToList();
                     using (RHDWPartContext db = RHDWPartContext.GetContext(groupItem.First().SigTime))
                     {
-                        var array = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
-                        UseMirror(array);
-                        await db.SaveChangesAsync();
+                        if (db.DatabaseExist)
+                        {
+                            var array = await db.PosRes.Where(p => ids.Contains(p.ID)).ToArrayAsync();
+                            UseMirror(array);
+                            await db.SaveChangesAsync();
+                        }
                     }
                 }
                 UseMirror(items);
@@ -1403,9 +1474,12 @@ namespace XdCxRhDW.App.UserControl
                     var ids = groupItem.Select(m => m.ID).ToList();
                     using (RHDWPartContext db = RHDWPartContext.GetContext(groupItem.First().SigTime))
                     {
-                        var list = await db.PosRes.Where(p => ids.Contains(p.ID)).ToListAsync();
-                        db.PosRes.RemoveRange(list);
-                        await db.SaveChangesAsync();
+                        if (db.DatabaseExist)
+                        {
+                            var list = await db.PosRes.Where(p => ids.Contains(p.ID)).ToListAsync();
+                            db.PosRes.RemoveRange(list);
+                            await db.SaveChangesAsync();
+                        }
                     }
                 }
                 mapControl1.DelPosItem(items);

+ 94 - 48
XdCxRhDW.App/UserControl/CtrlSysSettings.Designer.cs

@@ -29,13 +29,15 @@ namespace XdCxRhDW.App.UserControl
         /// </summary>
         private void InitializeComponent()
         {
-            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions2 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject5 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject6 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject7 = new DevExpress.Utils.SerializableAppearanceObject();
-            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject8 = new DevExpress.Utils.SerializableAppearanceObject();
+            this.components = new System.ComponentModel.Container();
+            DevExpress.XtraEditors.Controls.EditorButtonImageOptions editorButtonImageOptions1 = new DevExpress.XtraEditors.Controls.EditorButtonImageOptions();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject1 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject2 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject3 = new DevExpress.Utils.SerializableAppearanceObject();
+            DevExpress.Utils.SerializableAppearanceObject serializableAppearanceObject4 = new DevExpress.Utils.SerializableAppearanceObject();
             this.tablePanel1 = new DevExpress.Utils.Layout.TablePanel();
             this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            this.txtTimeZone = new DevExpress.XtraScheduler.UI.TimeZoneEdit();
             this.txtLayer = new DevExpress.XtraEditors.CheckedListBoxControl();
             this.txtMapType = new DevExpress.XtraEditors.RadioGroup();
             this.btnSave = new DevExpress.XtraEditors.SimpleButton();
@@ -43,6 +45,7 @@ namespace XdCxRhDW.App.UserControl
             this.txtXLDirectory = new DevExpress.XtraEditors.TextEdit();
             this.txtYDPZThreshold = new DevExpress.XtraEditors.ButtonEdit();
             this.txtWmtsSource = new DevExpress.XtraEditors.RadioGroup();
+            this.toolTipController1 = new DevExpress.Utils.ToolTipController(this.components);
             this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
             this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
             this.layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
@@ -53,10 +56,12 @@ namespace XdCxRhDW.App.UserControl
             this.emptySpaceItem2 = new DevExpress.XtraLayout.EmptySpaceItem();
             this.itemWmtsSource = new DevExpress.XtraLayout.LayoutControlItem();
             this.itemMapLayer = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlItem6 = new DevExpress.XtraLayout.LayoutControlItem();
             ((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).BeginInit();
             this.tablePanel1.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
             this.layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.txtTimeZone.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtLayer)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtMapType.Properties)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtHttpPort.Properties)).BeginInit();
@@ -73,6 +78,7 @@ namespace XdCxRhDW.App.UserControl
             ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem2)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.itemWmtsSource)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.itemMapLayer)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).BeginInit();
             this.SuspendLayout();
             // 
             // tablePanel1
@@ -87,15 +93,16 @@ namespace XdCxRhDW.App.UserControl
             this.tablePanel1.Name = "tablePanel1";
             this.tablePanel1.Rows.AddRange(new DevExpress.Utils.Layout.TablePanelRow[] {
             new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 1F),
-            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 374F),
+            new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Absolute, 450F),
             new DevExpress.Utils.Layout.TablePanelRow(DevExpress.Utils.Layout.TablePanelEntityStyle.Relative, 1F)});
-            this.tablePanel1.Size = new System.Drawing.Size(599, 466);
+            this.tablePanel1.Size = new System.Drawing.Size(619, 527);
             this.tablePanel1.TabIndex = 0;
             this.tablePanel1.UseSkinIndents = true;
             // 
             // layoutControl1
             // 
             this.tablePanel1.SetColumn(this.layoutControl1, 1);
+            this.layoutControl1.Controls.Add(this.txtTimeZone);
             this.layoutControl1.Controls.Add(this.txtLayer);
             this.layoutControl1.Controls.Add(this.txtMapType);
             this.layoutControl1.Controls.Add(this.btnSave);
@@ -104,31 +111,44 @@ namespace XdCxRhDW.App.UserControl
             this.layoutControl1.Controls.Add(this.txtYDPZThreshold);
             this.layoutControl1.Controls.Add(this.txtWmtsSource);
             this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.layoutControl1.Location = new System.Drawing.Point(102, 48);
+            this.layoutControl1.Location = new System.Drawing.Point(112, 40);
             this.layoutControl1.Name = "layoutControl1";
             this.layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new System.Drawing.Rectangle(941, 140, 650, 400);
             this.layoutControl1.Root = this.Root;
             this.tablePanel1.SetRow(this.layoutControl1, 1);
-            this.layoutControl1.Size = new System.Drawing.Size(396, 370);
+            this.layoutControl1.Size = new System.Drawing.Size(396, 446);
             this.layoutControl1.TabIndex = 0;
             this.layoutControl1.Text = "layoutControl1";
             // 
+            // txtTimeZone
+            // 
+            this.txtTimeZone.Location = new System.Drawing.Point(12, 29);
+            this.txtTimeZone.Name = "txtTimeZone";
+            this.txtTimeZone.Properties.AutoHeight = false;
+            this.txtTimeZone.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
+            this.txtTimeZone.Size = new System.Drawing.Size(372, 22);
+            this.txtTimeZone.StyleController = this.layoutControl1;
+            this.txtTimeZone.TabIndex = 13;
+            // 
             // txtLayer
             // 
+            this.txtLayer.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
             this.txtLayer.CheckOnClick = true;
-            this.txtLayer.Location = new System.Drawing.Point(12, 296);
+            this.txtLayer.Location = new System.Drawing.Point(12, 337);
             this.txtLayer.MultiColumn = true;
             this.txtLayer.Name = "txtLayer";
             this.txtLayer.SelectionMode = System.Windows.Forms.SelectionMode.None;
-            this.txtLayer.Size = new System.Drawing.Size(372, 23);
+            this.txtLayer.Size = new System.Drawing.Size(372, 25);
             this.txtLayer.StyleController = this.layoutControl1;
             this.txtLayer.TabIndex = 12;
             // 
             // txtMapType
             // 
             this.txtMapType.EditValue = 0;
-            this.txtMapType.Location = new System.Drawing.Point(12, 182);
+            this.txtMapType.Location = new System.Drawing.Point(12, 229);
             this.txtMapType.Name = "txtMapType";
+            this.txtMapType.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
             this.txtMapType.Properties.Items.AddRange(new DevExpress.XtraEditors.Controls.RadioGroupItem[] {
             new DevExpress.XtraEditors.Controls.RadioGroupItem(0, "本地地图"),
             new DevExpress.XtraEditors.Controls.RadioGroupItem(1, "WMTS")});
@@ -139,7 +159,7 @@ namespace XdCxRhDW.App.UserControl
             // 
             // btnSave
             // 
-            this.btnSave.Location = new System.Drawing.Point(137, 331);
+            this.btnSave.Location = new System.Drawing.Point(137, 374);
             this.btnSave.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
             this.btnSave.MaximumSize = new System.Drawing.Size(0, 22);
             this.btnSave.MinimumSize = new System.Drawing.Size(0, 22);
@@ -153,7 +173,7 @@ namespace XdCxRhDW.App.UserControl
             // txtHttpPort
             // 
             this.txtHttpPort.EditValue = "";
-            this.txtHttpPort.Location = new System.Drawing.Point(12, 29);
+            this.txtHttpPort.Location = new System.Drawing.Point(12, 79);
             this.txtHttpPort.Name = "txtHttpPort";
             this.txtHttpPort.Properties.AutoHeight = false;
             this.txtHttpPort.Size = new System.Drawing.Size(372, 22);
@@ -162,7 +182,7 @@ namespace XdCxRhDW.App.UserControl
             // 
             // txtXLDirectory
             // 
-            this.txtXLDirectory.Location = new System.Drawing.Point(12, 79);
+            this.txtXLDirectory.Location = new System.Drawing.Point(12, 129);
             this.txtXLDirectory.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
             this.txtXLDirectory.Name = "txtXLDirectory";
             this.txtXLDirectory.Properties.AutoHeight = false;
@@ -172,11 +192,11 @@ namespace XdCxRhDW.App.UserControl
             // 
             // txtYDPZThreshold
             // 
-            this.txtYDPZThreshold.Location = new System.Drawing.Point(12, 129);
+            this.txtYDPZThreshold.Location = new System.Drawing.Point(12, 179);
             this.txtYDPZThreshold.Name = "txtYDPZThreshold";
             this.txtYDPZThreshold.Properties.AutoHeight = false;
             this.txtYDPZThreshold.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
-            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "Hz", -1, false, true, false, editorButtonImageOptions2, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject5, serializableAppearanceObject6, serializableAppearanceObject7, serializableAppearanceObject8, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
+            new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph, "Hz", -1, false, true, false, editorButtonImageOptions1, new DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), serializableAppearanceObject1, serializableAppearanceObject2, serializableAppearanceObject3, serializableAppearanceObject4, "", null, null, DevExpress.Utils.ToolTipAnchor.Default)});
             this.txtYDPZThreshold.Properties.MaskSettings.Set("MaskManagerType", typeof(DevExpress.Data.Mask.NumericMaskManager));
             this.txtYDPZThreshold.Properties.MaskSettings.Set("MaskManagerSignature", "allowNull=False");
             this.txtYDPZThreshold.Properties.MaskSettings.Set("mask", "f0");
@@ -187,11 +207,17 @@ namespace XdCxRhDW.App.UserControl
             // txtWmtsSource
             // 
             this.txtWmtsSource.EditValue = 0;
-            this.txtWmtsSource.Location = new System.Drawing.Point(12, 238);
+            this.txtWmtsSource.Location = new System.Drawing.Point(12, 282);
             this.txtWmtsSource.Name = "txtWmtsSource";
+            this.txtWmtsSource.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
             this.txtWmtsSource.Size = new System.Drawing.Size(372, 25);
             this.txtWmtsSource.StyleController = this.layoutControl1;
             this.txtWmtsSource.TabIndex = 7;
+            this.txtWmtsSource.ToolTipController = this.toolTipController1;
+            // 
+            // toolTipController1
+            // 
+            this.toolTipController1.GetActiveObjectInfo += new DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventHandler(this.toolTipController1_GetActiveObjectInfo);
             // 
             // Root
             // 
@@ -206,19 +232,20 @@ namespace XdCxRhDW.App.UserControl
             this.emptySpaceItem1,
             this.emptySpaceItem2,
             this.itemWmtsSource,
-            this.itemMapLayer});
+            this.itemMapLayer,
+            this.layoutControlItem6});
             this.Root.Name = "Root";
-            this.Root.Size = new System.Drawing.Size(396, 370);
+            this.Root.Size = new System.Drawing.Size(396, 446);
             this.Root.TextVisible = false;
             // 
             // layoutControlItem3
             // 
             this.layoutControlItem3.Control = this.btnSave;
-            this.layoutControlItem3.Location = new System.Drawing.Point(125, 311);
+            this.layoutControlItem3.Location = new System.Drawing.Point(125, 354);
             this.layoutControlItem3.MinSize = new System.Drawing.Size(36, 27);
             this.layoutControlItem3.Name = "layoutControlItem3";
             this.layoutControlItem3.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 10, 2);
-            this.layoutControlItem3.Size = new System.Drawing.Size(125, 39);
+            this.layoutControlItem3.Size = new System.Drawing.Size(125, 72);
             this.layoutControlItem3.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             this.layoutControlItem3.TextSize = new System.Drawing.Size(0, 0);
             this.layoutControlItem3.TextVisible = false;
@@ -228,11 +255,12 @@ namespace XdCxRhDW.App.UserControl
             this.layoutControlItem4.Control = this.txtHttpPort;
             this.layoutControlItem4.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
             this.layoutControlItem4.CustomizationFormText = "HTTP服务端口";
-            this.layoutControlItem4.Location = new System.Drawing.Point(0, 0);
-            this.layoutControlItem4.MaxSize = new System.Drawing.Size(0, 43);
-            this.layoutControlItem4.MinSize = new System.Drawing.Size(100, 43);
+            this.layoutControlItem4.Location = new System.Drawing.Point(0, 43);
+            this.layoutControlItem4.MaxSize = new System.Drawing.Size(0, 50);
+            this.layoutControlItem4.MinSize = new System.Drawing.Size(100, 50);
             this.layoutControlItem4.Name = "layoutControlItem4";
-            this.layoutControlItem4.Size = new System.Drawing.Size(376, 43);
+            this.layoutControlItem4.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem4.Size = new System.Drawing.Size(376, 50);
             this.layoutControlItem4.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             this.layoutControlItem4.Text = "HTTP服务端口";
             this.layoutControlItem4.TextLocation = DevExpress.Utils.Locations.Top;
@@ -242,7 +270,7 @@ namespace XdCxRhDW.App.UserControl
             // 
             this.layoutControlItem5.Control = this.txtXLDirectory;
             this.layoutControlItem5.CustomizationFormText = "星历自动导入目录";
-            this.layoutControlItem5.Location = new System.Drawing.Point(0, 43);
+            this.layoutControlItem5.Location = new System.Drawing.Point(0, 93);
             this.layoutControlItem5.MaxSize = new System.Drawing.Size(0, 50);
             this.layoutControlItem5.MinSize = new System.Drawing.Size(100, 50);
             this.layoutControlItem5.Name = "layoutControlItem5";
@@ -258,7 +286,7 @@ namespace XdCxRhDW.App.UserControl
             this.layoutControlItem1.Control = this.txtYDPZThreshold;
             this.layoutControlItem1.ControlAlignment = System.Drawing.ContentAlignment.TopLeft;
             this.layoutControlItem1.CustomizationFormText = "运动判证阈值";
-            this.layoutControlItem1.Location = new System.Drawing.Point(0, 93);
+            this.layoutControlItem1.Location = new System.Drawing.Point(0, 143);
             this.layoutControlItem1.MaxSize = new System.Drawing.Size(0, 50);
             this.layoutControlItem1.MinSize = new System.Drawing.Size(100, 50);
             this.layoutControlItem1.Name = "layoutControlItem1";
@@ -272,12 +300,12 @@ namespace XdCxRhDW.App.UserControl
             // layoutControlItem8
             // 
             this.layoutControlItem8.Control = this.txtMapType;
-            this.layoutControlItem8.Location = new System.Drawing.Point(0, 143);
-            this.layoutControlItem8.MaxSize = new System.Drawing.Size(0, 56);
-            this.layoutControlItem8.MinSize = new System.Drawing.Size(54, 56);
+            this.layoutControlItem8.Location = new System.Drawing.Point(0, 193);
+            this.layoutControlItem8.MaxSize = new System.Drawing.Size(0, 53);
+            this.layoutControlItem8.MinSize = new System.Drawing.Size(54, 53);
             this.layoutControlItem8.Name = "layoutControlItem8";
-            this.layoutControlItem8.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 12, 2);
-            this.layoutControlItem8.Size = new System.Drawing.Size(376, 56);
+            this.layoutControlItem8.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.layoutControlItem8.Size = new System.Drawing.Size(376, 53);
             this.layoutControlItem8.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             this.layoutControlItem8.Text = "地图图源";
             this.layoutControlItem8.TextLocation = DevExpress.Utils.Locations.Top;
@@ -286,28 +314,28 @@ namespace XdCxRhDW.App.UserControl
             // emptySpaceItem1
             // 
             this.emptySpaceItem1.AllowHotTrack = false;
-            this.emptySpaceItem1.Location = new System.Drawing.Point(0, 311);
+            this.emptySpaceItem1.Location = new System.Drawing.Point(0, 354);
             this.emptySpaceItem1.Name = "emptySpaceItem1";
-            this.emptySpaceItem1.Size = new System.Drawing.Size(125, 39);
+            this.emptySpaceItem1.Size = new System.Drawing.Size(125, 72);
             this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
             // 
             // emptySpaceItem2
             // 
             this.emptySpaceItem2.AllowHotTrack = false;
-            this.emptySpaceItem2.Location = new System.Drawing.Point(250, 311);
+            this.emptySpaceItem2.Location = new System.Drawing.Point(250, 354);
             this.emptySpaceItem2.Name = "emptySpaceItem2";
-            this.emptySpaceItem2.Size = new System.Drawing.Size(126, 39);
+            this.emptySpaceItem2.Size = new System.Drawing.Size(126, 72);
             this.emptySpaceItem2.TextSize = new System.Drawing.Size(0, 0);
             // 
             // itemWmtsSource
             // 
             this.itemWmtsSource.Control = this.txtWmtsSource;
-            this.itemWmtsSource.Location = new System.Drawing.Point(0, 199);
-            this.itemWmtsSource.MaxSize = new System.Drawing.Size(0, 56);
-            this.itemWmtsSource.MinSize = new System.Drawing.Size(50, 56);
+            this.itemWmtsSource.Location = new System.Drawing.Point(0, 246);
+            this.itemWmtsSource.MaxSize = new System.Drawing.Size(0, 53);
+            this.itemWmtsSource.MinSize = new System.Drawing.Size(50, 53);
             this.itemWmtsSource.Name = "itemWmtsSource";
-            this.itemWmtsSource.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 12, 2);
-            this.itemWmtsSource.Size = new System.Drawing.Size(376, 56);
+            this.itemWmtsSource.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.itemWmtsSource.Size = new System.Drawing.Size(376, 53);
             this.itemWmtsSource.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             this.itemWmtsSource.Text = "地图来源";
             this.itemWmtsSource.TextLocation = DevExpress.Utils.Locations.Top;
@@ -317,12 +345,12 @@ namespace XdCxRhDW.App.UserControl
             // itemMapLayer
             // 
             this.itemMapLayer.Control = this.txtLayer;
-            this.itemMapLayer.Location = new System.Drawing.Point(0, 255);
-            this.itemMapLayer.MaxSize = new System.Drawing.Size(0, 56);
-            this.itemMapLayer.MinSize = new System.Drawing.Size(50, 56);
+            this.itemMapLayer.Location = new System.Drawing.Point(0, 299);
+            this.itemMapLayer.MaxSize = new System.Drawing.Size(0, 55);
+            this.itemMapLayer.MinSize = new System.Drawing.Size(54, 55);
             this.itemMapLayer.Name = "itemMapLayer";
-            this.itemMapLayer.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 12, 2);
-            this.itemMapLayer.Size = new System.Drawing.Size(376, 56);
+            this.itemMapLayer.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 9, 2);
+            this.itemMapLayer.Size = new System.Drawing.Size(376, 55);
             this.itemMapLayer.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
             this.itemMapLayer.Text = "图层类型";
             this.itemMapLayer.TextAlignMode = DevExpress.XtraLayout.TextAlignModeItem.AutoSize;
@@ -331,18 +359,32 @@ namespace XdCxRhDW.App.UserControl
             this.itemMapLayer.TextToControlDistance = 5;
             this.itemMapLayer.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
             // 
+            // layoutControlItem6
+            // 
+            this.layoutControlItem6.Control = this.txtTimeZone;
+            this.layoutControlItem6.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlItem6.MaxSize = new System.Drawing.Size(0, 43);
+            this.layoutControlItem6.MinSize = new System.Drawing.Size(100, 43);
+            this.layoutControlItem6.Name = "layoutControlItem6";
+            this.layoutControlItem6.Size = new System.Drawing.Size(376, 43);
+            this.layoutControlItem6.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
+            this.layoutControlItem6.Text = "系统时区";
+            this.layoutControlItem6.TextLocation = DevExpress.Utils.Locations.Top;
+            this.layoutControlItem6.TextSize = new System.Drawing.Size(96, 14);
+            // 
             // CtrlSysSettings
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.tablePanel1);
             this.Name = "CtrlSysSettings";
-            this.Size = new System.Drawing.Size(599, 466);
+            this.Size = new System.Drawing.Size(619, 527);
             this.Load += new System.EventHandler(this.CtrlSysSettings_Load);
             ((System.ComponentModel.ISupportInitialize)(this.tablePanel1)).EndInit();
             this.tablePanel1.ResumeLayout(false);
             ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
             this.layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.txtTimeZone.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtLayer)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtMapType.Properties)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.txtHttpPort.Properties)).EndInit();
@@ -359,6 +401,7 @@ namespace XdCxRhDW.App.UserControl
             ((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem2)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.itemWmtsSource)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.itemMapLayer)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem6)).EndInit();
             this.ResumeLayout(false);
 
         }
@@ -384,5 +427,8 @@ namespace XdCxRhDW.App.UserControl
         private DevExpress.XtraEditors.RadioGroup txtWmtsSource;
         private DevExpress.XtraEditors.CheckedListBoxControl txtLayer;
         private DevExpress.XtraLayout.LayoutControlItem itemMapLayer;
+        private DevExpress.Utils.ToolTipController toolTipController1;
+        private DevExpress.XtraScheduler.UI.TimeZoneEdit txtTimeZone;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
     }
 }

+ 69 - 43
XdCxRhDW.App/UserControl/CtrlSysSettings.cs

@@ -25,6 +25,7 @@ using DevExpress.XtraEditors.Controls;
 using System.Security.Policy;
 using DevExpress.Utils.About;
 using XdCxRhDW.Dto;
+using System.Configuration;
 
 namespace XdCxRhDW.App.UserControl
 {
@@ -42,6 +43,7 @@ namespace XdCxRhDW.App.UserControl
             {
                 txtWmtsSource.Properties.Items.AddEnum<EnumWmtsSource>();
                 txtLayer.Items.AddEnum<EnumMapLayerType>();
+                txtLayer.Items.RemoveAt(0);
                 txtWmtsSource.SelectedIndex = 0;
                 txtLayer.SelectedIndex = 0;
                 using (RHDWContext db = new RHDWContext())
@@ -50,6 +52,7 @@ namespace XdCxRhDW.App.UserControl
                     if (res != null)
                     {
                         this.txtHttpPort.Text = res.HttpPort.ToString();
+                        this.txtTimeZone.TimeZoneId = res.TimeZoneID;
                         if (!string.IsNullOrEmpty(res.XLDirectory))
                             this.txtXLDirectory.Text = res.XLDirectory.ToString();
                         if (res.YDPZThreshold > 0)
@@ -77,9 +80,9 @@ namespace XdCxRhDW.App.UserControl
                                     this.txtLayer.Items[EnumMapLayerType.XZQH_Map].CheckState = CheckState.Checked;
                                 }
                             }
-                               
+
                         }
-                       
+
                     }
                 }
 
@@ -101,29 +104,29 @@ namespace XdCxRhDW.App.UserControl
                     DxHelper.MsgBoxHelper.ShowError("Http端口错误!");
                     return;
                 }
-                //if (txtMapType.SelectedIndex != 0 && txtWmtsSource.EditValue == null)
-                //{
-                //    DxHelper.MsgBoxHelper.ShowError("请选择!");
-                //    return;
-                //}
-                if (txtMapType.SelectedIndex != 0 && txtLayer.CheckedItemsCount<=0)
+                if (string.IsNullOrWhiteSpace(txtTimeZone.TimeZoneId))
                 {
-                    DxHelper.MsgBoxHelper.ShowError("请选择图层类型!");
+                    DxHelper.MsgBoxHelper.ShowError("系统时区错误!");
                     return;
                 }
                 using (RHDWContext db = new RHDWContext())
                 {
                     var res = await db.SysSetings.FirstOrDefaultAsync();
                     if (res == null) res = new SysSetings();
+                    res.TimeZoneID = txtTimeZone.TimeZoneId;
+                    TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById(txtTimeZone.TimeZoneId);
+                    res.TimeZoneDisplayName = tz.DisplayName.Replace(" ", "").Replace("(", "").Replace(")", "");
+                    res.ZoneHours = tz.BaseUtcOffset.TotalHours;
+                    needStartHttpSvr = res.HttpPort != port;
                     res.HttpPort = port;
                     res.XLDirectory = txtXLDirectory.Text;
                     res.YDPZThreshold = string.IsNullOrWhiteSpace(txtYDPZThreshold.Text) ? 0 : Convert.ToInt32(txtYDPZThreshold.Text);
+                    bool mapChanged = res.MapType != txtMapType.SelectedIndex;
                     res.MapType = txtMapType.SelectedIndex;
                     if (txtMapType.SelectedIndex != 0)
                     {
                         res.WmtsSource = (EnumWmtsSource)txtWmtsSource.EditValue;
-
-                        EnumMapLayerType layerType = EnumMapLayerType.SatMap;
+                        EnumMapLayerType layerType = EnumMapLayerType.None;
                         for (int i = 0; i < txtLayer.Items.Count; i++)
                         {
                             if (txtLayer.GetItemChecked(i))
@@ -131,15 +134,42 @@ namespace XdCxRhDW.App.UserControl
                                 layerType |= (EnumMapLayerType)txtLayer.Items[i].Value;
                             }
                         }
-                        layerType = layerType & ~EnumMapLayerType.SatMap;//移除
+                        layerType = layerType & ~EnumMapLayerType.None;//移除
+                        if (!mapChanged)
+                            mapChanged = res.MapLayerType != layerType;
                         res.MapLayerType = layerType;
 
                     }
                     db.SysSetings.AddOrUpdate(res);
-                    needStartHttpSvr = true;
                     await db.SaveChangesAsync();
+                    if (mapChanged)
+                        Messenger.Defalut.Pub("地图类型改变", res);
+                    Messenger.Defalut.Pub("时区改变", res);
                     DxHelper.MsgBoxHelper.ShowInfo("配置信息保存成功!");
-                    Messenger.Defalut.Pub("系统配置改变", await db.SysSetings.FirstOrDefaultAsync());
+                    if (needStartHttpSvr)
+                    {
+                        try
+                        {
+                            Startup.Start(res.HttpPort, "多模式融合定位平台.Xml", "XdCxRhDW.Dto.xml");
+                        }
+                        catch (System.Reflection.TargetInvocationException ex)
+                        {
+                            Serilog.Log.Error(ex, $"启动Http服务失败!");
+                            if (ex.InnerException is HttpListenerException)
+                            {
+                                DxHelper.MsgBoxHelper.ShowWarning($"{ex.InnerException.Message}");
+                            }
+                            else
+                            {
+                                DxHelper.MsgBoxHelper.ShowWarning($"启动Http服务失败!");
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            Serilog.Log.Error(ex, $"启动Http服务失败!");
+                            DxHelper.MsgBoxHelper.ShowWarning($"启动Http服务失败!");
+                        }
+                    }
                 }
             }
             catch (Exception ex)
@@ -147,34 +177,7 @@ namespace XdCxRhDW.App.UserControl
                 Serilog.Log.Error(ex, "配置信息保存异常");
                 DxHelper.MsgBoxHelper.ShowError("配置信息保存异常");
             }
-            if (needStartHttpSvr)
-            {
-                try
-                {
-                    using (RHDWContext db = new RHDWContext())
-                    {
-                        var settings = await db.SysSetings.FirstOrDefaultAsync();
-                        Startup.Start(settings.HttpPort, "多模式融合定位平台.Xml", "XdCxRhDW.Dto.xml");
-                    }
-                }
-                catch (System.Reflection.TargetInvocationException ex)
-                {
-                    Serilog.Log.Error(ex, $"启动Http服务失败!");
-                    if (ex.InnerException is HttpListenerException)
-                    {
-                        DxHelper.MsgBoxHelper.ShowWarning($"{ex.InnerException.Message}");
-                    }
-                    else
-                    {
-                        DxHelper.MsgBoxHelper.ShowWarning($"启动Http服务失败!");
-                    }
-                }
-                catch (Exception ex)
-                {
-                    Serilog.Log.Error(ex, $"启动Http服务失败!");
-                    DxHelper.MsgBoxHelper.ShowWarning($"启动Http服务失败!");
-                }
-            }
+
         }
 
         private void txtMapType_SelectedIndexChanged(object sender, EventArgs e)
@@ -192,6 +195,29 @@ namespace XdCxRhDW.App.UserControl
             layoutControl1.BestFit();
         }
 
-
+        private void toolTipController1_GetActiveObjectInfo(object sender, ToolTipControllerGetActiveObjectInfoEventArgs e)
+        {
+            RadioGroup rg = e.SelectedControl as RadioGroup;
+            if (rg == null) return;
+            for (int i = 0; i < rg.Properties.Items.Count; i++)
+            {
+                Rectangle rect = rg.GetItemRectangle(i);
+                if (rect.Contains(e.ControlMousePosition))
+                {
+                    var val = (EnumWmtsSource)rg.Properties.Items[i].Value;
+                    if (val == EnumWmtsSource.ZCJ)
+                    {
+                        var str = ConfigurationManager.AppSettings["ZCJ_URL"];
+                        e.Info = new ToolTipControlInfo(i, $"{rg.Properties.Items[i].Description}:{str}");
+                    }
+                    else
+                    {
+                        var str = ConfigurationManager.AppSettings["SJZX_URL"];
+                        e.Info = new ToolTipControlInfo(i, $"{rg.Properties.Items[i].Description}:{str}");
+                    }
+                    break;
+                }
+            }
+        }
     }
 }

+ 3 - 0
XdCxRhDW.App/UserControl/CtrlSysSettings.resx

@@ -117,4 +117,7 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="toolTipController1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
 </root>

+ 18 - 14
XdCxRhDW.App/UserControl/X1D1GDOPParam.cs

@@ -45,20 +45,24 @@ namespace XdCxRhDW.App.UserControl
             PosResType = item.PosResType;
             using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
             {
-                var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
-                var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
-                if (station != null)
+                if (db.DatabaseExist)
                 {
-                    this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
-                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
-                    this.txtCXStation.Text = $"{station.CxLon},{station.CxLat}";
-                }
-
-                if (cg != null)
-                {
-                    var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
-                    ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
-
+                    var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
+                    var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
+
+                    if (station != null)
+                    {
+                        this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
+                        this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                        this.txtCXStation.Text = $"{station.CxLon},{station.CxLat}";
+                    }
+
+                    if (cg != null)
+                    {
+                        var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
+                        ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
+
+                    }
                 }
             }
 
@@ -104,7 +108,7 @@ namespace XdCxRhDW.App.UserControl
                 var cdb = new double[] { Model.StationLon, Model.StationLat, 0 };
                 var cx = new double[] { Model.StationLon, Model.StationLat, 0 };
                 var refstation = new double[] { Model.RefLon, Model.RefLat, 0 };
-                var  data = GdopHelper.Gdop1Sat1DByXyz(Model.EphMain, cdb, cx,
+                var data = GdopHelper.Gdop1Sat1DByXyz(Model.EphMain, cdb, cx,
                                  Model.DtousErr, Model.CXErr, Model.SatLocErr, refstation);
                 if (data == null)
                 {

+ 18 - 17
XdCxRhDW.App/UserControl/X2D1GDOPParam.cs

@@ -50,25 +50,26 @@ namespace XdCxRhDW.App.UserControl
           
             using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
             {
-
-                var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
-                var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
-                if (station != null)
+                if (db.DatabaseExist)
                 {
-                    this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
-                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                    var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
+                    var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
+                    if (station != null)
+                    {
+                        this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
+                        this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                    }
+
+                    if (cg != null)
+                    {
+                        var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
+                        ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
+
+                        var adjaEph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
+                        ucEphXYZAdja.SetParam($"邻星", cg.Adja1Code, adjaEph, Color.Black);
+
+                    }
                 }
-
-                if (cg != null)
-                {
-                    var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
-                    ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
-
-                    var adjaEph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
-                    ucEphXYZAdja.SetParam($"邻星", cg.Adja1Code, adjaEph, Color.Black);
-
-                }
-
             }
 
         }

+ 18 - 16
XdCxRhDW.App/UserControl/X2DFGDOPParam.cs

@@ -44,24 +44,26 @@ namespace XdCxRhDW.App.UserControl
             PosResType = item.PosResType;
             using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
             {
-                var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
-                var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
-                if (station != null)
+                if (db.DatabaseExist)
                 {
-                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                    var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
+                    var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
+                    if (station != null)
+                    {
+                        this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                    }
+                    if (cg != null)
+                    {
+                        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 mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
+                        ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
+
+                        var adjaEph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
+                        ucEphXYZAdja.SetParam($"邻星", cg.Adja1Code, adjaEph, Color.Black);
+                    }
                 }
-                if (cg != null)
-                {
-                    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 mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
-                    ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
-
-                    var adjaEph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
-                    ucEphXYZAdja.SetParam($"邻星", cg.Adja1Code, adjaEph, Color.Black);
-                }
-
 
             }
 

+ 21 - 19
XdCxRhDW.App/UserControl/X3DFGDOPParam .cs

@@ -43,27 +43,29 @@ namespace XdCxRhDW.App.UserControl
             PosResType = item.PosResType;
             using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
             {
-                var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
-                var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
-                if (station != null)
+                if (db.DatabaseExist)
                 {
-                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                    var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
+                    var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
+                    if (station != null)
+                    {
+                        this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                    }
+                    if (cg != null)
+                    {
+                        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 mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
+                        ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
+
+                        var adja1Eph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
+                        ucEphXYZAdja1.SetParam($"邻星1", cg.Adja1Code, adja1Eph, Color.Black);
+
+                        var adja2Eph = (cg.Adja2X, cg.Adja2Y, cg.Adja2Z, cg.Adja2Vx, cg.Adja2Vy, cg.Adja2Vz);
+                        ucEphXYZAdja2.SetParam($"邻星2", cg.Adja2Code, adja2Eph, Color.Black);
+                    }
                 }
-                if (cg != null)
-                {
-                    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 mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
-                    ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
-
-                    var adja1Eph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
-                    ucEphXYZAdja1.SetParam($"邻星1", cg.Adja1Code, adja1Eph, Color.Black);
-
-                    var adja2Eph = (cg.Adja2X, cg.Adja2Y, cg.Adja2Z, cg.Adja2Vx, cg.Adja2Vy, cg.Adja2Vz);
-                    ucEphXYZAdja2.SetParam($"邻星2", cg.Adja2Code, adja2Eph, Color.Black);
-                }
-
 
             }
         }

+ 19 - 16
XdCxRhDW.App/UserControl/X3GDOPParam.cs

@@ -44,23 +44,26 @@ namespace XdCxRhDW.App.UserControl
 
             using (RHDWPartContext db = RHDWPartContext.GetContext(item.SigTime))
             {
-                var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
-                var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
-                if (station != null)
+                if (db.DatabaseExist)
                 {
-                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
-                }
-                if (cg != null)
-                {
-
-                    var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
-                    ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
-
-                    var adja1Eph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
-                    ucEphXYZAdja1.SetParam($"邻星1", cg.Adja1Code, adja1Eph, Color.Black);
-
-                    var adja2Eph = (cg.Adja2X, cg.Adja2Y, cg.Adja2Z, cg.Adja2Vx, cg.Adja2Vy, cg.Adja2Vz);
-                    ucEphXYZAdja2.SetParam($"邻星2", cg.Adja2Code, adja2Eph, Color.Black);
+                    var cg = db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefault();
+                    var station = db.StationRes.Where(m => m.ID == item.StationResID).FirstOrDefault();
+                    if (station != null)
+                    {
+                        this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
+                    }
+                    if (cg != null)
+                    {
+
+                        var mainEph = (cg.MainX, cg.MainY, cg.MainZ, cg.MainVx, cg.MainVy, cg.MainVz);
+                        ucEphXYZMain.SetParam($"主星", cg.MainCode, mainEph, Color.Black);
+
+                        var adja1Eph = (cg.Adja1X, cg.Adja1Y, cg.Adja1Z, cg.Adja1Vx, cg.Adja1Vy, cg.Adja1Vz);
+                        ucEphXYZAdja1.SetParam($"邻星1", cg.Adja1Code, adja1Eph, Color.Black);
+
+                        var adja2Eph = (cg.Adja2X, cg.Adja2Y, cg.Adja2Z, cg.Adja2Vx, cg.Adja2Vy, cg.Adja2Vz);
+                        ucEphXYZAdja2.SetParam($"邻星2", cg.Adja2Code, adja2Eph, Color.Black);
+                    }
                 }
 
             }

+ 8 - 3
XdCxRhDW.Entity/EntityEnum.cs

@@ -139,23 +139,28 @@ namespace XdCxRhDW.Entity
     [Flags]
     public enum EnumMapLayerType
     {
+        /// <summary>
+        /// 未选中任何图层
+        /// </summary>
+        None = 0,
+
         /// <summary>
         /// 卫星图
         /// </summary>
         [Display(Name = "卫星图")]
-        SatMap=1,
+        SatMap=2,
 
         /// <summary>
         /// 道路图
         /// </summary>
         [Display(Name = "道路图")]
-        RoadMap=2,
+        RoadMap=4,
 
         /// <summary>
         /// 行政区划图
         /// </summary>
         [Display(Name = "行政区划图")]
-        XZQH_Map=4
+        XZQH_Map=8
 
     }
 

+ 17 - 0
XdCxRhDW.Entity/SysSetings.cs

@@ -11,7 +11,24 @@ namespace XdCxRhDW.Entity
     [Table("SysSetings")]
     public class SysSetings : BaseEntity
     {
+        /// <summary>
+        /// 系统时区ID
+        /// </summary>
+        public string TimeZoneID { get; set; }
+
+        /// <summary>
+        /// 系统时区显示的文本
+        /// </summary>
+        public string TimeZoneDisplayName {  get; set; }    
+
+        /// <summary>
+        /// 时区值(北京时间就是8)
+        /// </summary>
+        public double ZoneHours { get; set; }
+
         public int HttpPort { get; set; }
+
+
         public string XLDirectory { get; set; }
 
         public int YDPZThreshold { get; set; }

+ 158 - 18
XdCxRhDW.Repostory/EFContext/RHDWContext.cs

@@ -1,19 +1,14 @@
-using System;
-using System.Collections.Generic;
+using SQLite.CodeFirst;
+using System;
+using System.Data.Common;
 using System.Data.Entity;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using SQLite.CodeFirst;
-using System.Data.Entity.ModelConfiguration.Conventions;
+using System.Data.Entity.Core.Common;
 using System.Data.Entity.Infrastructure.Interception;
-using System.IO;
-using System.Data.Common;
-using System.Data.Entity.Infrastructure;
-using System.Reflection;
-using System.Data.SQLite.EF6;
+using System.Data.Entity.ModelConfiguration.Conventions;
 using System.Data.SQLite;
-using System.Data.Entity.Core.Common;
+using System.Data.SQLite.EF6;
+using System.IO;
+using System.Text.RegularExpressions;
 using XdCxRhDW.Entity;
 
 namespace XdCxRhDW.Repostory
@@ -22,6 +17,7 @@ namespace XdCxRhDW.Repostory
     /// <summary>
     /// 基础表上下文(id为int)
     /// </summary>
+    [DbConfigurationType(typeof(SqliteConfiguration))]
     public class RHDWContext : DbContext
     {
         public RHDWContext() : base("DbCon") //配置使用的连接名
@@ -35,6 +31,7 @@ namespace XdCxRhDW.Repostory
             {
             };
             modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
+            //modelBuilder.Configurations.Add<RHDWContext>(new EntityTypeConfiguration<RHDWContext>());//new SqliteConfiguration()
             modelBuilder.Configurations.AddFromAssembly(typeof(RHDWContext).Assembly);//自动加载SqliteConfiguration
 
             var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<RHDWContext>(modelBuilder);
@@ -63,21 +60,30 @@ namespace XdCxRhDW.Repostory
     /// <summary>
     /// 分区表上下文(id为long)
     /// </summary>
-    //[DbConfigurationType(typeof(SqliteConfiguration))]
+    [DbConfigurationType(typeof(SqliteConfiguration))]
     public class RHDWPartContext : DbContext
     {
+        public bool DatabaseExist = false;
         public static RHDWPartContext GetContext(string dbFile)
         {
             var connectionString = $@"Data Source={dbFile}";
             SQLiteConnection con = new SQLiteConnection(connectionString);
-            return new RHDWPartContext(con);
+            bool databaseExist = File.Exists(dbFile);
+            return new RHDWPartContext(con) { DatabaseExist = databaseExist };
         }
 
-        public static RHDWPartContext GetContext(DateTime partTime, string prefix = "")
+        public static RHDWPartContext GetContext(DateTime partTime, bool isCreateDb = false, string prefix = "")
         {
+            var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart");
+            var dayFile = Path.Combine(dir, $@"{partTime.Year}\{prefix}{partTime:MMdd}.db");
+            bool databaseExist = File.Exists(dayFile);
+            if (isCreateDb)
+            {
+                databaseExist = true;
+            }
             var connectionString = $@"Data Source=|DataDirectory|\DbPart\{partTime.Year}\{prefix}{partTime:MMdd}.db";
             SQLiteConnection con = new SQLiteConnection(connectionString);
-            return new RHDWPartContext(con);
+            return new RHDWPartContext(con) { DatabaseExist = databaseExist };
         }
 
         private RHDWPartContext(DbConnection con)
@@ -94,7 +100,6 @@ namespace XdCxRhDW.Repostory
 
             modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
             modelBuilder.Configurations.AddFromAssembly(typeof(RHDWPartContext).Assembly);
-
             var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<RHDWPartContext>(modelBuilder);
             Database.SetInitializer(sqliteConnectionInitializer);
             DbInterception.Add(new SqliteInterceptor());//拦截器
@@ -109,7 +114,135 @@ namespace XdCxRhDW.Repostory
         public DbSet<CheckRes> CheckRes { get; set; }
     }
 
+    /// <summary>
+    /// 分区表上下文(id为long)
+    /// </summary>
+    [DbConfigurationType(typeof(PartSqliteInterceptor))]
+    public class RHDWPartReadContext : DbContext
+    {
+        public bool DatabaseExist = false;
+        private string dbFile;
+        public static RHDWPartReadContext GetContext(string dbFile)
+        {
+            var connectionString = $@"Data Source={dbFile}";
+            SQLiteConnection con = new SQLiteConnection(connectionString);
+            bool databaseExist = File.Exists(dbFile);
+            return new RHDWPartReadContext(con) { DatabaseExist = databaseExist, dbFile = dbFile };
+        }
+
+        public static RHDWPartReadContext GetContext(DateTime partTime, bool isCreateDb = false, string prefix = "")
+        {
+            var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart");
+            var dayFile = Path.Combine(dir, $@"{partTime.Year}\{prefix}{partTime:MMdd}.db");
+            bool databaseExist = File.Exists(dayFile);
+            if (isCreateDb)
+            {
+                databaseExist = true;
+            }
+            var connectionString = $@"Data Source=|DataDirectory|\DbPart\{partTime.Year}\{prefix}{partTime:MMdd}.db";
+            SQLiteConnection con = new SQLiteConnection(connectionString);
+            return new RHDWPartReadContext(con) { DatabaseExist = databaseExist, dbFile= dayFile };
+        }
+
+        private RHDWPartReadContext(DbConnection con)
+        : base(con, true)
+        {
+        }
+
+
+        protected override void OnModelCreating(DbModelBuilder modelBuilder)
+        {
+            this.Database.Log = msg =>
+            {
+            };
+
+            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
+            modelBuilder.Configurations.AddFromAssembly(typeof(RHDWPartReadContext).Assembly);
+            Database.SetInitializer<RHDWPartReadContext>(null);
+           // DbInterception.Add(new PartSqliteInterceptor(this.dbFile));//拦截器
+            base.OnModelCreating(modelBuilder);
+        }
+
+        public DbSet<StationRes> StationRes { get; set; }
+        public DbSet<CxRes> CxRes { get; set; }
+        public DbSet<CgRes> CgRes { get; set; }
+        public DbSet<CgXgfRes> CgXgfRes { get; set; }
+        public DbSet<PosRes> PosRes { get; set; }
+        public DbSet<CheckRes> CheckRes { get; set; }
+    }
+    /// <summary>
+    /// Sqlite拦截器.
+    /// contains或indexOf成的CHARINDEX函数在sqlite里面并不支持,需要拦截转换成LIKE语句
+    /// </summary>
+    public class PartSqliteInterceptor : IDbCommandInterceptor
+    {
+        private readonly string dbFile;
+        public PartSqliteInterceptor(string dbFile)
+        {
+            this.dbFile = dbFile;
+        }
+        private static Regex replaceRegex = new Regex(@"\(CHARINDEX\((.*?),\s?(.*?)\)\)\s*?>\s*?0");
+
+        public void NonQueryExecuted(DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
+        {
+        }
+
+        public void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
+        {
+        }
+
+        public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
+        {
+        }
+
+        public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
+        {
+            if (!File.Exists(dbFile))
+                interceptionContext.Result = null;
+            else
+                ReplaceCharIndexFunc(command);
+        }
+
+        public void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
+        {
+        }
+
+        public void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
+        {
+            if (!File.Exists(dbFile))
+                interceptionContext.Result = null;
+            else
+                ReplaceCharIndexFunc(command);
+        }
 
+        private void ReplaceCharIndexFunc(DbCommand command)
+        {
+            bool isMatch = false;
+            var text = replaceRegex.Replace(command.CommandText, (match) =>
+            {
+                if (match.Success)
+                {
+                    string paramsKey = match.Groups[1].Value;
+                    string paramsColumnName = match.Groups[2].Value;
+                    //replaceParams
+                    foreach (DbParameter param in command.Parameters)
+                    {
+                        if (param.ParameterName == paramsKey.Substring(1))
+                        {
+                            param.Value = string.Format("%{0}%", param.Value);
+                            break;
+                        }
+                    }
+                    isMatch = true;
+                    return string.Format("{0} LIKE {1}", paramsColumnName, paramsKey);
+                }
+                else
+                    return match.Value;
+            });
+            if (isMatch)
+                command.CommandText = text;
+        }
+    }
     public class SqliteConfiguration : DbConfiguration
     {
         public SqliteConfiguration()
@@ -120,4 +253,11 @@ namespace XdCxRhDW.Repostory
 
         }
     }
+    public class DbPartSqliteConfiguration : DbConfiguration
+    {
+        public DbPartSqliteConfiguration(IDbInterceptor dbInterceptor)
+        {
+            base.AddInterceptor(dbInterceptor);
+        }
+    }
 }

+ 3 - 2
XdCxRhDW.WebApi/Startup.cs

@@ -171,12 +171,13 @@ namespace XdCxRhDW.WebApi
         private static void ConfigureSwagger(HttpConfiguration config)
         {
             var thisAssembly = typeof(Startup).Assembly;
+            string exeName = Assembly.GetEntryAssembly().GetName().Name;
             config.EnableSwagger(c =>
              {
                  c.IgnoreObsoleteActions();//忽略过时的方法
                  c.IgnoreObsoleteProperties();//忽略过时的属性
                  c.PrettyPrint();//漂亮缩进
-                 c.SingleApiVersion("v1", "多模式融合定位平台Http接口");
+                 c.SingleApiVersion("v1", $"{exeName}Http接口");
                  c.ApiKey("123456");
 
                  var webApiXmlPath1 = $"{AppDomain.CurrentDomain.BaseDirectory}{Path.GetFileNameWithoutExtension(_dtoXmlName)}.xml";
@@ -196,7 +197,7 @@ namespace XdCxRhDW.WebApi
              .EnableSwaggerUi(c =>
              {
                  c.InjectJavaScript(thisAssembly, $"{Assembly.GetExecutingAssembly().GetName().Name}.Swagger.js");
-                 c.DocumentTitle("多模式融合定位平台Http接口");
+                 c.DocumentTitle($"{exeName}Http接口");
              });
         }