using Newtonsoft.Json; using Newtonsoft.Json.Linq; using POSV.Entity; using POSV.Helper; using POSV.Proxy.Base; using POSV.Proxy.Common; using POSV.Proxy.GuoPan.Entity; using POSV.ServiceCenter; using POSV.ShoppingCart; using POSV.Utils; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; namespace POSV.Proxy.GuoPan { public class GuoPanProxy : ProxyBase { #region DLL 初始化 [DllImport("GuoPAPI.dll")] private static extern int apiInit(string msid, string ApiKey, int handle, string extention); [DllImport("GuoPAPI.dll")] private static extern int apiCall(int msgid); [DllImport("GuoPAPI.dll")] private static extern int apiClose(); public static string msid = "45113"; public static string ApiKey = "f89520ec88df08b2effe27656534278156d76acf"; private const string extention = ""; #endregion /// /// 初始化果盘DLL /// /// /// /// public static Tuple ApiInit(string _msid, string _ApiKey, int ParenthWnd) { try { var _en = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER, false);//禁止使用; if (_en) { return new Tuple(true, "已设置禁止使用"); } //果盘初始化前,先调用一次apiClose接口 apiClose(); msid = _msid; ApiKey = _ApiKey; var _data = apiInit(msid, _ApiKey, ParenthWnd, extention); if (_data != 1) { var _info = GetData(1.ToString()); return new Tuple(false, _info.info); } else { return new Tuple(true, ""); } } catch (Exception ex) { LOGGET.Error(ex); return new Tuple(false, ex.Message); } } /// /// 接单 /// /// /// public Tuple ConfirmOrder(DoOrder _doOrder) { //zhangy 2020-03-14 Add 订单保存数据库后,要修改isHaveUpLoadTicket=true bool isException = false; try { GuoPanRequest guoPan = new GuoPanRequest(); guoPan.action = new Actions() { action = "do_confirm" }; guoPan.get = new ConfirmGetRequest() { id = _doOrder.id, bzid = _doOrder.id, state = "2", table = _doOrder.table }; guoPan.post = new ConfirmPostRequest() { info = "", hint = "", rider_phone = _doOrder.rider_phone, rider_name = _doOrder.rider_phone, package_num = _doOrder.package_num }; var _data = Request(guoPan.ToJson(), FunctionType.接单); if (!_data.Item1) { return new Tuple(false, _data.Item2); } if (_data.Item3.status.Equals("1")) { return new Tuple(true, "成功"); } else { return new Tuple(false, _data.Item3.info); } } catch (Exception ex) { //有异常发生 isException = true; LOGGET.Error(ex); return new Tuple(false, ex.Message); } finally { //没有异常发生 if (!isException) { //更新是否有订单需要上传的状态 Global.isHaveUpLoadTicket = true; Global.isHaveBurdenTicket = true; Global.isHaveCenterTicket = true; } } } /// /// 拒单 /// /// /// public Tuple CancelOrder(DoOrder _doOrder) { try { GuoPanRequest guoPan = new GuoPanRequest(); guoPan.action = new Actions() { action = "do_cancel" }; guoPan.get = new CancelRequest() { id = _doOrder.id, op = Global.Instance.Worker.No }; var _data = Request(guoPan.ToJson(), FunctionType.拒单); if (!_data.Item1) { return new Tuple(false, _data.Item2); } if (_data.Item3.status.Equals("1")) { return new Tuple(true, "成功"); } else { return new Tuple(false, _data.Item3.info); } } catch (Exception ex) { LOGGET.Error(ex); return new Tuple(false, ex.Message); } } public Tuple IsConfirm(string _id) { try { using (var _db = Global.Instance.OpenDataBase) { var _sql = string.Format("select * from pos_order where tradeNo = '{0}'", _id); var _data = _db.FirstOrDefault(_sql); if (_data == null) { return new Tuple(false, ""); } else { return new Tuple(true, ""); } } } catch (Exception ex) { LOGGET.Error(ex); return new Tuple(false, ex.Message); } } /// /// 获取订单明细 /// /// /// public Tuple SelectOrder(string _id) { try { GuoPanRequest guoPan = new GuoPanRequest(); guoPan.action = new Actions() { action = "do_get_order" }; guoPan.get = new GetOrderRequest() { id = _id }; var _data = Request(guoPan.ToJson(), FunctionType.订单明细); if (!_data.Item1) { return new Tuple(false, _data.Item2, null); } if (_data.Item3.status.Equals("1")) { return new Tuple(true, "成功", _data.Item3); } else { return new Tuple(false, "", null); } } catch (Exception) { throw; } } /// /// 获取某天数据 /// /// public Tuple SelectData(string _date) { try { if (string.IsNullOrEmpty(_date)) { _date = DateTime.Now.ToString("yyyyMMdd"); } GuoPanRequest guoPan = new GuoPanRequest(); guoPan.action = new Actions() { action = "do_list_bydate" }; guoPan.get = new ListOrderRequest() { date = _date }; var _data = Request(guoPan.ToJson(), FunctionType.当天订单); if (!_data.Item1) { return new Tuple(false, _data.Item2, null); } if (_data.Item3.status.Equals("1")) { return new Tuple(true, "成功", _data.Item3); } else { var _info = GetData(1.ToString()); if (_info.info.Contains("过期")) { return new Tuple(false, _info.info, null); } return new Tuple(false, _data.Item3.info, null); } } catch (Exception ex) { LOGGET.Error(ex); LOGGET.Error(ex.HelpLink); return new Tuple(false, ex.Message, null); } } /// ///数据转换 /// /// /// public Tuple ToOrderData(DoOrder doOrder) { try { //复制 DoOrder _doOrder = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(doOrder)); OrderObject _order = new OrderObject(); _order.AddPoint = 0; _order.Address = _doOrder.addr; _order.AftPoint = 0; _order.Amount = (_doOrder.list.Sum(f => f.amt) + _doOrder.other_pay_item.Sum(f => f.amt)); _order.ChangeAmount = 0; _order.CreateDate = _doOrder.time; _order.CreateUser = Global.Instance.Worker.CreateUser; _order.DeviceName = DeviceUtils.Instance.ComputerName; _order.Id = IdWorkerUtils.Instance.NextId(); _order.IpAddress = DeviceUtils.Instance.IPAddress;//本地IP地址 _order.IsMember = 0; _order.MacAddress = DeviceUtils.Instance.MacAddress;//MAC地址 _order.ObjectId = ObjectId.GenerateNewStringId(); _order.TradeNo = _doOrder.id; _order.OrderNo = _doOrder.srcnum.Split('#')[1]; _order.OrderStatus = OrderStatus.已完成; _order.OrderType = OrderType.美团外卖; _order.OrgTradeNo = ""; _order.PaidAmount = _order.Amount; _order.PaymentStatus = OrderPaymentStatus.已付款; int i = 0; bool _Ps = true; //果盘订单是否包含配送费用 bool otherWaimaiSet = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_MEITUANEXPRESSCOST, false); if (otherWaimaiSet) { var _ps = _doOrder.other_pay_item.FirstOrDefault(f => f.name.Equals("配送费")); if (_ps != null) { OrdetItem ordet = new OrdetItem(); ordet.id = "1003"; ordet.memo = ""; ordet.name = _ps.name; ordet.price = _ps.price; ordet.amt = _ps.amt; ordet.dgid = "1003"; ordet.qty = _ps.qty; ordet.refid = "1003"; ordet.unit = ""; _doOrder.list.Add(ordet); } } foreach (var _item in _doOrder.list) { ProductExt product = null; if (product == null)//找不到商品跳过 { product = new ProductExt(); product.Chuda = "";//厨打ID product.ChudaFlag = "1";//是否厨打 product.Chupin = "";//出品ID product.ChupinFlag = "1";//是否出品 product.ChuDaLabel = string.Empty;//厨打标签ID product.ChuDaLabelFlag = "0";//是否厨打标签 product.KdsFlag = 1; product.Chuxian = "";//厨显ID product.ChuxianFlag = "1";//是否厨显 product.ChuxianTime = 0;//厨显超时时间 product.CurrentFlag = 0;//是否可以议价 product.DiscountFlag = 0;//是否可折扣 product.GiveFlag = 0;//允许赠送 product.LabelPrintFlag = 1;//标签打印 product.MebDiscountFlag = 0;//会员折上折 product.MinPrice = 0.00M;//最低售价 product.Name = _item.name;//商品名称 //product.Id = string.Format("{0}", _item.dgid);//商品ID //zhangy 2020-04-02 Add 果盘订单无法获取到productId,通过Hash算法根据品名生成ID,确保分类统计的正确性 product.Id = HashUtils.Hash1(string.IsNullOrEmpty(product.Name) ?"":product.Name)+""; product.No = string.Format("{0}", _item.dgid);//商品编号 product.UnitId = "0";//商品单位ID product.UnitName = "份";//商品单位名称 product.PromotionFlag = 0;//是否允许促销 product.ShortName = _item.name;//简称 product.SpecId = string.Format("{0}", _item.id);//规格ID product.SuitFlag = 0; product.StockFlag = 0;//是否管理库存 product.TapleFlag = 0;//是否主食 product.TypeId = "4";//商品类别ID product.TypeName = "美团菜品";//商品类别名称 product.WeighFlag = 0;//是否称重 } OrderItem order = new OrderItem(); order.Id = IdWorkerUtils.Instance.NextId(); order.Amount = decimal.Parse(_item.amt + _item.rebate);//单品消费 order.Chuda = product.Chuda;//厨打ID order.ChudaFlag = product.ChudaFlag;//是否厨打 order.ChudaQty = 0;//厨打次数 order.Chupin = product.Chupin;//出品ID order.ChupinFlag = product.ChupinFlag;//是否出品 order.ChupinQty = 0;//出品次数 order.ChuDaLabel = product.ChuDaLabel;//厨打标签 order.ChuDaLabelFlag = product.ChuDaLabelFlag;//是否厨打标签 order.ChuDaLabelQty = 0;//厨打标签数量 order.Chuxian = product.Chuxian;//厨显ID order.ChuxianFlag = product.ChuxianFlag;//是否厨显 order.ChuxianQty = 0;//厨显次数 order.ChuxianTime = product.ChuxianTime;//厨显超时时间 order.KdsChupin = product.KdsChupin;//厨显出品ID order.KdsChupinFlag = product.KdsChupinFlag;//厨显是否出品 order.KdsChupinQty = 0; order.KdsChupinTime = product.KdsChupinTime;//厨显出品超时时间 order.CreateDate = _order.CreateDate;//创建时间 order.CreateUser = "GuoPan";//创建人 order.CurrentFlag = product.CurrentFlag;//是否可以议价 order.Discount = 0.00M;//折扣金额 order.DiscountFlag = product.DiscountFlag;//是否可折扣 order.DispatchPrice = _item.price;//批发价 order.DisplayName = _item.name;//打印名称 order.Flavor = 1;//是否包含做法 order.FlavorAmount = 0.00M;//餐盒费 order.FlavorCount = 1; order.FlavorDiscountAmount = 0.00M;//做法优惠金额 order.FlavorReceivableAmount = 0.00M;//餐盒应收金额 string[] flavor = _item.memo.Split(','); //if (_Ps) // foreach (var _flavoritem in _doOrder.other_pay_item.Where(f => !f.name.Contains("优惠"))) // { // _Ps = false; // //if (_flavoritem.name.Equals("打包费")) // //{ // // continue; // //} // FlavorItem flavorItem = new FlavorItem(); // flavorItem.BaseQuantity = 0;//做法计价 // flavorItem.isWaiMaiTicket = true; // flavorItem.Code = ""; // flavorItem.Color = ""; // flavorItem.CreateDate = _order.CreateDate;//创建时间 // flavorItem.CreateUser = "GuoPan";//创建人 // flavorItem.Description = _flavoritem.name;//备注说明 // flavorItem.DiscountAmount = 0.00M;//折扣金额 // flavorItem.DiscountPrice = 0.00M; // flavorItem.Group = ""; // flavorItem.Hand = 0; // flavorItem.IsRadio = 0; // flavorItem.Id = IdWorkerUtils.Instance.NextId(); // flavorItem.ItemId = order.Id;//行ID // flavorItem.MakeId = "";//做法ID // flavorItem.Name = _flavoritem.name;//备注说明 // flavorItem.OrderId = _order.Id;// // flavorItem.OrderItemQuantity = 1; // flavorItem.Price = _flavoritem.qty;//餐盒费用 // flavorItem.QtyFlag = 0; // flavorItem.RefundQuantity = 0.00M; // flavorItem.TenantId = Global.Instance.Authc.TenantId;//租户ID // flavorItem.TradeNo = _order.TradeNo; // flavorItem.Type = 1; // flavorItem.Price = _flavoritem.price; // if (order.Flavors == null) // { // order.Flavors = new List(); // } // order.Flavors?.Add(flavorItem); // } foreach (var _flavoritem in flavor) { if (string.IsNullOrEmpty(_flavoritem)) { continue; } FlavorItem flavorItem = new FlavorItem(); flavorItem.BaseQuantity = 0;//做法计价 flavorItem.isWaiMaiTicket = true; flavorItem.Code = ""; flavorItem.Color = ""; flavorItem.CreateDate = _order.CreateDate;//创建时间 flavorItem.CreateUser = "GuoPan";//创建人 flavorItem.Description = _flavoritem;//备注说明 flavorItem.DiscountAmount = 0.00M;//折扣金额 flavorItem.DiscountPrice = 0.00M; flavorItem.Group = ""; flavorItem.Hand = 0; flavorItem.IsRadio = 0; flavorItem.Id = IdWorkerUtils.Instance.NextId(); flavorItem.ItemId = order.Id;//行ID flavorItem.MakeId = "";//做法ID flavorItem.Name = _flavoritem;//备注说明 flavorItem.OrderId = _order.Id;// flavorItem.OrderItemQuantity = 1; flavorItem.Price = 0.00M;//餐盒费用 flavorItem.QtyFlag = 0; flavorItem.RefundQuantity = 0.00M; flavorItem.TenantId = Global.Instance.Authc.TenantId;//租户ID flavorItem.TradeNo = _order.TradeNo; flavorItem.Type = 1; if (order.Flavors == null) { order.Flavors = new List(); } order.Flavors?.Add(flavorItem); } order.GiveFlag = product.GiveFlag;//允许赠送 order.Group = "";//分组 order.LabelPrintFlag = product.LabelPrintFlag;//标签打印 order.MebDiscountFlag = product.MebDiscountFlag;//会员折上折 order.MemberPrice = _item.price;//会员价 order.MinPrice = product.MinPrice;//最低售价 order.Name = product.Name;//商品名称 order.OrderId = _order.Id;//订单ID order.OrderNo = i++; order.OtherPrice = _item.price;//第三方价 order.Price = _item.price;//售价 order.ProductExt = product;//商品信息 order.ProductId = product.Id;//商品ID order.ProductNo = product.No;//商品编号 order.ProductUnitId = product.UnitId;//商品单位ID order.ProductUnitName = product.UnitName;//商品单位名称 // order.ProductId = _item.id;//product.Id;//商品ID // order.ProductNo = _item.id;//product.No;//商品编号 //order.ProductUnitId = product.UnitId;//商品单位ID //order.ProductUnitName = _item.unit;// product.UnitName;//商品单位名称 order.PromotionFlag = product.PromotionFlag;//是否允许促销 order.Quantity = StringUtils.GetDecimal(_item.qty);//商品数量 order.RefundQuantity = 0.00M;//退菜数量 order.Remark = "美团外卖"; if (product.SuitFlag == 0) { order.RowState = OrderRowState.普通; } else { order.RowState = OrderRowState.套餐主; } order.SaleDate = _order.CreateDate;//创建时间 order.SalePrice = _item.price;//售价 order.ShortName = product.ShortName;//简称 order.SpecId = product.SpecId;//规格ID order.SpecName = product.SpecName;//规格名称 order.StockFlag = product.StockFlag;//是否管理库存 order.TapleFlag = product.TapleFlag;//是否主食 order.TenantId = Global.Instance.Authc.TenantId;//租户ID order.TotalAmonut = order.Amount; order.TradeNo = _order.TradeNo;//营业模式订单编号 order.TypeId = product.TypeId;//商品类别ID order.TypeName = product.TypeName;//商品类别名称 order.WeighFlag = product.WeighFlag;//是否称重 order.DispatchPrice = order.Amount; order.MemberPrice = order.Amount;//会员价 order.OtherPrice = order.Amount;//第三方价 //order.Price = order.Amount;//售价 //order.SalePrice = order.Amount;//售价 //order.Promotions = promotionsList; //zhangy 2020-03-13 Add 果盘订单不再统计优惠 order.Promotions = new List(); if (_order.Items == null) { _order.Items = new List(); } _order.Items.Add(order); } //zhangy 2020-03-13 Edit 注释以下代码,果盘订单不再统计优惠 //var _discount_amt = _doOrder.other_pay_item.Where(f => f.name.Contains("优惠")).Sum(f => f.amt); //i = 0; //foreach (var order in _order.Items) //{ // if (i == _order.Items.Count() - 1) // { // order.Discount = Math.Abs(_discount_amt) - _order.DiscountAmount; // } // else // { // order.Discount = (order.Amount / _order.Amount) * Math.Abs(_discount_amt); // } // if (order.Promotions == null) // { // order.Promotions = new List(); // } // i++; // PromotionItem promotionItem = new PromotionItem(); // promotionItem.Amount = order.Amount; // promotionItem.DiscountAmount = order.Discount;//优惠金额 // if (promotionItem.DiscountAmount != 0) // { // promotionItem.DiscountRate = DecimalUtils.ToRound(promotionItem.DiscountAmount / promotionItem.Amount, 2);//优惠率 // } // promotionItem.Enabled = true; // promotionItem.FinishDate = _order.CreateDate;//完成时间 // promotionItem.Id = IdWorkerUtils.Instance.NextId(); // promotionItem.ItemId = order.Id;//行ID // promotionItem.OrderId = _order.Id;// // promotionItem.PlanName = "外卖扣费";//班次编号 // promotionItem.PromotionType = PromotionType.外卖扣费; // promotionItem.ReceivableAmount = order.ReceivableAmount; // promotionItem.RelationId = ""; // promotionItem.TenantId = Global.Instance.Authc.TenantId;//租户ID // promotionItem.TradeNo = _order.TradeNo;//订单编号 // promotionItem.CreateDate = _order.CreateDate;//创建时间 // promotionItem.CreateUser = "meituan";//创建人 // order.Promotions.Add(promotionItem); //} PayItem payItem = new PayItem(); payItem.Amount = _order.ReceivableAmount;//已收金额 payItem.ChangeAmount = 0.00M;//找零金额 payItem.CreateDate = _doOrder.time; payItem.CreateUser = "GuoPan";//创建人 payItem.Memo = "美团数据转换";//支付备注 payItem.Name = "美团外卖";//付款方式名称 payItem.No = "22";//付款方式编码 payItem.PointFlag = 0;//是否参与积分 payItem.Order = 1;//支付序号 payItem.OrderId = _order.Id;//随机 payItem.OutTradeNo = "";//单据编号 payItem.OverAmount = 0.00M;//溢出金额 payItem.PaidAmount = _order.ReceivableAmount;//实收金额 payItem.PayNo = "6" + _order.Id;//支付编号 payItem.PayTime = _doOrder.time;//支付时间 payItem.ShiftName = Global.Instance.BusinessPlanLog.Name;//班次编号 payItem.ShiftNo = Global.Instance.BusinessPlanLog.No;//班次名称 payItem.Status = 1; payItem.StatusDesc = "已支付"; payItem.TenantId = Global.Instance.Authc.TenantId;//租户ID payItem.TradeNo = _order.TradeNo;//支付编号 payItem.TradeVoucherNo = ""; payItem.Id = IdWorkerUtils.Instance.NextId(); _order.Pays = new List(); _order.Pays?.Add(payItem); var _amt = _doOrder.other_pay_item.FirstOrDefault(f => f.name.Equals("配送费")); if (_amt != null) { _order.DeliverFee = _amt.amt; } _order.BoxFee = _doOrder.list.Where(f => f.name.Contains("打包")).Sum(f => f.amt); _order.Ext1 = _doOrder.memo; _order.wishtime = _doOrder.wishtime; _order.BusMode = "美团订单"; _order.People = int.Parse(_doOrder.pscount); _order.Phone = _doOrder.phone; _order.Recipients = _doOrder.cust; _order.PosNo = Global.Instance.Authc.PosNo;//POS号 _order.PrintType = 0; _order.ProductAmount = _order.Amount; _order.ReceivableAmount = _order.Amount; _order.ReceivedAmount = _order.Amount; _order.SaleDate = _order.CreateDate; _order.SalesCode = Global.Instance.Worker.No;//营业员编码 _order.SalesName = Global.Instance.BusinessPlanLog.Name; _order.ShiftNo = Global.Instance.BusinessPlanLog.No; _order.StoreId = Global.Instance.BusinessPlanLog.StoreId; _order.StoreName = Global.Instance.Worker.StoreInfo.Name; _order.StoreNo = Global.Instance.Worker.StoreInfo.No; _order.SyncStatus = 0; _order.TableName = _doOrder.table; _order.TenantId = Global.Instance.BusinessPlanLog.TenantId; _order.WorkerName = Global.Instance.BusinessPlanLog.WorkerName; _order.WorkerNo = Global.Instance.BusinessPlanLog.WorkerNo; return new Tuple(true, "", _order); } catch (Exception ex) { LOGGET.Error(ex); return new Tuple(false, ex.Message, null); } } /// /// 打印 /// /// /// /// public Tuple Print(OrderObject _orderdata, bool isRprint) { System.Threading.Tasks.Task.Factory.StartNew(() => { try { //打印入库 //构建收银小票模版参数打印 var vars = WaiMaiHelper.BuilderWeiXinVariable(_orderdata, isRprint); //自动切纸 bool cutPager = Global.Instance.GlobalConfigBoolValue(ConfigConstant.PERIPHERAL_CASHIER_ALLOW_CUT_PAGER, false); //是否允许打开钱箱 补打单、退单不开钱箱 bool openCashbox = false; //票头空白行 int headerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_HEADER_EMPTY, 0); //票尾空白行 int footerLine = Global.Instance.GlobalConfigIntValue(ConfigConstant.PERIPHERAL_CASHIER_FOOTER_EMPTY, 0); //打印机 var pobject = WaiMaiHelper.GetTicketPrinterObject("收银台打印机", cutPager, false); //zhangy 2020-04-09 Edit 果盘订单采用独立打印模版 WaiMaiHelper.PrinterTicket(pobject, "果盘外卖", vars, cutPager, openCashbox, headerLine, footerLine); if (isRprint) { _orderdata.RPrint = true; } //打印标签 LabelPrintHelper.PrintOrderLabel(_orderdata); //执行厨打 ChuDaHelper.KitchenPrinter(_orderdata); //执行厨打标签 ChuDaHelper.KitchenLabelPrinter(_orderdata); //执行出品 ChuDaHelper.MadePrinter(_orderdata); //通知厨显 UploadSCNewOrder.UploadNewOrder2SC4KDS(_orderdata); } catch (Exception ex) { LOGGET.Info(ex); } }); return new Tuple(true, ""); } /// /// 补单 /// /// /// public Tuple ReplacementOrder(OrderObject _order) { //zhangy 2020-03-14 Add 订单保存数据库后,要修改isHaveUpLoadTicket=true bool isException = false; try { //禁止美团订单转成本地销售 var _save = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDERSAVE, false);//禁止美团订单转成本地销售; if (_save) { return new Tuple(true, "禁止美团订单转成本地销售"); } if (_order != null) { using (var _db = Global.Instance.OpenDataBase) { using (var _tran = _db.GetTransaction()) { var _or = _db.FirstOrDefault("where tradeNo = '" + _order.TradeNo + "'"); if (_or != null) { return new Tuple(false, "订单已存在"); } _db.Insert(_order); if (_order.Items != null) foreach (var Orderitem in _order.Items) { Orderitem.ChuxianQty = 0; _db.Insert(Orderitem); if (Orderitem.Flavors != null) foreach (var _Flavor in Orderitem.Flavors) { _db.Insert(_Flavor); } if (Orderitem.Promotions != null) foreach (var Promotions in Orderitem.Promotions) { _db.Insert(Promotions); } } if (_order.Pays != null) foreach (var orderPay in _order.Pays) { _db.Insert(orderPay); } if (_order.Promotions != null) _db.Insert(_order.Promotions); if (_order.Delivery != null) _db.Insert(_order.Delivery); _tran.Complete(); } } } return new Tuple(true, ""); } catch (Exception ex) { //有异常发生 isException = true; return new Tuple(true, ex.Message); } finally { //没有异常发生 if (!isException) { //更新是否有订单需要上传的状态 Global.isHaveUpLoadTicket = true; Global.isHaveBurdenTicket = true; Global.isHaveCenterTicket = true; } } } /// /// 自动接单 /// /// /// public static Tuple AutoConfirmOrder(int _fileId) { bool isException = false; try { var _en = Global.Instance.GlobalConfigBoolValue(ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER, false);//禁止使用; if (_en) { return new Tuple (false,"已设置禁止使用"); } GuoPanProxy guoPanProxy = new GuoPanProxy(); var _jsonfile = string.Format("{0}\\Tx{1}.json", System.Environment.CurrentDirectory, _fileId); var _data = GetData("", _jsonfile); if (guoPanProxy.IsConfirm(_data.data.id).Item1) { return new Tuple(false, "已经接过单了"); } //自动转单 var _order = guoPanProxy.ToOrderData(_data.data); //转单失败,提示消息 if (!_order.Item1) { return new Tuple(false, _order.Item2); } //存储到本地 var _rep = guoPanProxy.ReplacementOrder(_order.Item3); if (!_rep.Item1) { return new Tuple(false, _rep.Item2); } guoPanProxy.Print(_order.Item3, false); if (!_rep.Item1) { return new Tuple(false, _order.Item2); } else { return new Tuple(true, _order.Item2); } } catch (Exception ex) { isException = true; LOGGET.Error(ex); return new Tuple(false, ex.Message); } finally { if (!isException) { //ConfirmOrder apiCall(_fileId); } } } /// /// 调用果盘 DLL /// /// /// /// /// private Tuple Request(string _data, FunctionType functionType) where T : class { try { SetData(_data, ((int)functionType).ToString()); var _int = apiCall(((int)functionType)); return new Tuple(true, "", GetData(_int.ToString())); } catch (Exception ex) { LOGGET.Error(ex, "请求发生异常"); return new Tuple(false, ex.Message, null); } } #region Json /// /// 读取JSON文件 /// /// JSON文件中的key值 /// JSON文件中的value值 private static T GetData(string number, string _file = null) where T : class { try { string jsonfile = string.Empty; if (!string.IsNullOrEmpty(_file)) { jsonfile = _file; } else { jsonfile = string.Format("{0}\\T{1}.json", System.Environment.CurrentDirectory, number); } using (StreamReader sr = new StreamReader(jsonfile, Encoding.UTF8)) { string data = sr.ReadToEnd(); return JsonConvert.DeserializeObject(data); } } catch (Exception EX) { LOGGET.Error(EX, "GuoPan解析数据异常"); return null; } } /// /// 写JSON文件 /// /// /// private static void SetData(string _data, string number) { try { string jsonfile = string.Format("{0}\\R{1}.json", System.Environment.CurrentDirectory, number); if (File.Exists(jsonfile)) { File.Delete(jsonfile); } using (FileStream file = new FileStream(jsonfile, FileMode.Append, FileAccess.Write)) { file.Seek(0, SeekOrigin.Begin); var by = Encoding.UTF8.GetBytes(_data); file.Write(by, 0, by.Length); file.Close(); }; } catch (Exception e) { LOGGET.Error(e, "GuoPan写数据异常"); } finally { } } #endregion } public enum FunctionType { 接单 = 111, 拒单 = 222, 订单明细 = 333, 当天订单 = 444 } }