ningshuxia
2025-03-24 f7d479db638f3d9e3aeb05ec82dc2818f14bf903
WinFrmUI/PBS.WinFrmUI/03-elecPrice/ElecPriceMgr.cs
@@ -1,4 +1,8 @@
using DevExpress.XtraEditors;
using DevExpress.XtraGantt.Scheduling;
using DevExpress.XtraGrid.Views.Grid;
using System.ComponentModel;
using Yw.WinFrmUI;
namespace PBS.WinFrmUI
{
@@ -7,6 +11,9 @@
        public ElecPriceMgr()
        {
            InitializeComponent();
            this.gridView1.SetNormalView(30);
            this.gridView1.CellMerge += GridView1_CellMerge;
            this.gridView1.OptionsView.AllowCellMerge = true;
        }
        private void BtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
@@ -14,80 +21,163 @@
            AddElePrice();
        }
        private BindingList<ElecPriceViewModel> _allBindingList = null;//所有绑定列表
        private PBS.Vmo.ElecPriceVmo _elecPrice = null;
        public override void InitialDataSource()
        {
            SetBindingData();
        }
        /// <summary>
        /// 绑定数据
        /// </summary>
        public async void SetBindingData()
        {
            _allBindingList = new BindingList<ElecPriceViewModel>();
            var bll = new BLL.ElecPrice();
            var allList = await bll.GetAll();
            if (allList != null)
                _elecPrice = allList.First();
            if (_elecPrice != null)
            {
                if (_elecPrice.Settings != null && _elecPrice.Settings.MonthList != null)
                {
                    var months = _elecPrice.Settings.MonthList.OrderBy(x => x.StartMonth);
                    foreach (var month in months)
                    {
                        if (month.HourList == null)
                            continue;
                        var belongName = $"{month.StartMonth}~{month.EndMonth}(月)";
                        var hours = month.HourList.OrderBy(x => x.StartHour);
                        foreach (var hour in hours)
                        {
                            var vm = new ElecPriceViewModel(belongName, hour);
                            vm.StartMonth = month.StartMonth;
                            vm.EndMonth = month.EndMonth;
                            _allBindingList.Add(vm);
                        }
                    }
                }
                else
                {
                    _elecPrice.Settings = new Vmo.ElecPriceSetting();
                    _elecPrice.Settings.MonthList = new List<Vmo.ElecPriceMonthSetting> { new Vmo.ElecPriceMonthSetting() };
                }
            }
            this.elecPriceViewModelBindingSource.DataSource = _allBindingList;
            this.elecPriceViewModelBindingSource.ResetBindings(false);
            //this.gridView1.BestFitColumns();
        }
        //添加电费
        public void AddElePrice()
        {
            var dlg = new AddElectricDlg();
            dlg.SetBindingData();
            dlg.ReloadDataEvent += (price) =>
            dlg.ReloadDataEvent += async (price) =>
            {
                /* var bll = new BLL.ElecPrice();
                 _elecPrice.Settings.MonthList.Add(price);
                 var bol = bll.Update(_elecPrice);
                 if (bol)
                 {
                     this.SetBindingData();
                     this.currentViewModelBindingSource.ResetBindings(false);
                     return true;
                 }*/
                var bll = new BLL.ElecPrice();
                _elecPrice.Settings.MonthList.Add(price);
                var bol = await bll.Update(_elecPrice);
                if (bol)
                {
                    foreach (var item in price.HourList)
                    {
                        this._allBindingList.Add(new ElecPriceViewModel
                        {
                            BelongName = $"{price.StartMonth}~{price.EndMonth}(月)",
                            StartHour = item.StartHour,
                            EndHour = item.EndHour,
                            Price = item.Price
                        });
                    }
                    this.elecPriceViewModelBindingSource.ResetBindings(false);
                    return true;
                }
                return false;
            };
            dlg.ShowDialog();
        }
        //  var oldbelongName= _allBindingList.Where(e=>e.BelongName==belongName).FirstOrDefault();
        //if (oldbelongName == null)
        //编辑电费
        /*       public void EditElePrice()
               {
                   var row = gridView1.GetCurrentViewModel(_allBindingList);
                   if (row == null)
                       return;
                   var editTime = _elecPrice.Settings;  //提问:这句话点不到hourlist   new一个monthsetting就能.到hourlist
                   var FindMonth = editTime.MonthList.Find(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth);
                   var addHour = _elecPrice.Settings.MonthList.IndexOf(FindMonth);
                   var editHour = editTime.MonthList[addHour];
                   var dlg = new EditElectricDlg();
                   dlg.SetBindingData(editHour.HourList);
                   dlg.ReLoadDataevent += (price) =>
                   {
                       editHour.HourList.Clear();
                       editHour.HourList = price;
                       var bll = new BLL.ElecPrice();
                       var isok = bll.Update(_elecPrice);
                       if (isok)
                       {
                           this.currentViewModelBindingSource.ResetBindings(false);
                           this.SetBindingData();
                           return true;
                       }
                       return false;
                   };
                   dlg.ShowDialog();
               }*/
        public void EditElePrice()
        {
            var row = gridView1.GetCurrentViewModel(_allBindingList);
            if (row == null)
                return;
            var editTime = _elecPrice.Settings;
            var FindMonth = editTime.MonthList.Find(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth);
            var dlg = new EditElectricDlg();
            dlg.SetBindingData(FindMonth.HourList);
            dlg.ReLoadDataevent += async (price) =>
            {
                FindMonth.HourList.Clear();
                FindMonth.HourList = price;
                var bll = new BLL.ElecPrice();
                var isok = await bll.Update(_elecPrice);
                if (isok)
                {
                   this.SetBindingData();
                    return true;
                }
                return false;
            };
            dlg.ShowDialog();
        }
        /// <summary>
        /// 删除电费
        /// </summary>
        /*  public void DeletePrice()
          {
              var row = this.gridView1.GetCurrentViewModel(_allBindingList);
              if (row == null)
                  return;
              if (XtraMessageBox.Show("确定要删除所选中?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK)
                  return;
        public async void DeletePrice()
        {
            var row = this.gridView1.GetCurrentViewModel(_allBindingList);
            if (row == null)
                return;
            if (XtraMessageBox.Show("确定要删除所选中?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK)
                return;
              _elecPrice.Settings.MonthList.RemoveAll(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth);
            _elecPrice.Settings.MonthList.RemoveAll(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth);
            var isok = await new BLL.ElecPrice().Update(_elecPrice);
            if (isok)
            {
                this.elecPriceViewModelBindingSource.ResetBindings(false);
            }
            this.SetBindingData();
            this.elecPriceViewModelBindingSource.ResetBindings(false);
            MessageBox.Show("删除成功", "提示");
        }
              var isok = new BLL.ElecPrice().Update(_elecPrice);
              if (isok)
              {
                  this.currentViewModelBindingSource.ResetBindings(false);
              }
              this.SetBindingData();
              this.currentViewModelBindingSource.ResetBindings(false);
              MessageBox.Show("删除成功", "提示");
          }*/
        //控制只允许分组合并
        private void GridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e)
        {
            if (e.Column.FieldName == "BelongName")
            {
                // 获取当前单元格和下一个单元格的值
                var value1 = gridView1.GetRowCellValue(e.RowHandle1, e.Column);
                var value2 = gridView1.GetRowCellValue(e.RowHandle2, e.Column);
                // 如果两个单元格的值相等,则允许合并
                e.Merge = value1 != null && value1.Equals(value2);
                e.Handled = true;
            }
            else
            {
                // 其他列不允许合并
                e.Merge = false;
                e.Handled = true;
            }
        }
        private void BtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            EditElePrice();
        }
        private void BtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            DeletePrice();
        }
    }
}