using DevExpress.XtraEditors;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.IO;
|
using System.Linq;
|
using System.Text;
|
using System.Windows.Forms;
|
|
namespace IStation.WinFrmUI.CalcErQu
|
{
|
public partial class SetPrjItemSpanTimeCtrl : XtraUserControl
|
{
|
public SetPrjItemSpanTimeCtrl()
|
{
|
InitializeComponent();
|
|
var anaSetting = IStation.AnaGlobalParas.Setting;
|
if (anaSetting == null)
|
return;
|
|
for (int i = 0;i< anaSetting.MaxPumpSwitchCountQ; i++)
|
{
|
_gridModels.Add(new CurrentViewModel() { Index = i+1 });
|
}
|
|
this.bindingSourceGrid.DataSource = _gridModels;
|
|
toggleSwitchStyle.IsOn = IStation.WinFrmUI.CalcErQu.Properties.Settings.Default.IsTimeBlockCtrl;
|
InitialTimeControl(IStation.WinFrmUI.CalcErQu.Properties.Settings.Default.IsTimeBlockCtrl);
|
|
lbl一台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(1);
|
lbl两台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(2);
|
lbl三台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(3);
|
lbl四台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(4);
|
lbl四台.AppearanceItemCaption.ForeColor = Color.White;
|
|
|
|
rangeDefinePanel.OnFreshPumpRunRange += ( ) =>
|
{
|
if(OnFreshPumpRunRange != null)
|
{
|
OnFreshPumpRunRange.Invoke( );
|
}
|
//_bindList.Clear();
|
//foreach(var item in list)
|
//{
|
// var vm = new CurrentViewModel( );
|
// vm.PumpNumber = item.PumpNumber;
|
|
|
// vm.StartH = item.StartTime.Hour;
|
// vm.StartM = item.StartTime.Minute;
|
// vm.EndH = item.EndTime.Hour;
|
// vm.EndM = item.EndTime.Minute;
|
|
// vm.StartDay = item.StartTime;
|
// vm.EndDay = item.EndTime;
|
|
// _bindList.Add(vm);
|
//}
|
//this.bindingSource1.DataSource = _bindList;
|
};
|
|
|
}
|
|
public class CurrentViewModel
|
{
|
public int Index { get; set; }
|
public string StartTime { get; set; }
|
public string EndTime { get; set; }
|
public int? OpenNumber { get; set; }
|
}
|
private BindingList<CurrentViewModel> _gridModels = new BindingList<CurrentViewModel>();
|
|
public Action OnFreshPumpRunRange = null;
|
|
public void InitialTimeBlock(int CalcSpaceMinute)
|
{
|
this.rangeDefinePanel.InitialTimeBlock(CalcSpaceMinute);
|
}
|
public Action<string, List<CalcModel.PumpRunRange>> OnRefreshData = null;
|
|
DateTime _anaDay;
|
internal void SetAnaDay(DateTime anaDay)
|
{
|
this._anaDay = anaDay;
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="anaDay"></param>
|
/// <param name="start"></param>
|
/// <param name="end"></param>
|
/// <param name="pumpCount"></param>
|
public void SetRangePumpCount(DateTime start, DateTime end, int pumpCount)
|
{
|
this.rangeDefinePanel.SetRangePumpCount(this._anaDay, start, end, pumpCount, true);
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="anaPrj"></param>
|
internal void SetRangePumpCount(CalcModel.AnaPrj anaPrj)
|
{
|
this._anaDay = anaPrj.StartTime.Date;
|
|
this.rangeDefinePanel.SetRangePumpCount(anaPrj);
|
}
|
|
|
#region 台数 按钮
|
private void lbl台数_MouseDown(object sender, MouseEventArgs e)
|
{
|
var labl = sender as DevExpress.XtraLayout.SimpleLabelItem;
|
labl.AppearanceItemCaption.BackColor = System.Drawing.Color.FromArgb(0, 0, 64);
|
labl.AppearanceItemCaption.ForeColor = Color.White;
|
}
|
|
private void lbl台数_MouseUp(object sender, MouseEventArgs e)
|
{
|
var labl = sender as DevExpress.XtraLayout.SimpleLabelItem;
|
|
if (labl == lbl一台)
|
{
|
lbl一台.AppearanceItemCaption.ForeColor = Color.Black;
|
lbl一台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(1);
|
}
|
else if (labl == lbl两台)
|
{
|
lbl两台.AppearanceItemCaption.ForeColor = Color.Black;
|
lbl两台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(2);
|
}
|
else if (labl == lbl三台)
|
{
|
lbl三台.AppearanceItemCaption.ForeColor = Color.Black;
|
lbl三台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(3);
|
}
|
else if (labl == lbl四台)
|
{
|
lbl四台.AppearanceItemCaption.ForeColor = Color.Black;
|
lbl四台.AppearanceItemCaption.BackColor = TimeSmallBlock.GetColor(4);
|
}
|
else
|
{
|
labl.AppearanceItemCaption.BackColor = Color.White;
|
labl.AppearanceItemCaption.ForeColor = System.Drawing.Color.FromArgb(0, 0, 64);
|
}
|
|
}
|
|
private void lbl全关_Click(object sender, EventArgs e)
|
{
|
rangeDefinePanel.SetSelctItemPumpCount(0);
|
}
|
|
private void lbl一台_Click(object sender, EventArgs e)
|
{
|
rangeDefinePanel.SetSelctItemPumpCount(1);
|
}
|
|
private void lbl两台_Click(object sender, EventArgs e)
|
{
|
rangeDefinePanel.SetSelctItemPumpCount(2);
|
}
|
|
private void lbl三台_Click(object sender, EventArgs e)
|
{
|
rangeDefinePanel.SetSelctItemPumpCount(3);
|
}
|
|
private void lbl四台_Click(object sender, EventArgs e)
|
{
|
rangeDefinePanel.SetSelctItemPumpCount(4);
|
}
|
|
private void lblReset_Click(object sender, EventArgs e)
|
{
|
|
}
|
|
private void lblEmpty_Click(object sender, EventArgs e)
|
{
|
ClearPumpRunRange();
|
}
|
|
private void lbl重选_Click(object sender, EventArgs e)
|
{
|
rangeDefinePanel.ClearSelect();
|
}
|
#endregion
|
private bool _isInitialTemplateList = false;
|
private void popupContainerEdit1_QueryPopUp(object sender, CancelEventArgs e)
|
{
|
if (!SettingsHelper.IsDesingMode())
|
{
|
if (_isInitialTemplateList)
|
return;
|
_isInitialTemplateList = true;
|
InitialTemplateList();
|
}
|
}
|
|
private void InitialTemplateList()
|
{
|
var folderPath = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "PrjItemSpanTimeTemplate");
|
if (!System.IO.Directory.Exists(folderPath))
|
{
|
return;
|
}
|
|
DirectoryInfo folder = new DirectoryInfo(folderPath);
|
listBoxControl1.Items.Clear();
|
|
foreach (FileInfo file in folder.GetFiles("*.json",
|
SearchOption.AllDirectories))
|
{
|
// 处理每个文件
|
this.listBoxControl1.Items.Add(file.Name);
|
}
|
}
|
|
private void LoadTemplate(string filePath)
|
{
|
if (!System.IO.File.Exists(filePath))
|
{
|
return;
|
}
|
|
//文件流读取
|
System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);
|
System.IO.StreamReader sr = new System.IO.StreamReader(fs, Encoding.GetEncoding("gb2312"));
|
var contents = sr.ReadToEnd();
|
sr.Close(); fs.Close();
|
|
var templates = JsonHelper.Json2Object<List<CalcModel.PumpRunRange>>(contents);
|
if (templates == null) { return; }
|
|
foreach(var template in templates)
|
{
|
template.StartTime = new DateTime(this._anaDay.Year, _anaDay.Month, _anaDay.Day,
|
template.StartTime.Hour, template.StartTime.Minute, 0);
|
template.EndTime = new DateTime(this._anaDay.Year, _anaDay.Month, _anaDay.Day,
|
template.EndTime.Hour, template.EndTime.Minute, 0);
|
if(template.EndTime< template.StartTime)
|
{
|
template.EndTime = template.EndTime.AddDays(1);
|
}
|
}
|
|
SetPumpRunRange( templates);
|
}
|
|
private void SaveAsTemplate()
|
{
|
var rootFolder = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(),
|
"PrjItemSpanTimeTemplate");
|
if (!System.IO.Directory.Exists(rootFolder))
|
{
|
System.IO.Directory.CreateDirectory(rootFolder);
|
}
|
InputTemplateNameDlg frm = new InputTemplateNameDlg();
|
if (frm.ShowDialog() != DialogResult.OK)
|
return;
|
|
List<CalcModel.PumpRunRange> values = GePumpRunRange();
|
if (values == null || values.Count == 0)
|
return;
|
var fileContents = JsonHelper.Object2Json(values);
|
|
|
var name = frm.TemplateName;
|
var fileName = System.IO.Path.Combine(rootFolder, name.Trim() + ".json");
|
if (System.IO.File.Exists(fileName))
|
{
|
System.IO.File.Delete(fileName);
|
}
|
StreamWriter streamWriter = new StreamWriter(fileName, false, System.Text.Encoding.GetEncoding("gb2312"));
|
|
streamWriter.Write(fileContents);
|
|
streamWriter.Flush();
|
streamWriter.Close();
|
|
MessageBox.Show("保存成功");
|
}
|
public List<CalcModel.PumpRunRange> GetRunRangeList(DateTime anaDay)
|
{
|
if (_isTimeBlockCtrl)
|
return this.rangeDefinePanel.GetRunRangeList(anaDay);
|
else
|
return GetRunRangeList4Grid(anaDay);
|
}
|
private List<CalcModel.PumpRunRange> GePumpRunRange()
|
{
|
if (_isTimeBlockCtrl)
|
return this.rangeDefinePanel.GetRunRangeList(this._anaDay);
|
else
|
return GetRunRangeList4Grid(this._anaDay);
|
}
|
|
private void SetPumpRunRange(List<CalcModel.PumpRunRange> ranges)
|
{
|
if(_isTimeBlockCtrl)
|
rangeDefinePanel.SetRangePumpCount(this._anaDay, ranges);
|
}
|
private void ClearPumpRunRange()
|
{
|
if (_isTimeBlockCtrl)
|
rangeDefinePanel.EmptyAllItem();
|
}
|
private void btn保存为模板_Click(object sender, EventArgs e)
|
{
|
SaveAsTemplate();
|
}
|
|
private void listBoxControl1_DoubleClick(object sender, EventArgs e)
|
{
|
if(listBoxControl1.SelectedValue == null) return;
|
|
var fileName = listBoxControl1.SelectedValue.ToString();
|
var folderPath = System.IO.Path.Combine(IStation.DataFolderHelper.GetRootPath(), "PrjItemSpanTimeTemplate");
|
if (!System.IO.Directory.Exists(folderPath))
|
{
|
return;
|
}
|
LoadTemplate(System.IO.Path.Combine(folderPath, fileName));
|
}
|
|
private void toggleSwitchStyle_Toggled(object sender, EventArgs e)
|
{
|
InitialTimeControl(toggleSwitchStyle.IsOn);
|
IStation.WinFrmUI.CalcErQu.Properties.Settings.Default.IsTimeBlockCtrl = toggleSwitchStyle.IsOn;
|
IStation.WinFrmUI.CalcErQu.Properties.Settings.Default.Save();
|
}
|
|
private bool _isTimeBlockCtrl = false;
|
private void InitialTimeControl(bool isTimeBlockCtrl)
|
{
|
this._isTimeBlockCtrl = isTimeBlockCtrl;
|
if (this._isTimeBlockCtrl)
|
{
|
lbl一台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
|
lbl两台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
|
lbl三台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
|
lbl四台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
|
lbl四台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
|
lbl全关.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
|
|
rangeDefinePanel.Dock = DockStyle.Fill;
|
rangeDefinePanel.Visible = true;
|
vGridControl1.Visible = false;
|
splitContainer1.Panel2Collapsed = true ;
|
}
|
else
|
{
|
lbl一台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
lbl两台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
lbl三台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
lbl四台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
lbl四台.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
lbl全关.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
|
|
vGridControl1.Dock = DockStyle.Fill;
|
vGridControl1.Visible = true;
|
rangeDefinePanel.Visible = false;
|
splitContainer1.Panel2Collapsed = false ;
|
}
|
}
|
|
public List<CalcModel.PumpRunRange> GetRunRangeList4Grid(DateTime anaDay)
|
{
|
if (_gridModels == null)
|
{
|
return null;
|
}
|
var anaSetting = IStation.AnaGlobalParas.Setting;
|
|
var startHour = anaSetting.StartHourPerDay;
|
var statTime = anaDay.AddHours(startHour);
|
|
List<CalcModel.PumpRunRange> listRange = new List<CalcModel.PumpRunRange>();
|
|
foreach (var item in _gridModels)
|
{
|
if (item.OpenNumber == null || item.OpenNumber <= 0 || item.OpenNumber > 4)
|
{
|
continue;
|
}
|
if (string.IsNullOrEmpty(item.StartTime))
|
{
|
continue;
|
}
|
if (string.IsNullOrEmpty(item.EndTime))
|
{
|
continue;
|
}
|
string st = string.Format("{0} {1}:00:00",
|
anaDay.ToString("yyyy-MM-dd "), item.StartTime);
|
if (item.StartTime.Contains(":"))
|
{
|
st = string.Format("{0} {1}:00",
|
anaDay.ToString("yyyy-MM-dd "), item.StartTime);
|
}
|
DateTime st_time;
|
if (!DateTime.TryParse(st, out st_time))
|
{
|
MessageBox.Show("时间格式不对");
|
return null;
|
}
|
|
DateTime ed_time;
|
if (item.EndTime == "24")
|
{
|
ed_time = anaDay.AddDays(1);
|
}
|
else
|
{
|
string ed = string.Format("{0} {1}:00:00",
|
anaDay.ToString("yyyy-MM-dd "), item.EndTime);
|
if (item.EndTime.Contains(":"))
|
{
|
ed = string.Format("{0} {1}:00",
|
anaDay.ToString("yyyy-MM-dd "), item.EndTime);
|
}
|
if (!DateTime.TryParse(ed, out ed_time))
|
{
|
MessageBox.Show("时间格式不对");
|
return null;
|
}
|
}
|
|
|
|
CalcModel.PumpRunRange lastSelBlck = new CalcModel.PumpRunRange()
|
{
|
PumpNumber = item.OpenNumber.Value,
|
StartTime = st_time,
|
EndTime = ed_time
|
};
|
listRange.Add(lastSelBlck);
|
}
|
|
|
|
|
return listRange;
|
}
|
|
|
|
private void vGridControl1_CellValueChanged(object sender, DevExpress.XtraVerticalGrid.Events.CellValueChangedEventArgs e)
|
{
|
var list = GetRunRangeList4Grid(DateTime.Today);
|
if (list == null || list.Count() == 0)
|
return;
|
runTimeRangePanel1.SetRangePumpCount(list);
|
}
|
}
|
}
|