using DevExpress.Mvvm; using DevExpress.Xpo; using DevExpress.Xpo.DB.Exceptions; using DevExpress.XtraBars; using DevExpress.XtraLayout.Utils; using Ips.Library.Basic; using Ips.Library.DxpLib; using Ips.Library.Entity; using Ips.Sps.Adcs; using Ips.Sps.Ants; using Ips.Sps.Emts; using Ips.Sps.Sats; using Ips.Sps.Tsks.Commands; using Ips.Sps.TskStrategys; using System.Data; namespace Ips.Sps.Tsks { public partial class TskEditForm : DevExpress.XtraEditors.XtraForm { public TskEditForm() { InitializeComponent(); _tskManager = TskManager.Default; _adcManager = AdcManager.Default; adjaSatsEdit.AdjaSatsChanged += SatText_EditValueChanged; } public TskEditForm(int? id, int stgId) : this() { this.Id = id; this.StrategyId = stgId; btnSaveOther.Visibility = id.HasValue ? BarItemVisibility.Always : BarItemVisibility.Never; } public int? Id { get; private set; } public int? StrategyId { get; private set; } private TskStrategy Strategy { get; set; } protected UnitOfWork uow { get; private set; } public Tsk EditModel { get => (Tsk)bsTsk.DataSource; } TskManager _tskManager; AdcManager _adcManager; List _allAntList; List _allEmtList; List _allSatList; private void TskEditForm_Load(object sender, EventArgs e) { uow = new UnitOfWork(); LoadResureList(); Strategy = uow.GetObjectByKey(StrategyId); Tsk tsk; if (Id.HasValue) { tsk = uow.GetObjectByKey(Id.Value); } else { tsk = new Tsk(uow) { Name = $"{Strategy.Name}-{DateTime.Now:yyyyMMddHHmmss}", Strategy = Strategy }; } if (tsk.AdCardList.IsNullOrEmpty()) { var adCard = uow.Query().Where(m => m.Enable && m.IsDefault).FirstOrDefault(); if (adCard != null) { tsk.AdCardList.Add(TskAdCard.CreateFrom(adCard, uow)); } else { tsk.AdCardList.Add(new TskAdCard(uow)); } } bsTsk.DataSource = tsk; ShowTskStrategy(tsk); } private void LoadResureList() { //_allSatList = _adcManager.GetSatList(); _allSatList = uow.Query().Where(m => m.Enable).OrderBy(m => m.SatNum).ToList(); _allAntList = uow.Query().OrderBy(m => m.Oid).ToList(); _allEmtList = uow.Query().Where(m => m.Enable).ToList(); bsSat.DataSource = _allSatList; } private void ShowTskStrategy(Tsk tsk) { if (tsk.Strategy == null) return; TskStrategy strategy = tsk.Strategy; grpSatList.Visibility = strategy.ShowSatList ? LayoutVisibility.Always : LayoutVisibility.Never; grpAdInfo.Visibility = strategy.ShowAdcList ? LayoutVisibility.Always : LayoutVisibility.Never; grpSigList.Visibility = strategy.ShowSigList ? LayoutVisibility.Always : LayoutVisibility.Never; grpRefSigList.Visibility = strategy.ShowRefList ? LayoutVisibility.Always : LayoutVisibility.Never; grpDxSigs.Visibility = strategy.ShowDxSigList ? LayoutVisibility.Always : LayoutVisibility.Never; ItemForIsHistory.Visibility = strategy.SupHistory ? LayoutVisibility.Always : LayoutVisibility.Never; if (strategy.ShowSatList) { adjaSatsEdit.SetSatList(_allSatList); adjaSatsEdit.SetAdjaSatList(tsk.AdjaSatList); } if (strategy.ShowAdcList) { if (tsk.AdCardList.IsNullOrEmpty()) { var adcList = uow.Query().Where(m => m.Enable && m.IsDefault).ToList(); TskAdCard tskAdCard = new TskAdCard(uow); if (adcList.IsNotNullOrEmpty()) { tskAdCard = new TskAdCard(uow); tskAdCard.CopyFrom(adcList.First()); } tsk.AdCardList.Add(tskAdCard); } var adcard = tsk.AdCardList.First(); tskAdcEditCtrl.SetResourceList(_allAntList, _allSatList); tskAdcEditCtrl.SetAdCard(adcard); } if (strategy.ShowSigList) { var tarSigCategory = strategy.TskType == TskType.LocTsk ? SignalCategory.TarSig : SignalCategory.SctSig; var showScanFreq = true;//strategy.TskType == TskType.LocTsk && strategy.SigType == SignalType.NORMAL; sigListCtrl.SetSigProperties(tarSigCategory, strategy.SigType, true, showScanFreq, _allSatList, _allEmtList); sigListCtrl.SetDataSource(tsk.SignalList); } if (strategy.ShowRefList) { refSigListCtrl.SetSigProperties(SignalCategory.RefSig, SignalType.NORMAL, true, false, _allSatList, _allEmtList); refSigListCtrl.SetDataSource(tsk.RefSignalList); } if (strategy.ShowDxSigList) { dxSigListCtrl.SetSigProperties(DxSignalType._BPSK, true, _allSatList); dxSigListCtrl.SetDataSource(tsk.DxSignalList); } if (tsk.AdCardList.IsNotNullOrEmpty()) { //if (tsk.AdCardList.First().Channels.Any()) //{ // var defaultChannel = tsk.AdCardList.First().Channels.FirstOrDefault(m => m.SatIds.IsNotNullOrWhitespace()); // if (defaultChannel != null) // { // var defaultSatId = defaultChannel.GetSatIds()[0]; // sigListCtrl.SetSatInfo(defaultSatId); // } //} sigListCtrl.SetAdCardInfo(tsk.AdCardList.First()); refSigListCtrl.SetAdCardInfo(tsk.AdCardList.First()); dxSigListCtrl.SetAdCardInfo(tsk.AdCardList.First()); } } private void btnSaveOther_Click(object sender, ItemClickEventArgs e) { UnitOfWork uowClone = new UnitOfWork(); CloneHelper cloneHelper = new CloneHelper(uowClone); var newTsk = cloneHelper.Clone(EditModel, true); if (!_tskManager.CheckTskName(newTsk)) return; newTsk.State = TskState.Stop; uowClone.CommitChanges(); this.Id = newTsk.Oid; this.DialogResult = DialogResult.OK; Close(); Messenger.Default.Send(new ReloadTskMessage(this.Id)); } private void btnSave_Click(object sender, ItemClickEventArgs e) { try { dataLayoutControl1.Validate(); uow.CommitChanges(); Id = ((Tsk)(bsTsk.DataSource)).Oid; this.DialogResult = DialogResult.OK; Close(); Messenger.Default.Send(new ReloadTskMessage(this.Id)); } catch (LockingException) { MsgHelper.ShowError("对象已被修改,请关闭后重新打开进行编辑!"); } } private void btnCancel_Click(object sender, ItemClickEventArgs e) { Close(); } private void SatText_EditValueChanged(object sender, EventArgs e) { sigListCtrl.SetDefaultSatText(MainSatIdLookUpEdit.Text, adjaSatsEdit.AdjaSatText); refSigListCtrl.SetDefaultSatText(MainSatIdLookUpEdit.Text, adjaSatsEdit.AdjaSatText); dxSigListCtrl.SetDefaultSatText(adjaSatsEdit.AdjaSatText); } } }