public async Task <IActionResult> GetBookMealListAsync(GetBookMealListAsyncRequestDto request)
        {
            if (string.IsNullOrWhiteSpace(request.HospitalGuid))
            {
                var userModel = await new MealOperatorBiz().GetModelAsync(UserID);
                if (userModel == null)
                {
                    return(Failed(ErrorCode.DataBaseError, "无法获取医院所在信息!"));
                }
                request.HospitalGuid = userModel.HospitalGuid;
            }
            //做分组等
            var responseList  = await new MealMenuBiz().GetBookMealListAsync(request);
            var responseGroup = responseList.GroupBy(a => a.CategoryName);
            List <GetBookMealListAsyncReturnResponseDto> returnResponse = new List <GetBookMealListAsyncReturnResponseDto>();

            foreach (var item in responseGroup)
            {
                var      firstOrDefault     = item.FirstOrDefault();
                string[] hoursArr           = firstOrDefault.CategoryScheduleTime.Trim().Split(":");
                int      housrs             = Convert.ToInt32(hoursArr[0]);
                int      minute             = Convert.ToInt32(hoursArr[1]);
                var      expirationDateTime = firstOrDefault.MealDate.Value.AddDays(-firstOrDefault.CategoryAdvanceDay).AddHours(housrs).AddMinutes(minute);
                bool     isBigger           = expirationDateTime > DateTime.Now;
                var      resp = new GetBookMealListAsyncReturnResponseDto
                {
                    CategoryGuid         = firstOrDefault.CategoryGuid,
                    CategoryName         = firstOrDefault.CategoryName,
                    CategoryAdvanceDay   = firstOrDefault.CategoryAdvanceDay,
                    CategoryScheduleTime = firstOrDefault.CategoryScheduleTime,
                    HosName          = firstOrDefault.HosName,
                    MenuDate         = firstOrDefault.MealDate,
                    IsExpirationBook = isBigger
                };
                var respDetailList = new List <GetBookMealListAsyncReturnResponseDto.BookedDishesInfo>();
                foreach (var detail in item)
                {
                    var respDetail = new GetBookMealListAsyncReturnResponseDto.BookedDishesInfo
                    {
                        DishesGuid  = detail.DishesGuid,
                        DishesName  = detail.DishesName,
                        BookedTotal = detail.BookedTotal
                    };
                    respDetailList.Add(respDetail);
                }
                resp.BookedDishesInfoList = respDetailList;
                returnResponse.Add(resp);
            }

            return(Success(returnResponse));
        }
Esempio n. 2
0
        /// <summary>
        /// 根据获取已选餐
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public async Task <List <GetBookMealListAsyncResponseDto> > GetBookMealListAsync(GetBookMealListAsyncRequestDto request)
        {
            string sql = $@"SELECT
	                                    dh.hos_name,
	                                    a.meal_date,
	                                    b.dishes_guid,
	                                    b.dishes_name,
	                                    a.category_guid,
	                                    a.category_name,
	                                    mc.category_advance_day,
	                                    mc.category_schedule_time,
	                                    SUM( b.quantity ) AS BookedTotal 
                                    FROM
	                                    t_meal_order AS a
	                                    LEFT JOIN t_meal_order_detail b ON a.order_guid = b.order_guid 
	                                    AND a.`enable` = b.`enable`
	                                    LEFT JOIN t_meal_category AS mc ON a.category_guid = mc.category_guid
	                                    LEFT JOIN t_doctor_hospital AS dh ON a.hospital_guid = dh.hospital_guid 
                                    WHERE
	                                    a.order_status = 'Paided' 
	                                    AND a.meal_date =@Date
	                                    AND a.hospital_guid = @HospitalGuid
                                    GROUP BY
	                                    dh.hos_name,
	                                    a.meal_date,
	                                    b.dishes_guid,
	                                    b.dishes_name,
	                                    a.category_guid,
	                                    a.category_name,
	                                    mc.category_advance_day,
	                                    mc.category_schedule_time "    ;

            //AND mm.ENABLE = 1
            using (var conn = MySqlHelper.GetConnection())
            {
                return((await conn.QueryAsync <GetBookMealListAsyncResponseDto>(sql,
                                                                                new { Date = request.Date.Value.ToString("yyyy/MM/dd"), request.HospitalGuid })).ToList());
            }
        }