You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

189 lines
5.7 KiB
C#

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;
}
}
}
}
/// <summary>
/// 点菜操作界面
/// </summary>
private void OrderDishes(Table table)
{
MsgEvent.Send(Constant.TABLE_ORDER_DISHS_NOTIFY , table);
}
/// <summary>
/// 开台操作界面
/// </summary>
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);
}
/// <summary>
/// 预加载桌台信息
/// </summary>
/// <param name="sql"></param>
/// <param name="action"></param>
private void PreLoadTable(TableArea tableArea ,TableAttribute tableAttribute , KeyboardAction action = KeyboardAction.None)
{
try
{
var lists = new List<Table>();
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<Table>(sql);
}
this.tableX.PageNumber = 1;
this.tableX.BindDataSource(lists , action);
}
catch (Exception ex)
{
LOGGER.Error(ex , "加载桌台信息异常");
}
}
}
}