コード例 #1
0
        public ActionResult OrderEditSave(ReserveCreateDTO req)
        {
            Response res = new Response();

            res.Data = false;
            if (ModelState.IsValid)
            {
                try
                {
                    if (req.Id > 0)//修改
                    {
                        res.Data = _orderRepository.UpdateOrderInfo(req);
                    }
                    else
                    {
                    }
                }
                catch (Exception ex)
                {
                    res.Message = ex.Message;
                }
            }
            else
            {
                res.Message = string.Join(",",
                                          ModelState.SelectMany(m => m.Value.Errors).
                                          Select(e => e.ErrorMessage));
            }

            return(Json(res, JsonRequestBehavior.AllowGet));
        }
コード例 #2
0
        public ActionResult OrderEdit(int id)
        {
            var currentUser = OperatorProvider.Provider.GetCurrent();
            //客源类型
            var customerSources = _extendItemRepository
                                  .GetModelList(currentUser.CompanyId.ToInt(), 10002);

            ViewBag.CustomerSources = customerSources;
            //订单类型
            var orderTypes = _extendItemRepository
                             .GetModelList(currentUser.CompanyId.ToInt(), 10001);

            ViewBag.OrderTypes = orderTypes;

            var customerList = _oldCustRepository.GetListByStatus(null);

            ViewBag.CustomerList = customerList;

            ReserveCreateDTO model = _orderRepository.GetOrder(id);
            var restaurant         = _restaurantRepository.GetModel(model.R_Restaurant_Id);

            model.RestaurantName = restaurant.Name;
            ViewBag.Order        = model;
            return(View());
        }
コード例 #3
0
ファイル: WeiXinController.cs プロジェクト: OpuZm/NHRTest
        /// <summary>
        /// 开台
        /// </summary>
        /// <param name="req"></param>
        /// <param name="tableId"></param>
        /// <returns></returns>
        public async System.Threading.Tasks.Task <JsonResult> OpenTableSubmit(ReserveCreateDTO req, int tableId)
        {
            var res = new Response()
            {
                Data = null, Successed = false
            };
            string msg = string.Empty;

            if (ModelState.IsValid)
            {
                try
                {
                    List <int> tableIds = new List <int> {
                        tableId
                    };
                    var restaurant = _restaurantRepository.GetModel(req.R_Restaurant_Id);
                    var orderTypes = _extendItemRepository
                                     .GetModelList(restaurant.R_Company_Id, 10001);
                    var customerSources = _extendItemRepository
                                          .GetModelList(restaurant.R_Company_Id, 10002);
                    req.OrderType       = orderTypes.First().Id;
                    req.CyddOrderSource = customerSources.First().Id;
                    req.OrderNo         = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    req.CreateDate      = DateTime.Now;
                    req.CyddStatus      = CyddStatus.开台;
                    req.CurrentMarketId = req.R_Market_Id;
                    req.CompanyId       = restaurant.R_Company_Id;
                    req.UserType        = CyddCzjlUserType.会员;
                    var model = _tableHandlerSers.OpenTableHandle(req, tableIds, out msg);

                    if (model != null)
                    {
                        res.Data      = model;
                        res.Successed = true;
                    }
                    res.Message = msg;
                    var hub = GlobalHost.ConnectionManager.GetHubContext <MyHub>();
                    await hub.Clients.All.callResServiceRefersh(true);
                }
                catch (Exception e)
                {
                    res.Message = e.Message;
                }
            }
            else
            {
                res.Message = string.Join(",", ModelState.SelectMany(ms => ms.Value.Errors).Select(e => e.ErrorMessage));
            }
            return(Json(res));
        }
コード例 #4
0
ファイル: FlatController.cs プロジェクト: OpuZm/NHRTest
        public async Task <JsonResult> SubmitOrder(ReserveCreateDTO req, List <int> tableIds, List <OrderDetailDTO> list, OperatorModel user, CyddMxStatus status)
        {
            Response res = new Response();

            if (ModelState.IsValid)
            {
                try
                {
                    req.CreateUser      = user.UserId;
                    req.OrderNo         = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                    req.CreateDate      = DateTime.Now;
                    req.CyddStatus      = CyddStatus.开台;
                    req.CurrentMarketId = user.LoginMarketId;
                    req.CompanyId       = user.CompanyId.ToInt();
                    req.UserType        = CyddCzjlUserType.员工;
                    req.CyddStatus      = CyddStatus.开台;
                    res.Data            = _orderRepository.FlatOrderSubmit(req, tableIds, list, user, status);
                    res.Successed       = Convert.ToBoolean(res.Data);
                    if (Convert.ToBoolean(res.Data) == true)
                    {
                        var hub = GlobalHost.ConnectionManager.GetHubContext <MyHub>();
                        await hub.Clients.All.callResServiceRefersh(true);
                    }
                }
                catch (Exception ex)
                {
                    res.Data      = false;
                    res.Message   = ex.Message;
                    res.Successed = false;
                }
            }
            else
            {
                res.Data    = false;
                res.Message = string.Join(",", ModelState.SelectMany(ms => ms.Value.Errors).Select(e => e.ErrorMessage));
            }
            return(Json(res));
        }
コード例 #5
0
        public ActionResult NewOrderEdit(int id, bool isReview = false)
        {
            var currentUser = OperatorProvider.Provider.GetCurrent();
            //客源类型
            var customerSources = _extendItemRepository
                                  .GetModelList(currentUser.CompanyId.ToInt(), 10002);

            ViewBag.CustomerSources = customerSources;
            //订单类型
            var orderTypes = _extendItemRepository
                             .GetModelList(currentUser.CompanyId.ToInt(), 10001);

            ViewBag.OrderTypes = orderTypes;

            var customerList = _oldCustRepository.GetListByStatus(null);

            ViewBag.CustomerList = customerList;

            //var sellerResult = _oldUserRepository.GetAll<Smooth.IoC.UnitOfWork.ISession>();
            //var sellerList = AutoMapperExtend<CzdmModel, UserInfo>.ConvertToList(sellerResult, new List<UserInfo>());
            var sellerList = _orderRepository.GetDepartList();

            ViewBag.SellerList = sellerList;
            ReserveCreateDTO model = _orderRepository.GetOrder(id);
            var restaurant         = _restaurantRepository.GetModel(model.R_Restaurant_Id);

            model.RestaurantName = restaurant.Name;
            ViewBag.Order        = model;

            var markets = _marketRep.GetList(model.R_Restaurant_Id);
            var sales   = _oldUserRepository.GetByUsersSql("ZZ");

            ViewBag.Markets  = markets;
            ViewBag.IsReview = isReview;
            ViewBag.Sales    = sales;
            return(View());
        }
コード例 #6
0
ファイル: HomeController.cs プロジェクト: OpuZm/NHRTest
        public ActionResult OpenTableCreate(ReserveCreateDTO req, List <int> TableIds)
        {
            Response res = new Response();
            string   msg = string.Empty;

            if (ModelState.IsValid)
            {
                req.OrderNo    = DateTime.Now.ToString("yyyyMMddHHmmssfff");
                req.CreateDate = DateTime.Now;
                req.CyddStatus = CyddStatus.开台;
                var model = OrderRepository.OpenTableCreate(req, TableIds, out msg);
                if (model != null)
                {
                    res.Data = model;
                }
                res.Message = msg;
            }
            else
            {
                res.Data    = 0;
                res.Message = string.Join(",", ModelState.SelectMany(ms => ms.Value.Errors).Select(e => e.ErrorMessage));
            }
            return(Json(res, JsonRequestBehavior.AllowGet));
        }
コード例 #7
0
        public ActionResult Reserve(int id = 0)
        {
            var currentUser            = OperatorProvider.Provider.GetCurrent();
            ReserveCreateDTO orderInfo = null;

            if (id > 0)
            {
                orderInfo = _orderRepository.GetOrderModel(id);
            }

            //客源类型
            var customerSources = _extendItemRepository
                                  .GetModelList(currentUser.CompanyId.ToInt(), 10002);

            ViewBag.CustomerSources = customerSources;

            //订单类型
            var orderTypes = _extendItemRepository
                             .GetModelList(currentUser.CompanyId.ToInt(), 10001);

            ViewBag.OrderTypes = orderTypes;

            var restaurantId = currentUser.DepartmentId.ToInt();
            var resModel     = _restaurantRepository.GetModel(restaurantId);

            var markets      = _marketRep.GetList(restaurantId);
            var customerList = _oldCustRepository.GetListByStatus(null);
            var areaList     = _areaRepository.GetList(currentUser.DepartmentId.ToInt());

            //var sellerResult = _oldUserRepository.GetAll<Smooth.IoC.UnitOfWork.ISession>();
            //var sellerList = AutoMapperExtend<CzdmModel, UserInfo>.ConvertToList(sellerResult, new List<UserInfo>());
            var sellerList = _orderRepository.GetDepartList();
            var sales      = _oldUserRepository.GetByUsersSql("ZZ");
            List <TableListDTO> conditionList = null;

            if (orderInfo != null)
            {
                conditionList = _tableRep.GetReseverChoseList(
                    new TableChoseSearchDTO()
                {
                    Market       = orderInfo.R_Market_Id,
                    RestaurantId = orderInfo.R_Restaurant_Id,
                    ReverDate    = (DateTime)orderInfo.ReserveDate
                });

                orderInfo.Tables.ForEach(
                    x =>
                {
                    conditionList.Add(new TableListDTO()
                    {
                        IsSelected   = true,
                        AreaId       = x.AreaId,
                        Name         = x.Name,
                        Id           = x.Id,
                        RestaurantId = x.RestaurantId,
                        Description  = x.Description
                    });
                });

                conditionList    = conditionList.OrderBy(x => x.Id).ToList();
                orderInfo.Tables = orderInfo.Tables.OrderBy(x => x.Id).ToList();

                markets.ForEach(
                    x =>
                {
                    x.IsDefault = false;
                    if (x.Id == orderInfo.R_Market_Id)
                    {
                        x.IsDefault = true;
                    }
                });
            }

            ViewBag.Markets      = markets;
            ViewBag.CustomerList = customerList;
            ViewBag.Restaurant   = resModel;

            var emptyTableList = _tableHandlerSers.GetTableList(
                new TableSearchDTO()
            {
                CythStatus   = CythStatus.空置,
                RestaurantId = currentUser.DepartmentId.ToInt(),
                CompanyId    = currentUser.CompanyId.ToInt(),
            });

            ViewBag.SearchTableList = conditionList;

            ViewBag.OrderInfo       = orderInfo;
            ViewBag.TableList       = emptyTableList;
            ViewBag.SellerList      = sellerList;
            ViewBag.CustomerSources = customerSources;
            ViewBag.restaurantId    = restaurantId;
            ViewBag.Areas           = areaList;
            ViewBag.UserName        = currentUser.UserName;
            ViewBag.LoginUserId     = currentUser.UserId;
            ViewBag.Sales           = sales;
            ViewBag.OrderTableIds   = orderInfo != null?string.Join(",", orderInfo.OrderTableIds) : "";

            return(View());
        }
コード例 #8
0
ファイル: OrderService.cs プロジェクト: OpuZm/NHRTest
        /// <summary>
        /// 预定保存
        /// </summary>
        /// <param name="req"></param>
        /// <param name="tableIds"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ReserveCreateDTO SaveReserveOrderHandle(ReserveCreateDTO req, List <int> tableIds, out string msg)
        {
            using (var db = new SqlSugarClient(Connection))
            {
                string           messge = string.Empty;
                ReserveCreateDTO res    = new ReserveCreateDTO();
                if (!req.ReserveDate.HasValue || (req.ReserveDate.HasValue && req.ReserveDate.Value < DateTime.Now))
                {
                    msg = "所选预订日期时间无效,请重新选择";
                    res = null;
                    return(res);
                }

                string date = req.ReserveDate.Value.ToString("yyyyMMdd");
                string ids  = string.Join(",", tableIds);
                try
                {
                    db.BeginTran();
                    if (req.Id > 0)
                    {
                        var ordTabList = db.Queryable <R_OrderTable>().Where(x => x.R_Order_Id == req.Id).ToList();
                        if (ordTabList != null && ordTabList.Count > 0)
                        {
                            var ordTabIds = ordTabList.Select(x => x.Id).ToList();
                            db.Delete <R_OrderDetail>(x => ordTabIds.Contains(x.R_OrderTable_Id));//删除旧预订菜品明细
                        }

                        db.Delete <R_OrderTable>(ordTabList); //删除预订的旧订单台号记录
                    }

                    var data = db.Sqlable().From <R_Order>("s1")
                               .Join <R_OrderTable>("s2", "s1.Id", "s2.R_Order_Id", JoinType.Inner);
                    data = data.Where("s1.CyddStatus=" + (int)CyddStatus.预定);
                    data = data.Where("s1.R_Market_Id=" + req.R_Market_Id);
                    data = data.Where("CONVERT(varchar(20), s1.ReserveDate, 112)=" + date);
                    data = data.Where("s2.R_Table_Id in (" + ids + ")");

                    var list = data.SelectToList <R_Order>("s1.Id");
                    //var sql = data.Sql;
                    if (list == null || list.Count == 0)
                    {
                        string  recordRemark = "";
                        int     orderId      = req.Id;
                        R_Order model        = Mapper.Map <ReserveCreateDTO, R_Order>(req);
                        if (req.Id > 0)
                        {
                            db.Update <R_Order>(
                                new
                            {
                                ContactPerson   = req.ContactPerson,
                                ContactTel      = req.ContactTel,
                                CyddOrderSource = req.CyddOrderSource,
                                PersonNum       = req.PersonNum,
                                ReserveDate     = req.ReserveDate,
                                R_Market_Id     = req.R_Market_Id,
                                R_Restaurant_Id = req.R_Restaurant_Id,
                                Remark          = req.Remark,
                                TableNum        = req.TableNum,
                                CustomerId      = req.CustomerId,
                                BillingUser     = req.BillingUser,
                                OrderType       = req.OrderType,
                                BillDepartMent  = req.BillDepartMent
                            }, x => x.Id == req.Id);    //更新预订单信息

                            recordRemark = string.Format("修改预订 - 预订订单号({0})更新预订信息", req.OrderNo);
                        }
                        else
                        {
                            var insert = db.Insert <R_Order>(model); //订单主表
                            orderId      = Convert.ToInt32(insert);  //订单操作纪录
                            recordRemark = string.Format("新加预订 - 新增预订信息订单号({0})", model.OrderNo);

                            if (req.DepositAmount > 0)
                            {
                                db.Insert(new R_OrderPayRecord()
                                {
                                    BillDate          = req.AccountingDate,
                                    CreateDate        = DateTime.Now,
                                    CreateUser        = req.CreateUser,
                                    CyddJzStatus      = CyddJzStatus.已付,
                                    CyddJzType        = CyddJzType.定金,
                                    CyddPayType       = (int)CyddPayType.现金,
                                    PayAmount         = req.DepositAmount,
                                    R_Order_Id        = orderId,
                                    R_Market_Id       = req.CurrentMarketId, //当前用户登录的分市Id
                                    R_OrderMainPay_Id = 0,                   //预订定金不生成当次主结Id
                                    Remark            = "预订定金",
                                    R_Restaurant_Id   = req.CurrentRestaurantId
                                });
                            }
                        }

                        string tableNames = string.Empty;

                        int personNumAvg = tableIds.Count() > 1 ?
                                           req.PersonNum / tableIds.Count() : req.PersonNum; //台号人均
                        int personNumRemainder = tableIds.Count() > 1 ?
                                                 req.PersonNum % tableIds.Count() : 0;       //台号余人
                        int eachRemainder = 0;
                        if (tableIds != null && tableIds.Count > 0)
                        {
                            List <R_OrderTable> otList = new List <R_OrderTable>();
                            foreach (var tId in tableIds)
                            {
                                eachRemainder++;
                                R_OrderTable otModel = new R_OrderTable();

                                otModel.R_Order_Id        = orderId;
                                otModel.R_Table_Id        = tId;
                                otModel.CreateDate        = DateTime.Now;
                                otModel.PersonNum         = personNumAvg + (personNumRemainder - eachRemainder >= 0 ? 1 : 0);
                                otModel.BillDate          = req.AccountingDate;
                                otModel.R_Market_Id       = req.CurrentMarketId;
                                otModel.R_OrderMainPay_Id = 0;
                                otList.Add(otModel);
                            }
                            db.InsertRange <R_OrderTable>(otList);//订单台号

                            req.OrderTableIds = db.Queryable <R_OrderTable>()
                                                .Where(x => x.R_Order_Id == orderId).Select(x => x.Id).ToList();

                            tableNames = db.Queryable <R_Table>()
                                         .Where(x => tableIds.Contains(x.Id)).Select(x => x.Name).ToList().Join(",");
                        }

                        db.Insert <R_OrderRecord>(new R_OrderRecord()
                        {
                            CreateDate       = DateTime.Now,
                            R_Order_Id       = orderId,
                            CreateUser       = req.CreateUser,
                            CyddCzjlStatus   = CyddStatus.预定,
                            CyddCzjlUserType = CyddCzjlUserType.员工,
                            Remark           = recordRemark + (tableNames.IsEmpty() ? "" : string.Format(";预订台:({0})", tableNames)),
                        });

                        res    = req;
                        res.Id = orderId;
                        db.CommitTran();
                    }
                    else
                    {
                        res    = null;
                        messge = "订单台号在预定日期已被占用,请重新选择";
                        db.RollbackTran();
                    }
                }
                catch (Exception e)
                {
                    res    = null;
                    messge = e.Message;
                    db.RollbackTran();
                }
                msg = messge;
                return(res);
            }
        }
コード例 #9
0
        /// <summary>
        /// 开台 拼台操作处理
        /// </summary>
        /// <param name="req"></param>
        /// <param name="tableIds"></param>
        /// <param name="msg"></param>
        /// <param name="reuse">false 开台,true 拼台</param>
        /// <returns></returns>
        public OpenTableCreateResultDTO OpenTableHandle(
            ReserveCreateDTO req, List <int> tableIds, out string msg, bool reuse = false)
        {
            //取餐饮账务日期 TypeId=10003
            var dateItem = _extendItemRepository.GetModelList(req.CompanyId, 10003).FirstOrDefault();

            using (var db = new SqlSugarClient(Connection))
            {
                if (dateItem == null)
                {
                    throw new Exception("餐饮账务日期尚未初始化,请联系管理员");
                }

                DateTime accDate = DateTime.Today;

                if (!DateTime.TryParse(dateItem.ItemValue, out accDate))
                {
                    throw new Exception("餐饮账务日期设置错误,请联系管理员");
                }

                string messge = string.Empty;
                OpenTableCreateResultDTO res = new OpenTableCreateResultDTO();
                string ids = string.Join(",", tableIds);

                try
                {
                    db.BeginTran();

                    var isCanOpen = db.Queryable <R_Table>()
                                    .Any(p => p.CythStatus != CythStatus.空置 && tableIds.Contains(p.Id));

                    if ((!isCanOpen && !reuse) || reuse)
                    {
                        int     insertId = req.Id;
                        R_Order model    = Mapper.Map <ReserveCreateDTO, R_Order>(req);
                        if (req.Id <= 0)
                        {
                            model.OpenDate = model.CreateDate;
                            var insert = db.Insert <R_Order>(model);  //订单主表
                            insertId = Convert.ToInt32(insert);
                        }
                        else
                        {
                            if (req.Id > 0 &&
                                req.CyddStatus == CyddStatus.预定 &&
                                req.ReserveDate.HasValue &&
                                req.ReserveDate.Value < DateTime.Now.AddHours(-1))//判断是否超过时间,保留一小时
                            {
                                throw new Exception("此预订订单已过期,当前时间已超过预订时间("
                                                    + req.ReserveDate.Value.ToString("yyyy-MM-dd HH:mm") + ")!");
                            }

                            if (req.Id > 0 && req.CyddStatus == CyddStatus.预定 &&
                                req.ReserveDate.HasValue &&
                                req.ReserveDate.Value > DateTime.Now.AddHours(8))//判断是否已到预订时间
                            {
                                throw new Exception("此预订订单未到预订开台时间(" +
                                                    req.ReserveDate.Value.ToString("yyyy-MM-dd HH:mm") +
                                                    "),但可在此预订时间提前8小时开台!");
                            }

                            db.Update <R_Order>(new
                            {
                                CyddStatus = CyddStatus.开台,
                                OpenDate   = DateTime.Now
                            }, x => x.Id == req.Id);
                        }

                        if (!reuse)//开台时更新台状态
                        {
                            db.Update <R_Table>(new
                            {
                                CythStatus = (int)CythStatus.在用,
                            }, p => tableIds.Contains(p.Id));
                        }
                        res.OrderId = insertId;

                        int personNumAvg = tableIds.Count() > 1 ?
                                           req.PersonNum / tableIds.Count() : req.PersonNum; //台号人均
                        int personNumRemainder = tableIds.Count() > 1 ?
                                                 req.PersonNum % tableIds.Count() : 0;       //台号余人
                        int eachRemainder = 0;
                        if (tableIds != null && tableIds.Count > 0)
                        {
                            res.OrderTableIds = new List <int>();
                            int orderTableId = 0;
                            if (req.Id <= 0)
                            {
                                List <R_OrderTable> otList = new List <R_OrderTable>();
                                foreach (var item in tableIds)
                                {
                                    eachRemainder++;
                                    R_OrderTable obj = new R_OrderTable();
                                    obj.R_Order_Id  = insertId;
                                    obj.R_Table_Id  = item;
                                    obj.CreateDate  = DateTime.Now;
                                    obj.IsOpen      = true; //开台标识
                                    obj.PersonNum   = personNumAvg + (personNumRemainder - eachRemainder >= 0 ? 1 : 0);
                                    obj.R_Market_Id = req.CurrentMarketId;
                                    obj.BillDate    = accDate;
                                    otList.Add(obj);
                                }
                                db.InsertRange(otList);
                            }
                            else
                            {
                                db.Update <R_OrderTable>(new { IsOpen = true, R_Market_Id = req.CurrentMarketId, BillDate = accDate }
                                                         , x => x.R_Order_Id == req.Id);
                            }
                            res.OrderTableIds = db.Queryable <R_OrderTable>()
                                                .Where(x => x.R_Order_Id == insertId).Select(x => x.Id).ToList();
                            var tableNames = db.Queryable <R_Table>()
                                             .Where(x => tableIds.Contains(x.Id))
                                             .Select(x => x.Name).ToList();

                            res.TablesName = tableNames;
                            R_OrderRecord record = new R_OrderRecord
                            {
                                CreateDate       = DateTime.Now,
                                R_Order_Id       = insertId,
                                CreateUser       = req.CreateUser,
                                CyddCzjlStatus   = CyddStatus.开台,
                                CyddCzjlUserType = req.UserType,
                                Remark           = string.Format(
                                    "开台操作-订单({0})开台({1})",
                                    model.OrderNo, tableNames.Join(",")),
                                R_OrderTable_Id = res.OrderTableIds.Count == 1 ? orderTableId : 0 //订单操作纪录
                            };

                            db.Insert <R_OrderRecord>(record);
                        }
                        else
                        {
                            res = null;
                            msg = "开台请选择餐台!";
                            //db.RollbackTran();
                            //return res;
                        }
                    }
                    else
                    {
                        res    = null;
                        messge = "所选台号已被占用,请重新选择";
                    }

                    db.CommitTran();
                }
                catch (Exception e)
                {
                    res    = null;
                    messge = e.Message;
                    db.RollbackTran();
                }

                msg = messge;
                return(res);
            }
        }