Exemple #1
0
        private void ReferenshList()
        {
            testInfoModelList = new List <Model.TestInfoModel>();
            if (standManager.SelectedItem != null)
            {
                if (standManager.SelectedItem.Tag == -1)
                {
                    Model.TestInfoModel testInfoModel = Stand.StandConfig.GetTestInfoModel(standManager.SelectedItem.StandFileName);
                    if (testInfoModel != null)
                    {
                        testInfoModelList.Add(testInfoModel);
                    }
                }
                else
                {
                    if (standManager.SelectedItem.Stand_Level == 2)
                    {
                        testInfoModelList = Caches.Util.AthTestInfoModelUtil.AthTestUtil(refeBLL.GetStandTestInfoModelList(standManager.SelectedItem.ID));
                    }
                }
            }
            dgTestInfo.ItemsSource = testInfoModelList;

            pageAvgCurve.ModelList           = testInfoModelList;
            pageAvgCurve.CurrentStandardInfo = standManager.SelectedItem;
            pageAvgCurve.UpdateChart();
        }
Exemple #2
0
        //数据列表单击
        private void dgTestInfo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (dgTestInfo.SelectedIndex >= 0)
            {
                foreach (Model.TestInfoModel model in TestInfoModelList)
                {
                    model.IsChecked = false;
                }
                if (dgTestInfo.SelectedItems.Count > 1)
                {
                    foreach (var item in dgTestInfo.SelectedItems)
                    {
                        Model.TestInfoModel testModel = item as Model.TestInfoModel;
                        testModel.IsChecked = true;
                    }
                }
                else
                {
                    Model.TestInfoModel testModel = dgTestInfo.SelectedItem as Model.TestInfoModel;
                    testModel.IsChecked = true;
                }

                RefrenshChart();
            }
        }
        public static List <Model.TestInfoModel> AthTestUtil(DataSet ds)
        {
            List <Model.TestInfoModel> testInfoModelList = new List <Model.TestInfoModel>();

            BLL.TB_TestInfo    testInfoBLL    = new BLL.TB_TestInfo();
            BLL.TB_AthleteInfo athleteInfoBLL = new BLL.TB_AthleteInfo();
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                DataRow             dr            = ds.Tables[0].Rows[i];
                Model.TestInfoModel testInfoModel = new Model.TestInfoModel();
                testInfoModel.Index = i + 1;

                testInfoBLL.GetModelFromDataRow(dr, testInfoModel);
                athleteInfoBLL.GetAthleteInfoFromDataRow(dr, testInfoModel);

                testInfoModel.DGravitycomp = DictCache.GetDictValue(DictCache.Gravitycomp, testInfoModel.Gravitycomp);
                testInfoModel.DInsuredSide = DictCache.GetDictValue(DictCache.InsuredSide, testInfoModel.InsuredSide);
                testInfoModel.DJoint       = DictCache.GetDictValue(DictCache.Joint, testInfoModel.Joint);
                testInfoModel.DJointSide   = DictCache.GetDictValue(DictCache.JointSide, testInfoModel.Joint_Side);
                testInfoModel.DTestMode    = DictCache.GetDictValue(DictCache.TestMode, testInfoModel.Test_Mode);

                testInfoModel.DPlane = DictCache.GetDict(testInfoModel.Joint, testInfoModel.Plane, testInfoModel.Test_Mode).Dict_Value;

                testInfoModelList.Add(testInfoModel);
            }
            return(testInfoModelList);
        }
Exemple #4
0
        private DataSeries GetTestSerise(Model.TestInfoModel model, List <double> dataList)
        {
            DataSeries ds = null;

            if (oddTestDataSeriseDict.Keys.Contains(model.TestID))
            {
                return(oddTestDataSeriseDict[model.TestID]);
            }

            this.Dispatcher.Invoke(new Action(() =>
            {
                ds = new DataSeries();
                if (!oddTestDataSeriseDict.Keys.Contains(model.TestID))
                {
                    DataSeriseUtil.InitLineDataSerise(ds, true, model.Index + model.Ath_Name, null);
                    //ds.LineThickness = 3;
                    DataSeriseUtil.AddDataToDataSerise(ds, dataList);
                }
                else
                {
                    ds = oddTestDataSeriseDict[model.TestID];
                }
            }));

            return(ds);
        }
        public static List<Model.TestInfoModel> AthTestUtil(DataSet ds)
        {
            List<Model.TestInfoModel> testInfoModelList = new List<Model.TestInfoModel>();
             BLL.TB_TestInfo testInfoBLL = new BLL.TB_TestInfo();
             BLL.TB_AthleteInfo athleteInfoBLL = new BLL.TB_AthleteInfo();
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                DataRow dr = ds.Tables[0].Rows[i];
                Model.TestInfoModel testInfoModel = new Model.TestInfoModel();
                testInfoModel.Index = i + 1;

                testInfoBLL.GetModelFromDataRow(dr, testInfoModel);
                athleteInfoBLL.GetAthleteInfoFromDataRow(dr, testInfoModel);

                testInfoModel.DGravitycomp = DictCache.GetDictValue(DictCache.Gravitycomp, testInfoModel.Gravitycomp);
                testInfoModel.DInsuredSide = DictCache.GetDictValue(DictCache.InsuredSide, testInfoModel.InsuredSide);
                testInfoModel.DJoint = DictCache.GetDictValue(DictCache.Joint, testInfoModel.Joint);
                testInfoModel.DJointSide = DictCache.GetDictValue(DictCache.JointSide, testInfoModel.Joint_Side);
                testInfoModel.DTestMode = DictCache.GetDictValue(DictCache.TestMode, testInfoModel.Test_Mode);

                testInfoModel.DPlane = DictCache.GetDict(testInfoModel.Joint, testInfoModel.Plane, testInfoModel.Test_Mode).Dict_Value;

                testInfoModelList.Add(testInfoModel);
            }
            return testInfoModelList;
        }
Exemple #6
0
        //刷新数据表
        private void RefrenshDataGridSource()
        {
            testInfoModelList = new List <Model.TestInfoModel>();
            existsIDs        += "0";
            string sql = "select ath.*,test.*,"
                         + "(select dict_value from tb_dict where dict_groupid=3 and dict_key=test.joint_side) as djointside,"
                         + "(select dict_value from tb_dict where dict_groupid=1 and dict_key=test.test_mode) as dtestmode,"
                         + "(select dict_value from tb_dict where dict_groupid=2 and dict_key=test.joint) as djoint,"
                         + "(select dict_value from tb_dict where dict_groupid=(select id from tb_dict where dict_groupid=2 and dict_key=test.joint) and dict_key=test.plane and instr(dict_groupid2,test.test_mode)>0) as dplane,"
                         + "(select dict_value from tb_dict where dict_groupid=4 and dict_key=test.InsuredSide) as dInsuredSide,"
                         + "(select dict_value from tb_dict where dict_groupid=5 and dict_key=test.Gravitycomp) as dGravitycomp "
                         + "from tb_athleteinfo as ath inner join tb_testinfo as test on ath.id=test.ath_id where 0=0 ";

            sql += " and test.id in (" + existsIDs + ")";

            DataSet ds = DbHelperOleDb.Query(sql);

            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                DataRow             dr            = ds.Tables[0].Rows[i];
                Model.TestInfoModel testInfoModel = new Model.TestInfoModel();
                testInfoModel.Index        = i + 1;
                testInfoModel.DGravitycomp = dr["dGravitycomp"].ToString();
                testInfoModel.DInsuredSide = dr["dInsuredSide"].ToString();
                testInfoModel.DJoint       = dr["djoint"].ToString();
                testInfoModel.DJointSide   = dr["djointside"].ToString();
                testInfoModel.DPlane       = dr["dplane"].ToString();
                testInfoModel.DTestMode    = dr["dtestmode"].ToString();
                testInfoBLL.GetModelFromDataRow(dr, testInfoModel);
                athleteInfoBLL.GetAthleteInfoFromDataRow(dr, testInfoModel);
                testInfoModelList.Add(testInfoModel);
            }
            dgTestInfo.ItemsSource  = testInfoModelList;
            lbFileNames.ItemsSource = existsFiles;
        }
Exemple #7
0
        private void StackPanel_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            StackPanel target = (StackPanel)sender;
            int        index  = (int)target.Tag;

            Model.TestInfoModel selectedModel = testInfoModelList.Find(x => x.Index == index);
            selectedModel.IsChecked = !selectedModel.IsChecked;
        }
Exemple #8
0
        /// <summary>
        ///
        /// </summary>
        private List <Model.TestInfoModel> GetSortedTestInfoModelList()
        {
            List <Model.TestInfoModel> models = new List <Model.TestInfoModel>();

            foreach (var item in dgTestInfo.Items)
            {
                Model.TestInfoModel tim = item as Model.TestInfoModel;
                //if (tim.IsChecked) {
                models.Add(tim);
                //}
            }
            return(models);
        }
Exemple #9
0
 private void AddSeriseToChart(Chart c, Model.TestInfoModel model, List <double> dataList)
 {
     if (!oddTestDataSeriseDict.Keys.Contains(model.TestID))
     {
         DataSeries ds = new DataSeries();
         DataSeriseUtil.InitLineDataSerise(ds, true, model.Index + model.Ath_Name, null);
         DataSeriseUtil.AddDataToDataSerise(ds, dataList);
         c.Series.Add(ds);
     }
     else
     {
         c.Series.Add(oddTestDataSeriseDict[model.TestID]);
     }
 }
Exemple #10
0
        private void MergeAndAddDS(List <List <XElement> > standList, List <List <XElement> > list, Chart chart)
        {
            //合并标准和选择的信息
            List <List <XElement> > allList = new List <List <XElement> >();

            allList.AddRange(standList);
            allList.AddRange(list);
            if (allList.Count > 0)
            {
                //把所有曲线计算成相同长度
                List <List <double> > allValueList = ComputeAvgCurve.Compute(allList);

                List <List <double> > standValueList   = new List <List <double> >();
                List <List <double> > checkedValueList = new List <List <double> >();//选择的测试信息的点列表
                //取出标准信息的数据,并创建选择的测试信息的曲线
                for (int i = 0; i < allValueList.Count; i++)
                {
                    if ((i + 1) <= standList.Count)
                    {
                        standValueList.Add(allValueList[i]);
                    }
                    else
                    {
                        checkedValueList.Add(allValueList[i]);
                        Model.TestInfoModel mo = TestInfoModelList[i - standList.Count];
                        if (mo.IsChecked == true)
                        {
                            string leText = string.Format("{0}.{1}", mo.Index, mo.Ath_Name);
                            chart.Series.Add(CreateSeries(allValueList[i], leText));//补全写入legendtest
                        }
                    }
                }
                //添加选择的信息的平均曲线
                List <double> checkedInfoAvgValueList = ComputeAvgCurve.ComputeAvg(checkedValueList);
                DataSeries    avgds = CreateSeries(checkedInfoAvgValueList, "平均曲线");
                avgds.Color = avgBrush;
                chart.Series.Add(avgds);

                //添加标准曲线
                if (standValueList.Count > 0)
                {
                    List <double> avgValueList = ComputeAvgCurve.ComputeAvg(standValueList);
                    DataSeries    standds      = CreateSeries(avgValueList, stand.SelectedItem.Stand_Name);
                    standds.Color = standBrush;
                    chart.Series.Add(standds);
                }
            }
        }
Exemple #11
0
        /// <summary>
        /// 获取数据文件中的参数信息
        /// </summary>
        /// <param name="testInfoModel">测试信息</param>
        /// <returns>列表中第一个为动作1的参数信息,第二个为动作2的参数信息</returns>
        private List <List <XElement> > GetTestDataFileParamValues(Model.TestInfoModel testInfoModel)
        {
            List <List <XElement> > lists = new List <List <XElement> >();

            List <XElement> oddEleList  = new List <XElement>(); //每个测试信息的动作1 的参数节点
            List <XElement> evenEleList = new List <XElement>(); //每个测试信息的动作2 的参数节点

            XDocument xd = XDocument.Load(Model.AppPath.XmlDataDirPath + testInfoModel.DataFileName);

            oddEleList.AddRange(xd.Descendants("action1").ElementAt(0).Elements());
            evenEleList.AddRange(xd.Descendants("action2").ElementAt(0).Elements());

            lists.Add(oddEleList);
            lists.Add(evenEleList);
            return(lists);
        }
Exemple #12
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //重新定义序号

            List <Model.TestInfoModel> timList = new List <Model.TestInfoModel>();

            for (int i = 0; i < TestInfoModelList.Count; i++)
            {
                Model.TestInfoModel tim = (Model.TestInfoModel)TestInfoModelList[i].Clone();
                tim.Index = i + 1;
                timList.Add(tim);
            }
            TestInfoModelList = timList;

            dgTestInfo.ItemsSource = TestInfoModelList;
            //初始化
            stand.ItemSelectionChangedEvent += new Compoments.TestStandardManager.ItemSelectionChangedDelegate(stand_ItemSelectionChangedEvent);

            tbTitle.Text = "平均曲线对比";

            //添加图表
            chartOdd.BorderThickness  = chartEven.BorderThickness = new Thickness(0, 0, 0, 0);
            chartOdd.ScrollingEnabled = chartEven.ScrollingEnabled = false;

            //添加坐标轴
            Axis yAxisOAC = new Axis();
            Axis yAxisEAC = new Axis();

            yAxisOAC.Suffix = yAxisEAC.Suffix = "(Nm)";
            chartOdd.AxesY.Add(yAxisOAC);
            chartEven.AxesY.Add(yAxisEAC);

            Axis xAxisOAC = new Axis();
            Axis xAxisEAC = new Axis();

            xAxisEAC.AxisMinimum = xAxisOAC.AxisMinimum = 0;
            xAxisOAC.AxisMaximum = xAxisEAC.AxisMaximum = 100;
            xAxisEAC.Suffix      = xAxisOAC.Suffix = "%";

            chartOdd.AxesX.Add(xAxisOAC);
            chartEven.AxesX.Add(xAxisEAC);

            gridOdd.Children.Add(chartOdd);
            gridEven.Children.Add(chartEven);

            RefrenshChart();
        }
Exemple #13
0
        public Model.TestInfoModel GetAvgTestInfoModel(List <Model.TestInfoModel> modelList)
        {
            Model.TestInfoModel testInfoModel = new Model.TestInfoModel();
            testInfoModel.Ath_Name     = string.Format("{0}人", modelList.Count);
            testInfoModel.BaseFileName = "-";
            testInfoModel.TestDate     = testInfoModel.TestTime = DateTime.MinValue;
            foreach (var item in modelList)
            {
                if (DateTime.Compare(item.TestDate, testInfoModel.TestDate) == 1)
                {
                    testInfoModel.TestDate = testInfoModel.TestTime = item.TestDate;
                }
            }
            var jointSide = modelList.GroupBy(x => x.Joint_Side);

            foreach (var jointSideList in jointSide)
            {
                testInfoModel.DJointSide += string.Format("{0}({1}),", jointSideList.ElementAt(0).DJointSide, jointSideList.Count());
            }
            testInfoModel.DJointSide = testInfoModel.DJointSide.Substring(0, testInfoModel.DJointSide.Length - 1);

            var testModeGroupList = modelList.GroupBy(x => x.Test_Mode);

            foreach (var testModeList in testModeGroupList)
            {
                testInfoModel.DTestMode += string.Format("{0}({1}),", testModeList.ElementAt(0).DTestMode, testModeList.Count());
            }
            testInfoModel.DTestMode = testInfoModel.DTestMode.Substring(0, testInfoModel.DTestMode.Length - 1);

            var jointGroupList = modelList.GroupBy(x => x.Joint);

            foreach (var jointList in jointGroupList)
            {
                testInfoModel.DJoint += string.Format("{0}({1}),", jointList.ElementAt(0).DJoint, jointList.Count());
            }
            testInfoModel.DJoint = testInfoModel.DJoint.Substring(0, testInfoModel.DJoint.Length - 1);

            var planeGroupList = modelList.GroupBy(x => x.Plane);

            foreach (var planeList in planeGroupList)
            {
                testInfoModel.DPlane += string.Format("{0}({1}),", planeList.ElementAt(0).DPlane, planeList.Count());
            }
            testInfoModel.DPlane = testInfoModel.DPlane.Substring(0, testInfoModel.DPlane.Length - 1);
            return(testInfoModel);
        }
Exemple #14
0
        public void GetModelFromDataRow(DataRow dr, Model.TestInfoModel model)
        {
            if (dr["test.ID"].ToString() != "")
            {
                model.TestID = int.Parse(dr["test.ID"].ToString());
            }
            if (dr["Ath_ID"].ToString() != "")
            {
                model.Ath_ID = int.Parse(dr["Ath_ID"].ToString());
            }
            if (dr["TestDate"].ToString() != "")
            {
                model.TestDate = DateTime.Parse(dr["TestDate"].ToString());
            }
            if (dr["TestTime"].ToString() != "")
            {
                model.TestTime = DateTime.Parse(dr["TestTime"].ToString());
            }
            model.Joint_Side      = dr["Joint_Side"].ToString();
            model.Test_Mode       = dr["Test_Mode"].ToString();
            model.Joint           = dr["Joint"].ToString();
            model.Plane           = dr["Plane"].ToString();
            model.Motion_Start    = dr["Motion_Start"].ToString();
            model.Motion_End      = dr["Motion_End"].ToString();
            model.Speed1          = dr["Speed1"].ToString();
            model.Speed2          = dr["Speed2"].ToString();
            model.Acceleration1   = dr["Acceleration1"].ToString();
            model.Acceleration2   = dr["Acceleration2"].ToString();
            model.Break           = dr["Break"].ToString();
            model.NOOfSets        = dr["NOOfSets"].ToString();
            model.NOOfRepetitions = dr["NOOfRepetitions"].ToString();
            string insuredSide = dr["InsuredSide"].ToString();

            model.InsuredSide = insuredSide.Equals("") ? "2" : insuredSide;
            string gracomp = dr["Gravitycomp"].ToString();

            model.Gravitycomp  = gracomp.Equals("") ? "0" : gracomp;
            model.Therapist    = dr["Therapist"].ToString();
            model.BaseFileName = dr["BaseFileName"].ToString();
            model.DataFileName = dr["DataFileName"].ToString();

            model.Remark   = dr["remark"].ToString();
            model.ActionID = dr["actionid"].ToString();
        }
        public Model.TestInfoModel GetAvgTestInfoModel(List<Model.TestInfoModel> modelList)
        {
            Model.TestInfoModel testInfoModel = new Model.TestInfoModel();
            testInfoModel.Ath_Name = string.Format("{0}人", modelList.Count);
            testInfoModel.BaseFileName = "-";
            testInfoModel.TestDate = testInfoModel.TestTime = DateTime.MinValue;
            foreach (var item in modelList)
            {
                if (DateTime.Compare(item.TestDate,testInfoModel.TestDate)==1)
                {
                    testInfoModel.TestDate = testInfoModel.TestTime = item.TestDate;
                }

            }
            var jointSide = modelList.GroupBy(x => x.Joint_Side);

            foreach (var jointSideList in jointSide)
            {
                testInfoModel.DJointSide += string.Format("{0}({1}),", jointSideList.ElementAt(0).DJointSide, jointSideList.Count());
            }
            testInfoModel.DJointSide = testInfoModel.DJointSide.Substring(0, testInfoModel.DJointSide.Length - 1);

            var testModeGroupList = modelList.GroupBy(x => x.Test_Mode);
            foreach (var testModeList in testModeGroupList)
            {
                testInfoModel.DTestMode += string.Format("{0}({1}),", testModeList.ElementAt(0).DTestMode, testModeList.Count());
            }
            testInfoModel.DTestMode = testInfoModel.DTestMode.Substring(0, testInfoModel.DTestMode.Length - 1);

            var jointGroupList = modelList.GroupBy(x=>x.Joint);
            foreach (var jointList in jointGroupList)
            {
                testInfoModel.DJoint += string.Format("{0}({1}),", jointList.ElementAt(0).DJoint, jointList.Count());
            }
            testInfoModel.DJoint = testInfoModel.DJoint.Substring(0, testInfoModel.DJoint.Length - 1);

            var planeGroupList = modelList.GroupBy(x => x.Plane);
            foreach (var planeList in planeGroupList)
            {
                testInfoModel.DPlane += string.Format("{0}({1}),", planeList.ElementAt(0).DPlane, planeList.Count());
            }
            testInfoModel.DPlane = testInfoModel.DPlane.Substring(0, testInfoModel.DPlane.Length - 1);
            return testInfoModel;
        }
Exemple #16
0
 public void GetAthleteInfoFromDataRow(DataRow dr, Model.TestInfoModel model)
 {
     if (dr["ath.ID"].ToString() != "")
     {
         model.AthID = int.Parse(dr["ath.ID"].ToString());
     }
     model.Ath_Code   = dr["Ath_Code"].ToString();
     model.Ath_Name   = dr["Ath_Name"].ToString();
     model.Ath_PinYin = dr["Ath_PinYin"].ToString();
     model.Ath_Sex    = dr["Ath_Sex"].ToString();
     if (dr["Ath_Birthday"].ToString() != "")
     {
         model.Ath_Birthday = DateTime.Parse(dr["Ath_Birthday"].ToString());
     }
     model.Ath_Height      = dr["Ath_Height"].ToString();
     model.Ath_Weight      = dr["Ath_Weight"].ToString();
     model.Ath_Project     = dr["Ath_Project"].ToString();
     model.Ath_MainProject = dr["Ath_MainProject"].ToString();
     model.Ath_TrainYears  = dr["Ath_TrainYears"].ToString();
     model.Ath_Level       = dr["Ath_Level"].ToString();
     model.Ath_Team        = dr["Ath_Team"].ToString();
     if (dr["Ath_TestDate"].ToString() != "")
     {
         model.Ath_TestDate = DateTime.Parse(dr["Ath_TestDate"].ToString());
     }
     model.Ath_TestAddress = dr["Ath_TestAddress"].ToString();
     model.Ath_TestMachine = dr["Ath_TestMachine"].ToString();
     model.Ath_TestState   = dr["Ath_TestState"].ToString();
     model.Ath_Remark      = dr["Ath_Remark"].ToString();
     if (dr["Ath_TestID"].ToString() != "")
     {
         model.Ath_TestID = int.Parse(dr["Ath_TestID"].ToString());
     }
     if (dr["hidden"].ToString() != "0" && !TB_Setting.IsShowAllData)
     {
         model.Ath_Name = "";
     }
 }
Exemple #17
0
 private void CheckChanged()
 {
     if (dgTestInfo.SelectedIndex >= 0)
     {
         foreach (Model.TestInfoModel model in testInfoModelList)
         {
             model.IsChecked = false;
         }
         if (dgTestInfo.SelectedItems.Count > 1)
         {
             foreach (var item in dgTestInfo.SelectedItems)
             {
                 Model.TestInfoModel testModel = item as Model.TestInfoModel;
                 testModel.IsChecked = true;
             }
         }
         else
         {
             Model.TestInfoModel testModel = dgTestInfo.SelectedItem as Model.TestInfoModel;
             testModel.IsChecked = true;
         }
     }
 }
Exemple #18
0
        public XDocument Generate()
        {
            XDocument doc     = new XDocument();//生成的xml文档
            XElement  rootEle = new XElement("root");

            doc.Add(rootEle);

            XDocument reportDoc = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "\\AppTemplate\\CompareResportTempalte.xml"); //文档模板
            XElement  titleEle  = reportDoc.Descendants("title").ElementAt <XElement>(0);                                              //设置title节点

            titleEle.Value = title;
            rootEle.Add(titleEle);

            //添加testinfotable ,comparetable节点
            XElement titableXEle = new XElement("testinfotable");

            rootEle.Add(titableXEle);
            XElement cmptableXEle = new XElement("comparetable");

            rootEle.Add(cmptableXEle);

            XElement testinfotableXEle         = reportDoc.Descendants("testinfotable").ElementAt <XElement>(0); //testinfotable节点
            XElement testInfoEle               = testinfotableXEle.Element("table");
            IEnumerable <XElement> tableEles   = reportDoc.Descendants("table");                                 //table节点列表,第一个为测试信息表格,第二个为参数信息表格
            List <XElement>        oddEleList  = new List <XElement>();                                          //每个测试信息的动作1 的参数节点
            List <XElement>        evenEleList = new List <XElement>();                                          //每个测试信息的动作2 的参数节点

            for (int i = 0; i < TestInfoModelList.Count; i++)
            {
                Model.TestInfoModel infoModel = TestInfoModelList[i];

                XDocument xd = XDocument.Load(Model.AppPath.XmlDataDirPath + infoModel.DataFileName);
                oddEleList.AddRange(xd.Descendants("action1").ElementAt(0).Elements());
                evenEleList.AddRange(xd.Descendants("action2").ElementAt(0).Elements());

                #region 创建测试信息表格
                testInfoEle.Attribute("remark").Value = (i + 1) + "、受试者:" + infoModel.Ath_Name;
                IEnumerable <XElement> testInfoCells = testInfoEle.Descendants("cell");
                testInfoCells.ElementAt(0).Attribute("value").Value = infoModel.Ath_TestAddress;
                testInfoCells.ElementAt(1).Attribute("value").Value = infoModel.Ath_TestState;
                testInfoCells.ElementAt(2).Attribute("value").Value = infoModel.Ath_TestDate.ToString("yyyy年MM月dd");

                testInfoCells.ElementAt(3).Attribute("value").Value = infoModel.DJoint;
                testInfoCells.ElementAt(4).Attribute("value").Value = infoModel.DJointSide;
                testInfoCells.ElementAt(5).Attribute("value").Value = infoModel.DTestMode;

                testInfoCells.ElementAt(6).Attribute("value").Value = infoModel.DPlane;
                testInfoCells.ElementAt(7).Attribute("value").Value = infoModel.MotionRange;
                testInfoCells.ElementAt(8).Attribute("value").Value = infoModel.Speed;

                testInfoCells.ElementAt(9).Attribute("value").Value  = infoModel.Break;
                testInfoCells.ElementAt(10).Attribute("value").Value = infoModel.NOOfSets;
                testInfoCells.ElementAt(11).Attribute("value").Value = infoModel.NOOfRepetitions;

                testInfoCells.ElementAt(12).Attribute("value").Value = infoModel.Ath_Remark;
                //rootEle.Add(testInfoEle);//添加测试信息
                titableXEle.Add(testInfoEle);
                #endregion
            }

            XElement paramsTableEle        = tableEles.ElementAt <XElement>(1);
            IEnumerable <XElement> rowEles = paramsTableEle.Descendants("row");
            for (int i = 3; i < rowEles.Count(); i++)
            {
                int paramIndex = i - 3; //参数名称索引

                string ac1max = "";     //动作1最大值平均
                string ac1avg = "";     //动作1平均值平均
                string ac2max = "";     //动作2最大值平均
                string ac2avg = "";     //动作2平均值平均

                //动作1最大值平均
                List <XElement> ac1maxNoEmptyEleList = oddEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("max").Value != "").ToList <XElement>();
                if (ac1maxNoEmptyEleList.Count > 0)
                {
                    ac1max = Math.Round(ac1maxNoEmptyEleList.Average(x => double.Parse(x.Attribute("max").Value)), 2).ToString();
                }
                //动作1平均值平均
                List <XElement> ac1avgNoEmptyEleList = oddEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("avg").Value != "").ToList <XElement>();
                if (ac1avgNoEmptyEleList.Count > 0)
                {
                    ac1avg = Math.Round(ac1avgNoEmptyEleList.Average(x => double.Parse(x.Attribute("avg").Value)), 2).ToString();
                }
                //动作2最大值平均
                List <XElement> ac2maxNoEmptyEleList = evenEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("max").Value != "").ToList <XElement>();
                if (ac2maxNoEmptyEleList.Count > 0)
                {
                    ac2max = Math.Round(ac2maxNoEmptyEleList.Average(x => double.Parse(x.Attribute("max").Value)), 2).ToString();
                }
                //动作2平均值平均
                List <XElement> ac2avgNoEmptyEleList = evenEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("avg").Value != "").ToList <XElement>();
                if (ac2avgNoEmptyEleList.Count > 0)
                {
                    ac2avg = Math.Round(ac2avgNoEmptyEleList.Average(x => double.Parse(x.Attribute("avg").Value)), 2).ToString();
                }
                IEnumerable <XElement> cellEles = rowEles.ElementAt(i).Elements();
                cellEles.ElementAt(1).Attribute("label").Value = ac1max;
                cellEles.ElementAt(2).Attribute("label").Value = ac1avg;
                cellEles.ElementAt(3).Attribute("label").Value = ac2max;
                cellEles.ElementAt(4).Attribute("label").Value = ac2avg;
            }

            rootEle.Add(paramsTableEle);//添加平均参数信息

            return(doc);
        }
        //刷新数据表
        private void RefrenshDataGridSource()
        {
            testInfoModelList = new List<Model.TestInfoModel>();
            existsIDs += "0";
            string sql = "select ath.*,test.*,"
               + "(select dict_value from tb_dict where dict_groupid=3 and dict_key=test.joint_side) as djointside,"
               + "(select dict_value from tb_dict where dict_groupid=1 and dict_key=test.test_mode) as dtestmode,"
               + "(select dict_value from tb_dict where dict_groupid=2 and dict_key=test.joint) as djoint,"
               + "(select dict_value from tb_dict where dict_groupid=(select id from tb_dict where dict_groupid=2 and dict_key=test.joint) and dict_key=test.plane and instr(dict_groupid2,test.test_mode)>0) as dplane,"
               + "(select dict_value from tb_dict where dict_groupid=4 and dict_key=test.InsuredSide) as dInsuredSide,"
               + "(select dict_value from tb_dict where dict_groupid=5 and dict_key=test.Gravitycomp) as dGravitycomp "
               + "from tb_athleteinfo as ath inner join tb_testinfo as test on ath.id=test.ath_id where 0=0 ";
            sql += " and test.id in ("+existsIDs+")";

            DataSet ds = DbHelperOleDb.Query(sql);
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                DataRow dr = ds.Tables[0].Rows[i];
                Model.TestInfoModel testInfoModel = new Model.TestInfoModel();
                testInfoModel.Index = i + 1;
                testInfoModel.DGravitycomp = dr["dGravitycomp"].ToString();
                testInfoModel.DInsuredSide = dr["dInsuredSide"].ToString();
                testInfoModel.DJoint = dr["djoint"].ToString();
                testInfoModel.DJointSide = dr["djointside"].ToString();
                testInfoModel.DPlane = dr["dplane"].ToString();
                testInfoModel.DTestMode = dr["dtestmode"].ToString();
                testInfoBLL.GetModelFromDataRow(dr, testInfoModel);
                athleteInfoBLL.GetAthleteInfoFromDataRow(dr, testInfoModel);
                testInfoModelList.Add(testInfoModel);
            }
            dgTestInfo.ItemsSource = testInfoModelList;
            lbFileNames.ItemsSource = existsFiles;
        }
Exemple #20
0
        int gap2Count = 2; //动作2对比前的row节点个数

        /// <summary>
        /// 生成报告数据的xml文档
        /// </summary>
        /// <returns></returns>
        public XDocument GenerateXDoc()
        {
            XDocument doc     = new XDocument();//生成的xml文档
            XElement  rootEle = new XElement("root");

            doc.Add(rootEle);
            XElement titleEle = new XElement("title");

            titleEle.Value = title;
            rootEle.Add(titleEle);

            //添加testinfotable ,comparetable节点
            XElement titableXEle = new XElement("testinfotable");

            rootEle.Add(titableXEle);
            XElement cmptableXEle = new XElement("comparetable");

            rootEle.Add(cmptableXEle);

            //从模板中获取测试信息table和对比table节点模板
            XDocument templateDoc            = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "\\AppTemplate\\CompareResportTempalte.xml"); //文档模板
            IEnumerable <XElement> tableEles = templateDoc.Descendants("table");
            XElement testinfotableXEle       = tableEles.ElementAt <XElement>(0);                                                                   //testinfotable节点
            XElement comparetableXEle        = tableEles.ElementAt <XElement>(1);                                                                   //comparetableXEle节点


            //写入对比信息
            switch (exportMode)
            {
            case ExportModeEnum.Mode1:    //导出互相或与平均值的对比
                if (checkedTestInfoModelList.Count != 2)
                {
                    throw new Exception("仅当选择的数据条目数量为两条时,才能导出互相对比报告!");
                }

                List <List <XElement> > t1Params = GetTestDataFileParamValues(checkedTestInfoModelList[0]); //第一个测试信息的参数信息
                List <List <XElement> > t2Params = GetTestDataFileParamValues(checkedTestInfoModelList[1]); //第二个测试信息的参数信息
                XElement xe = GetCompareTable(comparetableXEle, "1、" + checkedTestInfoModelList[0].Ath_Name, "2、" + checkedTestInfoModelList[1].Ath_Name, t1Params, t2Params);
                xe.Attribute("remark").Value = "1、" + checkedTestInfoModelList[0].Ath_Name + "与2、" + checkedTestInfoModelList[1].Ath_Name + "的对比信息";
                cmptableXEle.Add(xe);

                break;

            case ExportModeEnum.Mode2:
                if (checkedTestInfoModelList.Count < 1)
                {
                    throw new Exception("请至少选择一条测试数据!");
                }
                List <List <XElement> > avgParam = ComputeAvg(TestInfoModelList);
                string avgtitle = "多条平均";
                for (int i = 0; i < checkedTestInfoModelList.Count; i++)
                {
                    List <List <XElement> > tiParam = GetTestDataFileParamValues(checkedTestInfoModelList[i]);
                    XElement xe1 = GetCompareTable(comparetableXEle, (i + 1) + "、" + checkedTestInfoModelList[i].Ath_Name, avgtitle, tiParam, avgParam);
                    xe1.Attribute("remark").Value = (i + 1) + "、" + checkedTestInfoModelList[i].Ath_Name + "与平均曲线的对比信息";
                    cmptableXEle.Add(xe1);
                }
                break;

            case ExportModeEnum.Mode3:    //导出与参考值的对比
                if (checkedTestInfoModelList.Count < 1)
                {
                    throw new Exception("请至少选择一条测试数据!");
                }
                if (StandardTestInfoModelList.Count <= 0)
                {
                    throw new Exception("该测试参考值没有测试信息,无法导出与参考值对比的报告!");
                }
                else
                {
                    List <List <XElement> > standParam = ComputeAvg(StandardTestInfoModelList);
                    for (int i = 0; i < checkedTestInfoModelList.Count; i++)
                    {
                        List <List <XElement> > tiParam = GetTestDataFileParamValues(checkedTestInfoModelList[i]);
                        XElement xe2 = GetCompareTable(comparetableXEle, (i + 1) + "、" + checkedTestInfoModelList[i].Ath_Name, "参考值", tiParam, standParam);
                        xe2.Attribute("remark").Value = (i + 1) + "、" + checkedTestInfoModelList[i].Ath_Name + "与测试参考值" + StandName + "的对比信息";
                        cmptableXEle.Add(xe2);
                    }
                }
                break;
            }

            #region 写入测试信息
            for (int i = 0; i < checkedTestInfoModelList.Count; i++)
            {
                Model.TestInfoModel infoModel = checkedTestInfoModelList[i];

                testinfotableXEle.Attribute("remark").Value = (i + 1) + "、受试者:" + infoModel.Ath_Name;
                IEnumerable <XElement> testInfoCells = testinfotableXEle.Descendants("cell");
                testInfoCells.ElementAt(0).Attribute("value").Value = infoModel.Ath_TestAddress;
                testInfoCells.ElementAt(1).Attribute("value").Value = infoModel.Ath_TestState;
                testInfoCells.ElementAt(2).Attribute("value").Value = infoModel.Ath_TestDate.ToString("yyyy年MM月dd");

                testInfoCells.ElementAt(3).Attribute("value").Value = infoModel.DJoint;
                testInfoCells.ElementAt(4).Attribute("value").Value = infoModel.DJointSide;
                testInfoCells.ElementAt(5).Attribute("value").Value = infoModel.DTestMode;

                testInfoCells.ElementAt(6).Attribute("value").Value = infoModel.DPlane;
                testInfoCells.ElementAt(7).Attribute("value").Value = infoModel.MotionRange;
                testInfoCells.ElementAt(8).Attribute("value").Value = infoModel.Speed;

                testInfoCells.ElementAt(9).Attribute("value").Value  = infoModel.Break;
                testInfoCells.ElementAt(10).Attribute("value").Value = infoModel.NOOfSets;
                testInfoCells.ElementAt(11).Attribute("value").Value = infoModel.NOOfRepetitions;

                testInfoCells.ElementAt(12).Attribute("value").Value = infoModel.Ath_Remark;

                titableXEle.Add(testinfotableXEle);
            }
            #endregion

            return(doc);
        }
Exemple #21
0
        private void btnExport_Click(object sender, RoutedEventArgs e)
        {
            List <Model.TB_StandardInfo> checkedStandList = GetCheckedStand();

            if (checkedStandList.Count == 0)
            {
                DSJL.Tools.MessageBoxTool.ShowConfirmMsgBox("请选择要导出的测试参考值!");
                return;
            }
            if (DSJL.Tools.ShowFileDialogTool.ShowSaveFileDialog(out exportPath, "", "dsf", "等速肌力参考值导出") == false)
            {
                return;
            }
            exportPath = exportPath.Substring(0, exportPath.LastIndexOf("\\") + 1);
            Console.WriteLine("export path is:{0}", exportPath);

            ProgressWindow window = new ProgressWindow();

            window.WindowTilte   = "导出参考值进度";
            window.MaxValue      = checkedStandList.Count;
            window.MinValue      = 0;
            window.CancleMessage = "确定取消导出吗?";
            window.onCancling   += Window_onCancling;
            window.Owner         = this;

            Task task = new Task(() => {
                int progress = 0;
                foreach (var item in checkedStandList)
                {
                    if (isCancleExport)
                    {
                        break;
                    }
                    //1、查询测试信息
                    List <Model.TestInfoModel> testInfoModelList = Caches.Util.AthTestInfoModelUtil.AthTestUtil(refeBLL.GetStandTestInfoModelList(item.ID));
                    if (testInfoModelList.Count == 0)
                    {
                        continue;
                    }
                    Model.TestInfoModel avgTestInfoModel = GetAvgTestInfoModel(testInfoModelList);
                    string testInfoModelJson             = Newtonsoft.Json.JsonConvert.SerializeObject(avgTestInfoModel);
                    // Console.WriteLine(testInfoModelJson);
                    //2、计算平均值
                    List <List <XElement> > paramList = DSJL.Export.GenerateCompareResportXml.ComputeAvg(testInfoModelList);
                    string paramJson = Newtonsoft.Json.JsonConvert.SerializeObject(paramList);
                    // Console.WriteLine(paramJson);
                    Dictionary <DataPointsType, List <List <double> > > dataPointsDict = StandardChartCache.GetStandardDataPoints(item, testInfoModelList);
                    List <List <double> > oddavgsd  = dataPointsDict[DataPointsType.ODDAvgSD];
                    List <List <double> > evenavgsd = dataPointsDict[DataPointsType.EVENAVGSD];
                    string oddavgsdjson             = Newtonsoft.Json.JsonConvert.SerializeObject(oddavgsd);
                    string evenavgsdjson            = Newtonsoft.Json.JsonConvert.SerializeObject(evenavgsd);
                    // Console.WriteLine(oddavgsdjson);
                    // Console.WriteLine(evenavgsdjson);
                    //3、写入文件
                    Model.TB_StandardInfo parentStandModel  = standList.Find(x => x.ID == item.Stand_ParentID);
                    Model.ExportStandModel exportStandModel = new Model.ExportStandModel();
                    exportStandModel.ParentName             = parentStandModel.Stand_Name;
                    exportStandModel.StandName = item.Stand_Name;
                    exportStandModel.TestModel = avgTestInfoModel;
                    exportStandModel.ParamList = paramList;
                    exportStandModel.OddAvgSD  = oddavgsd;
                    exportStandModel.EvenAvgSD = evenavgsd;
                    string standJson           = Newtonsoft.Json.JsonConvert.SerializeObject(exportStandModel);
                    standJson       = DSJL.Tools.DES.Encrypt(standJson, "cissdsjl");
                    string filename = string.Format("{0}{1}.dsf", exportPath, item.Stand_Name);
                    StreamWriter sw = new StreamWriter(filename);
                    sw.Write(standJson);
                    sw.Close();
                    progress++;
                    Dispatcher.BeginInvoke(new Action(() => {
                        window.CurrentValue = progress;
                    }));
                }
                DSJL.Tools.MessageBoxTool.ShowConfirmMsgBox("导出完成!");
                Dispatcher.BeginInvoke(new Action(() =>
                {
                    window.Close();
                    this.Close();
                }));
            });

            task.Start();
            window.ShowDialog();
        }
        private void btnExport_Click(object sender, RoutedEventArgs e)
        {
            exportProgress.Minimum = 0;
            exportProgress.Maximum = TestInfoList.Count;
            exportProgress.Value   = 0;
            double value = 0;
            UpdateProgressBarDelegate updatePbDelegate = new UpdateProgressBarDelegate(exportProgress.SetValue);

            try
            {
                excelApp = new ApplicationClass();
                Workbooks myWorkBooks = excelApp.Workbooks;
                myWorkBooks.Open(templatePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
                Sheets sheets = excelApp.Sheets;
                mySheet1 = (Worksheet)sheets[1];
                mySheet1.Activate();

                int rowCount = TestInfoList.Count + 2;; //总行数

                //写入参数信息
                int paramCount = 0;//参数行数
                if (IsExportParams)
                {
                    paramCount = ParamList.Count * 4;
                    for (int i = 0; i < ParamList.Count; i++)
                    {
                        Model.Parameter p = ParamList[i];

                        Range r = mySheet1.get_Range(mySheet1.Cells[1, testInfoColumnCount + i * 4 + 1], mySheet1.Cells[1, testInfoColumnCount + i * 4 + 4]);
                        r.Merge();
                        r.Value               = p.ParamName;
                        r.Font.Bold           = true;
                        r.HorizontalAlignment = XlHAlign.xlHAlignCenter;
                        r.VerticalAlignment   = XlHAlign.xlHAlignCenter;

                        Range r1 = mySheet1.get_Range(mySheet1.Cells[2, testInfoColumnCount + i * 4 + 1], mySheet1.Cells[2, testInfoColumnCount + i * 4 + 4]);
                        r1.Value2    = paramContents;
                        r1.Font.Bold = true;

                        r1.EntireColumn.AutoFit();
                    }
                }

                //写入测试信息
                string[,] content = new string[rowCount, testInfoColumnCount + paramCount];
                //double?[,] paramContent = new double?[rowCount, paramCount];


                XDocument   xdoc;
                BLL.TB_Dict dictBLL = new BLL.TB_Dict();
                for (int i = 0; i < TestInfoList.Count; i++)
                {
                    int rowIndex = i;
                    Model.TestInfoModel model = TestInfoList[i];

                    content[rowIndex, 0]  = string.Format("测试{0}", i + 1);               //测试顺序
                    content[rowIndex, 1]  = model.Ath_Name;                              //姓名
                    content[rowIndex, 2]  = model.TestDate.ToString("yyyy-MM-dd HH:mm"); //测试日期
                    content[rowIndex, 3]  = model.DJoint;                                //测试关节
                    content[rowIndex, 4]  = model.DJointSide;                            //测试侧
                    content[rowIndex, 5]  = model.DPlane;                                //运动方式
                    content[rowIndex, 6]  = model.DTestMode;                             //测试模式
                    content[rowIndex, 7]  = model.MotionRange;                           //运动范围
                    content[rowIndex, 8]  = model.Speed;                                 //测试速度
                    content[rowIndex, 9]  = model.Break;                                 //休息时间
                    content[rowIndex, 10] = model.NOOfSets;                              //测试组数
                    content[rowIndex, 11] = model.NOOfRepetitions;                       //重复次数
                    content[rowIndex, 12] = model.DInsuredSide;                          //受伤测
                    content[rowIndex, 13] = model.DGravitycomp;                          //重力补偿
                    if (IsExportParams)
                    {
                        string xmlPath = Model.AppPath.XmlDataDirPath + model.DataFileName;
                        xdoc = XDocument.Load(xmlPath);
                        List <XElement> action1 = xdoc.Descendants("action1").Elements <XElement>().ToList <XElement>();
                        List <XElement> action2 = xdoc.Descendants("action2").Elements <XElement>().ToList <XElement>();
                        for (int j = 0; j < ParamList.Count; j++)
                        {
                            int    paramOneColumnIndex = j * 4;
                            double p1;
                            if (double.TryParse(action1[ParamList[j].Index].Attribute("max").Value, out p1))
                            {
                                //paramContent[rowIndex, paramOneColumnIndex] = p1;
                                mySheet1.Cells[rowIndex + 3, paramOneColumnIndex + testInfoColumnCount + 1] = p1;
                            }
                            double p2;
                            if (double.TryParse(action1[ParamList[j].Index].Attribute("avg").Value, out p2))
                            {
                                //paramContent[rowIndex, paramOneColumnIndex + 1] = p2;
                                mySheet1.Cells[rowIndex + 3, paramOneColumnIndex + testInfoColumnCount + 2] = p2;
                            }
                            double p3;
                            if (double.TryParse(action2[ParamList[j].Index].Attribute("max").Value, out p3))
                            {
                                //paramContent[rowIndex, paramOneColumnIndex + 2] = p3;
                                mySheet1.Cells[rowIndex + 3, paramOneColumnIndex + testInfoColumnCount + 3] = p3;
                            }
                            double p4;
                            if (double.TryParse(action2[ParamList[j].Index].Attribute("avg").Value, out p4))
                            {
                                //paramContent[rowIndex, paramOneColumnIndex + 3] = p4;
                                mySheet1.Cells[rowIndex + 3, paramOneColumnIndex + testInfoColumnCount + 4] = p4;
                            }
                        }
                    }

                    //写进度条
                    value += 1;
                    Dispatcher.Invoke(updatePbDelegate,
                                      System.Windows.Threading.DispatcherPriority.Background,
                                      new object[] { ProgressBar.ValueProperty, value });
                }
                //写入测试信息
                Range range1 = mySheet1.get_Range(mySheet1.Cells[3, 1], mySheet1.Cells[rowCount, testInfoColumnCount]);
                range1.Value2 = content;
                //写入参数信息
                //Range range2 = mySheet1.get_Range(mySheet1.Cells[3, testInfoColumnCount + 1], mySheet1.Cells[rowCount, testInfoColumnCount + paramCount]);
                //range2.Value2 = paramContent;



                //if (IsExportParams)
                //{
                //    rowCount = TestInfoList.Count + (ParamList.Count + 1) * TestInfoList.Count + 1;//信息行数+信息行数×参数行数+第一行列头信息
                //    paramCount = ParamList.Count + 1;//参数行数加1行参数名
                //}
                //else {
                //    rowCount = TestInfoList.Count + 1;
                //}

                //string[,] content = new string[rowCount, 13];


                //XDocument xdoc;
                //Model.TB_Dict actionModel;
                //BLL.TB_Dict dictBLL = new BLL.TB_Dict();
                //for (int i = 0; i < TestInfoList.Count; i++) {
                //    int rowIndex = i + i * paramCount;
                //    Model.TestInfoModel model = TestInfoList[i];

                //    content[rowIndex, 0] = model.Ath_Name;//姓名
                //    content[rowIndex, 1] = model.TestDate.ToString("yyyy-MM-dd HH:mm");//测试日期
                //    content[rowIndex, 2] = model.DJoint;//测试关节
                //    content[rowIndex, 3] = model.DJointSide;//测试侧
                //    content[rowIndex, 4] = model.DPlane;//运动方式
                //    content[rowIndex, 5] = model.DTestMode;//测试模式
                //    content[rowIndex, 6] = model.MotionRange;//运动范围
                //    content[rowIndex, 7] = model.Speed;//测试速度
                //    content[rowIndex, 8] = model.Break;//休息时间
                //    content[rowIndex, 9] = model.NOOfSets;//测试组数
                //    content[rowIndex, 10] = model.NOOfRepetitions;//重复次数
                //    content[rowIndex, 11] = model.DInsuredSide;//受伤测
                //    content[rowIndex, 12] = model.DGravitycomp;//重力补偿
                //    if (IsExportParams) {
                //        //写入参数信息
                //        actionModel = dictBLL.GetModel(model.Joint, model.Plane, model.Test_Mode);
                //        content[rowIndex + 1, 0] = "所选测试顺序";
                //        content[rowIndex + 1, 1] = "参数";
                //        content[rowIndex + 1, 2] = actionModel.actionone + "(极值)";
                //        content[rowIndex + 1, 3] = actionModel.actionone + "(平均值)";
                //        content[rowIndex + 1, 4] = actionModel.actiontwo + "(极值)";
                //        content[rowIndex + 1, 5] = actionModel.actiontwo + "(平均值)";
                //        string xmlPath = Model.AppPath.XmlDataDirPath + model.DataFileName;
                //        xdoc = XDocument.Load(xmlPath);
                //        List<XElement> action1 = xdoc.Descendants("action1").Elements<XElement>().ToList<XElement>();
                //        List<XElement> action2 = xdoc.Descendants("action2").Elements<XElement>().ToList<XElement>();
                //        for (int j = 0; j < ParamList.Count; j++)
                //        {
                //            content[rowIndex + 1 + j + 1, 0] = "测试" + (i + 1);
                //            content[rowIndex + 1 + j + 1, 1] = ParamList[j].ParamName;
                //            content[rowIndex + 1 + j + 1, 2] = action1[ParamList[j].Index].Attribute("max").Value;
                //            content[rowIndex + 1 + j + 1, 3] = action1[ParamList[j].Index].Attribute("avg").Value;
                //            content[rowIndex + 1 + j + 1, 4] = action2[ParamList[j].Index].Attribute("max").Value;
                //            content[rowIndex + 1 + j + 1, 5] = action2[ParamList[j].Index].Attribute("avg").Value;
                //        }
                //    }

                //    //写进度条
                //    value += 1;
                //    Dispatcher.Invoke(updatePbDelegate,
                //        System.Windows.Threading.DispatcherPriority.Background,
                //        new object[] { ProgressBar.ValueProperty, value });
                //}
                //Range range = mySheet1.get_Range(mySheet1.Cells[2, 1], mySheet1.Cells[rowCount, 13]);
                //range.Value2 = content;
                mySheet1.SaveAs(choosePath, missing, missing, missing, missing, missing, missing, missing, missing, missing);
                myWorkBooks.Close();
                excelApp.Quit();
                MessageBox.Show("导出成功!", "系统信息");
                System.Windows.Window.GetWindow(this).Close();
            }
            catch (Exception ee) {
                MessageBox.Show("导出出错!\r\n错误信息为:" + ee.Message, "系统错误");
            }
        }
Exemple #23
0
 public static Model.TestData.TestData GetTestDataByFileName(Model.TestInfoModel model)
 {
     return(GetTestDataByFileName(model.DataFileName));
 }
Exemple #24
0
        public static List <List <XElement> > ComputeAvg(List <Model.TestInfoModel> modelList)
        {
            var groupedModelList = modelList.GroupBy(x => x.Ath_ID);


            List <XElement> oddEleList  = new List <XElement>(); //每个测试信息的动作1 的参数节点
            List <XElement> evenEleList = new List <XElement>(); //每个测试信息的动作2 的参数节点

            for (int i = 0; i < modelList.Count; i++)
            {
                Model.TestInfoModel infoModel = modelList[i];

                XDocument xd = XDocument.Load(Model.AppPath.XmlDataDirPath + infoModel.DataFileName);
                oddEleList.AddRange(xd.Descendants("action1").ElementAt(0).Elements());
                evenEleList.AddRange(xd.Descendants("action2").ElementAt(0).Elements());
            }

            List <XElement> list1 = new List <XElement>();
            List <XElement> list2 = new List <XElement>();

            for (int i = 0; i < paramNameList.Count; i++)
            {
                int paramIndex = i; //参数名称索引

                string ac1max = ""; //动作1最大值平均
                string ac1avg = ""; //动作1平均值平均
                string ac2max = ""; //动作2最大值平均
                string ac2avg = ""; //动作2平均值平均

                //动作1最大值平均
                List <XElement> ac1maxNoEmptyEleList = oddEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("max").Value != "").ToList <XElement>();
                if (ac1maxNoEmptyEleList.Count > 0)
                {
                    ac1max = Math.Round(ac1maxNoEmptyEleList.Average(x => double.Parse(x.Attribute("max").Value)), 2).ToString();
                }
                //动作1平均值平均
                List <XElement> ac1avgNoEmptyEleList = oddEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("avg").Value != "").ToList <XElement>();
                if (ac1avgNoEmptyEleList.Count > 0)
                {
                    ac1avg = Math.Round(ac1avgNoEmptyEleList.Average(x => double.Parse(x.Attribute("avg").Value)), 2).ToString();
                }
                //动作2最大值平均
                List <XElement> ac2maxNoEmptyEleList = evenEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("max").Value != "").ToList <XElement>();
                if (ac2maxNoEmptyEleList.Count > 0)
                {
                    ac2max = Math.Round(ac2maxNoEmptyEleList.Average(x => double.Parse(x.Attribute("max").Value)), 2).ToString();
                }
                //动作2平均值平均
                List <XElement> ac2avgNoEmptyEleList = evenEleList.Where(x => x.Name == paramNameList[paramIndex] && x.Attribute("avg").Value != "").ToList <XElement>();
                if (ac2avgNoEmptyEleList.Count > 0)
                {
                    ac2avg = Math.Round(ac2avgNoEmptyEleList.Average(x => double.Parse(x.Attribute("avg").Value)), 2).ToString();
                }
                XElement xe = new XElement(paramNameList[i]);
                xe.SetAttributeValue("max", ac1max);
                xe.SetAttributeValue("avg", ac1avg);
                list1.Add(xe);
                XElement xe2 = new XElement(paramNameList[i]);
                xe2.SetAttributeValue("max", ac2max);
                xe2.SetAttributeValue("avg", ac2avg);
                list2.Add(xe2);
            }

            List <List <XElement> > list = new List <List <XElement> >();

            list.Add(list1);
            list.Add(list2);
            return(list);
        }