public async Task <ActionResult <OrderTableDTO> > CreateOrder([FromBody] OrderTableDTO orderDTO)
        {
            var orderEntity = orderDTO.toOrder();

            _context.ordertable.Add(orderEntity);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetOrder), new { id = orderEntity.id }, orderEntity));
        }
        public async Task <IActionResult> UpdateOrder(OrderTableDTO tb2)
        {
            var table1 = await _context.ordertable.FindAsync(tb2.id);

            if (table1 == null)
            {
                return(NotFound());
            }
            table1.Mapto2(tb2);
            _context.ordertable.Update(table1);
            await _context.SaveChangesAsync();

            return(NoContent());
        }
        public async Task <ActionResult <OrderTableDTO> > GetOrder(int id)
        {
            var ord = await _context.ordertable.FindAsync(id);

            if (ord == null)
            {
                return(NotFound());
            }
            var neword = new OrderTableDTO
            {
                id              = ord.id,
                createDate      = ord.createDate,
                updateDate      = ord.updateDate,
                paymentMethod   = ord.paymentMethod,
                shippingFee     = ord.shippingFee,
                shippingAddress = ord.shippingAddress,
                totalPrice      = ord.totalPrice,
                status          = ord.status,
                customerId      = ord.customerId,
                orderItems      = _context.orderitem.Where(x => x.orderTableId == ord.id).Select(p => p.toorder_itemDTO())
            };

            return(Ok(new Response <OrderTableDTO>(neword)));
        }
Exemple #4
0
        public List <TableListIndexDTO> GetList(TableSearchDTO req)
        {
            using (var db = new SqlSugarClient(Connection))
            {
                List <TableListIndexDTO> list = new List <TableListIndexDTO>();
                var data = db.Queryable <R_Table>();
                data = data.Where(p => p.IsDelete == false);
                if (req.RestaurantId > 0)
                {
                    data = data.Where(p => p.R_Restaurant_Id == req.RestaurantId);
                }

                if (req.AreaId > 0)
                {
                    data = data.Where(p => p.R_Area_Id == req.AreaId);
                }

                if ((int)req.CythStatus > 0)
                {
                    data = data.Where("CythStatus =" + (int)req.CythStatus);
                }
                data = data.OrderBy(p => p.Sorted);
                if (data.Any())
                {
                    list = data.Select <TableListIndexDTO>(s1 =>
                                                           new TableListIndexDTO()
                    {
                        Id          = s1.Id,
                        Name        = s1.Name,
                        CythStatus  = s1.CythStatus,
                        Description = s1.Describe,
                        SeatNum     = s1.SeatNum,
                        ServerRate  = s1.ServerRate,
                        Restaurant  = s1.R_Restaurant_Id,
                        AreaId      = s1.R_Area_Id,
                        IsVirtual   = s1.IsVirtual,
                        Sorted      = s1.Sorted
                    }).ToList();

                    if (list.Any())
                    {
                        var    tabIds    = list.Select(p => p.Id).ToArray();
                        string tabIdsStr = string.Join(",", tabIds);

                        var orderTabList = db.Queryable <R_OrderTable>()
                                           .JoinTable <R_Order>((s1, s2) => s1.R_Order_Id == s2.Id, JoinType.Left)
                                           .Where <R_Order>((s1, s2) => tabIds.Contains(s1.R_Table_Id) && s2.IsDelete == false &&
                                                            (s2.CyddStatus == CyddStatus.开台 || s2.CyddStatus == CyddStatus.点餐 ||
                                                             s2.CyddStatus == CyddStatus.送厨 || s2.CyddStatus == CyddStatus.用餐中 || s2.CyddStatus == CyddStatus.反结))
                                           .Select <R_Order, TableLinkOrderDTO>((s1, s2) =>
                                                                                new TableLinkOrderDTO()
                        {
                            Id               = s1.Id,
                            CreateDate       = s1.CreateDate,
                            IsCheckOut       = s1.IsCheckOut,
                            IsOpen           = s1.IsOpen,
                            OrderCallType    = s2.CyddCallType,
                            OrderNo          = s2.OrderNo,
                            OrderPersonNum   = s2.PersonNum,
                            OrderStatus      = s2.CyddStatus,
                            OrderCreatedTime = s2.CreateDate,
                            PersonNum        = s1.PersonNum,
                            R_Order_Id       = s1.R_Order_Id,
                            R_Table_Id       = s1.R_Table_Id,
                            IsControl        = s1.IsControl,
                            IsLock           = s1.IsLock,
                            MemberCardId     = s2.MemberCardId,
                            ContactPerson    = s2.ContactPerson,
                            ContactTel       = s2.ContactTel
                        }
                                                                                ).ToList();

                        #region 预定列表

                        var orderTabReverList = db.SqlQuery <BookingTableDTO>($@" 
                                    SELECT OT.Id AS OrderTableId, OT.R_Table_Id AS TableId, 
                                        O.Id AS OrderId, O.ReserveDate AS BookingDate, O.PersonNum, O.ContactPerson, O.ContactTel,
                                        M.Id AS MarketId, M.Name AS MarketName 
                                    FROM dbo.R_OrderTable OT 
                                    INNER JOIN dbo.R_Order O ON O.Id = OT.R_Order_Id 
                                    INNER JOIN dbo.R_Market M ON M.Id = O.R_Market_Id 
                                    WHERE OT.R_Table_Id IN ({tabIdsStr}) AND O.IsDelete=0 AND O.CyddStatus = {(int)CyddStatus.预定} AND DATEDIFF(DAY, GETDATE(), O.ReserveDate)=0 ");

                        #endregion

                        var orderIds = (from od in orderTabList
                                        group od by od.R_Order_Id into g
                                        select g.Key).ToArray();

                        var mxList = db.Queryable <R_OrderDetail>()
                                     .JoinTable <R_OrderTable>((s1, s2) => s1.R_OrderTable_Id == s2.Id)
                                     .Where <R_OrderTable>((s1, s2) => orderIds.Contains(s2.R_Order_Id))
                                     .Select <R_OrderTable, OrderTableProjectDTO>((s1, s2) =>
                                                                                  new OrderTableProjectDTO()
                        {
                            MxId         = s1.Id,
                            OrderTableId = s2.Id,
                            TableId      = s2.R_Table_Id,
                            Price        = s1.Price,
                            Num          = s1.Num,
                            OrderId      = s2.R_Order_Id
                        }).ToList();

                        if (orderTabList.Any() || orderTabReverList.Any())
                        {
                            var mxIds = mxList.Select(p => p.MxId).ToArray();

                            #region 订单明细操作表
                            //var mxRecordList = db.Queryable<R_OrderDetailRecord>().Where(
                            //    p => mxIds.Contains(p.R_OrderDetail_Id) &&
                            //    (p.CyddMxCzType == CyddMxCzType.赠菜 || p.CyddMxCzType == CyddMxCzType.转出 || p.CyddMxCzType == CyddMxCzType.退菜)).ToList();
                            #endregion

                            var extendList = db.Queryable <R_OrderDetailExtend>()
                                             .Where(p => mxIds.Contains(p.R_OrderDetail_Id))
                                             .ToList();

                            foreach (var item in list)
                            {
                                item.OrderList = orderTabReverList.Where(p => p.TableId == item.Id).ToList();

                                //获取当前餐台已开台未结账的关联订单信息
                                var orderTableNows = orderTabList
                                                     .Where(p => p.R_Table_Id == item.Id && !p.IsCheckOut && p.IsOpen);

                                item.OrderNow = new List <OrderTableDTO>();

                                if (orderTableNows.Any())
                                {
                                    foreach (var otn in orderTableNows)
                                    {
                                        var otnModel = new OrderTableDTO()
                                        {
                                            Id              = otn.Id,
                                            OrderId         = otn.R_Order_Id,
                                            IsCheckOut      = otn.IsCheckOut,
                                            IsOpen          = otn.IsOpen,
                                            PersonNum       = otn.PersonNum,
                                            CreateDate      = otn.CreateDate, //订单台号表 记录的时间
                                            OrderNo         = otn.OrderNo,
                                            OrderStatusDesc = otn.OrderStatusDesc,
                                            IsControl       = otn.IsControl,
                                            IsLock          = otn.IsLock,
                                            IsWeiXin        = otn.MemberCardId > 0 ? true : false,
                                            TableId         = otn.R_Table_Id,
                                            ContactTel      = otn.ContactTel,
                                            ContactPerson   = otn.ContactPerson
                                        };

                                        var totalAmount = mxList.Where(
                                            p => p.OrderTableId == otn.Id && p.OrderId == otn.R_Order_Id)
                                                          .Sum(p => p.Price * p.Num);

                                        var totalAmountExtend =
                                            (from ext in extendList
                                             join mx in mxList on ext.R_OrderDetail_Id equals mx.MxId
                                             where mx.OrderTableId == otn.Id && mx.OrderId == otn.R_Order_Id &&
                                             mx.MxId == ext.R_OrderDetail_Id
                                             select new OrderTableDTO
                                        {
                                            TotalAmount = ext.Price * mx.Num
                                        }).ToList().Sum(p => p.TotalAmount);

                                        otnModel.TotalAmount = totalAmount + totalAmountExtend;
                                        item.OrderNow.Add(otnModel);
                                    }
                                }
                            }
                        }
                    }
                }

                return(list);
            }
        }
Exemple #5
0
        public List <TableListDTO> GetTableListForApi(TableSearchDTO conditionDto)
        {
            List <TableListDTO> list = new List <TableListDTO>();

            int[] resIds    = new int[] { conditionDto.RestaurantId };
            var   tableList = _tableRep.GetTables(resIds, conditionDto.AreaId);

            List <TableLinkOrderDTO> orderTableList = new List <TableLinkOrderDTO>();

            if (conditionDto.CythStatus == CythStatus.在用)
            {
                var statusArray = new int[] { (int)CyddStatus.开台, (int)CyddStatus.点餐,
                                              (int)CyddStatus.用餐中, (int)CyddStatus.送厨, (int)CyddStatus.订单菜品修改 };
                orderTableList = _orderRep.GetOrderTableListBy(
                    tableList.Select(x => x.Id).ToArray(), statusArray);
            }

            foreach (var item in tableList)
            {
                TableListDTO obj = new TableListDTO
                {
                    AreaId       = item.R_Area_Id,
                    Description  = item.Describe,
                    Id           = item.Id,
                    Name         = item.Name,
                    SeatNum      = item.SeatNum,
                    ServerRate   = item.ServerRate,
                    RestaurantId = conditionDto.RestaurantId,
                    CythStatus   = (int)item.CythStatus
                };

                if (conditionDto.CythStatus == CythStatus.在用)
                {
                    List <OrderTableDTO> orderDtoList = new List <OrderTableDTO>();
                    var filerByTableList = orderTableList.Where(x => x.R_Table_Id == item.Id).ToList();
                    //if (conditionDto.OrderTableId > 0)//菜品转台时,去除原来的订单台号
                    //{
                    //    filerByTableList = filerByTableList.Where(x => x.Id != conditionDto.OrderTableId).ToList();
                    //    if (filerByTableList.Count == 0)
                    //        continue;
                    //}
                    foreach (var orderTab in filerByTableList)
                    {
                        OrderTableDTO dto = new OrderTableDTO();
                        dto.Id            = orderTab.Id;
                        dto.IsCheckOut    = orderTab.IsCheckOut;
                        dto.IsOpen        = orderTab.IsOpen;
                        dto.CreateDate    = orderTab.CreateDate;
                        dto.TableId       = orderTab.R_Table_Id;
                        dto.OrderId       = orderTab.R_Order_Id;
                        dto.OrderNo       = orderTab.OrderNo;
                        dto.IsLock        = orderTab.IsLock;
                        dto.ContactPerson = orderTab.ContactPerson;
                        dto.ContactTel    = orderTab.ContactTel;
                        dto.IsControl     = orderTab.IsControl;
                        dto.PersonNum     = orderTab.PersonNum;
                        orderDtoList.Add(dto);
                    }
                    obj.CurrentOrderList = orderDtoList;
                }
                list.Add(obj);
            }

            return(list);
        }
Exemple #6
0
        public List <TableListDTO> GetTableList(TableSearchDTO conditionDto)
        {
            List <TableListDTO> list = new List <TableListDTO>();
            var resList = _resRep.GetList(conditionDto.CompanyId);//获取此公司(租户)下关联的餐厅信息

            var ids = resList.Select(x => x.Id).ToArray();

            if (conditionDto.RestaurantId > 0)//只取当前餐厅
            {
                ids = ids.Where(x => x == conditionDto.RestaurantId).ToArray();
            }

            var tableList = _tableRep.GetTables(ids, conditionDto.AreaId, conditionDto.CythStatus, conditionDto.InCludVirtual);

            List <TableLinkOrderDTO> orderTableList = new List <TableLinkOrderDTO>();

            if (conditionDto.CythStatus == CythStatus.在用)
            {
                var statusArray = new int[] { (int)CyddStatus.开台, (int)CyddStatus.点餐,
                                              (int)CyddStatus.用餐中, (int)CyddStatus.送厨, (int)CyddStatus.订单菜品修改, (int)CyddStatus.反结 };
                orderTableList = _orderRep.GetOrderTableListBy(
                    tableList.Select(x => x.Id).ToArray(), statusArray);
            }

            foreach (var item in tableList)
            {
                TableListDTO obj = new TableListDTO
                {
                    AreaId      = item.R_Area_Id,
                    Description = item.Describe,
                    Id          = item.Id,
                    Name        = item.Name,
                    SeatNum     = item.SeatNum,
                    ServerRate  = item.ServerRate,
                    Restaurant  = resList
                                  .Where(x => x.Id == item.R_Restaurant_Id)
                                  .Select(x => x.Name).FirstOrDefault(),
                    IsVirtual = item.IsVirtual
                };

                if (conditionDto.CythStatus == CythStatus.在用)
                {
                    List <OrderTableDTO> orderDtoList = new List <OrderTableDTO>();
                    var filerByTableList = orderTableList.Where(x => x.R_Table_Id == item.Id).ToList();
                    if (conditionDto.OrderTableId > 0)//菜品转台时,去除原来的订单台号
                    {
                        filerByTableList = filerByTableList.Where(x => x.Id != conditionDto.OrderTableId).ToList();
                        if (filerByTableList.Count == 0)
                        {
                            continue;
                        }
                    }
                    foreach (var orderTab in filerByTableList)
                    {
                        OrderTableDTO dto = new OrderTableDTO();
                        dto.Id         = orderTab.Id;
                        dto.IsCheckOut = orderTab.IsCheckOut;
                        dto.IsOpen     = orderTab.IsOpen;
                        dto.CreateDate = orderTab.CreateDate;
                        dto.TableId    = orderTab.R_Table_Id;
                        dto.OrderId    = orderTab.R_Order_Id;
                        dto.OrderNo    = orderTab.OrderNo;
                        dto.IsLock     = orderTab.IsLock;
                        dto.IsControl  = orderTab.IsControl;
                        dto.PersonNum  = orderTab.PersonNum;
                        orderDtoList.Add(dto);
                    }
                    obj.CurrentOrderList = orderDtoList;
                }
                list.Add(obj);
            }

            return(list);
        }