| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using DevExpress.Xpo;
- using Ips.Library.Basic;
- using Ips.Library.Entity;
- using Ips.Sps.Ephs;
- using Ips.Sps.Mappers;
- using Ips.Sps.Scheduling.Entities;
- using Ips.Sps.TskResults.Pases;
- using Ips.Sps.TskResults.Peses;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Ips.Sps.Scheduling.SigProces
- {
- public class ProcSigUtil
- {
- public static List<Pes> SaveCorResult(CorResult[] corResults, RunTsk tsk, RunSig sig, Pas mainPas, Pas adjaPas, EphResult mainEph, EphResult adjaEph, CancellationToken token)
- {
- if (corResults.IsNullOrEmpty()) return new List<Pes>();
- using var uow = new UnitOfWork();
- List<Pes> pesList = new List<Pes>();
- foreach (var corResult in corResults)
- {
- Pes pes = CreatePes(uow, tsk, sig, mainPas, adjaPas, corResult, mainEph, adjaEph, token);
- pesList.Add(pes);
- }
- uow.CommitChanges();
- return pesList;
- }
- public static Pes CreatePes(Session session, RunTsk tsk, RunSig sig, Pas mainPas, Pas adjaPas, CorResult corResult, EphResult mainEph, EphResult adjaEph, CancellationToken token)
- {
- var pes = new Pes(session);
- var scd = mainPas ?? adjaPas;
- pes.TskId = tsk.TskId;
- pes.SigId = sig.SigId;
- pes.EmtId = sig.EmtId;
- pes.SigTime = adjaPas.SigTime.AddSeconds(corResult.Start * 1.0d / scd.Fs);
- pes.SigFreq = sig.SigFreq;
- pes.BandWidth = sig.BandWidth;
- pes.CreateTime = DateTime.Now;
- pes.Category = sig.SigCategory;
- pes.SigType = sig.SigType;
- pes.SigLon = sig.SigLon;
- pes.SigLat = sig.SigLat;
- pes.SigAlt = sig.SigAlt;
- pes.LonMin = sig.SigLon - sig.LonRange / 2;
- pes.LonMax = sig.SigLon + sig.LonRange / 2;
- pes.LatMin = sig.SigLat - sig.LatRange / 2;
- pes.LatMax = sig.SigLat + sig.LatRange / 2;
- if (mainPas != null)
- {
- pes.MainSatId = mainPas.SatId;
- pes.MainSatNum = mainPas.SatNum;
- pes.MainAntId = mainPas.AntId;
- pes.MainAntLon = mainPas.AntLon;
- pes.MainAntLat = mainPas.AntLat;
- pes.MainAntAlt = mainPas.AntAlt;
- if (mainPas.SigTime.ClearMillisecond() != pes.SigTime.ClearMillisecond())
- {
- mainEph = EphManager.Default.GetEph(mainPas.SatNum, pes.SigTime, token);
- }
- }
- if (mainEph != null)
- {
- pes.MainEphX = mainEph.X;
- pes.MainEphY = mainEph.Y;
- pes.MainEphZ = mainEph.Z;
- pes.MainEphVx = mainEph.Vx;
- pes.MainEphVy = mainEph.Vy;
- pes.MainEphVz = mainEph.Vz;
- }
- if (adjaPas != null)
- {
- pes.AdjaSatId = adjaPas.SatId;
- pes.AdjaSatNum = adjaPas.SatNum;
- pes.AdjaAntId = adjaPas.AntId;
- pes.AdjaAntLon = adjaPas.AntLon;
- pes.AdjaAntLat = adjaPas.AntLat;
- pes.AdjaAntAlt = adjaPas.AntAlt;
- if (adjaPas.SigTime.ClearMillisecond() != pes.SigTime.ClearMillisecond())
- {
- adjaEph = EphManager.Default.GetEph(adjaPas.SatNum, pes.SigTime, token);
- }
- }
- if (adjaEph != null)
- {
- pes.AdjaEphX = adjaEph.X;
- pes.AdjaEphY = adjaEph.Y;
- pes.AdjaEphZ = adjaEph.Z;
- pes.AdjaEphVx = adjaEph.Vx;
- pes.AdjaEphVy = adjaEph.Vy;
- pes.AdjaEphVz = adjaEph.Vz;
- }
- if (corResult != null)
- {
- pes.StartPos = corResult.Start;
- pes.Length = corResult.Length;
- pes.Dt = corResult.Dto;
- pes.Df = corResult.Dfo;
- pes.Snr = corResult.Snr;
- pes.IsValid = corResult.IsValid;
- }
- pes.Save();
- using var uow = new UnitOfWork();
- corResult.XgfList.ForEach(m =>
- {
- PesXgf xgf = new PesXgf(uow);
- xgf.PesId = pes.Id;
- xgf.Dt = m.Dto;
- xgf.Df = m.Dfo;
- xgf.Snr = m.Snr;
- });
- if (pes.Category == SignalCategory.RefSig)
- {
- //PesRef pesRef = new PesRef(uow);
- //SpsMapper.Default.Map(pes, pesRef);
- }
- uow.CommitChanges();
- return pes;
- }
- }
- }
|