Esempio n. 1
0
        /// <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);
                            }
                        }
                    }
                }
            });
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        /// <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);
                });
            }
        }
Esempio n. 4
0
        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));
        }