BlackVetal
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DevExpress.XtraEditors; using DevExpress.Data.Filtering; using DevExpress.Xpo; using XPO_OMLib; using XPO_OMLib.XPO; using XPO_Sbit2010; using SbitLib; namespace SbitMain { /// <summary> /// Класс описывает форму резервирования вагонов под суточные задания отгрузки /// </summary> public partial class XtraFormСуточноеЗаданиеВагоны : XtraFormOMBase { #region Поля private CurrencyManager _CurrencyManager_СуточноеЗадание; private CurrencyManager _CurrencyManager_Вагоны; private СуточноеЗадание_СуточноеЗадание _Current_СуточноеЗадание; private ТранспортДвижение_ЖурналВагонов _Current_Вагон; private ТранспортДвижение_ЖурналВагонов _вагон_Поиск = null; #endregion #region Конструкторы /// <summary> /// Конструктор /// </summary> public XtraFormСуточноеЗаданиеВагоны() { InitializeComponent(); } #endregion #region Методы /// <summary> /// Метод делает выборку прибытия вагонов за период, переданный в параметрах /// </summary> /// <param name="начало"></param> /// <param name="конец"></param> private void Get_ПрибытиеВагонов(DateTime начало, DateTime конец) { xpCollection_ПрибытиеВагонов.Criteria = new BetweenOperator("ДатаВремяПрибытия", начало.Date, конец.Date.AddDays(1).AddSeconds(-1)); } /// <summary> /// Метод инициализирует некоторые компоненты формы. /// В частности происходит привязка к менеджерам текущих позиций и обработка /// изменения текущей позиции при первоначальной загрузке. /// </summary> private void Init() { _CurrencyManager_СуточноеЗадание = this.BindingContext[xpCollection_СуточноеЗадание] as CurrencyManager; _CurrencyManager_СуточноеЗадание.CurrentChanged += new EventHandler(CurrencyManager_СуточноеЗадание_CurrentChanged); _CurrencyManager_Вагоны = this.BindingContext[xpCollection_ПрибытиеВагонов] as CurrencyManager; _CurrencyManager_Вагоны.CurrentChanged += new EventHandler(CurrencyManager_Вагоны_CurrentChanged); if (_CurrencyManager_СуточноеЗадание.Position >= 0) { _Current_СуточноеЗадание = _CurrencyManager_СуточноеЗадание.Current as СуточноеЗадание_СуточноеЗадание; IXPO_OMObject iXPO_OMObject = _Current_СуточноеЗадание as IXPO_OMObject; iXPO_OMObject.Changed += Current_СуточноеЗадание_Changed; } if (_CurrencyManager_Вагоны.Position >= 0) { _Current_Вагон = _CurrencyManager_Вагоны.Current as ТранспортДвижение_ЖурналВагонов; IXPO_OMObject iXPO_OMObject = _Current_Вагон as IXPO_OMObject; iXPO_OMObject.Changed += Current_Вагоны_Changed; } } #endregion #region События /// <summary> /// Метод при загрузке форме инициализирует некоторые элементы формы /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void XtraFormСуточноеЗаданиеВагоны_Load(object sender, EventArgs e) { Init(); // Присваиваем по умолчанию сегодняшнею дату для выбора суточного задания dateEdit_СуточноеЗадание.EditValue = DateTime.Today; // Присваиваем период выбора прибытия вагона за неделю dateEdit_НачалоПрибытия.EditValue = DateTime.Today.AddDays(-7); dateEdit_КонецПрибытия.EditValue = DateTime.Today; } /// <summary> /// При изменении даты данного элемента выбираем Суточные задания на новую дату /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dateEdit_СуточноеЗадание_EditValueChanged(object sender, EventArgs e) { // устанавливаем период выбора суточных заданий выбранный день DateTime begin = (DateTime)dateEdit_СуточноеЗадание.EditValue; DateTime end = (DateTime)dateEdit_СуточноеЗадание.EditValue; // устанавливаем критерий выбора для суточных заданий xpCollection_СуточноеЗадание.LoadingEnabled = true; xpCollection_СуточноеЗадание.Criteria = new BetweenOperator("Дата", begin.Date, end.Date.AddDays(1).AddMinutes(-1)); } /// <summary> /// При изменении даты начала периода выбора прибытия вагонов выбираем данные с новыми параметрами. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dateEdit_НачалоПрибытия_EditValueChanged(object sender, EventArgs e) { DateTime начало = (DateTime)dateEdit_НачалоПрибытия.EditValue; DateTime конец = DateTime.Today; if(dateEdit_КонецПрибытия.EditValue!=null) конец = (DateTime)dateEdit_КонецПрибытия.EditValue; if (начало > конец) конец = начало; Get_ПрибытиеВагонов(начало, конец); } /// <summary> /// При изменении даты конца периода выбора прибытия вагонов выбираем данные с новыми параметрами. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dateEdit_КонецПрибытия_EditValueChanged(object sender, EventArgs e) { DateTime начало = DateTime.Today; if (dateEdit_НачалоПрибытия.EditValue != null) начало = (DateTime)dateEdit_НачалоПрибытия.EditValue; DateTime конец = (DateTime)dateEdit_КонецПрибытия.EditValue; if (начало > конец) начало = конец; xpCollection_ПрибытиеВагонов.LoadingEnabled = true; Get_ПрибытиеВагонов(начало, конец); } /// <summary> /// При нажатии кнопки данный метод ставит вагон в резерв /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void itemButtonEdit_КнопкаРезервирования_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { DevExpress.XtraGrid.Views.Grid.GridView _view_Задание = gridControl_СуточноеЗадание.MainView as DevExpress.XtraGrid.Views.Grid.GridView; DevExpress.XtraGrid.Views.Grid.GridView _view_Вагон = gridControl_Вагоны.MainView as DevExpress.XtraGrid.Views.Grid.GridView; ТранспортДвижение_ЖурналВагонов прибытиеВагона = (ТранспортДвижение_ЖурналВагонов)_view_Вагон.GetFocusedRow(); СуточноеЗадание_СуточноеЗадание задание = null; ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов резерв = null; if (прибытиеВагона.ДатаУбытия != DateTime.MinValue) { MessageBox.Show("Данный вагон уже убыл со станции!", "Внимание!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Plus) { задание = (СуточноеЗадание_СуточноеЗадание)_view_Задание.GetFocusedRow(); резерв = xpCollection_ПрибытиеВагонов.Session.FindObject<ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов>( new GroupOperator(GroupOperatorType.And, new CriteriaOperator[] {new BinaryOperator("Oid_СуточноеЗадание", задание.Oid), new BinaryOperator("Oid_Вагона", прибытиеВагона.Oid)})); if (резерв == null) { резерв = new ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов(прибытиеВагона.Session); резерв.Oid_Вагона = прибытиеВагона; резерв.Oid_СуточноеЗадание = задание; резерв.ДатаВремяСоздания = DateTime.Now; резерв.Save(); прибытиеВагона.Резерв.Add(резерв); прибытиеВагона.ДатаРезерва = задание.Дата; прибытиеВагона.Save(); задание.Резерв.Add(резерв); задание.Save(); } } else if(e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Minus) { резерв = xpCollection_ПрибытиеВагонов.Session.FindObject<ТранспортДвижение_СуточноеЗадание_ПрибытиеВагонов>( new BinaryOperator("Oid_Вагона", прибытиеВагона.Oid)); if (резерв != null) { задание = резерв.Oid_СуточноеЗадание; прибытиеВагона.Резерв.Remove(резерв); прибытиеВагона.ДатаРезерва = DateTime.MinValue; прибытиеВагона.Save(); задание.Резерв.Remove(резерв); задание.Save(); } } } /// <summary> /// Выделяем желтым строки вагонов поставленные в резерв тукщему суточному заданию. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void view_Вагоны_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) { DevExpress.XtraGrid.Views.Grid.GridView _view_Задание = gridControl_СуточноеЗадание.MainView as DevExpress.XtraGrid.Views.Grid.GridView; DevExpress.XtraGrid.Views.Grid.GridView _view_вагоны = gridControl_Вагоны.MainView as DevExpress.XtraGrid.Views.Grid.GridView; СуточноеЗадание_СуточноеЗадание задание = (СуточноеЗадание_СуточноеЗадание)_view_Задание.GetFocusedRow(); ТранспортДвижение_ЖурналВагонов вагон = (ТранспортДвижение_ЖурналВагонов)_view_вагоны.GetRow(e.RowHandle); if (_вагон_Поиск != null) { try { if (вагон == _вагон_Поиск) { _view_вагоны.Appearance.OddRow.BackColor = Color.Red; _view_вагоны.Appearance.EvenRow.BackColor = Color.Red; } else { _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue; _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream; } } catch { _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue; _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream; } } else { try { if (задание.Резерв.BaseIndexOf(вагон.Резерв[0]) >= 0) { _view_вагоны.Appearance.OddRow.BackColor = Color.Yellow; _view_вагоны.Appearance.EvenRow.BackColor = Color.Yellow; } else { _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue; _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream; } } catch { _view_вагоны.Appearance.OddRow.BackColor = Color.AliceBlue; _view_вагоны.Appearance.EvenRow.BackColor = Color.MintCream; } } } #region CurrencyManager /// <summary> /// Обработчик события изменения текущей позиции суточного задания отгрузки - привязываем и отвязываем /// обработку события изменения строки при изменения позиции /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CurrencyManager_СуточноеЗадание_CurrentChanged(object sender, EventArgs e) { if (_Current_СуточноеЗадание != null) { IXPO_OMObject iXPO_OMObject = _Current_СуточноеЗадание as IXPO_OMObject; iXPO_OMObject.Changed -= Current_СуточноеЗадание_Changed; _Current_СуточноеЗадание = null; } if (_CurrencyManager_СуточноеЗадание.Position >= 0) { _Current_СуточноеЗадание = _CurrencyManager_СуточноеЗадание.Current as СуточноеЗадание_СуточноеЗадание; IXPO_OMObject iXPO_OMObject = _Current_СуточноеЗадание as IXPO_OMObject; iXPO_OMObject.Changed += Current_СуточноеЗадание_Changed; } gridControl_Вагоны.RefreshDataSource(); } /// <summary> /// Обработчик события изменения текущей позиции вагона - привязываем и отвязываем /// обработку события изменения строки при изменения позиции /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void CurrencyManager_Вагоны_CurrentChanged(object sender, EventArgs e) { if (_Current_Вагон != null) { IXPO_OMObject iXPO_OMObject = _Current_Вагон as IXPO_OMObject; iXPO_OMObject.Changed -= Current_Вагоны_Changed; _Current_Вагон = null; } if (_CurrencyManager_Вагоны.Position >= 0) { _Current_Вагон = _CurrencyManager_Вагоны.Current as ТранспортДвижение_ЖурналВагонов; IXPO_OMObject iXPO_OMObject = _Current_Вагон as IXPO_OMObject; iXPO_OMObject.Changed += Current_Вагоны_Changed; } } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Current_СуточноеЗадание_Changed(object sender, ObjectChangeEventArgs e) { gridControl_Вагоны.Refresh(); } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Current_Вагоны_Changed(object sender, ObjectChangeEventArgs e) { ////Отгрузка_ЖДНакладнаяПродукция d; //if (layoutControlGroup_Уборка.Visible) //{ // switch (e.PropertyName) // { // case @"ПлатаЗаПростойДок": // //advBandedGridView_Уборка.SetFocusedRowCellValue(colПлатаЗаПростойДок, // // (decimal)advBandedGridView_Уборка.GetFocusedRowCellValue(colПлатаЗаПростойДок) - (decimal)e.OldValue + (decimal)e.NewValue); // advBandedGridView_Уборка.RefreshData(); // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПлатаЗаПростойДок); // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colСтоимость1); // break; // case @"ПлатаЗаПростойФакт": // advBandedGridView_Уборка.RefreshData(); // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПлатаЗаПростойФакт); // break; // case @"Штраф": // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colШтраф2); // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colСтоимость1); // break; // case @"ПлатаЗаХранение": // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПлатаЗаХранение2); // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colСтоимость1); // break; // case @"ТипДокумента": // advBandedGridView_Уборка.RefreshRowCell(advBandedGridView_Уборка.FocusedRowHandle, colПростойДок); // break; // } //} } #endregion /// <summary> /// Метод осуществляет поиск вагона по введеному номеру в textedit /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void simpleButton_SeachVagon_Click(object sender, EventArgs e) { SortingCollection _sortingCollection = new SortingCollection(); _sortingCollection.Add(new SortProperty("ДатаВремяПрибытия", DevExpress.Xpo.DB.SortingDirection.Descending)); xpCollection_ПоискВагона.Sorting = _sortingCollection; _вагон_Поиск = xpCollection_ПоискВагона.Session.FindObject<ТранспортДвижение_ЖурналВагонов> (new BinaryOperator("НомерВагона", textEdit_SeachVagon.Text.Trim())); if (_вагон_Поиск != null) { //if (_вагон_Поиск.ДатаВремяПрибытия < (DateTime)dateEdit_НачалоПрибытия.EditValue) dateEdit_НачалоПрибытия.EditValue = _вагон_Поиск.ДатаВремяПрибытия.Date; //if (_вагон_Поиск.ДатаВремяПрибытия > (DateTime)dateEdit_КонецПрибытия.EditValue) dateEdit_КонецПрибытия.EditValue = _вагон_Поиск.ДатаВремяПрибытия.Date; } else { MessageBox.Show("Поиск не дал результатов. Попробуйте с новыми данными.", "Предупреждение!", MessageBoxButtons.OK, MessageBoxIcon.Information); } gridControl_Вагоны.MainView.RefreshData(); } /// <summary> /// Метод очищает строку поиска вагона и внутреннюю переменную _вагон_Поиск /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void simpleButton_Clear_SeachVagon_Click(object sender, EventArgs e) { textEdit_SeachVagon.Text = ""; _вагон_Поиск = null; gridControl_Вагоны.MainView.RefreshData(); } #endregion } } |