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.Core;
using JwKdsV.Core.MessageEvent;
using JwKdsV.Entity.OrderPackage;
using JwKdsV.Core.Utils;
using NLog;
//using System.Management;
//using System.Net;
//using System.IO;
//using System.Runtime.InteropServices;
//using System.Web;
namespace JwKdsV.Component
{
public partial class OrderPanel : UserControl
{
private static ILogger logger = NLog.LogManager.GetCurrentClassLogger();//Yao 2023-06-21 增加日志
//==============================Yao 2023-06-16 读取文件使用
//string str;
//string strOne;
//int ip_exist = 0;
//[DllImport("kernel32")]
//private static extern int GetPrivateProfileString(
// string lpAppName,
// string lpKeyName,
// string lpDefault,
// StringBuilder lpReturnedString,
// int nSize,
// string lpFileName);
//public string ContentReader(string area, string key, string def)
//{
// StringBuilder stringBuilder = new StringBuilder(1024);
// GetPrivateProfileString(area, key, def, stringBuilder, 1024, str);
// return stringBuilder.ToString();
//}
//[DllImport("kernel32")]
//private static extern long WritePrivateProfileString(
// string mpAppName,
// string mpKeyName,
// string mpDefault,
// string mpFileName);
//string kds_print_ip;
//string kds_print_ip1;
//string kds_print_ip2;
//string kds_print_ip3;
//string kds_print_ip4;
//string kds_print_ip5;
//string kds_print_ip6;
//string kds_print_open = "0";
//string kds_print_number = "1";
//string kds_WaiDai_Print = "0";
//===================================================
private DateTime startDate;
public OrderPanel()
{
InitializeComponent();
}
public OrderPanel(ServiceOrder order, int currentPageNum)
{
InitializeComponent();
Order = order;
CurrentPageNum = currentPageNum;
}
public void RefreshPageInfo(int totalPageNum)
{
TotalPageNum = totalPageNum;
//标题 桌号+单号
StringBuilder bs = new StringBuilder();
if (totalPageNum > 1)
{
//大于1页,显示页编码
bs.Append(string.Format("({0}/{1}) ", CurrentPageNum, totalPageNum));
}
//营业模式
var orderType = Order.OrderType;
if (Order.Caution != null && !"".Equals(Order.Caution))
{
if (Order.Caution.IndexOf("收餐人隐私号") >= 0)
{
string caution = Order.Caution.Substring(0, Order.Caution.IndexOf("收餐人隐私号"));
if (caution != null && !"".Equals(caution))
{
this.label1.Text = caution;
this.label1.Visible = true;
}
else {
this.label1.Text = "";
this.label1.Visible = false;
}
}
else {
this.label1.Text = Order.Caution.Replace(",",",");
this.label1.Visible = true;
}
}
else {
this.label1.Visible = false;
}
switch (orderType) {
case OrderType.堂食:
case OrderType.餐桌:
case OrderType.外带:
case OrderType.电话外卖:
this.label2.Visible = false;
this.label2.ForeColor = Color.White;
this.label2.Text = "";
break;
case OrderType.微信点餐:
this.label2.Visible = true;
this.label2.ForeColor = Color.Green;
//Yao 2023-06-23
if (Order.OrderNo[0] == 'T')
this.label2.Text = "微信堂食" + "\r\n";//微信堂食
else if (Order.OrderNo[0] == 'D')
this.label2.Text = "微信外带" + "\r\n";//微信外带
else
this.label2.Text = orderType.ToString();
break;
case OrderType.百度外卖:
break;
case OrderType.美团外卖:
this.label2.Visible = true;
this.label2.ForeColor = Color.Red;
this.label2.Text = orderType.ToString();
break;
case OrderType.饿了么:
this.label2.Visible = true;
this.label2.ForeColor = Color.Blue;
this.label2.Text = orderType.ToString();
break;
}
//桌号
var showDeskNo = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_ORDERSHOWDESKNO, "true");
if (showDeskNo == "true")
{
logger.Info("当前桌号:{0}",Order.TableNo);
//2023/06/21 Yao 更改显示为A01-A18等
//if (char.IsDigit(Order.TableNo[0]))
//{
// int number = Convert.ToInt16(Order.TableNo);
// if (number <= 54)
// bs.Append(string.Format("桌:{0}", HsPrinter.Desk_ChuPing_Number_Data[number]));//2023/05/24 Yao
// else
// bs.Append(string.Format("桌:{0}", " "));
//}
//else if (char.IsLetter(Order.TableNo[0]) && (Order.TableNo[0] == 'A' || Order.TableNo[0] == 'B' || Order.TableNo[0] == 'C'))
//{
// bs.Append(string.Format("桌:{0}", Order.TableNo));
//}
bs.Append(string.Format("桌:{0}", Order.TableNo));
}
//单号
var enableOrderNo = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_ENABLE_ORDERNO, "true");
var ticketNo = string.Empty;
if (enableOrderNo == "true")
{
ticketNo = Order.OrderNo;
}
else
{
ticketNo = KdsBusiness.TicketNoDisplay(Order.TradeNo);
}
switch (orderType)
{
case OrderType.堂食:
case OrderType.餐桌:
case OrderType.外带:
case OrderType.电话外卖:
bs.Append(string.Format(" 单:{0}{1}", Order.PosName, ticketNo));
break;
case OrderType.微信点餐:
bs.Append(string.Format(" 单:{0}", ticketNo));
break;
case OrderType.百度外卖:
bs.Append(string.Format(" 单:{0}", ticketNo));
break;
case OrderType.美团外卖:
bs.Append(string.Format(" 单:{0}", ticketNo));
break;
case OrderType.饿了么:
bs.Append(string.Format(" 单:{0}", ticketNo));
break;
}
switch (Global.Instance.kdsCategory)
{
case POSV.Common.KDSCategory.厨显:
{
if (string.IsNullOrEmpty(Order.Items[0].HuacaiTime))
{
if (CurrentPageNum == totalPageNum)
{
this.chudanLabel.Text = "出单";
this.chudanLabel.Visible = true;
}
else
{
this.chudanLabel.Visible = false;
}
}
else
{
this.chudanLabel.Text = "已出单";
this.chudanLabel.Visible = true;
this.orderTimeLabel.Visible = false;
bs.Append("\n" + Order.Items[0].HuacaiTime);
}
}
break;
case POSV.Common.KDSCategory.出品:
{
if (string.IsNullOrEmpty(Order.Items[0].ChupinTime))
{
if (CurrentPageNum == totalPageNum)
{
this.chudanLabel.Text = "出单";
this.chudanLabel.Visible = true;
}
else
{
this.chudanLabel.Visible = false;
}
}
else
{
this.chudanLabel.Text = "已出单";
this.orderTimeLabel.Visible = false;
bs.Append("\n" + Order.Items[0].ChupinTime);
}
}
break;
}
this.infoLabel.Text = bs.ToString();
}
///
/// 关联的订单
///
public ServiceOrder Order { get; set; }
///
/// 当前页
///
public int CurrentPageNum { get; set; }
///
/// 总页数
///
public int TotalPageNum { get; set; }
///
/// 显示订单项
///
///
///
public int InitOrderItem(int start)
{
//营业模式
var orderType = Order.OrderType;
if (Order.Caution != null && !"".Equals(Order.Caution))
{
if (Order.Caution.IndexOf("收餐人隐私号") >= 0)
{
string caution = Order.Caution.Substring(0, Order.Caution.IndexOf("收餐人隐私号"));
if (caution != null && !"".Equals(caution))
{
this.label1.Visible = true;
}
else
{
this.label1.Visible = false;
}
}
else
{
this.label1.Visible = true;
}
}
else
{
this.label1.Visible = false;
}
switch (orderType)
{
case OrderType.堂食:
case OrderType.餐桌:
case OrderType.外带:
case OrderType.电话外卖:
this.label2.Visible = false;
break;
case OrderType.微信点餐:
this.label2.Visible = true;
break;
case OrderType.百度外卖:
break;
case OrderType.美团外卖:
this.label2.Visible = true;
break;
case OrderType.饿了么:
this.label2.Visible = true;
break;
}
var items = Order.Items;
int num = start;
OrderItemPanel lastPan = null;
int useHeight = 0;
for (; num < items.Count; num++)
{
var item = items.ElementAt(num);
var pan = new OrderItemPanel();
pan.Width = itemsPanel.Width;
pan.Dock = DockStyle.Top;
pan.Font = this.PanelFont;
pan.SetOrderItem(orderType, item);
useHeight += pan.Height;
if(useHeight <= this.itemsPanel.Height)
{
this.itemsPanel.Controls.Add(pan);
pan.BringToFront();
lastPan = pan;
}
else
{
//超出可显示区域,不在进行
break;
}
}
if(lastPan != null)
{
lastPan.isLast = true;
}
return num;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
switch (Global.Instance.kdsCategory)
{
case POSV.Common.KDSCategory.厨显:
{
if (!string.IsNullOrEmpty(Order.Items[0].HuacaiTime))
{
return;
}
}
break;
case POSV.Common.KDSCategory.出品:
{
if (!string.IsNullOrEmpty(Order.Items[0].ChupinTime))
{
return;
}
}
break;
}
RefreshTimer();
}
///
/// 外围负责定时刷新
///
public void RefreshTimer()
{
if (this.orderTimeLabel.Visible)
{
//以下单时间开始计时
startDate = Convert.ToDateTime(Order.SaleDate);
var span = DateTime.Now.Subtract(startDate);
if (this.IsDisposed || !this.IsHandleCreated) return;
this.Invoke(new Action(() =>
{
int minutes = span.Hours * 60 + span.Minutes;
int seconds = span.Seconds;
this.orderTimeLabel.Text = string.Format("{0}:{1}",
minutes < 10 && minutes >= 0 ? "0" + minutes : minutes.ToString(),
seconds < 10 && seconds >= 0 ? "0" + seconds : seconds.ToString());
foreach(var control in this.itemsPanel.Controls)
{
if(control is OrderItemPanel)
{
var pan = control as OrderItemPanel;
pan.RefreshTimeOut();
}
}
}));
}
}
private Font _font = Constant.BIG_FONT;
[Category("杂项"), Description("字体")]
public Font PanelFont
{
get
{
return this._font;
}
set
{
this._font = value;
//this.chudanLabel.Font = this._font;
//限制显示时间的最大字体
this.orderTimeLabel.Font = Constant.BIG_FONT;
this.infoLabel.Font = Constant.BIG_FONT;
this.panel1.Font = this._font;
this.itemsPanel.Font = this._font;
foreach (var control in this.itemsPanel.Controls)
{
if (control is OrderItemPanel)
{
var item = control as OrderItemPanel;
item.Font = this._font;
}
}
}
}
///
/// 点击出单
///
///
///
private void OnChudaClick(object sender, EventArgs e)
{
switch (Global.Instance.kdsCategory)
{
case POSV.Common.KDSCategory.厨显:
{
if (!string.IsNullOrEmpty(Order.Items[0].HuacaiTime))
{
return;
}
}
break;
case POSV.Common.KDSCategory.出品:
{
if (!string.IsNullOrEmpty(Order.Items[0].ChupinTime))
{
return;
}
}
break;
}
//只有最后一页才允许出单
if(CurrentPageNum != TotalPageNum)
{
return;
}
//判断是否需要确认
var chupin = Global.Instance.GlobalConfigStringValue(ConfigConstant.CONFIG_BUSINESS_CHUPINCONFIRM);
//if(chupin == "true")
//{
// if(MessageBox.Show("确认出品?", "出品确认", MessageBoxButtons.OKCancel) == DialogResult.OK)
// {
// Chupin();
// }
//}
//else
//{
// Chupin();
//}
//2023/05/24 Yao
if (chupin == "true")
{
Chupin();
}
else
{
//Yao 2023-06-24 增加打出品单
Chupin();
}
}
///
/// 出品
///
private void Chupin()
{
MsgEvent.Send(Constant.ORDERCHUPIN, this);
}
private void Qucan()
{
//Yao 2023-08-05 增加打出品单
MsgEvent.Send(Constant.CALLORDERTTS, this);
}
private void JiaoHaoLabel_Click(object sender, EventArgs e)
{
Qucan();
}
}
}