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(); } } }