//后台导入 void worker_DoWork(object sender, DoWorkEventArgs e) { Model.ImportDataErrorModel errorModel;//错误模型 int currentManagerID = AddTestManagerModel();//添加测试项目 for (int i = 0; i < choosedFileNames.Length; i++) { if (importFlag == 1) { break; } if (importFlag == 2) { i--; continue; } string fileName = choosedFileNames[i]; string[] contents = File.ReadAllLines(fileName); //检查数据文件是否是测试数据文件 if (!CheckFile(fileName, contents)) { worker.ReportProgress(i + 1, null); continue; } else { worker.ReportProgress(i + 1, contents); } string testDate = GetLineValue(contents[2]); string testTime = GetLineValue(contents[3]); DateTime testDateTime = DateTime.Now; if (testDate != "" && testTime != "") { try { testDateTime = Convert.ToDateTime(testDate + " " + testTime, dtPointFormat); } catch { testDateTime = DateTime.Now; } } //添加人员信息 Model.TB_AthleteInfo athModel = new Model.TB_AthleteInfo(); athModel.Ath_PinYin = athModel.Ath_Name = GetLineValue(contents[4]); athModel.Ath_TestID = currentManagerID; athModel.Ath_Sex = DataUtil.AthleteSexUtil.GetSex(GetLineValue(contents[29])); athModel.Ath_TestDate = testDateTime; string birthdayStr = GetLineValue(contents[27]); if (birthdayStr != "") { try { athModel.Ath_Birthday = Convert.ToDateTime(birthdayStr, dtLineFormat); } catch { athModel.Ath_Birthday = DateTime.Now; } } athModel.Ath_Height = GetLineValue(contents[26]); athModel.Ath_Weight = GetLineValue(contents[25]); int athID = AddAthInfo(athModel); if (athID == -1) {//添加失败,继续 errorModel = new Model.ImportDataErrorModel(); errorModel.ErrorString = "添加人员信息出错"; errorModel.FileName = fileName; errorModelList.Add(errorModel); continue; } string Gravitycomp = GetLineValue(contents[31]); string dataFileName = ""; //处理数据文件 try { BaseDataUtil dataUtil = new BaseDataUtil(); dataUtil.SmoothValue = (int)smoothValue; dataUtil.Weight = athModel.Ath_Weight; if (Gravitycomp != "") { dataUtil.Gravitycomp = Gravitycomp; } dataFileName = dataUtil.WriteBaseData(contents); } catch { errorModel = new Model.ImportDataErrorModel(); errorModel.ErrorString = "计算出错"; errorModel.FileName = fileName; errorModelList.Add(errorModel); continue; } //添加到数据库 try { Model.TB_TestInfo testInfoModel = new Model.TB_TestInfo(); testInfoModel.Gravitycomp = Gravitycomp; testInfoModel.DataFileName = dataFileName; testInfoModel.BaseFileName = contents[0].Trim(); testInfoModel.Ath_ID = athID; testInfoModel.TestDate = testInfoModel.TestTime = testDateTime; testInfoModel.Joint_Side = GetLineValue(contents[5]); testInfoModel.Test_Mode = GetLineValue(contents[6]); testInfoModel.Joint = GetLineValue(contents[7]); testInfoModel.Plane = GetLineValue(contents[8]); testInfoModel.Motion_Start = GetLineValue(contents[10]); testInfoModel.Motion_End = GetLineValue(contents[11]); testInfoModel.Speed1 = GetLineValue(contents[12]); testInfoModel.Speed2 = GetLineValue(contents[13]); testInfoModel.Acceleration1 = GetLineValue(contents[14]); testInfoModel.Acceleration2 = GetLineValue(contents[15]); testInfoModel.Break = GetLineValue(contents[18]); testInfoModel.NOOfSets = GetLineValue(contents[22]); testInfoModel.NOOfRepetitions = GetLineValue(contents[23]); testInfoModel.InsuredSide = GetLineValue(contents[28]); testInfoModel.Therapist = GetLineValue(contents[30]); testInfoBLL.Add(testInfoModel); } catch { errorModel = new Model.ImportDataErrorModel(); errorModel.ErrorString = "保存测试信息出错"; errorModel.FileName = fileName; errorModelList.Add(errorModel); continue; } } }
//测试次数选择和不选择 private void testCountCB_Checked(object sender, RoutedEventArgs e) { List<Model.TestCountModel> oddCheckedCountModel = oddTestCountList.FindAll(x => x.IsChecked == true); List<Model.TestCountModel> evenCheckedCountModel = evenTestCountList.FindAll(x => x.IsChecked == true); if (oddCheckedCountModel.Count == 0||evenCheckedCountModel.Count==0) { MessageBox.Show("奇数或偶数测试次数都应至少保留一个!", "系统信息"); (sender as CheckBox).IsChecked = true; return; } string oddCheckedCount = ""; for (int i = 0; i < oddCheckedCountModel.Count; i++) { oddCheckedCount += oddCheckedCountModel[i].Count; if (i != oddCheckedCountModel.Count - 1) { oddCheckedCount += ","; } } string evenCheckedCount = ""; for (int i = 0; i < evenCheckedCountModel.Count; i++) { evenCheckedCount += evenCheckedCountModel[i].Count; if (i != evenCheckedCountModel.Count - 1) { evenCheckedCount += ","; } } dataDoc.Descendants("action1").ElementAt(0).Attribute("index").Value = oddCheckedCount; dataDoc.Descendants("action2").ElementAt(0).Attribute("index").Value = evenCheckedCount; dataDoc.Save(AppDomain.CurrentDomain.BaseDirectory + "\\AppData\\XmlData\\" + DataModel.DataFileName); BaseDataUtil du = new BaseDataUtil(); du.Weight = DataModel.Ath_Weight; if (DataModel.Gravitycomp.Trim() != "") { du.Gravitycomp = DataModel.Gravitycomp; } du.ComputeParams(AppDomain.CurrentDomain.BaseDirectory + "\\AppData\\XmlData\\" + DataModel.DataFileName); RefrenshChart(); }
//导入方法 private void Import(string [] fileNames,bool ischeckRepeate) { importProgress.Maximum = fileNames.Count(); importProgress.Minimum = 0; importProgress.Value = 0; double value = 0; UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(importProgress.SetValue); for (int i = 0; i < fileNames.Count(); i++) { if (importFlag == 1) { break; } if (importFlag == 2) { i--; continue; } value += 1; Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, value }); Model.ImportDataErrorModel errorModel=null; string baseFileName=fileNames[i]; #region 写入进度 tbFileName.Text = "文件名:" + baseFileName.Substring(baseFileName.LastIndexOf("\\") + 1); tbContent1.Text = ""; tbContent2.Text = ""; tbContent3.Text = ""; tbProgress.Text = (i + 1) + "/" + fileNames.Count(); #endregion #region 读取数据文件信息 string[] contents = File.ReadAllLines(baseFileName); if (!CheckFile(baseFileName, contents)) { continue; } for (int a = 0; a < 11; a++) { tbContent1.Text += contents[a] + "\r\n"; tbContent2.Text += contents[11 + a] + "\r\n"; tbContent3.Text += contents[22 + a] + "\r\n"; } string testDate = GetLineValue(contents[2]); string testTime = GetLineValue(contents[3]); DateTime testDateTime = DateTime.Now; if (testDate != "" && testTime != "") { try { testDateTime = Convert.ToDateTime(testDate + " " + testTime, dtPointFormat); } catch { testDateTime = DateTime.Now; } } Model.TB_AthleteInfo athModel = new Model.TB_AthleteInfo(); athModel.Ath_PinYin = athModel.Ath_Name = GetLineValue(contents[4]); athModel.Ath_Sex = DataUtil.AthleteSexUtil.GetSex(GetLineValue(contents[29])); athModel.Ath_TestDate = testDateTime; string birthdayStr = GetLineValue(contents[27]); if (birthdayStr != "") { try { athModel.Ath_Birthday = Convert.ToDateTime(birthdayStr, dtLineFormat); } catch { athModel.Ath_Birthday = DateTime.Now; } } else { athModel.Ath_Birthday = null; } athModel.Ath_Height = GetLineValue(contents[26]); athModel.Ath_Weight = GetLineValue(contents[25]); Model.TB_AthleteInfo testAthInfoModel = CheckAthInfo(athModel); if (testAthInfoModel == null) { continue; } Model.TB_TestInfo testInfo = new Model.TB_TestInfo(); testInfo.BaseFileName = contents[0].Trim(); testInfo.TestTime = testInfo.TestDate = testDateTime; testInfo.Joint_Side = GetLineValue(contents[5]); testInfo.Test_Mode = GetLineValue(contents[6]); testInfo.Joint = GetLineValue(contents[7]); testInfo.Plane = GetLineValue(contents[8]); testInfo.Motion_Start = GetLineValue(contents[10]); testInfo.Motion_End = GetLineValue(contents[11]); testInfo.Speed1 = GetLineValue(contents[12]); testInfo.Speed2 = GetLineValue(contents[13]); testInfo.Acceleration1 = GetLineValue(contents[14]); testInfo.Acceleration2 = GetLineValue(contents[15]); testInfo.Break = GetLineValue(contents[18]); testInfo.NOOfSets = GetLineValue(contents[22]); testInfo.NOOfRepetitions = GetLineValue(contents[23]); testInfo.InsuredSide = GetLineValue(contents[28]); testInfo.Therapist = GetLineValue(contents[30]); testInfo.Gravitycomp = GetLineValue(contents[31]); testInfo.DataFileName = ""; testInfo.Ath_ID = testAthInfoModel.ID; #endregion #region 检查是否重复导入 if (ischeckRepeate) { //检测是否有相同时间的数据导入 try { //判断该测试信息是否导入,判断条件 用户ID 测试日期,数据文件名 List<Model.TB_TestInfo> existsTestInfoList = testInfoBLL.GetModelList("ath_id=" + testInfo.Ath_ID + " and testdate=#" + testInfo.TestDate + "# and BaseFileName='" + testInfo.BaseFileName + "'"); if (existsTestInfoList.Count > 0)//有重复数据 { existsIDs += existsTestInfoList[0].ID + ","; Model.ExistsFileModel exFileModel = new Model.ExistsFileModel(); exFileModel.FileName = baseFileName; exFileModel.RealName = baseFileName.Substring(baseFileName.LastIndexOf("\\") + 1); existsFiles.Add(exFileModel); continue; } } catch (Exception ee) { MessageBox.Show("检查此文件是否导入时出错!\r\n" + ee.Message, "系统错误"); errorModel = new Model.ImportDataErrorModel(); errorModel.ErrorString = "3"; errorModel.FileName = baseFileName; errorModelList.Add(errorModel); continue; } } #endregion //导入 try { BaseDataUtil dataUtil = new BaseDataUtil(); dataUtil.SmoothValue = (int)smoothValue; dataUtil.Weight = testAthInfoModel.Ath_Weight; if (testInfo.Gravitycomp.Trim() != "") { dataUtil.Gravitycomp = testInfo.Gravitycomp; } string fileName = dataUtil.WriteBaseData(contents); testInfo.DataFileName = fileName; } catch (Exception ee) { MessageBox.Show("计算出错!\r\n" + ee.Message, "系统错误"); errorModel = new Model.ImportDataErrorModel(); errorModel.ErrorString = "4"; errorModel.FileName = baseFileName; errorModelList.Add(errorModel); continue; } //添加到数据库 try { testInfoBLL.Add(testInfo); } catch (Exception ee) { MessageBox.Show("添加测试信息出错,请稍候重试!\r\n" + ee.Message, "系统错误"); errorModel = new Model.ImportDataErrorModel(); errorModel.ErrorString = "5"; errorModel.FileName = baseFileName; errorModelList.Add(errorModel); continue; } } if (errorModelList.Count > 0) { tbErrorCount.Text = errorModelList.Count + "个文件导入错误"; ErrorPanel.Visibility = Visibility.Visible; } if (ischeckRepeate) {//如果检查重复并且存在重复数据就刷新数据列表 if (existsFiles.Count > 0) { btnReImport.IsEnabled = true; RefrenshDataGridSource(); } else { btnReImport.IsEnabled = false; } } }
private void btnSmooth_Click(object sender, RoutedEventArgs e) { SmoothDataWindow smoothDataWindow = new SmoothDataWindow(); smoothDataWindow.DataFileName = DataModel.DataFileName; smoothDataWindow.Owner = Application.Current.MainWindow; if (smoothDataWindow.ShowDialog() == true) { BaseDataUtil du = new BaseDataUtil(); du.Weight = DataModel.Ath_Weight; if (DataModel.Gravitycomp.Trim() != "") { du.Gravitycomp = DataModel.Gravitycomp; } du.ComputeParams(AppDomain.CurrentDomain.BaseDirectory + "\\AppData\\XmlData\\" + DataModel.DataFileName); RefrenshChart(); } }