Esempio n. 1
0
        public ActionResult GetTurnDuty(TurnDutySearchDTO req)
        {
            Response res = new Response();

            try
            {
                var operatorUser = OperatorProvider.Provider.GetCurrent();
                req.RestaurantId = Convert.ToInt32(operatorUser.DepartmentId);
                res.Data         = _statisticsRepository.GetTurnDuty(req);
            }
            catch (Exception ex)
            {
                res.Message = ex.Message;
            }
            return(Json(res, JsonRequestBehavior.AllowGet));
        }
Esempio n. 2
0
        public List <TurnDutyStatisticsGroupDto> GetTurnDuty(TurnDutySearchDTO req)
        {
            using (var db = new SqlSugarClient(Connection))
            {
                List <TurnDutyStatisticsGroupDto> res = new List <TurnDutyStatisticsGroupDto>();
                try
                {
                    req.StartDate = req.StartDate == null ? DateTime.Now : req.StartDate;
                    var marketList = db.Queryable <R_Market>()
                                     .Where(p => p.R_Restaurant_Id == req.RestaurantId).ToList();
                    var dataBase = db.Queryable <R_OrderPayRecord>()
                                   .JoinTable <R_Order>((s1, s2) => s1.R_Order_Id == s2.Id)
                                   .JoinTable <R_Order, R_Restaurant>((s1, s2, s3) => s2.R_Restaurant_Id == s3.Id)
                                   .JoinTable <R_Market>((s1, s4) => s1.R_Market_Id == s4.Id)
                                   .JoinTable <Czdm>((s1, s5) => s1.CreateUser == s5.Id)
                                   .Where <R_Order>((s1, s2) => s2.R_Restaurant_Id == req.RestaurantId && s2.IsDelete == false &&
                                                    (req.StartDate.Value == null || s1.BillDate == req.StartDate.Value) &&
                                                    (s1.CyddJzType == CyddJzType.定金 || s1.CyddJzType == CyddJzType.消费 || s1.CyddJzType == CyddJzType.转结 || s1.CyddJzType == CyddJzType.找零))
                                   .Select <TurnDutyStatisticsDTO>("s4.Id as MarketId,s5.Id as UserId,s5.Czdmmc00 as UserName,s1.CyddJzType,sum(s1.PayAmount) as TotalAmount")
                                   .GroupBy("s4.Id,s4.Name,s5.Id,s5.Czdmmc00,s1.CyddJzType").ToList();
                    TurnDutyStatisticsGroupDto model = null;
                    foreach (var item in marketList)
                    {
                        List <TurnDutyStatisticsDTO> users = new List <TurnDutyStatisticsDTO>();
                        decimal marketTotal = 0;
                        var     userAllList = dataBase.Where(p => p.MarketId == item.Id)
                                              .GroupBy(p => new { p.UserId, p.UserName, p.CyddJzType })
                                              .Select(g => new TurnDutyStatisticsDTO
                        {
                            UserId      = g.Key.UserId,
                            UserName    = g.Key.UserName,
                            TotalAmount = g.Sum(p => p.TotalAmount),
                            CyddJzType  = g.Key.CyddJzType
                        }).ToList();
                        var userGroups = userAllList.GroupBy(p => new { p.UserId, p.UserName }).Select(p => new TurnDutyStatisticsDTO {
                            UserId = p.Key.UserId, UserName = p.Key.UserName
                        }).ToList();
                        foreach (var use in userGroups)
                        {
                            decimal userTotal = 0;
                            var     userList  = userAllList.Where(p => p.UserId == use.UserId);
                            if (userList != null && userList.Any())
                            {
                                foreach (var ub in userList)
                                {
                                    if (ub.CyddJzType == (int)CyddJzType.折扣 || ub.CyddJzType == (int)CyddJzType.抹零)
                                    {
                                        marketTotal = marketTotal - ub.TotalAmount;
                                        userTotal   = userTotal - ub.TotalAmount;
                                    }
                                    else
                                    {
                                        marketTotal = marketTotal + ub.TotalAmount;
                                        userTotal   = userTotal + ub.TotalAmount;
                                    }
                                }
                                users.Add(new TurnDutyStatisticsDTO()
                                {
                                    UserId      = use.UserId,
                                    MarketId    = item.Id,
                                    MarketName  = item.Name,
                                    TotalAmount = userTotal,
                                    UserName    = use.UserName
                                });
                            }
                        }
                        model = new TurnDutyStatisticsGroupDto()
                        {
                            MarketId    = item.Id,
                            MarketName  = item.Name,
                            TotalAmount = marketTotal,
                            List        = users
                        };

                        res.Add(model);
                    }
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }
                return(res);
            }
        }