Ver Fonte

修改采集管理

wyq há 3 meses atrás
pai
commit
4f5d609440

+ 3 - 1
DW5S.App/EditForms/StationEditor.Designer.cs

@@ -128,6 +128,7 @@
             // 
             // grdChannelList
             // 
+            grdChannelList.DataMember = "AdChannels";
             grdChannelList.Location = new System.Drawing.Point(24, 133);
             grdChannelList.MainView = gvChannelList;
             grdChannelList.Name = "grdChannelList";
@@ -137,9 +138,10 @@
             // 
             // gvChannelList
             // 
+            gvChannelList.Appearance.Row.Options.UseTextOptions = true;
+            gvChannelList.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
             gvChannelList.GridControl = grdChannelList;
             gvChannelList.Name = "gvChannelList";
-            gvChannelList.OptionsBehavior.EditingMode = DevExpress.XtraGrid.Views.Grid.GridEditingMode.EditForm;
             gvChannelList.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDownFocused;
             gvChannelList.OptionsSelection.MultiSelect = true;
             gvChannelList.OptionsView.ShowGroupPanel = false;

+ 63 - 4
DW5S.App/EditForms/StationEditor.cs

@@ -35,6 +35,7 @@ namespace DW5S.App.EditForms
             this.txtStationAddress.EditValue = "192.168.1.20:5001";
             this.checkEnable.Checked = true;
             grdChannelList.UseDefault(AdChItems).UseEmptyText("请添加采集通道").UseEdit()
+                .HideColumn(nameof(AdChannelViewModel.Id))
                .UseBoolColumn(nameof(AdChannelViewModel.Enable), "启用", "禁用");
         }
         public StationEditor(AdCardViewModel info)
@@ -61,6 +62,8 @@ namespace DW5S.App.EditForms
                     gvChannelList.Columns[nameof(AdChannelViewModel.SatInfoID)].OptionsColumn.AllowEdit = true;
                     gvChannelList.Columns[nameof(AdChannelViewModel.TxInfoID)].OptionsColumn.AllowEdit = true;
                     gvChannelList.Columns[nameof(AdChannelViewModel.Enable)].OptionsColumn.AllowEdit = true;
+
+                    gvChannelList.CellValueChanged += GvChannelList_CellValueChanged;
                 }
 
                 if (this.Text == "编辑采集" && info != null)
@@ -94,6 +97,22 @@ namespace DW5S.App.EditForms
             }
         }
 
+        private void GvChannelList_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
+        {
+            if (e.Column.FieldName == nameof(AdChannelViewModel.ChNum))
+            {
+                var AdChannel = gvChannelList.GetSelectRow<AdChannelViewModel>().FirstOrDefault();
+                if (AdChItems.Count(i => i.ChNum == AdChannel.ChNum) > 1)
+                {
+                    DxHelper.MsgBoxHelper.ShowError($"采集通道[{AdChannel.ChNum}]已经存在!");
+                    return;
+                }
+
+            }
+        }
+
+
+
         private async Task<List<RecTxViewModel>> GetAnts()
         {
 
@@ -109,7 +128,7 @@ namespace DW5S.App.EditForms
             var unitOfWork = IocContainer.UnitOfWork;
             var reps = unitOfWork.Of<SatInfo>();
             var res = await reps.GetAllAsync();
-            return res.OrderBy(s=>s.SatName).To<List<SatViewModel>>();
+            return res.OrderBy(s => s.SatName).To<List<SatViewModel>>();
         }
         private void btnOk_Click(object sender, EventArgs e)
         {
@@ -162,6 +181,32 @@ namespace DW5S.App.EditForms
                     dxErrorProvider.SetError(txtStationAddress, "采集服务地址不能为空");
                     return;
                 }
+                bool checkSucess = info.AdChannels.Count == 0 ? true : false;
+                string msg = "";
+                foreach (var chitem in info.AdChannels)
+                {
+                    if (chitem.ChNum == 0)
+                    {
+                        msg = $"采集通道号不能为空";
+                        break;
+                    }
+                    if (chitem.SatInfoID == 0)
+                    {
+                        msg = $"采集通道号[{chitem.ChNum}]对应卫星不能为空";
+                        break;
+                    }
+                    if (chitem.TxInfoID == 0)
+                    {
+                        msg = $"采集通道号[{chitem.ChNum}]对应天线不能为空";
+                        break;
+                    }
+                    checkSucess = true;
+                }
+                if (!checkSucess)
+                {
+                    DxHelper.MsgBoxHelper.ShowError(msg);
+                    return;
+                }
                 info.Name = txtStationName.Text;
                 info.TriggerMode = (EnumAdTriggerMode)cbTriggerMode.EditValue;
                 info.ClockerType = (EnumAdClockType)cbClockerType.EditValue;
@@ -186,17 +231,31 @@ namespace DW5S.App.EditForms
             this.DialogResult = DialogResult.Cancel;
         }
 
-        private void GroupChannel_CustomButtonClick(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e)
+        private async void GroupChannel_CustomButtonClick(object sender, DevExpress.XtraBars.Docking2010.BaseButtonEventArgs e)
         {
             string caption = e.Button.Properties.Caption;
             switch (caption)
             {
                 case "添加":
-                    AdChItems.Add(new AdChannelViewModel() {  CreateTime= DateTime.Now, UpdateTime=DateTime.Now});
+                    AdChItems.Add(new AdChannelViewModel() { CreateTime = DateTime.Now, UpdateTime = DateTime.Now });
                     gvChannelList.RefreshData();
                     break;
                 case "删除":
-                    gvChannelList.DeleteSelectedRows<AdChannelViewModel>();
+                    try
+                    {
+                        var deletes = gvChannelList.DeleteSelectedRows<AdChannelViewModel>();
+                        var unitOfWork = IocContainer.UnitOfWork;
+                        var repsCh = unitOfWork.Of<AdChannel>();
+                        await repsCh.DeleteAsync(deletes.To<List<AdChannel>>());
+                        await unitOfWork.SaveAsync();
+
+                    }
+                    catch (Exception ex)
+                    {
+                        string msg = "删除采集通道信息异常";
+                        IocContainer.Logger.Error(ex, msg);
+                        DxHelper.MsgBoxHelper.ShowError(msg);
+                    }
                     break;
             }
         }

+ 65 - 4
DW5S.App/UserControl/CtrlStation.Designer.cs

@@ -28,8 +28,13 @@
         /// </summary>
         private void InitializeComponent()
         {
-            DevExpress.XtraGrid.GridLevelNode gridLevelNode2 = new DevExpress.XtraGrid.GridLevelNode();
+            DevExpress.XtraGrid.GridLevelNode gridLevelNode1 = new DevExpress.XtraGrid.GridLevelNode();
             AdChannelgView = new DevExpress.XtraGrid.Views.Grid.GridView();
+            gcChNum = new DevExpress.XtraGrid.Columns.GridColumn();
+            gcCenterFreq = new DevExpress.XtraGrid.Columns.GridColumn();
+            gcSatInfoID = new DevExpress.XtraGrid.Columns.GridColumn();
+            gcTxInfoId = new DevExpress.XtraGrid.Columns.GridColumn();
+            gcEnable = new DevExpress.XtraGrid.Columns.GridColumn();
             gridStation = new DevExpress.XtraGrid.GridControl();
             Adgview = new DevExpress.XtraGrid.Views.Grid.GridView();
             ((System.ComponentModel.ISupportInitialize)AdChannelgView).BeginInit();
@@ -39,26 +44,77 @@
             // 
             // AdChannelgView
             // 
+            AdChannelgView.Appearance.Row.Options.UseTextOptions = true;
+            AdChannelgView.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
+            AdChannelgView.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { gcChNum, gcCenterFreq, gcSatInfoID, gcTxInfoId, gcEnable });
             AdChannelgView.GridControl = gridStation;
             AdChannelgView.Name = "AdChannelgView";
+            AdChannelgView.OptionsBehavior.Editable = false;
+            AdChannelgView.OptionsView.ShowGroupPanel = false;
+            // 
+            // gcChNum
+            // 
+            gcChNum.Caption = "通道号";
+            gcChNum.FieldName = "ChNum";
+            gcChNum.Name = "gcChNum";
+            gcChNum.Visible = true;
+            gcChNum.VisibleIndex = 0;
+            // 
+            // gcCenterFreq
+            // 
+            gcCenterFreq.Caption = "中心频点(MHz)";
+            gcCenterFreq.FieldName = "CenterFreq";
+            gcCenterFreq.Name = "gcCenterFreq";
+            gcCenterFreq.Visible = true;
+            gcCenterFreq.VisibleIndex = 1;
+            // 
+            // gcSatInfoID
+            // 
+            gcSatInfoID.Caption = "对应卫星";
+            gcSatInfoID.FieldName = "SatInfoID";
+            gcSatInfoID.Name = "gcSatInfoID";
+            gcSatInfoID.Visible = true;
+            gcSatInfoID.VisibleIndex = 2;
+            // 
+            // gcTxInfoId
+            // 
+            gcTxInfoId.Caption = "对应天线";
+            gcTxInfoId.FieldName = "TxInfoID";
+            gcTxInfoId.Name = "gcTxInfoId";
+            gcTxInfoId.Visible = true;
+            gcTxInfoId.VisibleIndex = 3;
+            // 
+            // gcEnable
+            // 
+            gcEnable.Caption = "通道启用状态";
+            gcEnable.FieldName = "Enable";
+            gcEnable.Name = "gcEnable";
+            gcEnable.Visible = true;
+            gcEnable.VisibleIndex = 4;
             // 
             // gridStation
             // 
             gridStation.Dock = System.Windows.Forms.DockStyle.Fill;
-            gridLevelNode2.LevelTemplate = AdChannelgView;
-            gridLevelNode2.RelationName = "ChMainView";
-            gridStation.LevelTree.Nodes.AddRange(new DevExpress.XtraGrid.GridLevelNode[] { gridLevelNode2 });
+            gridLevelNode1.LevelTemplate = AdChannelgView;
+            gridLevelNode1.RelationName = "AdChannels";
+            gridStation.LevelTree.Nodes.AddRange(new DevExpress.XtraGrid.GridLevelNode[] { gridLevelNode1 });
             gridStation.Location = new System.Drawing.Point(0, 0);
             gridStation.MainView = Adgview;
             gridStation.Name = "gridStation";
+            gridStation.ShowOnlyPredefinedDetails = true;
             gridStation.Size = new System.Drawing.Size(647, 422);
             gridStation.TabIndex = 0;
             gridStation.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { Adgview, AdChannelgView });
             // 
             // Adgview
             // 
+            Adgview.Appearance.Row.Options.UseTextOptions = true;
+            Adgview.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Near;
             Adgview.GridControl = gridStation;
             Adgview.Name = "Adgview";
+            Adgview.OptionsBehavior.Editable = false;
+            Adgview.OptionsSelection.MultiSelect = true;
+            Adgview.OptionsView.ShowGroupPanel = false;
             Adgview.DoubleClick += gridView1_DoubleClick;
             // 
             // CtrlStation
@@ -80,5 +136,10 @@
         private DevExpress.XtraGrid.GridControl gridStation;
         private DevExpress.XtraGrid.Views.Grid.GridView Adgview;
         private DevExpress.XtraGrid.Views.Grid.GridView AdChannelgView;
+        private DevExpress.XtraGrid.Columns.GridColumn gcChNum;
+        private DevExpress.XtraGrid.Columns.GridColumn gcCenterFreq;
+        private DevExpress.XtraGrid.Columns.GridColumn gcSatInfoID;
+        private DevExpress.XtraGrid.Columns.GridColumn gcTxInfoId;
+        private DevExpress.XtraGrid.Columns.GridColumn gcEnable;
     }
 }

+ 32 - 14
DW5S.App/UserControl/CtrlStation.cs

@@ -10,37 +10,39 @@ using System.Data;
 using System.Linq;
 using System.Threading.Tasks;
 using System.Windows.Forms;
+using XdCxRhDW5S.ViewModel;
+using static System.Runtime.InteropServices.JavaScript.JSType;
 
 namespace DW5S.App.UserControl
 {
     public partial class CtrlStation : DevExpress.XtraEditors.XtraUserControl
     {
-         List<AdCardViewModel> list = new List<AdCardViewModel>();
+        List<AdCardViewModel> list = new List<AdCardViewModel>();
         public CtrlStation()
         {
             InitializeComponent();
-             gridStation.UseDefault(list).UseEmptyText("请添加采集通道").UseMultiSelect().UseRowNumber()
-                    .UseAddAsync(Add)
-                    .UseEditAsync<AdCardViewModel>(Edit)
-                    .UseDeleteAsync<AdCardViewModel>(Delete);
-
-                //gridStation.UseLookUpEditColumn(nameof(AdChannelViewModel.SatInfoID), displayField: nameof(SatInfo.Sat), AdChannelgView)
-               //.UseLookUpEditColumn(nameof(AdChannelViewModel.TxInfoID), displayField: nameof(TxInfo.Name), AdChannelgView);
-
-
+            gridStation.UseDefault(list).UseEmptyText("请添加采集通道").UseMultiSelect().UseRowNumber();
+            gridStation
+                 .UseBoolColumn(nameof(AdChannelViewModel.Enable), "启用", "禁用", AdChannelgView)
+                 .UseLookUpEditColumn(nameof(AdChannelViewModel.SatInfoID), displayField: nameof(SatViewModel.Sat), AdChannelgView)
+               .UseLookUpEditColumn(nameof(AdChannelViewModel.TxInfoID), displayField: nameof(RecTxViewModel.Name), AdChannelgView);
         }
         private async void CtrlStation_Load(object sender, EventArgs e)
         {
 
             try
             {
-               
+                var sats = await GetSats();
+                var ants = await GetAnts();
+                gridStation.UpdateLookUpEditDataSource(nameof(AdChannelViewModel.SatInfoID), sats, AdChannelgView);
+                gridStation.UpdateLookUpEditDataSource(nameof(AdChannelViewModel.TxInfoID), ants, AdChannelgView);
+                gridStation.UseAddAsync(Add)
+                 .UseEditAsync<AdCardViewModel>(Edit)
+                 .UseDeleteAsync<AdCardViewModel>(Delete);
+
                 var unitOfWork = IocContainer.UnitOfWork;
                 var adCards = await unitOfWork.Of<AdCard>().AsQueryable()
                     .Include(p => p.AdChannels)
-                         .ThenInclude(s => s.SatInfo)
-                         .Include(s => s.AdChannels)
-                         .ThenInclude(s => s.TxInfo)
                         .OrderByDescending(p => p.Name).ToListAsync();
                 list.AddRange(adCards.To<List<AdCardViewModel>>());
             }
@@ -51,7 +53,23 @@ namespace DW5S.App.UserControl
                 DxHelper.MsgBoxHelper.ShowError(msg);
             }
         }
+        private async Task<List<RecTxViewModel>> GetAnts()
+        {
 
+            var unitOfWork = IocContainer.UnitOfWork;
+            var repsRecTx = unitOfWork.Of<TxInfo>();
+            var items = await repsRecTx.FindAsync(f => f.Enable == true, p => p.Name);
+            var ss = items.To<List<RecTxViewModel>>();
+            return ss;
+
+        }
+        private async Task<List<SatViewModel>> GetSats()
+        {
+            var unitOfWork = IocContainer.UnitOfWork;
+            var reps = unitOfWork.Of<SatInfo>();
+            var res = await reps.GetAllAsync();
+            return res.OrderBy(s => s.SatName).To<List<SatViewModel>>();
+        }
         private async Task<AdCardViewModel> Add()
         {
             try

+ 0 - 11
DW5S.Entity/ADEntity/AdChannel.cs

@@ -29,21 +29,10 @@ namespace DW5S.Entity
         /// 卫星编号
         /// </summary>
         public int SatInfoID { get; set; }
-        /// <summary>
-        /// 卫星
-        /// </summary>
-        public virtual SatInfo SatInfo { get; set; }
-
         /// <summary>
         /// 天线编号
         /// </summary>
         public int TxInfoID { get; set; }
-        
-        /// <summary>
-        /// 天线信息
-        /// </summary>
-        public virtual TxInfo TxInfo { get; set; }
-
         /// <summary>
         /// 通道启用状态
         /// </summary>

+ 1 - 11
DW5S.ViewModel/AdChannelViewModel.cs

@@ -25,21 +25,11 @@ namespace DW5S.ViewModel
 
         [Display(Name = "对应卫星")]
         public int SatInfoID { get; set; }
-        /// <summary>
-        /// 卫星
-        /// </summary>
-
-        [Display(AutoGenerateField = false)]
-        public virtual SatInfo SatInfo { get; set; }
+       
 
         [Display(Name = "对应天线")]
         public int TxInfoID { get; set; }
 
-        /// <summary>
-        /// 天线信息
-        /// </summary>
-        [Display( AutoGenerateField = false)]
-        public virtual TxInfo TxInfo { get; set; }
 
         [Display(Name = "通道启用状态")]
         public bool Enable { get; set; }