Ejemplo n.º 1
0
        public async Task <IActionResult> GetFilterList(GetFilterListInput input)
        {
            var bedInfo = await _dialysisMachineApp.GetForm(input.keyValue);

            var list = _patVisitApp.GetList()//input.startDate.ToDate(), input.endDate.ToDate(), bedInfo.F_GroupName, bedInfo.F_DialylisBedNo, true
                       .Where(t => t.F_VisitDate >= input.startDate.ToDate() &&
                              t.F_VisitDate <= input.endDate.ToDate() &&
                              t.F_GroupName == bedInfo.F_GroupName &&
                              t.F_DialysisBedNo == bedInfo.F_DialylisBedNo &&
                              t.F_DialysisStartTime != null &&
                              t.F_DialysisEndTime != null
                              )
                       .Select(t => new
            {
                vid               = t.F_Id,
                pid               = t.F_Pid,
                dialysisNo        = t.F_DialysisNo,
                patientName       = t.F_Name,
                patientGender     = t.F_Gender,
                visitDate         = t.F_VisitDate,
                visitNo           = t.F_VisitNo,
                groupName         = t.F_GroupName,
                dialysisBedNo     = t.F_DialysisBedNo,
                dialysisStartTime = t.F_DialysisStartTime,
                dialysisEndTime   = t.F_DialysisEndTime
            }).ToList();
            var processes = _machineProcessApp.GetList(input.startDate.ToDate(), input.endDate.ToDate(), input.keyValue)
                            .Select(t => new
            {
                id            = t.F_Id,
                vid           = t.F_Vid,
                operatePerson = t.F_OperatePerson,
                operateTime   = t.F_OperateTime,
                option1       = t.F_Option1,
                option2       = t.F_Option2,
                option3       = t.F_Option3,
                option4       = t.F_Option4,
                option5       = t.F_Option5,
                option6       = t.F_Option6,
                memo          = t.F_Memo
            }).ToList();
            var data = new
            {
                machine = new
                {
                    groupName   = bedInfo.F_GroupName,
                    bedNo       = bedInfo.F_DialylisBedNo,
                    showOrder   = bedInfo.F_ShowOrder,
                    machineName = bedInfo.F_MachineName,
                    machineNo   = bedInfo.F_MachineNo,
                    defaultType = bedInfo.F_DefaultType
                },
                rows = list.GroupJoin(processes, v => v.vid, p => p.vid, (v, p) => new
                {
                    v.vid,
                    isProcessed = p.Count() > 0,
                    //v.dialysisBedNo,
                    v.patientName,
                    v.patientGender,
                    v.visitDate,
                    v.visitNo,
                    v.dialysisStartTime,
                    v.dialysisEndTime,
                    processItem = p.FirstOrDefault()
                }).Select(t => t).OrderBy(t => t.visitDate).ThenBy(t => t.visitNo)
            };

            return(Ok(data));
        }
        public IActionResult GetFilterList(GetFilterListInput input)
        {
            //设置筛选条件
            var query = _dialysisScheduleApp.GetList()
                        .Where(t => t.F_PId.Equals(input.patientId))
                        .Where(t => t.F_VisitDate >= input.startDate && t.F_VisitDate <= input.endDate)
                        .Where(t => t.F_EnabledMark == true);

            if (!string.IsNullOrEmpty(input.dialysisType))
            {
                query = query.Where(t => t.F_DialysisType.Equals(input.dialysisType));
            }
            //查询数据
            var list = query.Select(t => new
            {
                t.F_Id,
                t.F_GroupName,
                t.F_DialysisBedNo,
                t.F_VisitDate,
                t.F_VisitNo,
                t.F_DialysisType
            })
                       .ToList()
                       .Select(t => new
            {
                id            = t.F_Id,
                groupName     = t.F_GroupName,
                dialysisBedNo = t.F_DialysisBedNo,
                visitDate     = t.F_VisitDate,
                monthDesc     = t.F_VisitDate.ToDateString().Substring(0, 7),
                weekDesc      = t.F_VisitDate.ToDate().DayOfWeek,
                visitNo       = t.F_VisitNo.ToInt(),
                dialysisType  = t.F_DialysisType
            });
            var months = list.Select(t => t.monthDesc).Distinct().OrderByDescending(t => t);
            var data   = new List <GetFilterListOutput>();

            foreach (var month in months)
            {
                var entity = new GetFilterListOutput
                {
                    monthDesc = month
                };
                foreach (var child in list.Where(t => t.monthDesc.Equals(month)).OrderByDescending(t => t.visitDate))
                {
                    var date = child.visitDate.ToDate();
                    var week = date.DayOfWeek == DayOfWeek.Monday ? "周一" :
                               date.DayOfWeek == DayOfWeek.Tuesday ? "周二" :
                               date.DayOfWeek == DayOfWeek.Wednesday ? "周三" :
                               date.DayOfWeek == DayOfWeek.Thursday ? "周四" :
                               date.DayOfWeek == DayOfWeek.Friday ? "周五" :
                               date.DayOfWeek == DayOfWeek.Saturday ? "周六" :
                               "周日";
                    entity.items.Add(new ScheduleItem
                    {
                        dayDesc       = date.Day.ToString() + "号",
                        weekDesc      = week,
                        visitNo       = child.visitNo,
                        groupName     = child.groupName,
                        dialysisBedNo = child.dialysisBedNo,
                        dialysisType  = child.dialysisType
                    });
                }
                data.Add(entity);
            }
            return(Ok(data));
        }