コード例 #1
0
        private List<EvaluteDetail> DataBind()
        {
            if (gvFit.SelectedIndex != -1)
            {
                FitResultList = new ObservableCollection<FitResultDemo>();
                FitDemo FitDemo = this.gvFit.SelectedItem as FitDemo;

                List<EvaluteDetail> list;
                List<EvaluteDetail> listTemp = null ;


                if (cbAvg.IsChecked.HasValue && cbAvg.IsChecked.Value)
                {
                    
                    if (cbMode.SelectedItem == null || ((ComboBoxItem)cbMode.SelectedItem).Tag.ToString() == "0")
                    {
                        listTemp = (from od in MySession.Query<EvaluteDetail>()
                                    where od.PatientID == ModuleConstant.PatientId && od.EvaluteDate == Convert.ToDateTime(FitDemo.DayTime)
                                    select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();
                    }
                    else
                    {
                        listTemp = (from od in MySession.Query<EvaluteDetail>()
                                    where od.PatientID == ModuleConstant.PatientId && od.EvaluteDate == Convert.ToDateTime(FitDemo.DayTime)
                                     && od.ActionId == Convert.ToInt32(((ComboBoxItem)cbMode.SelectedItem).Tag)
                                    select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();
                    }

                    //计算平均值
                    Dictionary<int, float> temp = new Dictionary<int, float>();
                    Dictionary<int, float> templast = new Dictionary<int, float>();
                    Dictionary<int, float> tempFatigueIndex = new Dictionary<int, float>();
                    for (int i = 0; i < listTemp.Count(); i++)
                    {
                        if (temp.ContainsKey(listTemp[i].ActionId))
                        {
                            temp[listTemp[i].ActionId] = (temp[listTemp[i].ActionId] + listTemp[i].MaxV) / 2;
                            templast[listTemp[i].ActionId] = (templast[listTemp[i].ActionId] + listTemp[i].LastValue) / 2;
                            tempFatigueIndex[listTemp[i].ActionId] = (tempFatigueIndex[listTemp[i].ActionId] + listTemp[i].FatigueIndex) / 2;
                        }
                        else
                        {
                            temp[listTemp[i].ActionId] = listTemp[i].MaxV;
                            templast[listTemp[i].ActionId] = listTemp[i].LastValue;
                            tempFatigueIndex[listTemp[i].ActionId] = listTemp[i].FatigueIndex;
                        }
                    }

                    //赋值
                    list = new List<EvaluteDetail>();
                    foreach (var item in temp)
                    {
                        EvaluteDetail ed = new EvaluteDetail();
                        ed.ActionId = item.Key;
                        ed.MaxV = item.Value;
                        ed.LastValue = templast[item.Key];
                        ed.FatigueIndex = tempFatigueIndex[item.Key];
                        ed.EvaluteDetailDate = DateTime.MinValue;
                        list.Add(ed);
                    }
                }
                else
                {
                    if (cbMode.SelectedItem == null || ((ComboBoxItem)cbMode.SelectedItem).Tag.ToString() == "0")
                    {
                        list = (from od in MySession.Query<EvaluteDetail>()
                                where od.PatientID == ModuleConstant.PatientId && od.EvaluteDate == Convert.ToDateTime(FitDemo.DayTime)
                                select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();
                    }
                    else
                    {
                        list = (from od in MySession.Query<EvaluteDetail>()
                                where od.PatientID == ModuleConstant.PatientId && od.EvaluteDate == Convert.ToDateTime(FitDemo.DayTime)
                                 && od.ActionId == Convert.ToInt32(((ComboBoxItem)cbMode.SelectedItem).Tag)
                                select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();
                    }
                }

                DataTable tbl = new DataTable();
                tbl.Columns.Add("EvaluteDetailId", typeof(string));
                tbl.Columns.Add("ActionName", typeof(string));
                tbl.Columns.Add("MaxV", typeof(string));
                tbl.Columns.Add("LastValue", typeof(string));
                tbl.Columns.Add("FatigueIndex", typeof(string));
                tbl.Columns.Add("EvaluteDetailDate", typeof(string));

                foreach (var item in list)
                {
                    tbl.Rows.Add(item.EvaluteDetailId.ToString(), EnumHelper.GetEnumItemName(item.ActionId, typeof(EvaluateActionEnum)), item.MaxV, item.LastValue, item.FatigueIndex, item.EvaluteDetailDate == DateTime.MinValue ? "" : item.EvaluteDetailDate.ToString("yyyy-MM-dd HH:mm:ss"));
                }

                if (tbl.Rows.Count > 0)
                {
                    FitDemoList.Clear();
                    if (tbl.Rows.Count > 0)
                    {
                        for (int i = 0; i < tbl.Rows.Count; i++)
                        {
                            DataRow dr = tbl.Rows[i];
                            FitResultDemo item = new FitResultDemo();
                            item.EvaluteDetailId = dr[0].ToString();
                            item.ActionName = dr[1].ToString();
                            item.MaxV = dr[2].ToString();
                            item.LastValue = dr[3].ToString();
                            item.FatigueIndex = dr[4].ToString();
                            item.EvaluteDetailDate = dr[5].ToString();

                            FitResultList.Add(item);
                        }
                    }
                }

                gvInfo.ItemsSource = FitResultList;

                return listTemp;

            }
            else
            {
                gvInfo.ItemsSource = null;
                return null;
            }
        }
コード例 #2
0
        private void BindReportItem()
        {

            List<FitDemo> checkList = new List<FitDemo>();

            foreach (FitDemo item in TestList)
            {
                if (item.IsChecked == true)
                {
                    checkList.Add(item);
                }
            }

            List<EvaluteDetail> list;
            List<EvaluteDetail> listTemp = null;

            if (cbAvg.IsChecked.HasValue && cbAvg.IsChecked.Value)
            {
                if (cbMode.SelectedItem == null || ((ComboBoxItem)cbMode.SelectedItem).Tag.ToString() == "0")
                {
                    listTemp = (from od in MySession.Query<EvaluteDetail>()
                                where od.PatientID == ModuleConstant.PatientId
                                select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();
                }
                else
                {
                    listTemp = (from od in MySession.Query<EvaluteDetail>()
                                where od.PatientID == ModuleConstant.PatientId
                                 && od.ActionId == Convert.ToInt32(((ComboBoxItem)cbMode.SelectedItem).Tag)
                                select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();
                }

                #region 计算平均值


                //计算平均值
                Dictionary<int, float> temp = new Dictionary<int, float>();
                Dictionary<int, float> templast = new Dictionary<int, float>();
                Dictionary<int, float> tempFatigueIndex = new Dictionary<int, float>();
                for (int i = 0; i < listTemp.Count(); i++)
                {
                    if (temp.ContainsKey(listTemp[i].ActionId))
                    {
                        temp[listTemp[i].ActionId] = (temp[listTemp[i].ActionId] + listTemp[i].MaxV) / 2;
                        templast[listTemp[i].ActionId] = (templast[listTemp[i].ActionId] + listTemp[i].LastValue) / 2;
                        tempFatigueIndex[listTemp[i].ActionId] = (tempFatigueIndex[listTemp[i].ActionId] + listTemp[i].FatigueIndex) / 2;
                    }
                    else
                    {
                        temp[listTemp[i].ActionId] = listTemp[i].MaxV;
                        templast[listTemp[i].ActionId] = listTemp[i].LastValue;
                        tempFatigueIndex[listTemp[i].ActionId] = listTemp[i].FatigueIndex;
                    }
                }
                #endregion

                #region 赋值


                //赋值
                list = new List<EvaluteDetail>();
                foreach (var item in temp)
                {
                    EvaluteDetail ed = new EvaluteDetail();
                    ed.ActionId = item.Key;
                    ed.MaxV = item.Value;
                    ed.LastValue = templast[item.Key];
                    ed.FatigueIndex = tempFatigueIndex[item.Key];
                    ed.EvaluteDetailDate = DateTime.MinValue;
                    list.Add(ed);
                }
            }
            else
            {
                if (cbMode.SelectedItem == null || ((ComboBoxItem)cbMode.SelectedItem).Tag.ToString() == "0")
                {

                    list = (from od in MySession.Query<EvaluteDetail>()
                            where od.PatientID == ModuleConstant.PatientId
                            select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();
                }
                else
                {
                    list = (from od in MySession.Query<EvaluteDetail>()
                            where od.PatientID == ModuleConstant.PatientId
                             && od.ActionId == Convert.ToInt32(((ComboBoxItem)cbMode.SelectedItem).Tag)
                            select od).OrderByDescending(x => x.EvaluteDetailDate).ToList();


                }
            }
            list = (from od in list
                    join q in checkList on GetDate(od.EvaluteDate) equals q.DayTime
                    select od).ToList();
                #endregion


            #region ROM赋值

            if (checkList.Count > 0)
            {
                foreach (FitDemo item in checkList)
                {
                    ReportItem reportItem = new ReportItem();
                    reportItem.Explosiveforce = GetROM(list, EvaluateActionEnum.RangeProtrusive, item.DayTime);
                    reportItem.Endurance = GetROM(list, EvaluateActionEnum.RangeBend, item.DayTime);
                    reportItem.Fatigueindex = GetROM(list, EvaluateActionEnum.RotationRangeLeft, item.DayTime);
                    reportItem.FitTime = GetROM(list, EvaluateActionEnum.RotationRangeRight, item.DayTime);
                    reportItem.ROMTime = Convert.ToDateTime(item.DayTime).ToString("yyyyMMdd");
                    List5.Add(reportItem);
                }
            }
            #endregion


            foreach (EvaluteDetail item in list)
            {
                ReportItem reportItem = new ReportItem();
                reportItem.ItemID = item.EvaluteDetailId.ToString();
                reportItem.Explosiveforce = item.MaxV.ToString();
                reportItem.Endurance = item.LastValue.ToString();
                reportItem.Fatigueindex = item.FatigueIndex.ToString();
                reportItem.FitTime = Convert.ToDateTime(item.EvaluteDetailDate).ToString("yyyyMMdd");

                if (item.ActionId == (int)EvaluateActionEnum.StrengthProtrusive)
                {
                    List1.Add(reportItem);
                }
                if (item.ActionId == (int)EvaluateActionEnum.StrengthBend)
                {
                    List2.Add(reportItem);
                }
                if (item.ActionId == (int)EvaluateActionEnum.RotationStrengthLeft)
                {
                    List3.Add(reportItem);
                }
                if (item.ActionId == (int)EvaluateActionEnum.RotationStrengthRigth)
                {
                    List4.Add(reportItem);
                }

            }
        }
コード例 #3
0
        private void SaveTrainRecord(EvaluteResult record)
        {
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                if (MessageBox.Show("是否保存评测结果?","提示",MessageBoxButton.YesNo) == MessageBoxResult.Yes)
                {
                    try
                    {
                        EvaluteDetail ed = new EvaluteDetail();
                        ed.EvaluteDetailDate = DateTime.Now;
                        ed.EvaluteDate = DateTime.Now.Date;
                        if (record.MaxValue.HasValue) ed.MaxV = record.MaxValue.Value;
                        if (record.LastValue.HasValue) ed.LastValue = record.LastValue.Value;
                        if (record.MaxValue.HasValue && record.MaxValue.Value > 0 && record.LastValue.HasValue)
                        {
                            ed.FatigueIndex =(record.MaxValue.Value - record.LastValue.Value) / record.MaxValue.Value;
                        }
                        ed.ModeId = (int)record.EvaluteMode;
                        ed.ActionId = (int)record.EvaluteAction;
                        ed.PatientID = ModuleConstant.PatientId;
                        ed.Interval = Time;
                        if (Mode == EvaluateModeEnum.Range)
                        {
                            ed.TargetValue = Angle;
                        }
                        else
                        {
                            ed.TargetValue = Power;
                        }
                        StringBuilder sb = new StringBuilder();
                        if (record.TargetLine != null)
                        {
                            for (int i = 0; i < record.TargetLine.Length; i++)
                            {
                                if (i == 0)
                                {
                                    sb.Append(record.TargetLine[i].ToString("#0.00"));
                                }
                                else
                                {
                                    sb.Append("|").Append(record.TargetLine[i].ToString("#0.00"));
                                }
                            }
                            ed.Record = sb.ToString();
                        }

                        sb = new StringBuilder();
                       
                        if (record.RealLine != null)
                        {
                            for (int i = 0; i < record.RealLine.Length; i++)
                            {
                                if (i == 0)
                                {
                                    sb.Append(record.RealLine[i].ToString("#0.00"));
                                }
                                else
                                {
                                    sb.Append("|").Append(record.RealLine[i].ToString("#0.00"));
                                }
                            }
                            ed.Record2 = sb.ToString();
                        }
                        

                        MySession.Session.Save(ed);
                        MySession.Session.Flush();

                        if (Mode == EvaluateModeEnum.Range)
                        {
                            FitModeEnum fitMode = FitModeEnum.RotationFit;
                            int? minValue = null;
                            int? maxValue = null;

                            if (Action == EvaluateActionEnum.RotationRangeLeft)
                            {
                                fitMode = FitModeEnum.RotationFit;
                                maxValue = (int)record.MaxValue.Value;
                            }
                            else if (Action == EvaluateActionEnum.RotationRangeRight)
                            {
                                fitMode = FitModeEnum.RotationFit;
                                minValue = (int)record.MaxValue.Value * -1;
                            }
                            else if (Action == EvaluateActionEnum.RangeBend)
                            {
                                fitMode = FitModeEnum.ProtrusiveOrBendFit;
                                minValue = (int)record.MaxValue.Value * -1;
                            }
                            else if (Action == EvaluateActionEnum.RangeProtrusive)
                            {
                                fitMode = FitModeEnum.ProtrusiveOrBendFit;
                                maxValue = (int)record.MaxValue.Value;
                            }

                            var result = (from fr in MySession.Query<FitRecord>()
                                          where fr.PatientID == ModuleConstant.PatientId
                                          && fr.PushRodValue <= LumbarRobotController.RobotController.PushRodAngle + 1
                                          && fr.PushRodValue >= LumbarRobotController.RobotController.PushRodAngle - 1
                                          select fr).OrderByDescending(x => x.CreateTime);
                            FitRecord fitRecord;

                            if (result.Count() > 0)
                            {
                                fitRecord = result.First();
                            }
                            else
                            {
                                fitRecord = new FitRecord();
                                fitRecord.Id = Guid.NewGuid().ToString("N");
                                fitRecord.PatientID = ModuleConstant.PatientId;
                                fitRecord.MinAngle = 0;
                                fitRecord.MinAngle = 0;
                            }

                            fitRecord.ModeID = (int)fitMode;
                            fitRecord.CreateTime = DateTime.Now;
                            fitRecord.PushRodValue = LumbarRobotController.RobotController.PushRodAngle;
                            if (minValue.HasValue)
                            {
                                fitRecord.MinAngle = minValue.Value;
                            }
                            if (maxValue.HasValue)
                            {
                                fitRecord.MaxAngle = maxValue.Value;
                            }

                            MySession.Session.SaveOrUpdate(fitRecord);
                            MySession.Session.Flush();

                            if (fitRecord.ModeID == (int)Common.Enums.FitModeEnum.ProtrusiveOrBendFit)
                            {
                                eilelc21.FltMinusValue = fitRecord.MinAngle;
                                eilelc21.FltValu = fitRecord.MaxAngle;
                            }
                            else if (fitRecord.ModeID == (int)Common.Enums.FitModeEnum.RotationFit)
                            {
                                eilelc21.FltMinusValue = fitRecord.MinAngle;
                                eilelc21.FltValu = fitRecord.MaxAngle;
                            }

                            eilelc21.Rest();
                        }



                    }
                    catch { }
                }
            }));
        }