using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using POSV.Entity; using System.Threading.Tasks; using POSV.Forms; using POSV.Component; using POSV.Helper; using POSV.MessageEvent; namespace POSV.Tabs { [ToolboxItem(true)] public partial class TableMenuItem : AbstractTabItem { public TableMenuItem() { InitializeComponent(); this.BackColor = Color.Transparent; } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (this.DesignMode) return; this.tableArea.TableAreaCheckedChanged += OnTableAreaCheckedChanged; this.tableAttributeX.TableAttributeCheckedChanged += OnTableAttributeCheckedChanged; this.tableX.TableCheckedChanged += OnTableCheckedChanged; this.tableX.TableDoubleClick += OnTableDoubleClick; Task.Factory.StartNew(() => { this.Invoke(new Action(() => { PreLoadTable(this.tableArea.SelectedTableArea,this.tableAttributeX.SelectedTableAttribute); })); }); } public override void RefreshUi() { base.RefreshUi(); this.tableX.RefreshUi(); } private void OnTableAttributeCheckedChanged(object sender , TableAttributeEventArgs e) { PreLoadTable(this.tableArea.SelectedTableArea , e.Data); } private void OnTableAreaCheckedChanged(object sender , Component.TableAreaEventArgs e) { PreLoadTable(e.Data , this.tableAttributeX.SelectedTableAttribute); } private void OnTableCheckedChanged(object sender , Component.TableEventArgs e) { this.lblTableNO.Text = string.Format(this.lblTableNO.Tag.ToString() , e.Table.Name); } private void OnTableDoubleClick(object sender , Component.TableEventArgs e) { var table = e.Table; if(table != null) { //没有桌台使用信息,默认直接开台 if(table.TableExt == null) { OpenTable(table); } else { //更具桌台不同状态处理 switch (table.TableExt.TableStatus) { case TableStatus.空闲: { OpenTable(table); } break; case TableStatus.在用: { OrderDishes(table); } break; } } } } /// /// 点菜操作界面 /// private void OrderDishes(Table table) { MsgEvent.Send(Constant.TABLE_ORDER_DISHS_NOTIFY , table); } /// /// 开台操作界面 /// private void OpenTable(Table table) { var dialogForm = new OpenTableForm(table); dialogForm.AcceptButtonClick += (o , args) => { if (args.Action == TransparentAction.Accept && args.KeyCode == "accept") { var data = args.Data as Table; this.tableX.ChangedStyle(data); } }; dialogForm.CancelButtonClick += (o , args) => { }; var trans = new TransparentForm(this.FindForm() , .4 , dialogForm); trans.Show(this); } /// /// 预加载桌台信息 /// /// /// private void PreLoadTable(TableArea tableArea ,TableAttribute tableAttribute , KeyboardAction action = KeyboardAction.None) { try { var lists = new List(); string sql = SqlConstant.TableExtAll; //桌台人数选择 if (!Constant.ALL_TABLE_TAG.Equals(tableAttribute.Id)) { sql += string.Format(" and t.number {0} ",tableAttribute.Expression); } //桌台区域 if (!Constant.ALL_TABLE_TAG.Equals(tableArea.No)) { sql += string.Format(" and t.areaId = '{0}' ",tableArea.Id); } //桌台状态 var status = (TableStatus)tableAttribute.TableStatus; switch (status) { case TableStatus.在用: case TableStatus.预订: { sql += string.Format(" and e.tableStatus = {0} " , tableAttribute.TableStatus); } break; case TableStatus.空闲: { sql += string.Format(" and e.tableStatus is null "); } break; } using (var db = Global.Instance.OpenDataBase) { lists = db.Fetch
(sql); } this.tableX.PageNumber = 1; this.tableX.BindDataSource(lists , action); } catch (Exception ex) { LOGGER.Error(ex , "加载桌台信息异常"); } } } }