using DevExpress.Xpo; using DevExpress.XtraEditors; using Ips.Library.Entity; using Ips.Sps.Ants; using Ips.Sps.Com.Gdops; using Ips.Sps.Emts; using Ips.Sps.Ephs; using Ips.Sps.Sats; using Ips.Sps.TskResults.Peses; using Ips.Sps.TskResults.Poses; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Ips.Sps.Tools { public partial class GdopAnalyseForm : DevExpress.XtraEditors.XtraForm { public GdopAnalyseForm() { InitializeComponent(); _session = new Session(); InitGdopCtrl(); } public GdopAnalyseForm(long? posId) : this() { if (posId.HasValue) { _posId = posId.Value; var vm = CreateViewModel(); gdopCtrl.SetViewModel(vm); } } GdopAnalyseCtrl gdopCtrl; GdopParamSetCtrl paramSetCtrl => gdopCtrl.ParamsCtrl; Session _session; long _posId; private void GdopAnalyseForm_Load(object sender, EventArgs e) { } private void InitGdopCtrl() { gdopCtrl = new GdopAnalyseCtrl(); gdopCtrl.Dock = DockStyle.Fill; this.Controls.Add(gdopCtrl); paramSetCtrl.AntList = _session.Query() .Select(m => new AntInfo(m.Oid, m.Name, m.Lon, m.Lat, m.Alt)).ToList(); paramSetCtrl.RefSiteList = _session.Query().Where(m => m.EmtType == EmtType.FixSation && m.Enable) .Select(m => new RefSiteInfo(m.Oid, m.Name, m.Lon, m.Lat, m.Alt)).ToList(); paramSetCtrl.SatList = _session.Query().Where(m => m.Enable).OrderBy(m => m.Lon) .Select(m => new SatInfo(m.SatNum, m.Name, m.Lon)).ToList(); paramSetCtrl.QueryEph += ParamSetCtrl_QueryEph; } private GdopAnalyseViewModel CreateViewModel() { if (_posId == 0) return null; var pos = _session.GetObjectByKey(_posId); if (pos == null) return null; var posRels = _session.Query().Where(m => m.PosId == _posId).ToList(); var pesIds = posRels.Select(m => m.PesId).Distinct().ToList(); var pesList = _session.Query().Where(m => pesIds.Contains(m.Id)).ToList(); var tarPesList = pesList.Where(m => m.Category != SignalCategory.RefSig).ToList(); var refPesList = pesList.Where(m => m.Category == SignalCategory.RefSig).ToList(); Pes pes1 = tarPesList.Count > 0 ? tarPesList[0] : null; Pes pes2 = tarPesList.Count > 1 ? tarPesList[1] : null; var pesRef = refPesList.FirstOrDefault(); GdopAnalyseViewModel _vm = new GdopAnalyseViewModel(); _vm.SigTime = pos.SigTime; _vm.HasRef = pos.HasRef; if (pes1 != null) { _vm.AntId = pes1.MainAntId; _vm.AntLon = pes1.MainAntLon; _vm.AntLat = pes1.MainAntLat; _vm.AntAlt = pes1.MainAntAlt; } if (pesRef != null) { _vm.RefId = pesRef.EmtId; _vm.RefLon = pesRef.SigLon; _vm.RefLat = pesRef.SigLat; _vm.RefAlt = pesRef.SigAlt; } if (pes1 != null) { _vm.MsId = pes1.MainSatNum; _vm.MsX = pes1.MainEphX; _vm.MsY = pes1.MainEphY; _vm.MsZ = pes1.MainEphZ; _vm.MsVx = pes1.MainEphVx; _vm.MsVy = pes1.MainEphVy; _vm.MsVz = pes1.MainEphVz; _vm.As1Id = pes1.AdjaSatNum; _vm.AsX1 = pes1.AdjaEphX; _vm.AsY1 = pes1.AdjaEphY; _vm.AsZ1 = pes1.AdjaEphZ; _vm.AsVx1 = pes1.AdjaEphVx; _vm.AsVy1 = pes1.AdjaEphVy; _vm.AsVz1 = pes1.AdjaEphVz; } if (pes2 != null) { _vm.As2Id = pes2.AdjaSatNum; _vm.AsX2 = pes2.AdjaEphX; _vm.AsY2 = pes2.AdjaEphY; _vm.AsZ2 = pes2.AdjaEphZ; _vm.AsVx2 = pes2.AdjaEphVx; _vm.AsVy2 = pes2.AdjaEphVy; _vm.AsVz2 = pes2.AdjaEphVz; } return _vm; } private void ParamSetCtrl_QueryEph(object sender, Com.Ephs.QueryEphEventArgs e) { e.Result = EphManager.Default.GetEph(e.SatNum, e.EphTime); } } }