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