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