Browse Source

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

zoulei 1 year ago
parent
commit
a5f62faa29

+ 0 - 1
XdCxRhDW.App/Api/PosApi.cs

@@ -196,7 +196,6 @@ namespace XdCxRhDW.App.Api
             return res;
         }
 
-
         /// <summary>
         /// 三星双时差带参,返回经度纬度高度及镜像点,数组长度为6
         /// </summary>

+ 6 - 3
XdCxRhDW.App/Api/频差线/DfoLineModel.cs

@@ -17,6 +17,9 @@ namespace XdCxRhDW.App.Api
         /// </summary>
         public double Lat { get; set; }
     }
+    /// <summary>
+    /// 高轨双星频差参数
+    /// </summary>
     public class DfoLineTwoStartOption
     {
         /// <summary>
@@ -24,12 +27,12 @@ namespace XdCxRhDW.App.Api
         /// </summary>
         public double Freq { get; set; }
         /// <summary>
-        /// 主星接收站
+        /// 主星接收站 2
         /// </summary>
         public double[] MsAnt { get; set; }
 
         /// <summary>
-        /// 邻星接收站
+        /// 邻星接收站 2
         /// </summary>
         public double[] NsAnt { get; set; }
 
@@ -44,7 +47,7 @@ namespace XdCxRhDW.App.Api
         public double[] NsEph { get; set; }
 
         /// <summary>
-        /// 参考站位置
+        /// 参考站位置 2
         /// </summary>
         public double[] RefGeod { get; set; }
 

+ 5 - 5
XdCxRhDW.App/Api/频差线/DrawDfoLineHelper.cs

@@ -14,12 +14,12 @@ namespace XdCxRhDW.App.Api
         private const string exeName = "locow.exe";
         private static double[] zone = new double[] { -85, 85, -180, 180 }; //定位区域
         /// <summary>
-        /// 高轨双星差线
+        /// 高轨双星差线
         /// </summary>
         /// <param name="opt"></param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public static IEnumerable<(double lon, double lat)> DtfoLineTwoStart(DfoLineTwoStartOption opt)
+        public static IEnumerable<(double lon, double lat)> DfoLineTwoStart(DfoLineTwoStartOption opt)
         {
             List<DfoLinePoint> list = new List<DfoLinePoint>();
 
@@ -34,7 +34,7 @@ namespace XdCxRhDW.App.Api
             List<string> arguments = new List<string>();
             arguments.Add("dfoline");
             arguments.Add($"{opt.TargetDfo}");
-            arguments.Add($"{opt.Freq*1e6}");
+            arguments.Add($"{opt.Freq * 1e6}");
             arguments.Add($"{opt.Turn1 * 1e6}");
             arguments.Add($"{opt.Turn2 * 1e6}");
             arguments.Add($"--rec1 {opt.MsAnt[0]} {opt.MsAnt[1]} 0");
@@ -43,7 +43,7 @@ namespace XdCxRhDW.App.Api
             arguments.Add($"--eph1 {opt.MsEph[0]} {opt.MsEph[1]} {opt.MsEph[2]} {opt.MsEph[3]} {opt.MsEph[4]} {opt.MsEph[5]}");
             arguments.Add($"--eph1 {opt.NsEph[0]} {opt.NsEph[1]} {opt.NsEph[2]} {opt.NsEph[3]} {opt.NsEph[4]} {opt.NsEph[5]}");
             arguments.Add($"--refdf {opt.RefDfo}");
-            arguments.Add($"--reffreq {opt.RefFreq}");
+            arguments.Add($"--reffreq {opt.RefFreq * 1e6}");
 
             arguments.Add($"--reflla {opt.RefGeod[0]} {opt.RefGeod[0]} 0");
             Process p = new Process();
@@ -63,7 +63,7 @@ namespace XdCxRhDW.App.Api
             string result = p.StandardOutput.ReadToEnd();
             if (string.IsNullOrWhiteSpace(result))
             {
-                throw new Exception("计算差线出现未知错误!");
+                throw new Exception("计算差线出现未知错误!");
             }
             var array = result.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
             if (array[0] == "1")

+ 4 - 8
XdCxRhDW.App/EditForms/TaskEditor.Designer.cs

@@ -74,24 +74,20 @@
             // 
             // txtTaskName
             // 
-            this.txtTaskName.Location = new System.Drawing.Point(22, 39);
+            this.txtTaskName.Location = new System.Drawing.Point(22, 40);
             this.txtTaskName.Name = "txtTaskName";
             this.txtTaskName.Properties.AutoHeight = false;
-            this.txtTaskName.Size = new System.Drawing.Size(393, 25);
+            this.txtTaskName.Size = new System.Drawing.Size(393, 24);
             this.txtTaskName.StyleController = this.layoutControl1;
             this.txtTaskName.TabIndex = 4;
             // 
             // txtPosType
             // 
             this.txtPosType.EditValue = 0;
-            this.txtPosType.Location = new System.Drawing.Point(22, 93);
+            this.txtPosType.Location = new System.Drawing.Point(22, 94);
             this.txtPosType.Name = "txtPosType";
             this.txtPosType.Properties.Columns = 1;
-            this.txtPosType.Properties.Items.AddRange(new DevExpress.XtraEditors.Controls.RadioGroupItem[] {
-            new DevExpress.XtraEditors.Controls.RadioGroupItem(0, "一星一地测向定位"),
-            new DevExpress.XtraEditors.Controls.RadioGroupItem(1, "两星一地定位"),
-            new DevExpress.XtraEditors.Controls.RadioGroupItem(2, "融合定位")});
-            this.txtPosType.Size = new System.Drawing.Size(393, 171);
+            this.txtPosType.Size = new System.Drawing.Size(393, 170);
             this.txtPosType.StyleController = this.layoutControl1;
             this.txtPosType.TabIndex = 5;
             // 

+ 12 - 0
XdCxRhDW.App/EditForms/TaskEditor.cs

@@ -1,11 +1,15 @@
 using DevExpress.Utils.About;
 using DevExpress.XtraEditors;
+using DevExpress.XtraEditors.Controls;
+using DxHelper;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
 using System.Data;
 using System.Drawing;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
 using System.Windows.Forms;
@@ -22,6 +26,14 @@ namespace XdCxRhDW.App.EditForms
             this.Text = "添加任务";
             info = new TaskInfo();
             this.StartPosition = FormStartPosition.CenterParent;
+            //加载DW类型
+            List<RadioGroupItem> radioGroups = new List<RadioGroupItem>();
+            var values = Enum.GetValues(typeof(EnumPosType));
+            foreach (var item in values)
+            {
+                radioGroups.Add(new RadioGroupItem(Convert.ToInt32(item), ((EnumPosType)item).GetEnumDisplayName()));
+            }
+            this.txtPosType.Properties.Items.AddRange(radioGroups.ToArray());
         }
         public TaskEditor(TaskInfo info)
            : this()

+ 8 - 1
XdCxRhDW.App/Model/ModelEnum.cs

@@ -21,13 +21,20 @@ namespace XdCxRhDW.App.Model
         [Display(Name = "一星一地测向定位")]
         X1D1CX,
 
-
         [Display(Name = "两星一地定位")]
         X2D1,
 
         [Display(Name = "融合定位")]
         RH,
 
+        [Display(Name = "三星双时差定位")]
+        X3TwoDto,
+
+        [Display(Name = "三星双频差定位")]
+        X3TwoDfo,
+
+        [Display(Name = "双星时频差定位")]
+        X2Dfo,
     }
 
     public enum EnumTxType

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

@@ -32,11 +32,11 @@ namespace XdCxRhDW.App.UserControl
             try
             {
                 gridCg.Init().UseSort().UseFilter().UseMultiSelect().UseRowNumber();
-                gridView1.Columns["SigTime"].SortOrder = ColumnSortOrder.Descending;
                 using (RHDWContext db = new RHDWContext())
                 {
                     gridCg.DataSource = await db.CgRes.OrderByDescending(p => p.SigTime).ToListAsync();
                 }
+                gridView1.Columns["SigTime"].SortOrder = ColumnSortOrder.Descending;
             }
             catch (Exception ex)
             {

+ 162 - 80
XdCxRhDW.App/UserControl/CtrlHome.cs

@@ -26,7 +26,6 @@ using XdCxRhDW.App.EFContext;
 using XdCxRhDW.App.Model;
 using System.Windows.Documents;
 using XdCxRhDW.App.ObServer;
-
 namespace XdCxRhDW.App.UserControl
 {
     public partial class CtrlHome : DevExpress.XtraEditors.XtraUserControl
@@ -237,8 +236,6 @@ namespace XdCxRhDW.App.UserControl
             WaitHelper.CloseForm();
         }
 
-
-
         private void GridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
         {
             if (e.Column.FieldName == "TaskName" && (EnumTaskState)gridView1.GetRowCellValue(e.RowHandle, "TaskState") == EnumTaskState.Running)
@@ -304,13 +301,34 @@ namespace XdCxRhDW.App.UserControl
             switch (posRes.Item2)
             {
                 case EnumPosType.X1D1CX:
-                    btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    //一星一地 测向线
+                    btnDrawDto.Visibility = btnDrawDfo.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    btnDrawCX.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
                     break;
                 case EnumPosType.X2D1:
-                    btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    //两星一地 GDOP 时差线
+                    btnDrawDto.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    btnDrawCX.Visibility = btnDrawDfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                     break;
                 case EnumPosType.RH:
-                    btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    //融合DW GDOP 时差线 测向线
+                    btnDrawDto.Visibility = btnDrawCX.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    btnDrawDfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    break;
+                case EnumPosType.X3TwoDto:
+                    //三星双时差DW GDOP 时差线 
+                    btnDrawDto.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    btnDrawCX.Visibility = btnDrawDfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    break;
+                case EnumPosType.X3TwoDfo:
+                    //三星双频差DW GDOP 频差线 
+                    btnDrawDfo.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    btnDrawDto.Visibility = btnDrawCX.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
+                    break;
+                case EnumPosType.X2Dfo:
+                    //双星时频差DW GDOP 时频差线 
+                    btnDrawDto.Visibility = btnDrawDfo.Visibility = btnGDOP.Visibility = DevExpress.XtraBars.BarItemVisibility.Always;
+                    btnDrawCX.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
                     break;
                 default:
                     break;
@@ -629,10 +647,10 @@ namespace XdCxRhDW.App.UserControl
             var posRes = info.Item1;
             if (posRes == null) return;
             var posType = info.Item2;
-            DrawGDOP(posRes.SigTime, posType);
+            DrawGDOP(posRes, posType);
         }
 
-        private void DrawGDOP(DateTime sigTime, EnumPosType posType)
+        private void DrawGDOP(PosRes item, EnumPosType posType)
         {
             try
             {
@@ -645,7 +663,7 @@ namespace XdCxRhDW.App.UserControl
                         break;
                     case EnumPosType.X2D1:
                     case EnumPosType.RH:
-                        X2D1GDOPParam x2D1GdopParam = new X2D1GDOPParam(sigTime);
+                        X2D1GDOPParam x2D1GdopParam = new X2D1GDOPParam(item);
                         x2D1GdopParam.mapControl1 = mapControl1;
                         DxHelper.PopupHelper.ShowPopup(x2D1GdopParam, mapControl1, mapControl1.Width / 4);
                         break;
@@ -678,6 +696,11 @@ namespace XdCxRhDW.App.UserControl
                     DrawXDtoLine(item, EnumPosType.X1D1CX);
                     DrawXDtoLine(item, EnumPosType.X2D1);
                     break;
+                case EnumPosType.X3TwoDto:
+                case EnumPosType.X2Dfo:
+                    DrawX3toLine(item, posType);
+                    break;
+
                 default:
                     break;
             }
@@ -688,72 +711,133 @@ namespace XdCxRhDW.App.UserControl
         {
             try
             {
-                List<TxInfo> listTx = new List<TxInfo>();
+                StationRes station;
                 List<SatInfo> listSat = new List<SatInfo>();
                 CgRes cg;
                 using (RHDWContext db = new RHDWContext())
                 {
-                    listTx = db.TxInfos.ToList();
+
                     listSat = db.SatInfos.ToList();
                     cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
-
+                    station = await db.StationRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
                 }
                 if (cg == null)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的计算[{item.CgResID}]信息");
                     return;
                 }
-
-                var satTx = listTx.Find(p => p.TxType == EnumTxType.MainSat);
-                if (satTx == null)
+                if (station == null)
                 {
-                    DxHelper.MsgBoxHelper.ShowWarning($"主星天线信息为空!");
+                    DxHelper.MsgBoxHelper.ShowWarning($"站点信息为空!");
                     return;
                 }
-                var satNTx = listTx.Find(p => p.TxType == EnumTxType.AdjaSat);
-                if (posType == EnumPosType.X2D1 && satNTx == null)
+                if (station.SatTxLon == 0 || station.SatTxLat == 0)
                 {
-                    DxHelper.MsgBoxHelper.ShowWarning($"邻星天线信息为空!");
+                    DxHelper.MsgBoxHelper.ShowWarning($"天线信息为空!");
                     return;
                 }
-                var cdbTx = listTx.Find(p => p.TxType == EnumTxType.Cdb);
-                if (cdbTx == null)
+               
+                if (station.CdbTxLon == 0 || station.CdbTxLat == 0)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"超短波信息为空!");
                     return;
                 }
-                var refTx = listTx.Find(p => p.TxType == EnumTxType.Ref);
-                if (refTx == null)
+                if (station.RefLon == 0 || station.RefLat == 0)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"参考站信息为空!");
                     return;
                 }
                 DtoLineXdOption dtoLineXd = new DtoLineXdOption();
                 dtoLineXd.MsEph = new double[] { cg.MainX.Value, cg.MainY.Value, cg.MainZ.Value, 0, 0, 0 };
-                dtoLineXd.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
-                dtoLineXd.CDBAnt = new double[] { cdbTx.Lon, cdbTx.Lat, 0 };
-                dtoLineXd.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
+                dtoLineXd.MsAnt = new double[] { station.SatTxLon, station.SatTxLat, 0 };
+                dtoLineXd.CDBAnt = new double[] { station.CdbTxLon, station.CdbTxLat, 0 };
+                dtoLineXd.RefGeod = new double[] { station.RefLon, station.RefLat, 0 };
                 dtoLineXd.xdDto = cg.DtoCdb.Value;
                 dtoLineXd.RefDto = cg.YbMainDto.Value;
                 dtoLineXd.PosLon = item.PosLon;
                 dtoLineXd.PosLat = item.PosLat;
+
+                var msat = listSat.FirstOrDefault(m => m.SatCode == cg.MainCode.Value)?.Sat;
                 var xdDtoLine = DrawDtoLineHelper.DtoLineXd(dtoLineXd);
-                mapControl1.DrawDtoPonit($"星地[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == cdbTx.ID)?.Sat}]时差线", xdDtoLine);
+                mapControl1.DrawDtoPonit($"星地[{msat},[{station.CdbTxLon}°]]时差线", xdDtoLine);
 
                 if (posType == EnumPosType.X2D1)
                 {
                     DtoLineTwoStartOption twoStartOption = new DtoLineTwoStartOption();
                     twoStartOption.MsEph = new double[] { cg.MainX.Value, cg.MainY.Value, cg.MainZ.Value, 0, 0, 0 };
                     twoStartOption.NsEph = new double[] { cg.Adja1X.Value, cg.Adja1Y.Value, cg.Adja1Z.Value, 0, 0, 0 };
-                    twoStartOption.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
-                    twoStartOption.NsAnt = new double[] { satNTx.Lon, satNTx.Lat, 0 };
-                    twoStartOption.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
+                    twoStartOption.MsAnt = new double[] { station.SatTxLon, station.SatTxLat, 0 };
+                    twoStartOption.NsAnt = new double[] { station.SatTxLon, station.SatTxLat, 0 };
+                    twoStartOption.RefGeod = new double[] { station.RefLon, station.RefLat, 0 };
                     twoStartOption.TargetDto = cg.Dto1.Value;
                     twoStartOption.RefDto = cg.YbMainDto.Value - cg.YbAdja1Dto.Value;
                     twoStartOption.PosLon = item.PosLon;
                     twoStartOption.PosLat = item.PosLat;
                     var tsDtoLine = DrawDtoLineHelper.DtoLineXDTwoStart(twoStartOption);
-                    mapControl1.DrawDtoPonit($"双星[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == satNTx.ID)?.Sat}]时差线", tsDtoLine);
+                    mapControl1.DrawDtoPonit($"双星[{msat},{listSat.FirstOrDefault(m => m.SatCode == cg.Adja1Code.Value)?.Sat}]时差线", tsDtoLine);
+                }
+            }
+            catch (Exception ex)
+            {
+                Serilog.Log.Error($"绘制{posType.GetEnumDisplayName()}时差线失败", ex);
+                DxHelper.MsgBoxHelper.ShowWarning($"绘制{posType.GetEnumDisplayName()}时差线失败,失败信息:{ex.Message}");
+            }
+        }
+
+        private async void DrawX3toLine(PosRes item, EnumPosType posType)
+        {
+            try
+            {
+                StationRes station;
+                List<SatInfo> listSat = new List<SatInfo>();
+                CgRes cg;
+                using (RHDWContext db = new RHDWContext())
+                {
+
+                    listSat = db.SatInfos.ToList();
+                    cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
+                    station = await db.StationRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
+                }
+                if (cg == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的计算[{item.CgResID}]信息");
+                    return;
+                }
+                if (station == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"站点信息为空!");
+                    return;
+                }
+
+                if (station.RefLon == 0 || station.RefLat == 0)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"参考站信息为空!");
+                    return;
+                }
+
+                DtoLineTwoStartOption twoStartOption = new DtoLineTwoStartOption();
+                twoStartOption.MsEph = new double[] { cg.MainX.Value, cg.MainY.Value, cg.MainZ.Value, 0, 0, 0 };
+                twoStartOption.NsEph = new double[] { cg.Adja1X.Value, cg.Adja1Y.Value, cg.Adja1Z.Value, 0, 0, 0 };
+                twoStartOption.MsAnt = new double[] { station.SatTxLon, station.SatTxLat, 0 };
+                twoStartOption.NsAnt = new double[] { station.SatTxLon, station.SatTxLat, 0 };
+                twoStartOption.RefGeod = new double[] { station.RefLon, station.RefLat, 0 };
+                twoStartOption.TargetDto = cg.Dto1.Value;
+                twoStartOption.RefDto = cg.YbMainDto.Value - cg.YbAdja1Dto.Value;
+                twoStartOption.PosLon = item.PosLon;
+                twoStartOption.PosLat = item.PosLat;
+
+                var msat = listSat.FirstOrDefault(m => m.SatCode == cg.MainCode.Value)?.Sat;
+                var tsDtoLine = DrawDtoLineHelper.DtoLineXDTwoStart(twoStartOption);
+                mapControl1.DrawDtoPonit($"{posType.GetEnumDisplayName()}[{msat},{listSat.FirstOrDefault(m => m.SatCode == cg.Adja1Code.Value)?.Sat}]时差线", tsDtoLine);
+                if (posType == EnumPosType.X3TwoDto)
+                {
+                    twoStartOption.NsEph = new double[] { cg.Adja2X.Value, cg.Adja2Y.Value, cg.Adja2Z.Value, 0, 0, 0 };
+                    twoStartOption.TargetDto = cg.Dto2.Value;
+                    twoStartOption.RefDto = cg.YbMainDto.Value - cg.YbAdja2Dto.Value;
+                    twoStartOption.PosLon = item.PosLon;
+                    twoStartOption.PosLat = item.PosLat;
+                    var tsDtoLine1 = DrawDtoLineHelper.DtoLineXDTwoStart(twoStartOption);
+                    mapControl1.DrawDtoPonit($"{posType.GetEnumDisplayName()}[{msat},{listSat.FirstOrDefault(m => m.SatCode == cg.Adja2Code.Value)?.Sat}]时差线", tsDtoLine1);
                 }
             }
             catch (Exception ex)
@@ -764,81 +848,75 @@ namespace XdCxRhDW.App.UserControl
         }
         private void DrawDfoLine(PosRes item, EnumPosType posType)
         {
-            DxHelper.MsgBoxHelper.ShowWarning($"未实现绘制频差线!");
-            return;
             switch (posType)
             {
-                case EnumPosType.X1D1CX:
-                case EnumPosType.X2D1:
-                    DrawXDfoLine(item, posType);
-                    break;
-                case EnumPosType.RH:
-                    DrawXDfoLine(item, EnumPosType.X1D1CX);
-                    DrawXDfoLine(item, EnumPosType.X2D1);
+                case EnumPosType.X3TwoDfo:
+                case EnumPosType.X2Dfo:
+                    DrawX3DfoLine(item, posType);
                     break;
                 default:
                     break;
             }
 
         }
-        private async void DrawXDfoLine(PosRes item, EnumPosType posType)
+        private async void DrawX3DfoLine(PosRes item, EnumPosType posType)
         {
             try
             {
-                List<TxInfo> listTx = new List<TxInfo>();
+                StationRes station;
                 List<SatInfo> listSat = new List<SatInfo>();
                 CgRes cg;
                 using (RHDWContext db = new RHDWContext())
                 {
-                    listTx = db.TxInfos.ToList();
+
                     listSat = db.SatInfos.ToList();
                     cg = await db.CgRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
 
+                    station = await db.StationRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
                 }
                 if (cg == null)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的计算[{item.CgResID}]信息");
                     return;
                 }
-
-                var satTx = listTx.Find(p => p.TxType == EnumTxType.MainSat);
-                if (satTx == null)
-                {
-                    DxHelper.MsgBoxHelper.ShowWarning($"主星天线信息为空!");
-                    return;
-                }
-                var satNTx = listTx.Find(p => p.TxType == EnumTxType.AdjaSat);
-                if (posType == EnumPosType.X2D1 && satNTx == null)
+                if (station == null)
                 {
-                    DxHelper.MsgBoxHelper.ShowWarning($"邻星天线信息为空!");
+                    DxHelper.MsgBoxHelper.ShowWarning($"站点信息为空!");
                     return;
                 }
-                var cdbTx = listTx.Find(p => p.TxType == EnumTxType.Cdb);
-                if (cdbTx == null)
+                if (station.SatTxLon == 0 || station.SatTxLat == 0)
                 {
-                    DxHelper.MsgBoxHelper.ShowWarning($"超短波信息为空!");
+                    DxHelper.MsgBoxHelper.ShowWarning($"天线信息为空!");
                     return;
                 }
-                var refTx = listTx.Find(p => p.TxType == EnumTxType.Ref);
-                if (refTx == null)
+                if (station.RefLon == 0 || station.RefLat == 0)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"参考站信息为空!");
                     return;
                 }
-                if (posType == EnumPosType.X2D1)
-                {
-                    DfoLineTwoStartOption twoStartOption = new DfoLineTwoStartOption();
-                    twoStartOption.MsEph = new double[] { cg.MainX.Value, cg.MainY.Value, cg.MainZ.Value, 0, 0, 0 };
-                    twoStartOption.NsEph = new double[] { cg.Adja1X.Value, cg.Adja1Y.Value, cg.Adja1Z.Value, 0, 0, 0 };
-                    twoStartOption.MsAnt = new double[] { satTx.Lon, satTx.Lat, 0 };
-                    twoStartOption.NsAnt = new double[] { satNTx.Lon, satNTx.Lat, 0 };
-                    twoStartOption.RefGeod = new double[] { refTx.Lon, refTx.Lat, 0 };
-                    //twoStartOption.TargetDto = cg.DtoSx;
-                    //twoStartOption.RefDto = cg.YbMain - cg.YbAdja;
-                    //twoStartOption.PosLon = item.PosLon;
-                    //twoStartOption.PosLat = item.PosLat;
-                    var tsDtoLine = DrawDfoLineHelper.DtfoLineTwoStart(twoStartOption);
-                    mapControl1.DrawDtoPonit($"双星[{listSat.FirstOrDefault(m => m.ID == satTx.ID)?.Sat},{listSat.FirstOrDefault(m => m.ID == satNTx.ID)?.Sat}]时差线", tsDtoLine);
+                DfoLineTwoStartOption twoStartOption = new DfoLineTwoStartOption();
+                twoStartOption.Freq = cg.TarFreqUp.HasValue ? cg.TarFreqUp.Value : 0;
+                twoStartOption.RefFreq = cg.RefFreqUp.HasValue ? cg.RefFreqUp.Value : 0;
+                twoStartOption.MsEph = new double[] { cg.MainX.Value, cg.MainY.Value, cg.MainZ.Value, cg.MainVx.Value, cg.MainVy.Value, cg.MainVz.Value };
+                twoStartOption.NsEph = new double[] { cg.Adja1X.Value, cg.Adja1Y.Value, cg.Adja1Z.Value, cg.Adja1Vx.Value, cg.Adja1Vy.Value, cg.Adja1Vz.Value };
+                twoStartOption.MsAnt = new double[] { station.SatTxLon, station.SatTxLat, 0 };
+                twoStartOption.NsAnt = new double[] { station.SatTxLon, station.SatTxLat, 0 };
+                twoStartOption.RefGeod = new double[] { station.RefLon, station.RefLat, 0 };
+                twoStartOption.TargetDfo = cg.Dfo1.Value;
+                twoStartOption.Turn1 = Math.Abs(twoStartOption.Freq - (cg.TarFreqDown.HasValue ? cg.TarFreqDown.Value : 0));
+                twoStartOption.Turn2 = Math.Abs(twoStartOption.RefFreq - (cg.RefFreqDown.HasValue ? cg.RefFreqDown.Value : 0));
+                twoStartOption.RefDfo = cg.YbMainDfo.Value - cg.YbAdja1Dfo.Value;
+                var msat = listSat.FirstOrDefault(m => m.SatCode == cg.MainCode.Value)?.Sat;
+                var tsDtoLine = DrawDfoLineHelper.DfoLineTwoStart(twoStartOption);
+                mapControl1.DrawDtoPonit($"{posType.GetEnumDisplayName()}[{msat},{listSat.FirstOrDefault(m => m.SatCode == cg.Adja1X.Value)?.Sat}]频差线", tsDtoLine);
+
+                if (posType == EnumPosType.X3TwoDfo)
+                {
+                    twoStartOption.NsEph = new double[] { cg.Adja2X.Value, cg.Adja2Y.Value, cg.Adja2Z.Value, cg.Adja2Vx.Value, cg.Adja2Vy.Value, cg.Adja2Vz.Value };
+                    twoStartOption.TargetDfo = cg.Dfo2.Value;
+                    twoStartOption.RefDfo = cg.YbMainDfo.Value - cg.YbAdja2Dfo.Value;
+                    var tsDtoLine1 = DrawDfoLineHelper.DfoLineTwoStart(twoStartOption);
+                    mapControl1.DrawDtoPonit($"{posType.GetEnumDisplayName()}[{msat},{listSat.FirstOrDefault(m => m.SatCode == cg.Adja2Code.Value)?.Sat}]频差线", tsDtoLine1);
                 }
             }
             catch (Exception ex)
@@ -856,21 +934,25 @@ namespace XdCxRhDW.App.UserControl
             }
             try
             {
-                List<TxInfo> listTx = new List<TxInfo>();
                 CxRes cx;
+                StationRes station;
                 using (RHDWContext db = new RHDWContext())
                 {
-                    listTx = db.TxInfos.ToList();
                     cx = await db.CxRes.Where(m => m.ID == item.CxResID.Value).FirstOrDefaultAsync();
-
+                    station = await db.StationRes.Where(m => m.ID == item.CgResID).FirstOrDefaultAsync();
                 }
                 if (cx == null)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"未找到定位相关的测向[{item.CxResID.Value}]信息");
                     return;
                 }
-                var satTx = listTx.Find(p => p.TxType == EnumTxType.Cx);
-                if (satTx == null)
+                if (station == null)
+                {
+                    DxHelper.MsgBoxHelper.ShowWarning($"站点信息为空!");
+                    return;
+                }
+               
+                if (station.CxLon== 0 || station.CxLat == 0)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"测向站信息为空!");
                     return;
@@ -878,10 +960,10 @@ namespace XdCxRhDW.App.UserControl
                 double startdeg = 360;
                 double deg = startdeg - cx.Fx;//向北顺时针方向为夹角
                 //计算测向站到定位点之间的距离
-                var km = MapControlEx.CalcLineKm(satTx.Lon, satTx.Lat, item.PosLon, item.PosLat);
-                var endpoint = MapControlEx.CalcSituation(satTx.Lon, satTx.Lat, deg, (km + 100) * 1000);
+                var km = MapControlEx.CalcLineKm(station.CxLon, station.CxLat, item.PosLon, item.PosLat);
+                var endpoint = MapControlEx.CalcSituation(station.CxLon, station.CxLat, deg, (km + 100) * 1000);
                 List<(double, double)> points = new List<(double, double)>();
-                points.Add((satTx.Lon, satTx.Lat));
+                points.Add((station.CxLon, station.CxLat));
                 points.Add((endpoint.Item1, endpoint.Item2));
                 mapControl1.DrawCXLine($"测向线角度:{cx.Fx}°\t\n", points);
             }

+ 11 - 21
XdCxRhDW.App/UserControl/GDOPParam.cs

@@ -24,7 +24,7 @@ namespace XdCxRhDW.App.UserControl
             DtousErr = Convert.ToDouble(txtDtousErr1.Text),
             SatLocErr = Convert.ToDouble(txtSatLocErr1.Text),
         };
-        public GDOPParam(DateTime sigTime)
+        public GDOPParam(PosRes item)
         {
             InitializeComponent();
             txtCapTime.UseDefault();
@@ -32,7 +32,7 @@ namespace XdCxRhDW.App.UserControl
             txtTleAdja.UseDoubleClickToSelectAll();
             txtStationLocation1.UseDoubleClickToSelectAll();
             txtRefLocation1.UseDoubleClickToSelectAll();
-            this.txtCapTime.DateTime = sigTime;
+            this.txtCapTime.DateTime = item.SigTime;
             this.txtDtousErr1.EditValue = 1;
             this.txtSatLocErr1.EditValue = 1000;
             List<string> xlall = new List<string>();
@@ -41,44 +41,34 @@ namespace XdCxRhDW.App.UserControl
             using (RHDWContext db = new RHDWContext())
             {
                 var sats = db.SatInfos.ToList();
-
-                var list = db.TxInfos.ToList();
-                var mainTx = list.Find(p => p.TxType == EnumTxType.MainSat);
-                var adjaTx = list.Find(p => p.TxType == EnumTxType.AdjaSat);
-                var cdbTx = list.Find(p => p.TxType == EnumTxType.Cdb);
-                if (cdbTx != null)
-                {
-                    this.txtStationLocation1.Text = $"{cdbTx.Lon},{cdbTx.Lat}";
-                }
-                var cxTx = list.Find(p => p.TxType == EnumTxType.Cx);
-                var refLoc = list.Find(p => p.TxType == EnumTxType.Ref);
-                if (refLoc != null)
+                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 = $"{refLoc.Lon},{refLoc.Lat}";
+                    this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
+                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
                 }
                 var xlList = db.XlInfos.OrderBy(p => p.SatName).OrderByDescending(p => p.TimeBJ).ToList();
                 xlall.AddRange(xlList.Select(m => m.TwoLine));
                 if (xlall.Count() == 0) return;
-                if (mainTx != null && xlList.Any(m => m.SatCode == mainTx.SatInfo.SatCode))
+                if (xlList.Any(m => m.SatCode == cg.MainCode.Value))
                 {
-                    mainTle = xlList.First(m => m.SatCode == mainTx.SatInfo.SatCode).TwoLine;
+                    mainTle = xlList.First(m => m.SatCode == cg.MainCode.Value).TwoLine;
                 }
                 else
                 {
                     mainTle = xlList.First().TwoLine;
                 }
 
-                if (adjaTx != null && xlList.Any(m => m.SatCode == adjaTx.SatInfo.SatCode))
+                if (xlList.Any(m => m.SatCode == cg.Adja1Code.Value))
                 {
-                    adjaTle = xlList.First(m => m.SatCode == adjaTx.SatInfo.SatCode).TwoLine;
+                    adjaTle = xlList.First(m => m.SatCode == cg.Adja1Code.Value).TwoLine;
                 }
                 else
                 {
                     adjaTle = xlList.First().TwoLine;
                 }
             }
-
-
             txtTleMain.UseDefault().SetStringData(xlall).Text = mainTle;
             txtTleAdja.UseDefault().SetStringData(xlall).Text = adjaTle;
         }

+ 10 - 24
XdCxRhDW.App/UserControl/X1D1GDOPParam.cs

@@ -23,14 +23,14 @@ namespace XdCxRhDW.App.UserControl
             DtousErr = Convert.ToDouble(txtDtousErr1.Text),
             SatLocErr = Convert.ToDouble(txtSatLocErr1.Text),
         };
-        public X1D1GDOPParam(DateTime sigTime)
+        public X1D1GDOPParam(PosRes item)
         {
             InitializeComponent();
             txtCapTime.UseDefault();
             txtTleMain.UseDoubleClickToSelectAll();
             txtStationLocation1.UseDoubleClickToSelectAll();
             txtRefLocation1.UseDoubleClickToSelectAll();
-            this.txtCapTime.DateTime = sigTime;
+            this.txtCapTime.DateTime = item.SigTime;
             this.txtDtousErr1.EditValue = 1;
             this.txtSatLocErr1.EditValue = 1000;
             List<string> xlall = new List<string>();
@@ -40,44 +40,30 @@ namespace XdCxRhDW.App.UserControl
             {
                 var sats = db.SatInfos.ToList();
 
-                var list = db.TxInfos.ToList();
-                var mainTx = list.Find(p => p.TxType == EnumTxType.MainSat);
-                var adjaTx = list.Find(p => p.TxType == EnumTxType.AdjaSat);
-                var cdbTx = list.Find(p => p.TxType == EnumTxType.Cdb);
-                if (cdbTx != null)
+                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 = $"{cdbTx.Lon},{cdbTx.Lat}";
-                }
-                var cxTx = list.Find(p => p.TxType == EnumTxType.Cx);
-                var refLoc = list.Find(p => p.TxType == EnumTxType.Ref);
-                if (refLoc != null)
-                {
-                    this.txtRefLocation1.Text = $"{refLoc.Lon},{refLoc.Lat}";
+                    this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
+                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
                 }
                 var xlList = db.XlInfos.OrderBy(p => p.SatName).OrderByDescending(p => p.TimeBJ).ToList();
                 xlall.AddRange(xlList.Select(m => m.TwoLine));
                 if (xlall.Count() == 0) return;
-                if (mainTx != null && xlList.Any(m => m.SatCode == mainTx.SatInfo.SatCode))
+                if (xlList.Any(m => m.SatCode == cg.MainCode.Value))
                 {
-                    mainTle = xlList.First(m => m.SatCode == mainTx.SatInfo.SatCode).TwoLine;
+                    mainTle = xlList.First(m => m.SatCode == cg.MainCode.Value).TwoLine;
                 }
                 else
                 {
                     mainTle = xlList.First().TwoLine;
                 }
 
-                if (adjaTx != null && xlList.Any(m => m.SatCode == adjaTx.SatInfo.SatCode))
-                {
-                    adjaTle = xlList.First(m => m.SatCode == adjaTx.SatInfo.SatCode).TwoLine;
-                }
-                else
-                {
-                    adjaTle = xlList.First().TwoLine;
-                }
             }
 
 
             txtTleMain.UseDefault().SetStringData(xlall).Text = mainTle;
+
         }
 
 

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

@@ -7,6 +7,7 @@ using XdCxRhDW.App.Model;
 using XdCxRhDW.App.EFContext;
 using XdCxRhDW.App.Api.GDOP误差椭圆;
 using System.Collections.Generic;
+using System.Data.Entity;
 namespace XdCxRhDW.App.UserControl
 {
     public partial class X2D1GDOPParam : DevExpress.XtraEditors.XtraUserControl
@@ -24,7 +25,7 @@ namespace XdCxRhDW.App.UserControl
             DtousErr = Convert.ToDouble(txtDtousErr1.Text),
             SatLocErr = Convert.ToDouble(txtSatLocErr1.Text),
         };
-        public X2D1GDOPParam(DateTime sigTime)
+        public X2D1GDOPParam(PosRes item)
         {
             InitializeComponent();
             txtCapTime.UseDefault();
@@ -32,7 +33,7 @@ namespace XdCxRhDW.App.UserControl
             txtTleAdja.UseDoubleClickToSelectAll();
             txtStationLocation1.UseDoubleClickToSelectAll();
             txtRefLocation1.UseDoubleClickToSelectAll();
-            this.txtCapTime.DateTime = sigTime;
+            this.txtCapTime.DateTime = item.SigTime;
             this.txtDtousErr1.EditValue = 1;
             this.txtSatLocErr1.EditValue = 1000;
             List<string> xlall = new List<string>();
@@ -42,35 +43,29 @@ namespace XdCxRhDW.App.UserControl
             {
                 var sats = db.SatInfos.ToList();
 
-                var list = db.TxInfos.ToList();
-                var mainTx = list.Find(p => p.TxType == EnumTxType.MainSat);
-                var adjaTx = list.Find(p => p.TxType == EnumTxType.AdjaSat);
-                var cdbTx = list.Find(p => p.TxType == EnumTxType.Cdb);
-                if (cdbTx != null)
+                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 = $"{cdbTx.Lon},{cdbTx.Lat}";
-                }
-                var cxTx = list.Find(p => p.TxType == EnumTxType.Cx);
-                var refLoc = list.Find(p => p.TxType == EnumTxType.Ref);
-                if (refLoc != null)
-                {
-                    this.txtRefLocation1.Text = $"{refLoc.Lon},{refLoc.Lat}";
+                    this.txtStationLocation1.Text = $"{station.CdbTxLon},{station.CdbTxLat}";
+                    this.txtRefLocation1.Text = $"{station.RefLon},{station.RefLat}";
                 }
+
                 var xlList = db.XlInfos.OrderBy(p => p.SatName).OrderByDescending(p => p.TimeBJ).ToList();
                 xlall.AddRange(xlList.Select(m => m.TwoLine));
                 if (xlall.Count() == 0) return;
-                if (mainTx != null && xlList.Any(m => m.SatCode == mainTx.SatInfo.SatCode))
+                if ( xlList.Any(m => m.SatCode == cg.MainCode.Value))
                 {
-                    mainTle = xlList.First(m => m.SatCode == mainTx.SatInfo.SatCode).TwoLine;
+                    mainTle = xlList.First(m => m.SatCode == cg.MainCode.Value).TwoLine;
                 }
                 else
                 {
                     mainTle = xlList.First().TwoLine;
                 }
 
-                if (adjaTx != null && xlList.Any(m => m.SatCode == adjaTx.SatInfo.SatCode))
+                if ( xlList.Any(m => m.SatCode == cg.Adja1Code.Value))
                 {
-                    adjaTle = xlList.First(m => m.SatCode == adjaTx.SatInfo.SatCode).TwoLine;
+                    adjaTle = xlList.First(m => m.SatCode == cg.Adja1Code.Value).TwoLine;
                 }
                 else
                 {

File diff suppressed because it is too large
+ 458 - 178
XdCxRhDW.App/WebAPI/Controllers/PosController.cs


+ 4 - 4
XdCxRhDw.Dto/PosDto/RHNoXlPosDto.cs

@@ -34,12 +34,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标双星频差(Hz)
         /// </summary>
-        public double SxDfo { get; set; }
+        public double? SxDfo { get; set; }
 
         /// <summary>
         /// 目标双星信噪比(dB)
         /// </summary>
-        public double SxSnr { get; set; }
+        public double? SxSnr { get; set; }
 
         /// <summary>
         /// 目标星地时差(us)
@@ -49,12 +49,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
         /// <summary>
         /// 参考样本主时差(us)

+ 6 - 6
XdCxRhDw.Dto/PosDto/RHPosDto.cs

@@ -24,12 +24,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标双星频差(Hz)
         /// </summary>
-        public double SxDfo { get; set; }
+        public double? SxDfo { get; set; }
 
         /// <summary>
         /// 目标双星信噪比(dB)
         /// </summary>
-        public double SxSnr { get; set; }
+        public double? SxSnr { get; set; }
 
         /// <summary>
         /// 目标星地时差(us)
@@ -39,20 +39,20 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
         /// <summary>
-        /// 参考样本主时差(us)
+        /// 样本主时差(us)
         /// </summary>
         public double MainYbDto { get; set; }
 
         /// <summary>
-        /// 参考样本邻时差(us)
+        /// 样本邻时差(us)
         /// </summary>
         public double AdjaYbDto { get; set; }
 

+ 3 - 3
XdCxRhDw.Dto/PosDto/X1D1NoXlPosDto.cs

@@ -29,15 +29,15 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
         /// <summary>
-        /// 参考样本主时差(us)
+        /// 样本主时差(us)
         /// </summary>
         public double MainYbDto { get; set; }
 

+ 3 - 3
XdCxRhDw.Dto/PosDto/X1D1PosDto.cs

@@ -23,15 +23,15 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
         /// <summary>
-        /// 参考样本主时差(us)
+        /// 样本主时差(us)
         /// </summary>
         public double MainYbDto { get; set; }
 

+ 4 - 4
XdCxRhDw.Dto/PosDto/X2D1NoParPosDto.cs

@@ -24,12 +24,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标双星频差(Hz)
         /// </summary>
-        public double SxDfo { get; set; }
+        public double? SxDfo { get; set; }
 
         /// <summary>
         /// 目标双星信噪比(dB)
         /// </summary>
-        public double SxSnr { get; set; }
+        public double? SxSnr { get; set; }
 
         /// <summary>
         /// 目标星地时差(us)
@@ -39,12 +39,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
         /// <summary>
         /// 目标名称(可空)

+ 4 - 4
XdCxRhDw.Dto/PosDto/X2D1NoXlNoParlPosDto.cs

@@ -34,12 +34,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标双星频差(Hz)
         /// </summary>
-        public double SxDfo { get; set; }
+        public double? SxDfo { get; set; }
 
         /// <summary>
         /// 目标双星信噪比(dB)
         /// </summary>
-        public double SxSnr { get; set; }
+        public double? SxSnr { get; set; }
 
         /// <summary>
         /// 目标星地时差(us)
@@ -49,12 +49,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
         /// <summary>
         /// 目标名称(可空)

+ 6 - 6
XdCxRhDw.Dto/PosDto/X2D1NoXlPosDto.cs

@@ -35,12 +35,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标双星频差(Hz)
         /// </summary>
-        public double SxDfo { get; set; }
+        public double? SxDfo { get; set; }
 
         /// <summary>
         /// 目标双星信噪比(dB)
         /// </summary>
-        public double SxSnr { get; set; }
+        public double? SxSnr { get; set; }
 
         /// <summary>
         /// 目标星地时差(us)
@@ -51,21 +51,21 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
 
         /// <summary>
-        /// 参考样本主时差(us)
+        ///样本主时差(us)
         /// </summary>
         public double MainYbDto { get; set; }
 
         /// <summary>
-        /// 参考样本邻时差(us)
+        /// 样本邻时差(us)
         /// </summary>
         public double AdjaYbDto { get; set; }
 

+ 6 - 6
XdCxRhDw.Dto/PosDto/X2D1PosDto.cs

@@ -24,12 +24,12 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标双星频差(Hz)
         /// </summary>
-        public double SxDfo { get; set; }
+        public double? SxDfo { get; set; }
 
         /// <summary>
         /// 目标双星信噪比(dB)
         /// </summary>
-        public double SxSnr { get; set; }
+        public double? SxSnr { get; set; }
 
         /// <summary>
         /// 目标星地时差(us)
@@ -39,20 +39,20 @@ namespace XdCxRhDw.Dto
         /// <summary>
         /// 目标星地频差(Hz)
         /// </summary>
-        public double XdDfo { get; set; }
+        public double? XdDfo { get; set; }
 
         /// <summary>
         /// 目标星地信噪比(dB)
         /// </summary>
-        public double XdSnr { get; set; }
+        public double? XdSnr { get; set; }
 
         /// <summary>
-        /// 参考样本主时差(us)
+        /// 样本主时差(us)
         /// </summary>
         public double MainYbDto { get; set; }
 
         /// <summary>
-        /// 参考样本邻时差(us)
+        /// 样本邻时差(us)
         /// </summary>
         public double AdjaYbDto { get; set; }
 

+ 92 - 0
XdCxRhDw.Dto/PosDto/X2DtoDfoNoXlPosDto.cs

@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    /// 双星时频差带参定位参数DTO(无星历)
+    /// </summary>
+    public class X2DtoDfoNoXlPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主星编号
+        /// </summary>
+        public int MainSatID { get; set; }
+
+        /// <summary>
+        /// 邻星编号
+        /// </summary>
+        public int AdjaSatID { get; set; }
+
+        /// <summary>
+        /// 主邻时差(us)
+        /// </summary>
+        public double Dto { get; set; }
+
+        /// <summary>
+        /// 主邻频差(Hz)
+        /// </summary>
+        public double Dfo { get; set; }
+
+        /// <summary>
+        /// 主邻信噪比(dB)
+        /// </summary>
+        public double? Snr { get; set; }
+
+        /// <summary>
+        /// 样本主星时差(us)
+        /// </summary>
+        public double YbMainDto { get; set; }
+
+        /// <summary>
+        /// 样本邻星时差(us)
+        /// </summary>
+        public double YbAdjaDto { get; set; }
+
+        /// <summary>
+        /// 目标上行频点(Hz)
+        /// </summary>
+        public double TarFreqUp { get; set; }
+
+        /// <summary>
+        /// 目标下行频点(Hz)
+        /// </summary>
+        public double TarFreqDown { get; set; }
+
+        /// <summary>
+        /// 参考上行频点(Hz)
+        /// </summary>
+        public double RefFreqUp { get; set; }
+
+        /// <summary>
+        /// 参考下行频点(Hz)
+        /// </summary>
+        public double RefFreqDown { get; set; }
+
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 142 - 0
XdCxRhDw.Dto/PosDto/X2DtoDfoPosDto.cs

@@ -0,0 +1,142 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    ///  双星时频差带参定位参数DTO(无星历)
+    /// </summary>
+    public class X2DtoDfoPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主邻1时差(us)
+        /// </summary>
+        public double Dto { get; set; }
+
+        /// <summary>
+        /// 主邻1频差(Hz)
+        /// </summary>
+        public double Dfo { get; set; }
+
+        /// <summary>
+        /// 主邻1信噪比(dB)
+        /// </summary>
+        public double? Snr { get; set; }
+
+        /// <summary>
+        /// 样本主星时差(us)
+        /// </summary>
+        public double YbMainDto { get; set; }
+
+        /// <summary>
+        /// 样本邻星1时差(us)
+        /// </summary>
+        public double YbAdjaDto { get; set; }
+
+        /// <summary>
+        /// 目标上行频点(Hz)
+        /// </summary>
+        public double TarFreqUp { get; set; }
+
+        /// <summary>
+        /// 目标下行频点(Hz)
+        /// </summary>
+        public double TarFreqDown { get; set; }
+
+        /// <summary>
+        /// 参考上行频点(Hz)
+        /// </summary>
+        public double RefFreqUp { get; set; }
+
+        /// <summary>
+        /// 参考下行频点(Hz)
+        /// </summary>
+        public double RefFreqDown { get; set; }
+
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        ///  主星X坐标
+        /// </summary>
+        public double MainX { get; set; }
+
+        /// <summary>
+        /// 主星Y坐标
+        /// </summary>
+        public double MainY { get; set; }
+
+        /// <summary>
+        /// 主星Z坐标
+        /// </summary>
+        public double MainZ { get; set; }
+
+        /// <summary>
+        /// 主星速度Vx(m/s)
+        /// </summary>
+        public double MainVx { get; set; }
+
+        /// <summary>
+        /// 主星速度Vy(m/s)
+        /// </summary>
+        public double MainVy { get; set; }
+
+        /// <summary>
+        /// 主星速度Vz(m/s)
+        /// </summary>
+        public double MainVz { get; set; }
+
+        /// <summary>
+        ///  邻星X坐标
+        /// </summary>
+        public double AdjaX { get; set; }
+
+        /// <summary>
+        ///  邻星Y坐标
+        /// </summary>
+        public double AdjaY { get; set; }
+
+        /// <summary>
+        ///  邻星Z坐标
+        /// </summary>
+        public double AdjaZ { get; set; }
+
+        /// <summary>
+        /// 邻星1速度Vx(m/s)
+        /// </summary>
+        public double AdjaVx { get; set; }
+
+        /// <summary>
+        /// 邻星1速度Vy(m/s)
+        /// </summary>
+        public double AdjaVy { get; set; }
+
+        /// <summary>
+        /// 邻星1速度Vz(m/s)
+        /// </summary>
+        public double AdjaVz { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 117 - 0
XdCxRhDw.Dto/PosDto/X3TwoDfoNoXlPosDto.cs

@@ -0,0 +1,117 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    /// 三星双频差带参定位参数DTO(无星历)
+    /// </summary>
+    public class X3TwoDfoNoXlPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主星编号
+        /// </summary>
+        public int MainSatID { get; set; }
+
+        /// <summary>
+        /// 邻星1编号
+        /// </summary>
+        public int Adja1SatID { get; set; }
+
+        /// <summary>
+        /// 邻星2编号
+        /// </summary>
+        public int Adja2SatID { get; set; }
+
+        /// <summary>
+        /// 主邻1时差(us)
+        /// </summary>
+        public double? Dto1 { get; set; }
+
+        /// <summary>
+        /// 主邻1频差(Hz)
+        /// </summary>
+        public double Dfo1 { get; set; }
+
+        /// <summary>
+        /// 主邻1信噪比(dB)
+        /// </summary>
+        public double? Snr1 { get; set; }
+
+        /// <summary>
+        /// 主邻2时差(us)
+        /// </summary>
+        public double? Dto2 { get; set; }
+
+        /// <summary>
+        /// 主邻2频差(Hz)
+        /// </summary>
+        public double Dfo2 { get; set; }
+
+        /// <summary>
+        /// 主邻2信噪比(dB)
+        /// </summary>
+        public double? Snr2 { get; set; }
+
+        /// <summary>
+        /// 样本主星时差(us)
+        /// </summary>
+        public double YbMainDto { get; set; }
+
+        /// <summary>
+        /// 样本邻星1时差(us)
+        /// </summary>
+        public double YbAdja1Dto { get; set; }
+
+        /// <summary>
+        /// 样本邻星2时差(us)
+        /// </summary>
+        public double YbAdja2Dto { get; set; }
+
+        /// <summary>
+        /// 目标上行频点(Hz)
+        /// </summary>
+        public double TarFreqUp { get; set; }
+
+        /// <summary>
+        /// 目标下行频点(Hz)
+        /// </summary>
+        public double TarFreqDown { get; set; }
+
+        /// <summary>
+        /// 参考上行频点(Hz)
+        /// </summary>
+        public double RefFreqUp { get; set; }
+
+        /// <summary>
+        /// 参考下行频点(Hz)
+        /// </summary>
+        public double RefFreqDown { get; set; }
+
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 192 - 0
XdCxRhDw.Dto/PosDto/X3TwoDfoPosDto.cs

@@ -0,0 +1,192 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    ///  三星双频差带参定位参数DTO(含星历)
+    /// </summary>
+    public class X3TwoDfoPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主邻1时差(us)
+        /// </summary>
+        public double? Dto1 { get; set; }
+
+        /// <summary>
+        /// 主邻1频差(Hz)
+        /// </summary>
+        public double Dfo1 { get; set; }
+
+        /// <summary>
+        /// 主邻1信噪比(dB)
+        /// </summary>
+        public double? Snr1 { get; set; }
+
+        /// <summary>
+        /// 主邻2时差(us)
+        /// </summary>
+        public double? Dto2 { get; set; }
+
+        /// <summary>
+        /// 主邻2频差(Hz)
+        /// </summary>
+        public double Dfo2 { get; set; }
+
+        /// <summary>
+        /// 主邻2信噪比(dB)
+        /// </summary>
+        public double? Snr2 { get; set; }
+
+        /// <summary>
+        /// 样本主星时差(us)
+        /// </summary>
+        public double YbMainDto { get; set; }
+
+        /// <summary>
+        /// 样本邻星1时差(us)
+        /// </summary>
+        public double YbAdja1Dto { get; set; }
+
+        /// <summary>
+        /// 样本邻星2时差(us)
+        /// </summary>
+        public double YbAdja2Dto { get; set; }
+
+        /// <summary>
+        /// 目标上行频点(Hz)
+        /// </summary>
+        public double TarFreqUp { get; set; }
+
+        /// <summary>
+        /// 目标下行频点(Hz)
+        /// </summary>
+        public double TarFreqDown { get; set; }
+
+        /// <summary>
+        /// 参考上行频点(Hz)
+        /// </summary>
+        public double RefFreqUp { get; set; }
+
+        /// <summary>
+        /// 参考下行频点(Hz)
+        /// </summary>
+        public double RefFreqDown { get; set; }
+
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        ///  主星X坐标
+        /// </summary>
+        public double MainX { get; set; }
+
+        /// <summary>
+        /// 主星Y坐标
+        /// </summary>
+        public double MainY { get; set; }
+
+        /// <summary>
+        /// 主星Z坐标
+        /// </summary>
+        public double MainZ { get; set; }
+
+        /// <summary>
+        /// 主星速度Vx(m/s)
+        /// </summary>
+        public double MainVx { get; set; }
+
+        /// <summary>
+        /// 主星速度Vy(m/s)
+        /// </summary>
+        public double MainVy { get; set; }
+
+        /// <summary>
+        /// 主星速度Vz(m/s)
+        /// </summary>
+        public double MainVz { get; set; }
+
+        /// <summary>
+        ///  邻星X坐标
+        /// </summary>
+        public double Adja1X { get; set; }
+
+        /// <summary>
+        ///  邻星Y坐标
+        /// </summary>
+        public double Adja1Y { get; set; }
+
+        /// <summary>
+        ///  邻星Z坐标
+        /// </summary>
+        public double Adja1Z { get; set; }
+
+        /// <summary>
+        /// 邻星1速度Vx(m/s)
+        /// </summary>
+        public double Adja1Vx { get; set; }
+
+        /// <summary>
+        /// 邻星1速度Vy(m/s)
+        /// </summary>
+        public double Adja1Vy { get; set; }
+
+        /// <summary>
+        /// 邻星1速度Vz(m/s)
+        /// </summary>
+        public double Adja1Vz { get; set; }
+
+        /// <summary>
+        ///  邻星X坐标
+        /// </summary>
+        public double Adja2X { get; set; }
+
+        /// <summary>
+        ///  邻星Y坐标
+        /// </summary>
+        public double Adja2Y { get; set; }
+
+        /// <summary>
+        ///  邻星Z坐标
+        /// </summary>
+        public double Adja2Z { get; set; }
+
+        /// <summary>
+        /// 邻星2速度Vx(m/s)
+        /// </summary>
+        public double Adja2Vx { get; set; }
+
+        /// <summary>
+        /// 邻星2速度Vy(m/s)
+        /// </summary>
+        public double Adja2Vy { get; set; }
+
+        /// <summary>
+        /// 邻星2速度Vz(m/s)
+        /// </summary>
+        public double Adja2Vz { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 127 - 0
XdCxRhDw.Dto/PosDto/X3TwoDtoNoParPosDto.cs

@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    /// 三星双时差无参定位参数DTO(含星历)
+    /// </summary>
+    public class X3TwoDtoNoParPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主星编号
+        /// </summary>
+        public int MainSatID { get; set; }
+
+        /// <summary>
+        /// 邻星1编号
+        /// </summary>
+        public int Adja1SatID { get; set; }
+
+        /// <summary>
+        /// 邻星2编号
+        /// </summary>
+        public int Adja2SatID { get; set; }
+
+        /// <summary>
+        /// 主邻1时差(us)
+        /// </summary>
+        public double Dto1 { get; set; }
+
+        /// <summary>
+        /// 主邻1频差(Hz)
+        /// </summary>
+        public double? Dfo1 { get; set; }
+
+        /// <summary>
+        /// 主邻1信噪比(dB)
+        /// </summary>
+        public double? Snr1 { get; set; }
+
+        /// <summary>
+        /// 主邻2时差(us)
+        /// </summary>
+        public double Dto2 { get; set; }
+
+        /// <summary>
+        /// 主邻2频差(Hz)
+        /// </summary>
+        public double? Dfo2 { get; set; }
+
+        /// <summary>
+        /// 主邻2信噪比(dB)
+        /// </summary>
+        public double? Snr2 { get; set; }
+
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        ///  主星X坐标
+        /// </summary>
+        public double MainX { get; set; }
+
+        /// <summary>
+        /// 主星Y坐标
+        /// </summary>
+        public double MainY { get; set; }
+
+        /// <summary>
+        /// 主星Z坐标
+        /// </summary>
+        public double MainZ { get; set; }
+
+        /// <summary>
+        ///  邻星X坐标
+        /// </summary>
+        public double Adja1X { get; set; }
+
+        /// <summary>
+        ///  邻星Y坐标
+        /// </summary>
+        public double Adja1Y { get; set; }
+
+        /// <summary>
+        ///  邻星Z坐标
+        /// </summary>
+        public double Adja1Z { get; set; }
+
+        /// <summary>
+        ///  邻星X坐标
+        /// </summary>
+        public double Adja2X { get; set; }
+
+        /// <summary>
+        ///  邻星Y坐标
+        /// </summary>
+        public double Adja2Y { get; set; }
+
+        /// <summary>
+        ///  邻星Z坐标
+        /// </summary>
+        public double Adja2Z { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 82 - 0
XdCxRhDw.Dto/PosDto/X3TwoDtoNoXlNoParPosDto.cs

@@ -0,0 +1,82 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    /// 三星双时差无参定位参数DTO(无星历)
+    /// </summary>
+    public class X3TwoDtoNoXlNoParPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主星编号
+        /// </summary>
+        public int MainSatID { get; set; }
+
+        /// <summary>
+        /// 邻星1编号
+        /// </summary>
+        public int Adja1SatID { get; set; }
+
+        /// <summary>
+        /// 邻星2编号
+        /// </summary>
+        public int Adja2SatID { get; set; }
+
+        /// <summary>
+        /// 主邻1时差(us)
+        /// </summary>
+        public double Dto1 { get; set; }
+
+        /// <summary>
+        /// 主邻1频差(Hz)
+        /// </summary>
+        public double? Dfo1 { get; set; }
+
+        /// <summary>
+        /// 主邻1信噪比(dB)
+        /// </summary>
+        public double? Snr1 { get; set; }
+
+        /// <summary>
+        /// 主邻2时差(us)
+        /// </summary>
+        public double Dto2 { get; set; }
+
+        /// <summary>
+        /// 主邻2频差(Hz)
+        /// </summary>
+        public double? Dfo2 { get; set; }
+
+        /// <summary>
+        /// 主邻2信噪比(dB)
+        /// </summary>
+        public double? Snr2 { get; set; }
+       
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 97 - 0
XdCxRhDw.Dto/PosDto/X3TwoDtoNoXlPosDto.cs

@@ -0,0 +1,97 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    /// 三星双时差带参定位参数DTO(无星历)
+    /// </summary>
+    public class X3TwoDtoNoXlPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主星编号
+        /// </summary>
+        public int MainSatID { get; set; }
+
+        /// <summary>
+        /// 邻星1编号
+        /// </summary>
+        public int Adja1SatID { get; set; }
+
+        /// <summary>
+        /// 邻星2编号
+        /// </summary>
+        public int Adja2SatID { get; set; }
+
+        /// <summary>
+        /// 主邻1时差(us)
+        /// </summary>
+        public double Dto1 { get; set; }
+
+        /// <summary>
+        /// 主邻1频差(Hz)
+        /// </summary>
+        public double? Dfo1 { get; set; }
+
+        /// <summary>
+        /// 主邻1信噪比(dB)
+        /// </summary>
+        public double? Snr1 { get; set; }
+
+        /// <summary>
+        /// 主邻2时差(us)
+        /// </summary>
+        public double Dto2 { get; set; }
+
+        /// <summary>
+        /// 主邻2频差(Hz)
+        /// </summary>
+        public double? Dfo2 { get; set; }
+
+        /// <summary>
+        /// 主邻2信噪比(dB)
+        /// </summary>
+        public double? Snr2 { get; set; }
+
+        /// <summary>
+        /// 样本主星时差(us)
+        /// </summary>
+        public double YbMainDto { get; set; }
+
+        /// <summary>
+        /// 样本邻星1时差(us)
+        /// </summary>
+        public double YbAdja1Dto { get; set; }
+
+        /// <summary>
+        /// 样本邻星2时差(us)
+        /// </summary>
+        public double YbAdja2Dto { get; set; }
+
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 127 - 0
XdCxRhDw.Dto/PosDto/X3TwoDtoPosDto.cs

@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace XdCxRhDw.Dto
+{
+    /// <summary>
+    /// 三星双时差带参定位参数DTO(含星历)
+    /// </summary>
+    public class X3TwoDtoPosDto
+    {
+        /// <summary>
+        /// 信号时刻(北京时间)
+        /// </summary>
+        public DateTime SigTime { get; set; }
+
+        /// <summary>
+        /// 主邻1时差(us)
+        /// </summary>
+        public double Dto1 { get; set; }
+
+        /// <summary>
+        /// 主邻1频差(Hz)
+        /// </summary>
+        public double? Dfo1 { get; set; }
+
+        /// <summary>
+        /// 主邻1信噪比(dB)
+        /// </summary>
+        public double? Snr1 { get; set; }
+
+        /// <summary>
+        /// 主邻2时差(us)
+        /// </summary>
+        public double Dto2 { get; set; }
+
+        /// <summary>
+        /// 主邻2频差(Hz)
+        /// </summary>
+        public double? Dfo2 { get; set; }
+
+        /// <summary>
+        /// 主邻2信噪比(dB)
+        /// </summary>
+        public double? Snr2 { get; set; }
+
+        /// <summary>
+        /// 样本主星时差(us)
+        /// </summary>
+        public double YbMainDto { get; set; }
+
+        /// <summary>
+        /// 样本邻星1时差(us)
+        /// </summary>
+        public double YbAdja1Dto { get; set; }
+
+        /// <summary>
+        /// 样本邻星2时差(us)
+        /// </summary>
+        public double YbAdja2Dto { get; set; }
+
+        /// <summary>
+        /// 目标名称(可空)
+        /// </summary>
+        public string TarName { get; set; }
+
+        /// <summary>
+        /// 时隙名称(可空)
+        /// </summary>
+        public string TsName { get; set; }
+
+        /// <summary>
+        ///  主星X坐标
+        /// </summary>
+        public double MainX { get; set; }
+
+        /// <summary>
+        /// 主星Y坐标
+        /// </summary>
+        public double MainY { get; set; }
+
+        /// <summary>
+        /// 主星Z坐标
+        /// </summary>
+        public double MainZ { get; set; }
+
+        /// <summary>
+        ///  邻星X坐标
+        /// </summary>
+        public double Adja1X { get; set; }
+
+        /// <summary>
+        ///  邻星Y坐标
+        /// </summary>
+        public double Adja1Y { get; set; }
+
+        /// <summary>
+        ///  邻星Z坐标
+        /// </summary>
+        public double Adja1Z { get; set; }
+
+        /// <summary>
+        ///  邻星X坐标
+        /// </summary>
+        public double Adja2X { get; set; }
+
+        /// <summary>
+        ///  邻星Y坐标
+        /// </summary>
+        public double Adja2Y { get; set; }
+
+        /// <summary>
+        ///  邻星Z坐标
+        /// </summary>
+        public double Adja2Z { get; set; }
+
+        /// <summary>
+        /// 站点信息
+        /// </summary>
+        public StationResDto StationResInfo { get; set; }
+
+    }
+        
+}

+ 8 - 0
XdCxRhDw.Dto/XdCxRhDw.Dto.csproj

@@ -60,6 +60,14 @@
     <Compile Include="PosDto\X1D1NoParPosDto.cs" />
     <Compile Include="PosDto\X2D1NoXlNoParlPosDto.cs" />
     <Compile Include="PosDto\X2D1NoParPosDto.cs" />
+    <Compile Include="PosDto\X2DtoDfoNoXlPosDto.cs" />
+    <Compile Include="PosDto\X2DtoDfoPosDto.cs" />
+    <Compile Include="PosDto\X3TwoDtoNoXlNoParPosDto.cs" />
+    <Compile Include="PosDto\X3TwoDtoNoParPosDto.cs" />
+    <Compile Include="PosDto\X3TwoDfoNoXlPosDto.cs" />
+    <Compile Include="PosDto\X3TwoDtoNoXlPosDto.cs" />
+    <Compile Include="PosDto\X3TwoDfoPosDto.cs" />
+    <Compile Include="PosDto\X3TwoDtoPosDto.cs" />
     <Compile Include="PosResQueryDto.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="SendDto.cs" />

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