private bool _close = false; //线程终止标志 #endregion Fields #region Constructors //构造函数 public SeatExpenseForm(CSeat seat, int _seat_length, bool _seatLock, bool _auto_seat_card, DAO _dao) { seatLock = _seatLock; auto_seat_card = _auto_seat_card; seat_length = _seat_length; dao = _dao; if (seatLock) { m_Seats.Add(dao.get_seat("text", seat.text)); } else { string cmd_str = "((chainId is null and text='" + seat.text + "') or (chainId is not null and chainId='" + seat.chainId + "'))" + @" and (status=2 or status=6 or status=7 or status=8)"; var seats = dao.get_seats(cmd_str); m_Seats.AddRange(seats); } var pars = new List<string>(); pars.Add("paying"); var vals = new List<string>(); vals.Add("True"); int count = m_Seats.Count; string update_str = @"update [Seat] set paying='True' where "; for (int i = 0; i < count; i++ ) { update_str += "text='" + m_Seats[i].text + "'"; if (i != count - 1) update_str += " or "; } if (!dao.execute_command(update_str)) { BathClass.printErrorMsg("手牌状态更新失败,如有超时浴资,请删除手牌重新载入"); } InitializeComponent(); }
//在使用会员卡和优惠券结账时,发送消息给摄像头进行录像 public static bool sendMessageToCamera(DAO dao, string systemId) { string cmd_str = "insert into [PayMsg](systemId, ip) values('" + systemId + "','" + PCUtil.getLocalIp() + "')"; if (!dao.execute_command(cmd_str)) { return false; } return true; }
//查找套餐 public static void find_combo(string con_str, string systemId, string text) { var db = new BathDBDataContext(con_str); var dao = new DAO(con_str); var orders = db.Orders.Where(x => x.systemId == systemId && x.deleteEmployee == null && !x.inputEmployee.Contains("电脑")); StringBuilder sb = new StringBuilder(); sb.Append("delete from [Orders] where systemId='" + systemId + "' and menu like '套餐%优惠%'"); sb.Append("update [Orders] set comboId=null, money=number*(select price from [Menu] where name=menu) "); sb.Append(@"where inputEmployee not like '%电脑%' and menu not like '套餐%优惠%' and systemId='"); sb.Append(systemId); sb.Append(@"' and deleteEmployee is null and comboId is not null "); var menus = db.Menu; var comboList = db.Combo.OrderByDescending(x => x.freePrice); List<int> ids = new List<int>(); foreach (Combo combo in comboList) { #region 消费满免项目 if (combo.priceType == "消费满免项目") { if (get_seat_expense_for_combo(db, combo, systemId) < combo.expenseUpTo) continue; var freeIds = BathClass.disAssemble(combo.freeMenuIds); var combo_menus = menus.Where(x => freeIds.Contains(x.id)).Select(x => x.name); foreach (var combo_menu in combo_menus) { var tmp_order = orders.FirstOrDefault(x => x.menu == combo_menu && !ids.Contains(x.id)); if (tmp_order == null) continue; sb.Append(" update [Orders] set comboId=" + combo.id + ",money=0 where id=" + tmp_order.id); ids.Add(tmp_order.id); } } #endregion #region 其他两种套餐形式:免项目、减金额 else { List<int> menuIds = disAssemble(combo.menuIds); var combo_menus = menus.Where(x => menuIds.Contains(x.id)).Select(x => x.name); var order_menus = orders.Where(x => !ids.Contains(x.id)).Select(x => x.menu); while (combo_menus.All(x => order_menus.Any(y => y == x))) { foreach (var combo_menu in combo_menus) { var tmp_order = orders.FirstOrDefault(x => x.menu == combo_menu && !ids.Contains(x.id)); sb.Append(" update [Orders] set comboId=" + combo.id + " where id=" + tmp_order.id); ids.Add(tmp_order.id); if (combo.priceType == "免项目") { var freeIds = BathClass.disAssemble(combo.freeMenuIds); var freeMenus = db.Menu.Where(x => freeIds.Contains(x.id)).Select(x => x.name); if (freeMenus.Contains(tmp_order.menu)) sb.Append(" update [Orders] set money=0 where id=" + tmp_order.id); } } if (combo.priceType == "减金额") { sb.Append("insert into [Orders](menu,text,systemId,number,inputTime,inputEmployee,paid,comboId,money)"); sb.Append(" values('套餐" + combo.id.ToString() + "优惠','"); sb.Append(text + "','" + systemId + "',1,getdate(),'套餐','False'," + combo.id +","+ (Convert.ToDouble(combo.price) - combo.originPrice).ToString() + ")"); } order_menus = orders.Where(x => !ids.Contains(x.id)).Select(x => x.menu); } } #endregion } if (!dao.execute_command(sb.ToString())) { BathClass.printErrorMsg("查找套餐失败"); return; } }
//对话框载入 private void OrderForm_Load(object sender, EventArgs e) { dao = new DAO(m_con_str); if (!dao.execute_command("update [Seat] set ordering='True' where text='" + m_Seat.text + "'")) { BathClass.printErrorMsg("手牌状态更新失败!"); return; } m_options = dao.get_options(); if (typeList.Count == 0) typeList = dao.get_catgories(null); //typeList = db.Catgory.Select(x => x.name).ToList(); dgvExpense.Columns[11].Visible = MConvert<bool>.ToTypeOrDefault(m_options.启用客房面板, false); inputBillId = MConvert<bool>.ToTypeOrDefault(m_options.录单输入单据编号, false); inputTechType = MConvert<bool>.ToTypeOrDefault(m_options.录单区分点钟轮钟, false); string local_ip = BathClass.get_local_ip(); stock = dao.get_Stock("select * from [Stock] where ips='"+local_ip+"'"); this.Invoke(new no_par_delegate(initial_ui), null); //MessageBox.Show((DateTime.Now - st).TotalMilliseconds.ToString()); }