using DevExpress.Utils.Colors;
|
using DevExpress.Utils.Extensions;
|
using DevExpress.XtraEditors;
|
using IStation.Model;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Linq;
|
using System.Windows.Forms;
|
|
namespace IStation.WinFrmUI.Basic
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public partial class ElecPriceMgrCtrl : XtraUserControl
|
{
|
public ElecPriceMgrCtrl()
|
{
|
InitializeComponent();
|
this.gridView1.SetNormalView();
|
this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
|
this.gridView1.OptionsView.AllowCellMerge = true;
|
this.gridView1.ActiveFilterEnabled = false;
|
this.gridView1.ShowViewCaption();
|
this.layoutControl1.SetupLayoutControl();
|
}
|
|
public class CurrentViewModel : Model.ElecPriceHourSetting
|
{
|
public CurrentViewModel() { }
|
|
public CurrentViewModel(Model.ElecPriceHourSetting rhs, string belongName) : base(rhs)
|
{
|
this.BelongName = belongName;
|
}
|
|
public string BelongName { get; set; }
|
|
public int StartMonth { get; set; }
|
|
public int EndMonth { get; set; }
|
}
|
|
|
private BindingList<CurrentViewModel> _allBindingList = null;//所有绑定列表
|
|
|
|
private Model.ElecPrice _elecPrice = null;
|
//提问:这个这个和实例化有什么区别
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void Clear()
|
{
|
_allBindingList = new BindingList<CurrentViewModel>();
|
this.currentViewModelBindingSource.DataSource = _allBindingList;
|
}
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData()
|
{
|
WaitFrmHelper.ShowWaitForm("正在加载数据...");
|
_allBindingList = new BindingList<CurrentViewModel>();
|
var bll = new BLL.ElecPrice();
|
_elecPrice = bll.GetAll().First();
|
if (_elecPrice != null)
|
{
|
this.gridView1.ViewCaption = _elecPrice.Name;
|
|
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 CurrentViewModel(hour, belongName);
|
vm.StartMonth = month.StartMonth;
|
vm.EndMonth = month.EndMonth;
|
_allBindingList.Add(vm);
|
}
|
}
|
|
}
|
}
|
this.currentViewModelBindingSource.DataSource = _allBindingList;
|
this.gridView1.BestFitColumns();
|
WaitFrmHelper.HideWaitForm();
|
}
|
|
//添加电费
|
public void AddElePrice()
|
{
|
var dlg = new AddElectricDlg();
|
dlg.SetBindingData();
|
dlg.ReloadDataEvent += (price) =>
|
{
|
_elecPrice.Settings.MonthList.Add(price);
|
var bll = new BLL.ElecPrice();
|
var isok = bll.Update(_elecPrice);
|
if (isok)
|
{
|
this.SetBindingData();
|
this.currentViewModelBindingSource.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 bool PriceCheck()
|
{
|
//判断月份
|
var allMonths = _elecPrice.Settings.MonthList;
|
allMonths = allMonths.OrderBy(x => x.EndMonth).ToList();
|
var monthCount = allMonths.Count;
|
if (allMonths.First().StartMonth != 1 || allMonths.Last().EndMonth != 12)
|
{
|
XtraMessageBox.Show("开始月份和结束月份有误");
|
return false;
|
}
|
for (int i = 0; i < monthCount - 1; i++)
|
{
|
if (allMonths[i].EndMonth + 1 != allMonths[i + 1].StartMonth)
|
{
|
XtraMessageBox.Show("月份输入有误");
|
return false;
|
}
|
|
}
|
|
//判断时间
|
for (int k = 0; k < monthCount; k++)
|
{
|
var eleprice = allMonths[k];
|
var hourList = eleprice.HourList.OrderBy(x => x.StartHour).ToList();
|
if (hourList.First().StartHour != 1 || hourList.Last().EndHour != 24)
|
{
|
XtraMessageBox.Show("结束时间或开始时间输入有误");
|
return false;
|
}
|
for (int x = 0; x < eleprice.HourList.Count - 1; x++)
|
{
|
var frist = hourList[x];
|
var second = hourList[x + 1];
|
var last = hourList[eleprice.HourList.Count - 1];
|
if (second.StartHour == second.EndHour)
|
{
|
XtraMessageBox.Show("开始时间和结束时间相同");
|
return false;
|
}
|
if (frist.EndHour != second.StartHour)
|
{
|
XtraMessageBox.Show("时间输入有误");
|
return false;
|
}
|
}
|
}
|
XtraMessageBox.Show("输入正确");
|
return false;
|
|
}
|
//var eleprice = allMonths[i];
|
//var hourList = eleprice.HourList.OrderBy(x => x.StartHour).ToList();
|
//for (int j = 0; i < eleprice.HourList.Count; j++)
|
//{
|
// if (hourList[j].EndHour != hourList[j + 1].StartHour)
|
// {
|
// XtraMessageBox.Show("时间输入有误");
|
// return;
|
// }
|
//}
|
// var monthCount = _elecPrice.Settings.MonthList;
|
//for (int i = 0; i < monthCount; i++)
|
/// <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;
|
|
_elecPrice.Settings.MonthList.RemoveAll(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth);
|
|
var isok = new BLL.ElecPrice().Update(_elecPrice);
|
if (isok)
|
{
|
this.currentViewModelBindingSource.ResetBindings(false);
|
}
|
this.SetBindingData();
|
this.currentViewModelBindingSource.ResetBindings(false);
|
MessageBox.Show("删除成功", "提示");
|
}
|
}
|
}
|