zoulei 1 год назад
Родитель
Сommit
dabc805cf5

+ 2 - 7
XdCxRhDW.App/CorTools/XlCalculateForm.cs

@@ -30,21 +30,16 @@ namespace XdCxRhDW.App.CorTools
     {
         List<string> resXl = new List<string>();
         List<SatEphDto> listEph = new List<SatEphDto>();
-        IEnumerable<XlInfo> listXl;
         public XlCalculateForm()
         {
             InitializeComponent();
         }
-        public XlCalculateForm(IEnumerable<XlInfo> listXl)
-            : this()
-        {
-            this.listXl = listXl;
-        }
-        private void XlCalculateForm_Load(object sender, EventArgs e)
+        private async void XlCalculateForm_Load(object sender, EventArgs e)
         {
             gridControl.Init<SatEphDto>().UseSort().UseFilter().UseMultiSelect().UseRowNumber();
             gridControl.DataSource = listEph;
             txtTle.UseDoubleClickToSelectAll();
+            var listXl =await XlCache.GetAllAsync();
             txtTle.UseDefault().SetStringData(listXl.Select(p=>p.TwoLine));
         }
 

+ 57 - 0
XdCxRhDW.App/Model/ModelCg.cs

@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XdCxRhDW.Repostory;
+using XdCxRhDW.Repostory.Model;
+
+namespace XdCxRhDW.App.Model
+{
+    public class ModelCg:BaseModel<long>
+    {
+        /// <summary>
+        /// 信号时刻(北京)
+        /// </summary>
+        [Display(Name = "信号时刻(北京)")]
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 类型.主邻1=0,主邻2=1,超短=2
+        /// </summary>
+        [Display(AutoGenerateField = false)]
+        public int CgType { get; set; }
+
+        /// <summary>
+        /// 主星
+        /// </summary>
+        [Display(Name = "主星")]
+        public string MainSat { get; set; }
+
+        /// <summary>
+        /// 邻星1编号
+        /// </summary>
+        [Display(Name = "邻星")]
+        public string AdjaSat { get; set; }
+
+        /// <summary>
+        /// 时差(us)
+        /// </summary>
+        [Display(Name = "时差(us)")]
+        public double? Dto { get; set; }
+
+        /// <summary>
+        /// 频差(Hz)
+        /// </summary>
+        [Display(Name = "频差(Hz)")]
+        public double? Dfo { get; set; }
+
+        /// <summary>
+        /// 信噪比(dB)
+        /// </summary>
+        [Display(Name = "信噪比(dB)")]
+        public double? Snr { get; set; }
+
+    }
+}

+ 31 - 0
XdCxRhDW.App/Model/ModelCgXgf.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using XdCxRhDW.Repostory;
+
+namespace XdCxRhDW.App.Model
+{
+    public class ModelCgXgf : BaseModel<long>
+    {
+        /// <summary>
+        /// 时差(us)
+        /// </summary>
+        [Display(Name = "时差(us)")]
+        public double? Dto { get; set; }
+
+        /// <summary>
+        /// 频差(Hz)
+        /// </summary>
+        [Display(Name = "频差(Hz)")]
+        public double? Dfo { get; set; }
+
+        /// <summary>
+        /// 信噪比(dB)
+        /// </summary>
+        [Display(Name = "信噪比(dB)")]
+        public double? Snr { get; set; }
+    }
+}

+ 198 - 0
XdCxRhDW.App/PopupControl/ShowCgCtrl.Designer.cs

@@ -0,0 +1,198 @@
+namespace XdCxRhDW.App.PopupControl
+{
+    partial class ShowCgCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.gridShowCg = new DevExpress.XtraGrid.GridControl();
+            this.gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
+            this.gridCgXgf = new DevExpress.XtraGrid.GridControl();
+            this.gridView2 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
+            this.layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
+            this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.layoutControlGroup2 = new DevExpress.XtraLayout.LayoutControlGroup();
+            this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
+            this.splitterItem1 = new DevExpress.XtraLayout.SplitterItem();
+            ((System.ComponentModel.ISupportInitialize)(this.gridShowCg)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
+            this.layoutControl1.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.gridCgXgf)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.splitterItem1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // gridShowCg
+            // 
+            this.gridShowCg.Location = new System.Drawing.Point(5, 26);
+            this.gridShowCg.MainView = this.gridView1;
+            this.gridShowCg.Name = "gridShowCg";
+            this.gridShowCg.Size = new System.Drawing.Size(308, 281);
+            this.gridShowCg.TabIndex = 0;
+            this.gridShowCg.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+            this.gridView1});
+            // 
+            // gridView1
+            // 
+            this.gridView1.GridControl = this.gridShowCg;
+            this.gridView1.Name = "gridView1";
+            this.gridView1.FocusedRowObjectChanged += new DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventHandler(this.gridView1_FocusedRowObjectChanged);
+            // 
+            // layoutControl1
+            // 
+            this.layoutControl1.Controls.Add(this.gridCgXgf);
+            this.layoutControl1.Controls.Add(this.gridShowCg);
+            this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.layoutControl1.Location = new System.Drawing.Point(0, 0);
+            this.layoutControl1.Name = "layoutControl1";
+            this.layoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = new System.Drawing.Rectangle(1079, 24, 650, 400);
+            this.layoutControl1.Root = this.Root;
+            this.layoutControl1.Size = new System.Drawing.Size(637, 312);
+            this.layoutControl1.TabIndex = 1;
+            this.layoutControl1.Text = "layoutControl1";
+            // 
+            // gridCgXgf
+            // 
+            this.gridCgXgf.Location = new System.Drawing.Point(333, 26);
+            this.gridCgXgf.MainView = this.gridView2;
+            this.gridCgXgf.Name = "gridCgXgf";
+            this.gridCgXgf.Size = new System.Drawing.Size(299, 281);
+            this.gridCgXgf.TabIndex = 4;
+            this.gridCgXgf.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+            this.gridView2});
+            // 
+            // gridView2
+            // 
+            this.gridView2.GridControl = this.gridCgXgf;
+            this.gridView2.Name = "gridView2";
+            // 
+            // Root
+            // 
+            this.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
+            this.Root.GroupBordersVisible = false;
+            this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
+            this.layoutControlGroup1,
+            this.layoutControlGroup2,
+            this.splitterItem1});
+            this.Root.Name = "Root";
+            this.Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            this.Root.Size = new System.Drawing.Size(637, 312);
+            this.Root.TextVisible = false;
+            // 
+            // layoutControlGroup1
+            // 
+            this.layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
+            this.layoutControlItem1});
+            this.layoutControlGroup1.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlGroup1.Name = "layoutControlGroup1";
+            this.layoutControlGroup1.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 2, 2);
+            this.layoutControlGroup1.Size = new System.Drawing.Size(318, 312);
+            this.layoutControlGroup1.Text = "参估结果";
+            // 
+            // layoutControlItem1
+            // 
+            this.layoutControlItem1.Control = this.gridShowCg;
+            this.layoutControlItem1.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlItem1.Name = "layoutControlItem1";
+            this.layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            this.layoutControlItem1.Size = new System.Drawing.Size(308, 281);
+            this.layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem1.TextVisible = false;
+            // 
+            // layoutControlGroup2
+            // 
+            this.layoutControlGroup2.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
+            this.layoutControlItem2});
+            this.layoutControlGroup2.Location = new System.Drawing.Point(328, 0);
+            this.layoutControlGroup2.Name = "layoutControlGroup2";
+            this.layoutControlGroup2.Padding = new DevExpress.XtraLayout.Utils.Padding(2, 2, 2, 2);
+            this.layoutControlGroup2.Size = new System.Drawing.Size(309, 312);
+            this.layoutControlGroup2.Text = "相关峰";
+            // 
+            // layoutControlItem2
+            // 
+            this.layoutControlItem2.Control = this.gridCgXgf;
+            this.layoutControlItem2.Location = new System.Drawing.Point(0, 0);
+            this.layoutControlItem2.Name = "layoutControlItem2";
+            this.layoutControlItem2.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
+            this.layoutControlItem2.Size = new System.Drawing.Size(299, 281);
+            this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
+            this.layoutControlItem2.TextVisible = false;
+            // 
+            // splitterItem1
+            // 
+            this.splitterItem1.AllowHotTrack = true;
+            this.splitterItem1.Location = new System.Drawing.Point(318, 0);
+            this.splitterItem1.Name = "splitterItem1";
+            this.splitterItem1.Size = new System.Drawing.Size(10, 312);
+            // 
+            // ShowCgCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.layoutControl1);
+            this.Name = "ShowCgCtrl";
+            this.Size = new System.Drawing.Size(637, 312);
+            this.Load += new System.EventHandler(this.ShowCgCtrl_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.gridShowCg)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
+            this.layoutControl1.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.gridCgXgf)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.splitterItem1)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private DevExpress.XtraGrid.GridControl gridShowCg;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+        private DevExpress.XtraLayout.LayoutControl layoutControl1;
+        private DevExpress.XtraLayout.LayoutControlGroup Root;
+        private DevExpress.XtraGrid.GridControl gridCgXgf;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView2;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup1;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
+        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
+        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
+        private DevExpress.XtraLayout.SplitterItem splitterItem1;
+    }
+}

+ 151 - 0
XdCxRhDW.App/PopupControl/ShowCgCtrl.cs

@@ -0,0 +1,151 @@
+using DevExpress.XtraEditors;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Data.Entity;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using XdCxRhDW.App.Model;
+using XdCxRhDW.Repostory.EFContext;
+using XdCxRhDW.Repostory.Model;
+
+namespace XdCxRhDW.App.PopupControl
+{
+    public partial class ShowCgCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        PosRes posItem;
+        List<ModelCg> listCg = new List<ModelCg>();
+        List<ModelCgXgf> listXgf = new List<ModelCgXgf>();
+        public ShowCgCtrl()
+        {
+            InitializeComponent();
+            gridShowCg.Init<ModelCg>().DataSource = listCg;
+            gridCgXgf.Init<ModelCgXgf>().UseRowNumber().DataSource = listXgf;
+        }
+
+        public ShowCgCtrl(PosRes posItem)
+            :this()
+        {
+            this.posItem = posItem;
+        }
+        private async void ShowCgCtrl_Load(object sender, EventArgs e)
+        {
+            List<SatInfo> sats = null;
+            using (RHDWContext db = new RHDWContext())
+            {
+                sats = await db.SatInfos.ToListAsync();
+            }
+            List<ModelCg> list = new List<ModelCg>();
+            using (RHDWPartContext db = RHDWPartContext.GetContext(posItem.SigTime))
+            {
+                var cgEntity = db.CgRes.Where(p => p.ID == posItem.CgResID).FirstOrDefault();
+                if (cgEntity == null) return;
+
+                //主邻1
+                if (cgEntity.Adja1Code != null)
+                {
+                    ModelCg item = new ModelCg()
+                    {
+                        ID = cgEntity.ID,
+                        CreateTime = cgEntity.CreateTime,
+                        UpdateTime = cgEntity.UpdateTime,
+                        SigTime = cgEntity.SigTime,
+                        Dto = cgEntity.Dto1,
+                        Dfo = cgEntity.Dfo1,
+                        Snr = cgEntity.Snr1,
+                        MainSat = cgEntity.MainCode?.ToString(),
+                        AdjaSat = cgEntity.Adja1Code.ToString(),
+                        CgType = 0,
+                    };
+
+                    var find = sats.Find(p => p.SatCode == cgEntity.MainCode.Value);
+                    if (find != null)
+                        item.MainSat = find.Sat;
+                    find = sats.Find(p => p.SatCode == cgEntity.Adja1Code.Value);
+                    if (find != null)
+                        item.AdjaSat = find.Sat;
+                    list.Add(item);
+                }
+                //主邻2
+                if (cgEntity.Adja2Code != null)
+                {
+                    ModelCg item = new ModelCg()
+                    {
+                        ID = cgEntity.ID,
+                        CreateTime = cgEntity.CreateTime,
+                        UpdateTime = cgEntity.UpdateTime,
+                        SigTime = cgEntity.SigTime,
+                        Dto = cgEntity.Dto2,
+                        Dfo = cgEntity.Dfo2,
+                        Snr = cgEntity.Snr2,
+                        MainSat = cgEntity.MainCode?.ToString(),
+                        AdjaSat = cgEntity.Adja2Code.ToString(),
+                        CgType = 1,
+                    };
+
+                    var find = sats.Find(p => p.SatCode == cgEntity.MainCode.Value);
+                    if (find != null)
+                        item.MainSat = find.Sat;
+                    find = sats.Find(p => p.SatCode == cgEntity.Adja2Code.Value);
+                    if (find != null)
+                        item.AdjaSat = find.Sat;
+                    list.Add(item);
+                }
+                //超短
+                if (cgEntity.DtoCdb!=null)
+                {
+                    ModelCg item = new ModelCg()
+                    {
+                        ID = cgEntity.ID,
+                        CreateTime = cgEntity.CreateTime,
+                        UpdateTime = cgEntity.UpdateTime,
+                        SigTime = cgEntity.SigTime,
+                        Dto = cgEntity.DtoCdb,
+                        Dfo = cgEntity.DfoCdb,
+                        Snr = cgEntity.SnrCdb,
+                        MainSat = cgEntity.MainCode?.ToString(),
+                        AdjaSat = "超短站",
+                        CgType = 2,
+                    };
+
+                    var find = sats.Find(p => p.SatCode == cgEntity.MainCode.Value);
+                    if (find != null)
+                        item.MainSat = find.Sat;
+                    list.Add(item);
+                }
+
+            }
+            this.listCg.Clear();
+            this.listCg.AddRange(list);
+        }
+        private async void gridView1_FocusedRowObjectChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowObjectChangedEventArgs e)
+        {
+            listXgf.Clear();
+            var cgItem = e.Row as ModelCg;
+            if (cgItem != null)
+            {
+                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
+                    {
+                        ID = p.ID,
+                        Dto = p.Dto,
+                        Dfo = p.Dfo,
+                        Snr = p.Snr,
+                        CreateTime = p.CreateTime,
+                        UpdateTime = p.UpdateTime,
+                    }));
+                }
+                //查询相关峰结果
+            }
+            this.gridView2.RefreshData();
+        }
+
+
+    }
+}

+ 120 - 0
XdCxRhDW.App/PopupControl/ShowCgCtrl.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 72 - 0
XdCxRhDW.App/PopupControl/ShowCxCtrl.Designer.cs

@@ -0,0 +1,72 @@
+namespace XdCxRhDW.App.PopupControl
+{
+    partial class ShowCxCtrl
+    {
+        /// <summary> 
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Component Designer generated code
+
+        /// <summary> 
+        /// Required method for Designer support - do not modify 
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.gridShowCx = new DevExpress.XtraGrid.GridControl();
+            this.gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
+            ((System.ComponentModel.ISupportInitialize)(this.gridShowCx)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // gridShowCx
+            // 
+            this.gridShowCx.Dock = System.Windows.Forms.DockStyle.Fill;
+            this.gridShowCx.Location = new System.Drawing.Point(0, 0);
+            this.gridShowCx.MainView = this.gridView1;
+            this.gridShowCx.Name = "gridShowCx";
+            this.gridShowCx.Size = new System.Drawing.Size(834, 310);
+            this.gridShowCx.TabIndex = 1;
+            this.gridShowCx.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
+            this.gridView1});
+            // 
+            // gridView1
+            // 
+            this.gridView1.GridControl = this.gridShowCx;
+            this.gridView1.Name = "gridView1";
+            // 
+            // ShowCxCtrl
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.gridShowCx);
+            this.Name = "ShowCxCtrl";
+            this.Size = new System.Drawing.Size(834, 310);
+            this.Load += new System.EventHandler(this.ShowCxCtrl_Load);
+            ((System.ComponentModel.ISupportInitialize)(this.gridShowCx)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit();
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+
+        private DevExpress.XtraGrid.GridControl gridShowCx;
+        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
+    }
+}

+ 44 - 0
XdCxRhDW.App/PopupControl/ShowCxCtrl.cs

@@ -0,0 +1,44 @@
+using DevExpress.XtraEditors;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Data.Entity;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Documents;
+using System.Windows.Forms;
+using XdCxRhDW.App.Model;
+using XdCxRhDW.Repostory.EFContext;
+using XdCxRhDW.Repostory.Model;
+
+namespace XdCxRhDW.App.PopupControl
+{
+    public partial class ShowCxCtrl : DevExpress.XtraEditors.XtraUserControl
+    {
+        PosRes posItem;
+        List<CxRes> list = new List<CxRes>();
+        public ShowCxCtrl()
+        {
+            InitializeComponent();
+            gridShowCx.Init<CxRes>().DataSource = list;
+        }
+        public ShowCxCtrl(PosRes posItem)
+            :this()
+        {
+            this.posItem = posItem;
+        }
+        private async void ShowCxCtrl_Load(object sender, EventArgs e)
+        {
+            using (RHDWPartContext db = RHDWPartContext.GetContext(posItem.SigTime))
+            {
+                var items =await db.CxRes.Where(p => p.ID == posItem.CxResID).ToListAsync();
+
+                this.list.AddRange(items);
+            }
+            gridView1.RefreshData();
+        }
+    }
+}

+ 120 - 0
XdCxRhDW.App/PopupControl/ShowCxCtrl.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 54 - 27
XdCxRhDW.App/UserControl/CtrlHome.Designer.cs

@@ -36,15 +36,15 @@ namespace XdCxRhDW.App.UserControl
         {
             this.components = new System.ComponentModel.Container();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CtrlHome));
-            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions7 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
-            DevExpress.Utils.SuperToolTip superToolTip7 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipItem toolTipItem7 = new DevExpress.Utils.ToolTipItem();
-            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions8 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
-            DevExpress.Utils.SuperToolTip superToolTip8 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipItem toolTipItem8 = new DevExpress.Utils.ToolTipItem();
-            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions9 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
-            DevExpress.Utils.SuperToolTip superToolTip9 = new DevExpress.Utils.SuperToolTip();
-            DevExpress.Utils.ToolTipItem toolTipItem9 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions4 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
+            DevExpress.Utils.SuperToolTip superToolTip4 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem4 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions5 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
+            DevExpress.Utils.SuperToolTip superToolTip5 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem5 = new DevExpress.Utils.ToolTipItem();
+            DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions buttonImageOptions6 = new DevExpress.XtraEditors.ButtonsPanelControl.ButtonImageOptions();
+            DevExpress.Utils.SuperToolTip superToolTip6 = new DevExpress.Utils.SuperToolTip();
+            DevExpress.Utils.ToolTipItem toolTipItem6 = new DevExpress.Utils.ToolTipItem();
             this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
             this.txtTimeCho = new DevExpress.XtraEditors.ImageComboBoxEdit();
             this.barManager1 = new DevExpress.XtraBars.BarManager(this.components);
@@ -88,6 +88,8 @@ namespace XdCxRhDW.App.UserControl
             this.htmlTemplateCollection1 = new DevExpress.Utils.Html.HtmlTemplateCollection();
             this.htmlTemplate1 = new DevExpress.Utils.Html.HtmlTemplate();
             this.popupMenu2 = new DevExpress.XtraBars.PopupMenu(this.components);
+            this.btnShowCgRes = new DevExpress.XtraBars.BarButtonItem();
+            this.btnShowCxRes = new DevExpress.XtraBars.BarButtonItem();
             ((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
             this.layoutControl1.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.txtTimeCho.Properties)).BeginInit();
@@ -173,8 +175,10 @@ namespace XdCxRhDW.App.UserControl
             this.btnDrawDto,
             this.btnDrawDfo,
             this.btnDrawCX,
-            this.btnGDOP});
-            this.barManager1.MaxItemId = 11;
+            this.btnGDOP,
+            this.btnShowCgRes,
+            this.btnShowCxRes});
+            this.barManager1.MaxItemId = 13;
             // 
             // barDockControlTop
             // 
@@ -240,6 +244,7 @@ namespace XdCxRhDW.App.UserControl
             // 
             this.btnDrawDto.Caption = "绘制时差线";
             this.btnDrawDto.Id = 7;
+            this.btnDrawDto.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnDrawDto.ImageOptions.SvgImage")));
             this.btnDrawDto.Name = "btnDrawDto";
             this.btnDrawDto.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.btnDrawDto_ItemClick);
             // 
@@ -247,6 +252,7 @@ namespace XdCxRhDW.App.UserControl
             // 
             this.btnDrawDfo.Caption = "绘制频差线";
             this.btnDrawDfo.Id = 8;
+            this.btnDrawDfo.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnDrawDfo.ImageOptions.SvgImage")));
             this.btnDrawDfo.Name = "btnDrawDfo";
             this.btnDrawDfo.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.btnDrawDfo_ItemClick);
             // 
@@ -262,6 +268,7 @@ namespace XdCxRhDW.App.UserControl
             // 
             this.btnGDOP.Caption = "GDOP分析";
             this.btnGDOP.Id = 10;
+            this.btnGDOP.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnGDOP.ImageOptions.SvgImage")));
             this.btnGDOP.Name = "btnGDOP";
             this.btnGDOP.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.btnGDOP_ItemClick);
             // 
@@ -384,22 +391,22 @@ namespace XdCxRhDW.App.UserControl
             // 
             // layoutControlGroup1
             // 
-            buttonImageOptions7.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("buttonImageOptions7.SvgImage")));
-            buttonImageOptions7.SvgImageSize = new System.Drawing.Size(20, 20);
-            toolTipItem7.Text = "新建任务";
-            superToolTip7.Items.Add(toolTipItem7);
-            buttonImageOptions8.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("buttonImageOptions8.SvgImage")));
-            buttonImageOptions8.SvgImageSize = new System.Drawing.Size(20, 20);
-            toolTipItem8.Text = "编辑任务";
-            superToolTip8.Items.Add(toolTipItem8);
-            buttonImageOptions9.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("buttonImageOptions9.SvgImage")));
-            buttonImageOptions9.SvgImageSize = new System.Drawing.Size(20, 20);
-            toolTipItem9.Text = "删除任务";
-            superToolTip9.Items.Add(toolTipItem9);
+            buttonImageOptions4.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("buttonImageOptions4.SvgImage")));
+            buttonImageOptions4.SvgImageSize = new System.Drawing.Size(20, 20);
+            toolTipItem4.Text = "新建任务";
+            superToolTip4.Items.Add(toolTipItem4);
+            buttonImageOptions5.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("buttonImageOptions5.SvgImage")));
+            buttonImageOptions5.SvgImageSize = new System.Drawing.Size(20, 20);
+            toolTipItem5.Text = "编辑任务";
+            superToolTip5.Items.Add(toolTipItem5);
+            buttonImageOptions6.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("buttonImageOptions6.SvgImage")));
+            buttonImageOptions6.SvgImageSize = new System.Drawing.Size(20, 20);
+            toolTipItem6.Text = "删除任务";
+            superToolTip6.Items.Add(toolTipItem6);
             this.layoutControlGroup1.CustomHeaderButtons.AddRange(new DevExpress.XtraEditors.ButtonPanel.IBaseButton[] {
-            new DevExpress.XtraEditors.ButtonsPanelControl.GroupBoxButton("新建任务", false, buttonImageOptions7, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, superToolTip7, true, false, true, null, -1),
-            new DevExpress.XtraEditors.ButtonsPanelControl.GroupBoxButton("编辑任务", false, buttonImageOptions8, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, superToolTip8, true, false, true, null, -1),
-            new DevExpress.XtraEditors.ButtonsPanelControl.GroupBoxButton("删除任务", false, buttonImageOptions9, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, superToolTip9, true, false, true, null, -1)});
+            new DevExpress.XtraEditors.ButtonsPanelControl.GroupBoxButton("新建任务", false, buttonImageOptions4, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, superToolTip4, true, false, true, null, -1),
+            new DevExpress.XtraEditors.ButtonsPanelControl.GroupBoxButton("编辑任务", false, buttonImageOptions5, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, superToolTip5, true, false, true, null, -1),
+            new DevExpress.XtraEditors.ButtonsPanelControl.GroupBoxButton("删除任务", false, buttonImageOptions6, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, true, superToolTip6, true, false, true, null, -1)});
             this.layoutControlGroup1.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
             this.layoutControlGroup1.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
             this.layoutControlItem1});
@@ -567,10 +574,28 @@ namespace XdCxRhDW.App.UserControl
             new DevExpress.XtraBars.LinkPersistInfo(this.btnDrawDto),
             new DevExpress.XtraBars.LinkPersistInfo(this.btnDrawDfo),
             new DevExpress.XtraBars.LinkPersistInfo(this.btnDrawCX),
-            new DevExpress.XtraBars.LinkPersistInfo(this.btnGDOP)});
+            new DevExpress.XtraBars.LinkPersistInfo(this.btnGDOP),
+            new DevExpress.XtraBars.LinkPersistInfo(this.btnShowCgRes),
+            new DevExpress.XtraBars.LinkPersistInfo(this.btnShowCxRes)});
             this.popupMenu2.Manager = this.barManager1;
             this.popupMenu2.Name = "popupMenu2";
             // 
+            // btnShowCgRes
+            // 
+            this.btnShowCgRes.Caption = "查看参估";
+            this.btnShowCgRes.Id = 11;
+            this.btnShowCgRes.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnShowCgRes.ImageOptions.SvgImage")));
+            this.btnShowCgRes.Name = "btnShowCgRes";
+            this.btnShowCgRes.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.btnShowCgRes_ItemClick);
+            // 
+            // btnShowCxRes
+            // 
+            this.btnShowCxRes.Caption = "查看测向";
+            this.btnShowCxRes.Id = 12;
+            this.btnShowCxRes.ImageOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("btnShowCxRes.ImageOptions.SvgImage")));
+            this.btnShowCxRes.Name = "btnShowCxRes";
+            this.btnShowCxRes.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.btnShowCxRes_ItemClick);
+            // 
             // CtrlHome
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
@@ -664,5 +689,7 @@ namespace XdCxRhDW.App.UserControl
         private DevExpress.XtraLayout.LayoutControlItem layoutControlItem8;
         private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup3;
         private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
+        private DevExpress.XtraBars.BarButtonItem btnShowCgRes;
+        private DevExpress.XtraBars.BarButtonItem btnShowCxRes;
     }
 }

+ 23 - 2
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -28,6 +28,7 @@ using System.Data.Entity.Migrations;
 using System.Threading;
 using System.Threading.Tasks;
 using System.IO;
+using XdCxRhDW.App.PopupControl;
 namespace XdCxRhDW.App.UserControl
 {
     public partial class CtrlHome : DevExpress.XtraEditors.XtraUserControl
@@ -468,32 +469,38 @@ namespace XdCxRhDW.App.UserControl
                     //一星一地 测向线 GDOP
                     btnDrawDfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                     btnDrawDto.Visibility = btnGDOP.Visibility = btnDrawCX.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    btnShowCxRes.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                     break;
                 case EnumPosResType.X2D1:
                 case EnumPosResType.X2D1NoRef:
                     //两星一地 GDOP 时差线
                     btnDrawDto.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                     btnDrawCX.Visibility = btnDrawDfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    btnShowCxRes.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                     break;
                 case EnumPosResType.RH:
                     //融合DW=
                     btnDrawDto.Visibility = btnDrawCX.Visibility = btnGDOP.Visibility = btnDrawDfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    btnShowCxRes.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                     break;
                 case EnumPosResType.X3:
                 case EnumPosResType.X3NoRef:
                     //三星双时差DW GDOP 时差线 
                     btnDrawDto.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                     btnDrawCX.Visibility = btnDrawDfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    btnShowCxRes.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                     break;
                 case EnumPosResType.X3TwoDfo:
                     //三星双频差DW GDOP 频差线 
                     btnDrawDfo.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                     btnDrawDto.Visibility = btnDrawCX.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    btnShowCxRes.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                     break;
                 case EnumPosResType.X2Dfo:
                     //双星时频差DW GDOP 时频差线 
                     btnDrawDto.Visibility = btnDrawDfo.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                     btnDrawCX.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    btnShowCxRes.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                     break;
                 default:
                     break;
@@ -793,7 +800,17 @@ namespace XdCxRhDW.App.UserControl
             if (info == null) return;
             DrawGDOP(info);
         }
+        private void btnShowCgRes_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            var item = gridView2.GetFocusedRow() as PosRes;
+            DxHelper.PopupHelper.ShowPopup(new ShowCgCtrl(item), gridHomePosRes, gridHomePosRes.Height, EnumPopupDirection.Bottom,showCloseButton:true);
+        }
 
+        private void btnShowCxRes_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
+        {
+            var item = gridView2.GetFocusedRow() as PosRes;
+            DxHelper.PopupHelper.ShowPopup(new ShowCxCtrl(item), gridHomePosRes, gridHomePosRes.Height, EnumPopupDirection.Bottom, showCloseButton: true);
+        }
         private void DrawGDOP(PosRes item)
         {
             try
@@ -1109,7 +1126,7 @@ namespace XdCxRhDW.App.UserControl
                 else
                 {
                     if (!Directory.Exists("DbPart")) return new List<PosRes>();
-                    var yearDirs = Directory.EnumerateDirectories("DbPart").OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
+                    var yearDirs = Directory.EnumerateDirectories(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart")).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
                     foreach (var yearDir in yearDirs)
                     {
                         //每一天的db文件,倒序排列
@@ -1141,7 +1158,9 @@ namespace XdCxRhDW.App.UserControl
                 {
                     using (RHDWPartContext db = RHDWPartContext.GetContext(endDay))
                     {
-                        var posRes = await db.PosRes.Where(w => w.SigTime >= start && w.SigTime <= end && w.TaskInfoID == tsk.ID).OrderByDescending(o => o.SigTime).ToListAsync(ct);
+                        var posRes = await db.PosRes
+                            .Where(w => w.SigTime >= start && w.SigTime <= end && w.TaskInfoID == tsk.ID)
+                            .OrderByDescending(o => o.SigTime).ToListAsync(ct);
                         list.AddRange(posRes);
                     }
                     endDay = endDay.AddDays(-1);
@@ -1157,6 +1176,8 @@ namespace XdCxRhDW.App.UserControl
             }
             return new List<PosRes>();
         }
+
+
     }
 }
 

+ 145 - 12
XdCxRhDW.App/UserControl/CtrlHome.resx

@@ -178,30 +178,163 @@
         YWNrIiAvPg0KICA8cGF0aCBkPSJNMjksMTdsLTgsOGwtNC00bDgtOEwyOSwxN3ogTTMwLDE2bDEuNy0x
         LjdjMC40LTAuNCwwLjQtMSwwLTEuM0wyOSwxMC4zYy0wLjQtMC40LTEtMC40LTEuMywwTDI2LDEyTDMw
         LDE2eiAgIE0xNiwyMnY0aDRMMTYsMjJ6IiBjbGFzcz0iQmx1ZSIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="btnDrawDto.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJ0CAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iQ3JlYXRlX1NjYXR0ZXJfQ2hhcnRfTGluZXMiIHN0eWxlPSJlbmFibGUt
+        YmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5CbHVl
+        e2ZpbGw6IzExNzdENzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9
+        Ik04LDYuMmwtMy4xLDYuM2wtMS44LTAuOUw4LDEuOGwxMi4zLDIyLjVsNy4xLTcuMWwxLjQsMS40bC04
+        LjksOC45TDgsNi4yTDgsNi4yeiBNNC45LDEyLjRMNC45LDEyLjQgIEw0LjksMTIuNEw0LjksMTIuNEw0
+        LjksMTIuNHoiIGNsYXNzPSJZZWxsb3ciIC8+DQogIDxwYXRoIGQ9Ik00LjQsMjQuOUw0LjQsMjQuOUw0
+        LjQsMjQuOUw0LjQsMjQuOUw0LjQsMjQuOXogTTMuNiwyMy4xbDE1LjgtNy45bDcuOS05LjhsMS42LDEu
+        MmwtOC4xLDEwLjJMNC40LDI0LjkgIEwzLjYsMjMuMUwzLjYsMjMuMXoiIGNsYXNzPSJCbHVlIiAvPg0K
+        PC9zdmc+Cw==
+</value>
+  </data>
+  <data name="btnDrawDfo.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAN8HAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iQ3JlYXRlU2NhdHRlcl9DaGFydF9TbW9vdGhfTGluZXNfQW5kX01hcmtl
+        cnMiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9
+        InRleHQvY3NzIj4KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9CgkuWWVs
+        bG93e2ZpbGw6I0ZGQjExNTt9Cjwvc3R5bGU+DQogIDxwYXRoIGQ9Ik02LDIzYzAsMS4xLTAuOSwyLTIs
+        MmMtMS4xLDAtMi0wLjktMi0yczAuOS0yLDItMkM1LjEsMjEsNiwyMS45LDYsMjN6IE0yOCw0Yy0xLjEs
+        MC0yLDAuOS0yLDJzMC45LDIsMiwyICBjMS4xLDAsMi0wLjksMi0yUzI5LjEsNCwyOCw0eiBNMTcsMTUu
+        MWMtMSwwLjMtMS45LDAuNC0yLjcsMC42Yy0xLjUsMC4yLTIuNCwwLjMtMi40LDAuM2MtMC4xLDAtMi4y
+        LDAuMy00LjQsMS40ICBjLTEuMiwwLjYtMi40LDEuNC0zLjMsMi43YzAuNywwLjEsMS40LDAuNCwxLjgs
+        MC45YzAuNi0wLjcsMS40LTEuMywyLjMtMS43YzAuOS0wLjUsMS44LTAuNywyLjUtMC45YzAuNy0wLjIs
+        MS4xLTAuMiwxLjEtMC4yICBjMCwwLDIuNS0wLjIsNS43LTFDMTcuMywxNi41LDE3LDE1LjksMTcsMTUu
+        MXogTTI4LDljLTAuNSwwLTEtMC4yLTEuNS0wLjRjLTAuNywxLjktMi4zLDMuNC00LjIsNC41YzAuNCww
+        LjUsMC43LDEuMiwwLjcsMS45ICBjMi40LTEuMyw0LjYtMy4zLDUuNS02QzI4LjQsOSwyOC4yLDksMjgs
+        OXogTTIwLDEzYy0xLjEsMC0yLDAuOS0yLDJzMC45LDIsMiwyYzEuMSwwLDItMC45LDItMlMyMS4xLDEz
+        LDIwLDEzeiIgY2xhc3M9IkJsdWUiIC8+DQogIDxwYXRoIGQ9Ik0xNywyNi4zYy0xLTAuNS0xLjgtMS4y
+        LTIuNC0yYy0xLjMtMS42LTItMy42LTIuNi01LjVjLTAuNC0xLjMtMC42LTIuNy0wLjctMy45QzExLjUs
+        MTUsMTEuOCwxNSwxMiwxNSAgYzAuNSwwLDAuOS0wLjEsMS4zLTAuM2MwLDAuMywwLjEsMC42LDAuMSww
+        LjljMC40LDIuNiwxLjIsNS42LDIuNyw3LjRjMC40LDAuNSwwLjksMC45LDEuNCwxLjNDMTcuMiwyNC44
+        LDE3LDI1LjQsMTcsMjYgIEMxNywyNi4xLDE3LDI2LjIsMTcsMjYuM3ogTTEyLjgsOS4xYy0wLjEtMC40
+        LTAuMi0wLjktMC40LTEuNEMxMS45LDYsMTAuNiw0LDgsNEM2LjcsNCw1LjYsNC42LDQuOSw1LjRDNCw2
+        LjUsMy42LDcuOSwzLjMsOS4xICBDMy41LDksMy44LDksNCw5YzAuNSwwLDAuOSwwLjEsMS4zLDAuM2Mw
+        LTAuMiwwLjEtMC40LDAuMS0wLjVjMC4yLTAuOCwwLjYtMS41LDEtMkM2LjksNi4zLDcuMyw2LDgsNmMx
+        LjQsMCwyLjEsMSwyLjYsMi4zICBjMC4xLDAuMywwLjIsMC42LDAuMiwwLjlDMTEuMiw5LjEsMTEuNiw5
+        LDEyLDlDMTIuMyw5LDEyLjUsOS4xLDEyLjgsOS4xeiBNMjgsMTljLTAuNSwwLTAuOS0wLjEtMS4zLTAu
+        M2MtMC4zLDEuMi0wLjcsMi41LTEuNCwzLjYgIGMtMC43LDEtMS41LDEuOC0yLjYsMi4yQzIyLjgsMjUs
+        MjMsMjUuNSwyMywyNmMwLDAuMiwwLDAuNC0wLjEsMC41YzIuNi0wLjksNC4yLTMuMSw1LTUuMWMwLjMt
+        MC45LDAuNi0xLjcsMC43LTIuNCAgQzI4LjQsMTksMjguMiwxOSwyOCwxOXogTTQsMTBjLTEuMSwwLTIs
+        MC45LTIsMnMwLjksMiwyLDJjMS4xLDAsMi0wLjksMi0yUzUuMSwxMCw0LDEweiBNMTIsMTBjLTEuMSww
+        LTIsMC45LTIsMnMwLjksMiwyLDIgIGMxLjEsMCwyLTAuOSwyLTJTMTMuMSwxMCwxMiwxMHogTTIwLDI0
+        Yy0xLjEsMC0yLDAuOS0yLDJzMC45LDIsMiwyYzEuMSwwLDItMC45LDItMlMyMS4xLDI0LDIwLDI0eiBN
+        MjgsMTRjLTEuMSwwLTIsMC45LTIsMiAgczAuOSwyLDIsMmMxLjEsMCwyLTAuOSwyLTJTMjkuMSwxNCwy
+        OCwxNHoiIGNsYXNzPSJZZWxsb3ciIC8+DQo8L3N2Zz4L
 </value>
   </data>
   <data name="btnDrawCX.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
-        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHACAAAC77u/
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAACgCAAAC77u/
         PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
         IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
         MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
-        Y2U9InByZXNlcnZlIiBpZD0iUnVsZXJIb3Jpem9udGFsIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6
-        bmV3IDAgMCAzMiAzMiI+DQogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CgkuQmxhY2t7ZmlsbDojNzI3
-        MjcyO30KCS5ZZWxsb3d7ZmlsbDojRkZCMTE1O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTI5LDIySDFj
-        LTAuNiwwLTEtMC41LTEtMVY5YzAtMC42LDAuNC0xLDEtMWgyOGMwLjUsMCwxLDAuNCwxLDF2MTJDMzAs
-        MjEuNSwyOS41LDIyLDI5LDIyeiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPHBhdGggZD0iTTQsMjJIMnYt
-        NmgyVjIyeiBNOCwxOEg2djRoMlYxOHogTTEyLDE2aC0ydjZoMlYxNnogTTE2LDE4aC0ydjRoMlYxOHog
-        TTIwLDE2aC0ydjZoMlYxNnogTTI0LDE4aC0ydjRoMlYxOHogICBNMjgsMTZoLTJ2NmgyVjE2eiIgY2xh
-        c3M9IkJsYWNrIiAvPg0KPC9zdmc+Cw==
+        Y2U9InByZXNlcnZlIiBpZD0iRGF0YV9MYWJlbHNfTGluZV9DZW50ZXIiIHN0eWxlPSJlbmFibGUtYmFj
+        a2dyb3VuZDpuZXcgMCAwIDMyIDMyIj4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5HcmVlbntm
+        aWxsOiMwMzlDMjM7fQoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQo8L3N0eWxlPg0KICA8cmVjdCB4PSI4
+        LjkiIHk9IjE1IiB3aWR0aD0iMTQuMSIgaGVpZ2h0PSIyIiBjbGFzcz0iWWVsbG93IiB0cmFuc2Zvcm09
+        Im1hdHJpeCgwLjcwNzEsIC0wLjcwNzEsIDAuNzA3MSwgMC43MDcxLCAtNi42Mjc0LCAxNikiIC8+DQog
+        IDxwYXRoIGQ9Ik0xMCwyNkg0di00aDZWMjZ6IE0yOCw2aC02djRoNlY2eiIgY2xhc3M9IkdyZWVuIiAv
+        Pg0KPC9zdmc+Cw==
+</value>
+  </data>
+  <data name="btnGDOP.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAHcFAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLlll
+        bGxvd3tmaWxsOiNGRkIxMTU7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+        MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMzU7fQoJLnN0M3tv
+        cGFjaXR5OjAuNjU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iU2NhdHRlclJhZGFyTGluZV8xXyI+DQogICAg
+        PGcgY2xhc3M9InN0MiI+DQogICAgICA8cGF0aCBkPSJNMTYsMEM3LjIsMCwwLDcuMiwwLDE2czcuMiwx
+        NiwxNiwxNnMxNi03LjIsMTYtMTZTMjQuOCwwLDE2LDB6IE0xNiwzMEM4LjMsMzAsMiwyMy43LDIsMTZT
+        OC4zLDIsMTYsMiAgICBzMTQsNi4zLDE0LDE0UzIzLjcsMzAsMTYsMzB6IE0xNiw2QzEwLjUsNiw2LDEw
+        LjUsNiwxNmMwLDUuNSw0LjUsMTAsMTAsMTBzMTAtNC41LDEwLTEwQzI2LDEwLjUsMjEuNSw2LDE2LDZ6
+        IE0xNiwyNCAgICBjLTQuNCwwLTgtMy42LTgtOHMzLjYtOCw4LThzOCwzLjYsOCw4UzIwLjQsMjQsMTYs
+        MjR6IE0xNiwxMmMtMi4yLDAtNCwxLjgtNCw0YzAsMi4yLDEuOCw0LDQsNHM0LTEuOCw0LTRDMjAsMTMu
+        OCwxOC4yLDEyLDE2LDEyeiAgICAgTTE2LDE4Yy0xLjEsMC0yLTAuOS0yLTJjMC0xLjEsMC45LTIsMi0y
+        czIsMC45LDIsMkMxOCwxNy4xLDE3LjEsMTgsMTYsMTh6IiBjbGFzcz0iQmxhY2siIC8+DQogICAgPC9n
+        Pg0KICAgIDxwYXRoIGQ9Ik0xNSw0Yy0wLjYsMC0xLDAuNC0xLDFjMCwwLjYsMC40LDEsMSwxYzYuMSww
+        LDExLDQuOSwxMSwxMWMwLDQuNC0zLjYsOC04LDhzLTgtMy42LTgtOGMwLTIuOCwyLjItNSw1LTUgICBz
+        NSwyLjIsNSw1YzAsMS43LTEuMywzLTMsM3MtMy0xLjMtMy0zYzAtMC42LDAuNC0xLDEtMXMxLDAuNCwx
+        LDFjMCwwLjYsMC40LDEsMSwxczEtMC40LDEtMWMwLTEuNy0xLjMtMy0zLTNzLTMsMS4zLTMsMyAgIGMw
+        LDIuOCwyLjIsNSw1LDVzNS0yLjIsNS01YzAtMy45LTMuMS03LTctN3MtNywzLjEtNyw3YzAsNS41LDQu
+        NSwxMCwxMCwxMHMxMC00LjUsMTAtMTBDMjgsOS44LDIyLjIsNCwxNSw0eiIgY2xhc3M9IkJsdWUiIC8+
+        DQogIDwvZz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="btnShowCgRes.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAP0DAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzczNzM3NDt9Cgku
+        WWVsbG93e2ZpbGw6I0ZDQjAxQjt9CgkuR3JlZW57ZmlsbDojMTI5QzQ5O30KCS5CbHVle2ZpbGw6IzM4
+        N0NCNzt9CgkuUmVke2ZpbGw6I0QwMjEyNzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQoJLnN0M3tk
+        aXNwbGF5Om5vbmU7ZmlsbDojNzM3Mzc0O30KPC9zdHlsZT4NCiAgPHBhdGggZD0iTTI3LDJIMUMwLjUs
+        MiwwLDIuNSwwLDN2N2gyOFYzQzI4LDIuNSwyNy41LDIsMjcsMnoiIGNsYXNzPSJCbHVlIiAvPg0KICA8
+        ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJNMjYsMTYuMlYxMGgydjYuOUMyNy40LDE2LjYsMjYu
+        NywxNi40LDI2LDE2LjJ6IE0xNC4xLDI0LjdMMTMuOSwyNEgyVjEwSDB2MTVjMCwwLjUsMC41LDEsMSwx
+        aDEzLjggICBDMTQuNCwyNS4zLDE0LjIsMjQuOCwxNC4xLDI0Ljd6IiBjbGFzcz0iQmxhY2siIC8+DQog
+        IDwvZz4NCiAgPHBhdGggZD0iTTI0LDE4Yy01LjcsMC04LDYtOCw2czIuMyw2LDgsNnM4LTYsOC02UzI5
+        LjcsMTgsMjQsMTh6IE0yNCwyOGMtMi4yLDAtNC0xLjgtNC00YzAtMi4yLDEuOC00LDQtNCAgYzIuMiww
+        LDQsMS44LDQsNEMyOCwyNi4yLDI2LjIsMjgsMjQsMjh6IE0yNiwyNGMwLDEuMS0wLjksMi0yLDJzLTIt
+        MC45LTItMnMwLjktMiwyLTJTMjYsMjIuOSwyNiwyNHoiIGNsYXNzPSJCbGFjayIgLz4NCjwvc3ZnPgs=
+</value>
+  </data>
+  <data name="btnShowCxRes.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
+        LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+        dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAM8CAAAC77u/
+        PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+        IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+        MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+        Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+        MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku
+        QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC
+        MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+        Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iTGF5b3V0RGly
+        ZWN0aW9uIj4NCiAgICA8cG9seWdvbiBwb2ludHM9IjI1LjQsOS40IDMwLDE0IDMwLDIgMTgsMiAyMi42
+        LDYuNiAxNiwxMy4yIDkuNCw2LjYgMTQsMiAyLDIgMiwxNCA2LjYsOS40IDEzLjIsMTYgNi42LDIyLjYg
+        MiwxOCAgICAyLDMwIDE0LDMwIDkuNCwyNS40IDE2LDE4LjggMjIuNiwyNS40IDE4LDMwIDMwLDMwIDMw
+        LDE4IDI1LjQsMjIuNiAxOC44LDE2ICAiIGNsYXNzPSJCbHVlIiAvPg0KICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
   <metadata name="toolTipController1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>391, 17</value>
   </metadata>
-  <data name="buttonImageOptions7.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="buttonImageOptions4.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -220,7 +353,7 @@
         DQogIDwvZz4NCjwvc3ZnPgs=
 </value>
   </data>
-  <data name="buttonImageOptions8.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="buttonImageOptions5.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
@@ -241,7 +374,7 @@
         ICA8L2c+DQo8L3N2Zz4L
 </value>
   </data>
-  <data name="buttonImageOptions9.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
+  <data name="buttonImageOptions6.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v23.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIzLjIsIFZlcnNpb249MjMuMi4z
         LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl

+ 20 - 0
XdCxRhDW.App/XdCxRhDW.App.csproj

@@ -353,6 +353,20 @@
     <Compile Include="MainForm.Designer.cs">
       <DependentUpon>MainForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="Model\ModelCg.cs" />
+    <Compile Include="Model\ModelCgXgf.cs" />
+    <Compile Include="PopupControl\ShowCgCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="PopupControl\ShowCgCtrl.Designer.cs">
+      <DependentUpon>ShowCgCtrl.cs</DependentUpon>
+    </Compile>
+    <Compile Include="PopupControl\ShowCxCtrl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="PopupControl\ShowCxCtrl.Designer.cs">
+      <DependentUpon>ShowCxCtrl.cs</DependentUpon>
+    </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="TcpServer.cs" />
@@ -476,6 +490,12 @@
     </None>
     <None Include="packages.config" />
     <None Include="Properties\licenses.licx" />
+    <EmbeddedResource Include="PopupControl\ShowCgCtrl.resx">
+      <DependentUpon>ShowCgCtrl.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="PopupControl\ShowCxCtrl.resx">
+      <DependentUpon>ShowCxCtrl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>

+ 1 - 1
XdCxRhDW.App/XlCache.cs

@@ -42,7 +42,7 @@ namespace XdCxRhDW.App
             {
                 List<XlInfo> list = new List<XlInfo>();
                 if (!Directory.Exists("DbPart")) return list;
-                var yearDirs = Directory.EnumerateDirectories("DbPart").OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
+                var yearDirs = Directory.EnumerateDirectories(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart")).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
                 foreach (var yearDir in yearDirs)
                 {
                     //每一天的db文件,倒序排列

+ 2 - 0
XdCxRhDW.Repostory/EFContext/RHDWContext.cs

@@ -108,6 +108,8 @@ namespace XdCxRhDW.Repostory.EFContext
         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; }
 
     }

+ 55 - 0
XdCxRhDW.Repostory/Model/CgXgfRes.cs

@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDW.Repostory.Model
+{
+    /// <summary>
+    /// 参数估计相关峰结果表
+    /// </summary>
+    [Table("CgXgfRes")]
+    public class CgXgfRes : BaseModel<long>
+    {
+        [Display(AutoGenerateField = false)]
+        public long CgResID { get; set; }
+
+        [Display(AutoGenerateField = false)]
+        public virtual CgRes CgRes { get; set; }
+
+        /// <summary>
+        /// 类型.主邻1相关峰=0,主邻2相关峰=1,超短相关峰=2
+        /// </summary>
+        public int CgType { get; set; }
+
+        /// <summary>
+        /// 信号时刻(北京)
+        /// </summary>
+        [Display(Name = "信号时刻(北京)",AutoGenerateField =false)]
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 时差(us)
+        /// </summary>
+        [Display(Name = "时差(us)")]
+        public double? Dto { get; set; }
+
+        /// <summary>
+        /// 频差 (Hz)
+        /// </summary>
+        [Display(Name = "频差 (Hz)")]
+        public double? Dfo { get; set; }
+
+        /// <summary>
+        /// 信噪比(dB)
+        /// </summary>
+        [Display(Name = "信噪比(dB)")]
+        public double? Snr { get; set; }
+
+
+       
+    }
+}

+ 1 - 0
XdCxRhDW.Repostory/XdCxRhDW.Repostory.csproj

@@ -64,6 +64,7 @@
     <Compile Include="BaseModel.cs" />
     <Compile Include="EFContext\RHDWContext.cs" />
     <Compile Include="EFContext\SqliteInterceptor.cs" />
+    <Compile Include="Model\CgXgfRes.cs" />
     <Compile Include="Model\CgRes.cs" />
     <Compile Include="Model\CxRes.cs" />
     <Compile Include="Model\ModelEnum.cs" />