|
|
|
|
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 JwKdsV.Entity.OrderPackage;
|
|
|
|
|
using JwKdsV.Core;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
|
|
namespace JwKdsV.Component
|
|
|
|
|
{
|
|
|
|
|
public partial class OrderItemPanel : UserControl
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private ServiceOrderItem _item;
|
|
|
|
|
|
|
|
|
|
public bool isLast = false;
|
|
|
|
|
|
|
|
|
|
public OrderItemPanel()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void SetOrderItem(OrderType orderType, ServiceOrderItem item)
|
|
|
|
|
{
|
|
|
|
|
_item = item;
|
|
|
|
|
|
|
|
|
|
string name = item.ProductName;
|
|
|
|
|
//if (item.IsSuit == 3)
|
|
|
|
|
//{
|
|
|
|
|
// //套餐明细
|
|
|
|
|
// name = "[套]" + name;
|
|
|
|
|
//}
|
|
|
|
|
if (!string.IsNullOrEmpty(item.MakeDesc))
|
|
|
|
|
{
|
|
|
|
|
var makeColor = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_MAKECOLOR, "Red");
|
|
|
|
|
//name = string.Format("<br/><font color='{0}'>{1}</font>", makeColor, item.MakeDesc);
|
|
|
|
|
switch (orderType)
|
|
|
|
|
{
|
|
|
|
|
case OrderType.美团外卖:
|
|
|
|
|
case OrderType.饿了么:
|
|
|
|
|
string[] makeArray = item.MakeDesc.Split(',');
|
|
|
|
|
string tempMake = "";
|
|
|
|
|
foreach (string str in makeArray)
|
|
|
|
|
{
|
|
|
|
|
if (!str.Contains("餐盒费"))
|
|
|
|
|
{
|
|
|
|
|
tempMake = tempMake + str + ",";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (tempMake != null && tempMake.Length > 0)
|
|
|
|
|
{
|
|
|
|
|
tempMake = tempMake.Substring(0, tempMake.Length - 1);
|
|
|
|
|
}
|
|
|
|
|
this.makeLabel.Text = ToSBC(tempMake);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
this.makeLabel.Text = ToSBC(item.MakeDesc);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
this.makeLabel.ForeColor = ColorTranslator.FromHtml(makeColor);
|
|
|
|
|
this.makeLabel.Visible = true;
|
|
|
|
|
this.makeLabel.WordWrap = true;
|
|
|
|
|
}
|
|
|
|
|
this.nameLabel.Text = name;
|
|
|
|
|
this.nameLabel.WordWrap = true;
|
|
|
|
|
|
|
|
|
|
//var names = StringHelper.WrapText2(name, this.nameLabel.Width, this.nameLabel.Width, this.nameLabel.Font);
|
|
|
|
|
//this.nameLabel.Text = string.Join(System.Environment.NewLine, names);
|
|
|
|
|
|
|
|
|
|
if (item.Quantity>0) {
|
|
|
|
|
this.numLabel.Text = string.Format("×{0}", item.Quantity);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.numLabel.Text = "";
|
|
|
|
|
}
|
|
|
|
|
//划菜临时标识,特殊颜色显示
|
|
|
|
|
if (_item.HuacaiTempSign == 1)
|
|
|
|
|
{
|
|
|
|
|
var huadanColor = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_HUADANCOLOR);
|
|
|
|
|
this.BackColor = ColorTranslator.FromHtml(huadanColor);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RefreshHeight();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// 转全角的函数(SBC case)
|
|
|
|
|
///
|
|
|
|
|
///任意字符串
|
|
|
|
|
///全角字符串
|
|
|
|
|
///
|
|
|
|
|
///全角空格为12288,半角空格为32
|
|
|
|
|
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
|
|
|
|
|
///
|
|
|
|
|
public static string ToSBC(string input)
|
|
|
|
|
{
|
|
|
|
|
return input.Replace(",",",");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void RefreshHeight()
|
|
|
|
|
{
|
|
|
|
|
//重新计算高度
|
|
|
|
|
Graphics g = this.CreateGraphics();
|
|
|
|
|
|
|
|
|
|
Size preferredSize = g.MeasureString(this.nameLabel.Text, this.nameLabel.Font).ToSize();
|
|
|
|
|
|
|
|
|
|
var rowNum = preferredSize.Width / this.nameLabel.Width;
|
|
|
|
|
var more = preferredSize.Width % this.nameLabel.Width;
|
|
|
|
|
if (more > 0)
|
|
|
|
|
{
|
|
|
|
|
rowNum++;
|
|
|
|
|
}
|
|
|
|
|
if (this.makeLabel.Visible)
|
|
|
|
|
{
|
|
|
|
|
Size makeSize = g.MeasureString(this.makeLabel.Text, this.makeLabel.Font).ToSize();
|
|
|
|
|
var makeNum = makeSize.Width / this.makeLabel.Width;
|
|
|
|
|
var makeMore = makeSize.Width % this.makeLabel.Width;
|
|
|
|
|
if (makeMore > 0)
|
|
|
|
|
{
|
|
|
|
|
makeNum++;
|
|
|
|
|
}
|
|
|
|
|
this.makeLabel.Height = makeSize.Height * makeNum;
|
|
|
|
|
|
|
|
|
|
rowNum += makeNum;
|
|
|
|
|
}
|
|
|
|
|
var realHeight = (preferredSize.Height + 2) * rowNum;
|
|
|
|
|
if (realHeight > this.Height)
|
|
|
|
|
{
|
|
|
|
|
this.Height = realHeight;
|
|
|
|
|
}
|
|
|
|
|
g.Dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 更新超时UI
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void RefreshTimeOut()
|
|
|
|
|
{
|
|
|
|
|
if(_item != null)
|
|
|
|
|
{
|
|
|
|
|
switch (Global.Instance.kdsCategory)
|
|
|
|
|
{
|
|
|
|
|
case POSV.Common.KDSCategory.厨显:
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(_item.HuacaiTime) && _item.MakeDuration > 0)
|
|
|
|
|
{
|
|
|
|
|
var timeoutWarn = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_TIMEOUTWARN, "true");
|
|
|
|
|
if(timeoutWarn == "true")
|
|
|
|
|
{
|
|
|
|
|
var warnColor = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_ONEWARNCOLOR, "Red");
|
|
|
|
|
var startDate = DateTime.Now;
|
|
|
|
|
DateTime.TryParse(_item.SaleDate, out startDate);
|
|
|
|
|
if(startDate.AddMinutes(_item.MakeDuration).CompareTo(DateTime.Now) < 0)
|
|
|
|
|
{
|
|
|
|
|
if (this.IsDisposed || !this.IsHandleCreated) return;
|
|
|
|
|
this.Invoke(new Action(() =>
|
|
|
|
|
{
|
|
|
|
|
this.ForeColor = ColorTranslator.FromHtml(warnColor);
|
|
|
|
|
//this.BackColor = ColorTranslator.FromHtml(warnColor);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case POSV.Common.KDSCategory.出品:
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(_item.ChupinTime) && _item.ChupinDuration > 0 && !string.IsNullOrEmpty(_item.HuacaiTime))
|
|
|
|
|
{
|
|
|
|
|
var timeoutWarn = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_TIMEOUTWARN, "true");
|
|
|
|
|
if (timeoutWarn == "true")
|
|
|
|
|
{
|
|
|
|
|
var warnColor = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_ONEWARNCOLOR, "Red");
|
|
|
|
|
var startDate = DateTime.Now;
|
|
|
|
|
DateTime.TryParse(_item.HuacaiTime, out startDate);
|
|
|
|
|
if (startDate.AddMinutes(_item.ChupinDuration).CompareTo(DateTime.Now) < 0)
|
|
|
|
|
{
|
|
|
|
|
if (this.IsDisposed || !this.IsHandleCreated) return;
|
|
|
|
|
this.Invoke(new Action(() =>
|
|
|
|
|
{
|
|
|
|
|
this.ForeColor = ColorTranslator.FromHtml(warnColor);
|
|
|
|
|
//this.BackColor = ColorTranslator.FromHtml(warnColor);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OrderItemPanel_Paint(object sender, PaintEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!isLast)
|
|
|
|
|
{
|
|
|
|
|
var pen = new Pen(Color.DarkGray);
|
|
|
|
|
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
|
|
|
|
|
e.Graphics.DrawLine(pen, 2, this.Height - 1, this.Width - 2, this.Height - 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void OnFontChanged(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (this.Font.Size > 30)
|
|
|
|
|
{
|
|
|
|
|
this.numLabel.Font = new Font("宋体", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); ;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.numLabel.Font = this.Font;
|
|
|
|
|
}
|
|
|
|
|
this.nameLabel.Font = this.Font;
|
|
|
|
|
this.makeLabel.Font = this.Font;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// label点击
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void OnThisClick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if(_item.HuacaiTempSign == 0)
|
|
|
|
|
{
|
|
|
|
|
_item.HuacaiTempSign = 1;
|
|
|
|
|
lock (Global.Instance.SyncLock)
|
|
|
|
|
{
|
|
|
|
|
using(var db = Global.Instance.OpenDataBase)
|
|
|
|
|
{
|
|
|
|
|
db.Execute(string.Format("update pos_order_item set huacaiTempSign = 1 where id = '{0}';", _item.Id));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var huadanColor = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_HUADANCOLOR);
|
|
|
|
|
this.BackColor = ColorTranslator.FromHtml(huadanColor);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|