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)); }
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()); }
/// <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)); }
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)); }
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()); }
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)); }
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()); }
/// <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); } }
/// <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); } }