using DevExpress.XtraEditors;
|
using NPOI.HSSF.UserModel;
|
using System.IO;
|
using Yw;
|
|
namespace IStation.Win
|
{
|
public partial class ScheduleValidView : XtraUserControl
|
{
|
public ScheduleValidView()
|
{
|
InitializeComponent();
|
this.bandedGridView1.BandPanelRowHeight = 35;
|
this.bandedGridView1.RegistCustomDrawRowIndicator();
|
this.bandedGridView1.SetNormalView();
|
|
this.cmbSelectStation.SelectedIndex = _sel_index - 1;
|
}
|
|
|
private List<ScheduleValidViewModel> _schedule_valid_vm_list = null;
|
private int _sel_index = 2;
|
|
//导入文件
|
private void barBtnImport_Click(object sender, EventArgs e)
|
{
|
var dlg = new OpenFileDialog();
|
dlg.Filter = "EXCEL 文件(*.xls)|*.xls";
|
if (dlg.ShowDialog() != DialogResult.OK)
|
return;
|
|
var fileName = dlg.FileName;
|
int line = 0;
|
try
|
{
|
//初始化文件
|
HSSFWorkbook theBook = null;
|
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
|
{
|
theBook = new HSSFWorkbook(file);
|
}
|
|
//检查表格是否符合
|
NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1");
|
if (sheet1 == null)
|
{
|
sheet1 = theBook.GetSheetAt(0);
|
if (sheet1 == null)
|
{
|
MessageBox.Show("请将数据放在Sheet1中");
|
return;
|
}
|
}
|
|
//标题行
|
int title_line_index = 0;
|
//时间
|
int col_index_time = 0;
|
//总流量
|
int col_index_flow = 1;
|
//总扬程
|
int col_index_head = 2;
|
//总功率
|
int col_index_power = 3;
|
//运行标志
|
int col_index_flag_rpm_dict = 4;
|
//运行标志
|
int col_index_flag_flow_dict = 5;
|
//运行标志
|
int col_index_flag_head_dict = 6;
|
//运行标志
|
int col_index_flag_power_dict = 7;
|
|
|
var row_title = sheet1.GetRow(title_line_index);
|
if (row_title == null)
|
{
|
MessageBox.Show("第一行第一列不能空,");
|
return;
|
}
|
|
//开始读取的行
|
int start_line = title_line_index + 1;
|
var cell_0 = row_title.GetCell(0);
|
if (cell_0 == null)
|
{
|
MessageBox.Show("无法读取表头文件");
|
return;
|
}
|
|
_schedule_valid_vm_list = new List<ScheduleValidViewModel>();
|
|
DateTime time;
|
Dictionary<int, double> flag_rpm_dict, flag_flow_dict, flag_head_dict, flag_power_dict;
|
double flow, head, power;
|
NPOI.SS.UserModel.IRow rowtemp = null;
|
NPOI.SS.UserModel.ICell cell;
|
|
for (line = start_line; line < 100; line++)
|
{
|
flow = head = power = -1;
|
flag_rpm_dict = new Dictionary<int, double>();
|
flag_flow_dict = new Dictionary<int, double>();
|
flag_head_dict = new Dictionary<int, double>();
|
flag_power_dict = new Dictionary<int, double>();
|
rowtemp = sheet1.GetRow(line);
|
if (rowtemp == null)
|
break;
|
|
cell = rowtemp.GetCell(col_index_time);
|
if (cell == null)
|
break;
|
if (!DateTime.TryParse(cell.StringCellValue, out time))
|
{
|
continue;
|
}
|
|
cell = rowtemp.GetCell(col_index_flow);
|
if (cell == null)
|
break;
|
if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric)
|
flow = cell.NumericCellValue;
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
|
flow = Convert.ToDouble(cell.StringCellValue);
|
else
|
continue;
|
|
if (flow < 0)
|
break;
|
|
cell = rowtemp.GetCell(col_index_head);
|
if (cell == null)
|
break;
|
if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric)
|
head = cell.NumericCellValue;
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
|
head = Convert.ToDouble(cell.StringCellValue);
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.Blank)
|
break;
|
if (head < 0)
|
break;
|
|
|
cell = rowtemp.GetCell(col_index_power);
|
if (cell == null)
|
break;
|
if (cell.CellType == NPOI.SS.UserModel.CellType.Numeric)
|
power = cell.NumericCellValue;
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
|
power = Convert.ToDouble(cell.StringCellValue);
|
else
|
power = -1;
|
|
|
cell = rowtemp.GetCell(col_index_flag_rpm_dict);
|
if (cell == null)
|
break;
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
|
flag_rpm_dict = JsonHelper.Json2Object<Dictionary<int, double>>(cell.StringCellValue);
|
|
cell = rowtemp.GetCell(col_index_flag_flow_dict);
|
if (cell == null)
|
break;
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
|
flag_flow_dict = JsonHelper.Json2Object<Dictionary<int, double>>(cell.StringCellValue);
|
|
cell = rowtemp.GetCell(col_index_flag_head_dict);
|
if (cell == null)
|
break;
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
|
flag_head_dict = JsonHelper.Json2Object<Dictionary<int, double>>(cell.StringCellValue);
|
|
cell = rowtemp.GetCell(col_index_flag_power_dict);
|
if (cell == null)
|
break;
|
else if (cell.CellType == NPOI.SS.UserModel.CellType.String)
|
flag_power_dict = JsonHelper.Json2Object<Dictionary<int, double>>(cell.StringCellValue);
|
|
|
var vm = new ScheduleValidViewModel();
|
vm.Time = time;
|
vm.TotalFlowSrc = flow;
|
vm.TotalHeadSrc = head;
|
vm.TotalPowerSrc = power;
|
vm.FlagRpmDict = flag_rpm_dict;
|
if (flag_rpm_dict != null && flag_rpm_dict.Any())
|
{
|
var flags = flag_rpm_dict.Select(x => x.Key).ToList();
|
vm.RunFlagsSrc = Yw.Untity.IntListHelper.ToString(flags);
|
}
|
vm.FlagFlowDict = flag_flow_dict;
|
vm.FlagHeadDict = flag_head_dict;
|
vm.FlagPowerDict = flag_power_dict;
|
|
_schedule_valid_vm_list.Add(vm);
|
}
|
|
this.scheduleValidViewModelBindingSource.DataSource = _schedule_valid_vm_list;
|
this.scheduleValidViewModelBindingSource.ResetBindings(false);
|
this.gridControl1.RefreshDataSource();
|
this.bandedGridView1.BestFitColumns();
|
}
|
catch (System.Exception err)
|
{
|
MessageBox.Show(string.Format("读取Excel出错!错误原因:{0},行号: {1}", err.Message, line), "提示信息",
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
}
|
}
|
|
//调度
|
private void barBtnSchedule_Click(object sender, EventArgs e)
|
{
|
if (_schedule_valid_vm_list == null || !_schedule_valid_vm_list.Any())
|
{
|
XtraMessageBox.Show("无数据!");
|
return;
|
}
|
|
try
|
{
|
//WaitHelper.ShowWaitForm();
|
//var station = new Service.Station().Get();
|
//List<Model.Pump> pumps;
|
//if (_sel_index == 1)
|
//{
|
// pumps = station.Station1;
|
//}
|
//else
|
//{
|
// pumps = station.Station2;
|
//}
|
|
//var current_open_pump_list = new List<int>();
|
//var must_open_pump_list = new List<int>();
|
//var must_not_open_pump_list = new List<int>();
|
//var schedule_helper = new Algorithm.ScheduleHelper();
|
|
//foreach (var vm in _schedule_valid_vm_list)
|
//{
|
// if (vm.FlagRpmDict == null || !vm.FlagRpmDict.Any())
|
// continue;
|
// current_open_pump_list = vm.FlagRpmDict.Select(x => x.Key).ToList();
|
// if (current_open_pump_list == null || current_open_pump_list.Count < 1)
|
// continue;
|
// var target_flow = vm.TotalFlowSrc;
|
// var target_head = vm.TotalHeadSrc;
|
|
// var opt_schedule = schedule_helper.GetOptAnaCombine(pumps, target_flow, target_head);
|
// if (opt_schedule != null)
|
// {
|
// vm.TotalFlowSchedule = opt_schedule.Flow;
|
// vm.TotalHeadSchedule = opt_schedule.Head;
|
// vm.TotalPowerSchedule = opt_schedule.Power;
|
// vm.RunFlagsSchedule = opt_schedule.Remark;
|
|
// vm.TotalFlowScheduleSrcDiff = opt_schedule.Flow - target_flow;
|
// vm.TotalPowerScheduleSrcDiff = opt_schedule.Power - vm.TotalPowerSrc;
|
// }
|
|
// var opt_src = schedule_helper.GetOptAnaCombineByWorking(pumps, vm.FlagRpmDict, vm.FlagHeadDict, target_flow, target_head);
|
// if (opt_src != null)
|
// {
|
// vm.TotalFlowCalc = opt_src.Flow;
|
// vm.TotalPowerCalc = opt_src.Power;
|
|
// vm.TotalFlowCalcSrcDiff = opt_src.Flow - target_flow;
|
// vm.TotalPowerCalcSrcDiff = opt_src.Power - vm.TotalPowerSrc;
|
// }
|
// vm.Round();
|
//}
|
|
this.scheduleValidViewModelBindingSource.DataSource = _schedule_valid_vm_list;
|
this.scheduleValidViewModelBindingSource.ResetBindings(false);
|
this.gridControl1.RefreshDataSource();
|
this.bandedGridView1.BestFitColumns();
|
}
|
//catch (Exception ex)
|
//{
|
// XtraMessageBox.Show(ex.Message);
|
//}
|
finally
|
{
|
WaitHelper.HideWaitForm();
|
}
|
|
}
|
|
//选中泵站变换
|
private void cmbSelectStation_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
_sel_index = this.cmbSelectStation.SelectedIndex + 1;
|
}
|
|
|
}
|
}
|