public async Task <IActionResult> ImportDatas([FromBody] ImportDatasInput input)
        {
            var startDate = input.StartDate.Date;
            var dayOfweek = startDate.DayOfWeek;

            startDate = dayOfweek == DayOfWeek.Monday ? startDate :
                        dayOfweek == DayOfWeek.Tuesday ? startDate.AddDays(-1) :
                        dayOfweek == DayOfWeek.Wednesday ? startDate.AddDays(-2) :
                        dayOfweek == DayOfWeek.Thursday ? startDate.AddDays(-3) :
                        dayOfweek == DayOfWeek.Friday ? startDate.AddDays(-4) :
                        dayOfweek == DayOfWeek.Saturday ? startDate.AddDays(-5) :
                        dayOfweek == DayOfWeek.Sunday ? startDate.AddDays(-6) :
                        startDate;

            var list = await _dialysisScheduleApp.ImportDatas(startDate, input.FilePath);

            var maxDate       = list.Select(t => t.F_VisitDate.ToDate()).Max();
            var eixstsRecords = _dialysisScheduleApp.GetList(startDate, maxDate).ToList();

            _dialysisScheduleApp.CreateItems(list, eixstsRecords);
            return(Success("操作成功。"));
        }
        public IActionResult GetWeeklyList(GetWeeklyListInput input = null)
        {
            if (input == null)
            {
                input = new GetWeeklyListInput();
            }
            var startDate = input.scheduleDate.ToDate().Date;

            startDate = startDate.DayOfWeek == DayOfWeek.Monday ? startDate
                : startDate.DayOfWeek == DayOfWeek.Tuesday ? startDate.AddDays(-1)
                : startDate.DayOfWeek == DayOfWeek.Wednesday ? startDate.AddDays(-2)
                : startDate.DayOfWeek == DayOfWeek.Thursday ? startDate.AddDays(-3)
                : startDate.DayOfWeek == DayOfWeek.Friday ? startDate.AddDays(-4)
                : startDate.DayOfWeek == DayOfWeek.Saturday ? startDate.AddDays(-5)
                : startDate.DayOfWeek == DayOfWeek.Sunday ? startDate.AddDays(-6)
                : startDate;
            var endDate = startDate.AddDays(6);
            var visitNo = input.visitNo.ToInt();

            var beds = _dialysisMachineApp.GetQueryable().Select(t => new
            {
                groupName   = t.F_GroupName,
                bedId       = t.F_Id,
                bedNo       = t.F_DialylisBedNo,
                showOrder   = t.F_ShowOrder,
                machineName = t.F_MachineName,
                machineNo   = t.F_MachineNo,
                defaultType = t.F_DefaultType
            }).ToList();

            var query = _dialysisScheduleApp.GetList()
                        .Where(t => t.F_VisitDate >= startDate && t.F_VisitDate <= endDate)
                        .Where(t => t.F_VisitNo == visitNo);

            if (!string.IsNullOrEmpty(input.dialysisTypes))
            {
                var typesArr = input.dialysisTypes.Split(',');
                query = query.Where(t => typesArr.Contains(t.F_DialysisType));
            }
            if (!string.IsNullOrEmpty(input.patientId))
            {
                query = query.Where(t => t.F_PId.Equals(input.patientId));
            }
            var sourse = query.Select(t => new
            {
                scheduleId   = t.F_Id,
                visitDate    = t.F_VisitDate,
                pid          = t.F_PId,
                patientName  = t.F_Name,
                dialysisType = t.F_DialysisType,
                bid          = t.F_BId
            }).ToList();
            var list = sourse.Select(t => new
            {
                bedId = t.bid,
                t.scheduleId,
                t.visitDate,
                dayOfWeek = t.visitDate.ToDate().DayOfWeek,
                patientId = t.pid,
                t.patientName,
                t.dialysisType
            });

            var data = beds.GroupBy(t => t.groupName).Select(t => new
            {
                groupName = t.Key,
                rows      = t.GroupJoin(list, a => a.bedId, b => b.bedId, (a, b) => new
                {
                    a.bedId,
                    a.bedNo,
                    a.showOrder,
                    a.machineName,
                    a.machineNo,
                    a.defaultType,
                    items = b.OrderBy(v => v.visitDate)
                }).OrderBy(s => s.showOrder)
            }).OrderBy(g => g.groupName);

            return(Ok(data));
        }