/// <summary> /// 餐饮打印订单 /// </summary> /// <param name="food"></param> /// <param name="order"></param> /// <param name="carts"></param> /// <param name="foodPrintList"></param> /// <param name="account">加传参数,打单失败会通过提示该用户,若不想提示,可传null</param> /// <returns></returns> public static void DishPrintOrder(DishStore store, DishOrder order, List <DishShoppingCart> carts, List <DishPrint> prints) { if (store == null || order == null || carts == null || !carts.Any() || prints == null || !prints.Any()) { log4net.LogHelper.WriteInfo(typeof(PrinterHelper), $"参数为空导致无法打印:dishStore:{store == null},order :{ order == null }, carts: {carts == null || !carts.Any()}, foodPrintList : {prints == null || !prints.Any()}"); return; } prints.ForEach(print => { if (print.print_d_type == 1) //整单打印 { string totalPrintContent = GetPrintContent_Total(store, order, carts, print); //整单打印内容 if (!string.IsNullOrWhiteSpace(totalPrintContent)) //当此打印的设定打单匹配到有要打印的内容时,才去打印 { FoodYiLianYunPrintHelper.printContent(print.apiPrivateKey, print.platform_userId.ToString(), print.print_bianma, print.print_shibiema, totalPrintContent); } } else //分单打印 { List <string> singlePrintContentsByGoods = GetPrintContent_Part(store, order, carts, print); //分单(按菜品)打印内容 if (singlePrintContentsByGoods?.Count > 0) { foreach (string content in singlePrintContentsByGoods) { if (!string.IsNullOrWhiteSpace(content))//当此打印的设定打单匹配到有要打印的内容时,才去打印 { FoodYiLianYunPrintHelper.printContent(print.apiPrivateKey, print.platform_userId.ToString(), print.print_bianma, print.print_shibiema, content); } } } } }); }
/// <summary> /// /// </summary> /// <returns></returns> public ActionResult Edit(string act = "", int id = 0, int aId = 0, int storeId = 0, DishPrint model = null, int fid = 0, List <string> printtags = null) { //参数验证 if (id < 0 || aId <= 0 || storeId <= 0) { _result.msg = "参数错误"; return(Json(_result)); } //显示 if (string.IsNullOrEmpty(act)) { if (id == 0) { model = new DishPrint(); } else { model = DishPrintBLL.SingleModel.GetModel(id); if (model == null) { return(Content("打印机不存在")); } } EditModel <DishPrint> em = new EditModel <DishPrint>(); em.DataModel = model; em.aId = aId; em.storeId = storeId; ViewBag.dishPrintTagList = DishTagBLL.SingleModel.GetList($"state=1 and aid={aId} and storeId={storeId}"); return(View(em)); } else { if (act == "edit") { model.print_tags = printtags != null?string.Join(",", printtags) : ""; if (id == 0) { //先访问易连云接口添加,成功后才在系统内添加记录 PrintErrorData returnMsg = FoodYiLianYunPrintHelper.addPrinter(model.apiPrivateKey, model.platform_userId.ToString(), model.print_bianma, model.print_shibiema, "", model.platform_userName, model.print_name); if (returnMsg.errno != 1)//returnMsg.errno>2 建议这里大于2 { _result.msg = returnMsg.error; return(Json(_result)); } int newid = Convert.ToInt32(DishPrintBLL.SingleModel.Add(model)); _result.msg = newid > 0 ? "添加成功" : "添加失败"; _result.code = newid > 0 ? 1 : 0; } else { bool updateResult = DishPrintBLL.SingleModel.Update(model, "print_name,print_type,print_d_type,print_dnum,print_ziti_type,print_goods_ziti_type,print_top_copy,print_bottom_copy,print_tags,state"); _result.msg = updateResult ? "修改成功" : "修改失败"; _result.code = updateResult ? 1 : 0; } } } return(Json(_result)); }
/// <summary> /// 打印机打印 /// </summary> /// <param name="prints">打印机集合</param> /// <param name="content">要打印的内容</param> /// <param name="orderId">订单的ID,目前无作用,仅记录方便以后跟进,没有可传0</param> public static void printContent(List <FoodPrints> prints, string content, int orderId, int tId = 0, Account account = null) { SystemUpdateMessage msg = null; if (!string.IsNullOrWhiteSpace(content) && prints != null && prints.Any()) { prints.ForEach(print => { var returnMsg = FoodYiLianYunPrintHelper.printContent(print.APIKey, print.UserId, print.PrintNo, print.PrintKey, content); var returnModel = SerializeHelper.DesFromJson <FoodYlyReturnModel>(returnMsg); //记录订单打印日志 string remark = string.Empty; if (returnModel.state == 2) { remark = "提交时间超时"; returnModel.state = -1; } else if (returnModel.state == 3) { remark = "参数有误"; returnModel.state = -1; } else if (returnModel.state == 4) { remark = "sign加密验证失败"; returnModel.state = -1; } else if (returnModel.state == 1) { remark = "发送成功"; returnModel.state = 0; } //打印失败通过系统消息 => 通知相应后台商家 if (returnModel.state != 1 && returnModel.state != 0) { if (account != null) { msg = new SystemUpdateMessage(); msg.AccountId = account.Id.ToString(); msg.Title = $"打印机[{print?.Name}]打单异常 "; msg.PublishUser = "******"; msg.State = 0; msg.Type = 2; msg.AddTime = DateTime.Now; msg.UpdateTime = DateTime.Now; msg.Year = DateTime.Now.Year; msg.Month = DateTime.Now.Month; msg.Day = DateTime.Now.Day; msg.IsRead = 0; msg.Type = 2; msg.TId = tId; msg.Content = $"与打印机官方通讯出现问题,恢复前无法打印任何单据,故障信息:{remark};"; SystemUpdateMessageBLL.SingleModel.Add(msg); } } var log = new FoodOrderPrintLog() { Dataid = returnModel.id, addtime = DateTime.Now, machine_code = print.PrintNo, state = returnModel.state, isupdate = 0, remark = remark, orderId = orderId, printsId = print.Id }; FoodOrderPrintLogBLL.SingleModel.Add(log); }); } }
public ActionResult Index(string act = "", int id = 0, int aId = 0, int storeId = 0, int pageIndex = 0, int pageSize = 20) { //显示 if (string.IsNullOrEmpty(act)) { ViewModel <DishPrint> vm = new ViewModel <DishPrint>(); vm.DataList = DishPrintBLL.SingleModel.GetListBySql($"select * from dishprint where state >-1 and aid={aId} and storeid={storeId}"); if (vm.DataList != null && vm.DataList.Count > 0) { foreach (var item in vm.DataList) { if (!string.IsNullOrEmpty(item.print_tags)) { List <DishTag> tagList = DishTagBLL.SingleModel.GetList($" id in ({item.print_tags})"); item.tags = string.Join(",", tagList.Select(tag => tag.name)); } } } vm.PageIndex = pageIndex; vm.PageSize = pageSize; vm.aId = aId; vm.storeId = storeId; return(View(vm)); } else { if (id <= 0) { _result.msg = "参数错误"; } else { DishPrint updateModel = DishPrintBLL.SingleModel.GetModel(id); if (updateModel != null) { bool updateResult = false; switch (act) { case "del": //删除 switch (updateModel.print_name_type) { case 0: //先访问易连云接口删除,成功后才在系统内操作记录 string returnMsg = FoodYiLianYunPrintHelper.deletePrinter(updateModel.apiPrivateKey, updateModel.platform_userId.ToString(), updateModel.print_bianma, updateModel.print_shibiema); break; default: break; } //if (isDeletePrintByDiSanFang_Success) //{ //无论打印机解绑失败与否,都让用户删除打印机。避免用户在第三方平台上删除后,此打印机删除不了的情况 updateModel.state = -1; updateResult = DishPrintBLL.SingleModel.Update(updateModel); if (updateResult) { _result.code = 1; _result.msg = "删除成功"; } else { _result.msg = "删除失败"; } //} //else //{ // _result.msg = "解绑第三方平台打印机绑定失败,删除失败"; //} break; case "ban": updateModel.state = 0; updateResult = DishPrintBLL.SingleModel.Update(updateModel); if (updateResult) { _result.code = 1; _result.msg = "操作成功"; } else { _result.msg = "操作失败"; } break; case "start": updateModel.state = 1; updateResult = DishPrintBLL.SingleModel.Update(updateModel); if (updateResult) { _result.code = 1; _result.msg = "操作成功"; } else { _result.msg = "操作失败"; } break; } } else { _result.msg = "删除失败,数据不存在或已删除"; } } } return(Json(_result)); }