/// <summary> /// 修改焦点对象 /// </summary> public void UpdateObject() { //获取焦点对象 PSP_Calc_Spring obj = FocusedObject; if (obj == null) { return; } //创建对象的一个副本 PSP_Calc_Spring objCopy = new PSP_Calc_Spring(); DataConverter.CopyTo <PSP_Calc_Spring>(obj, objCopy); //执行修改操作 using (FrmPSP_Calc_SpringDialog dlg = new FrmPSP_Calc_SpringDialog()) { dlg.Object = objCopy; //绑定副本 if (dlg.ShowDialog() != DialogResult.OK) { return; } } //用副本更新焦点对象 DataConverter.CopyTo <PSP_Calc_Spring>(objCopy, obj); //刷新表格 gridControl.RefreshDataSource(); }
private void FormCalculator_Load(object sender, EventArgs e) { string str = " Flag='" + type + "' and Type='专家指定'"; IList <PSP_Calc_Spring> list2 = Services.BaseService.GetList <PSP_Calc_Spring>("SelectPSP_Calc_SpringByWhere", str); int years = forecastReport.EndYear - forecastReport.StartYear; for (int i = 1; i <= years; i++) { bool bl = false; foreach (PSP_Calc_Spring pcs in list2) { if ((forecastReport.StartYear + i).ToString() == pcs.Name) { bl = true; } } if (!bl) { PSP_Calc_Spring pcss = new PSP_Calc_Spring(); pcss.ID = Guid.NewGuid().ToString(); pcss.Name = (forecastReport.StartYear + i).ToString(); pcss.Value1 = 0; pcss.Value2 = 0; pcss.Flag = type; pcss.Type = "专家指定"; Services.BaseService.Create <PSP_Calc_Spring>(pcss); list2.Add(pcss); } } gridControl1.DataSource = list2; }
/// <summary> /// 添加对象 /// </summary> public void AddObject() { //检查对象链表是否已经加载 if (ObjectList == null) { return; } //新建对象 PSP_Calc_Spring obj = new PSP_Calc_Spring(); //执行添加操作 using (FrmPSP_Calc_SpringDialog dlg = new FrmPSP_Calc_SpringDialog()) { dlg.IsCreate = true; //设置新建标志 dlg.Object = obj; if (dlg.ShowDialog() != DialogResult.OK) { return; } } //将新对象加入到链表中 ObjectList.Add(obj); //刷新表格,并将焦点行定位到新对象上。 gridControl.RefreshDataSource(); GridHelper.FocuseRow(this.gridView, obj); }
private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e) { object obj = this.gridView1.GetRow(this.gridView1.FocusedRowHandle); if (obj == null) { return; } PSP_Calc_Spring pcs = obj as PSP_Calc_Spring; Services.BaseService.Update <PSP_Calc_Spring>(pcs); }
/// <summary> /// 利用弹性系数法计算预测数据 /// </summary> /// <param name="baseValue">历史数据</param> /// <param name="baseValue">基年数据</param> /// <param name="springCoefficient">预测采用的弹性系数</param> /// <param name="years">要预测的年数</param> /// <returns>预测结果数组</returns> public static double[] SpringCoefficientMethod(double baseValue, int years) { double[] rt = new double[years]; double s1 = baseValue; //每次的增长 double s2 = 0; //增长的合计 string str = " Flag='" + type + "' and Type='弹性系数'"; IList <PSP_Calc_Spring> list2 = Services.BaseService.GetList <PSP_Calc_Spring>("SelectPSP_Calc_SpringByWhere", str); for (int i = 1; i <= years; i++) { bool bl = false; foreach (PSP_Calc_Spring pcs in list2) { if ((startyear + i).ToString() == pcs.Name) { bl = true; } } if (!bl) { PSP_Calc_Spring pcss = new PSP_Calc_Spring(); pcss.ID = Guid.NewGuid().ToString(); pcss.Name = (startyear + i).ToString(); pcss.Value1 = 0; pcss.Value2 = 0; pcss.Flag = type; pcss.Type = "弹性系数"; Services.BaseService.Create <PSP_Calc_Spring>(pcss); list2.Add(pcss); } } for (int i = 0; i < years; i++) { foreach (PSP_Calc_Spring pcs in list2) { if ((startyear + i + 1).ToString() == pcs.Name) { s1 = s1 * (1 + pcs.Value1 * pcs.Value2); rt[i] = s1; } } //rt[i] = baseValue * Math.Pow(1 + springCoefficient * AverageIncreasing(historyValue), i + 1); } return(rt); }
private void gridView1_ShowingEditor(object sender, CancelEventArgs e) { object obj = this.gridView1.GetRow(this.gridView1.FocusedRowHandle); if (obj == null) { return; } PSP_Calc_Spring pcs = (PSP_Calc_Spring)obj; for (int i = 0; i < forecastReport.HistoryYears; i++) { int year = forecastReport.StartYear - forecastReport.HistoryYears + i + 1; if (pcs.Name == year.ToString()) { e.Cancel = true; } } }
/// <summary> /// 删除焦点对象 /// </summary> public void DeleteObject() { //获取焦点对象 PSP_Calc_Spring obj = FocusedObject; if (obj == null) { return; } //请求确认 if (MsgBox.ShowYesNo(Strings.SubmitDelete) != DialogResult.Yes) { return; } //执行删除操作 try { Services.BaseService.Delete <PSP_Calc_Spring>(obj); } catch (Exception exc) { Debug.Fail(exc.Message); HandleException.TryCatch(exc); return; } this.gridView.BeginUpdate(); //记住当前焦点行索引 int iOldHandle = this.gridView.FocusedRowHandle; //从链表中删除 ObjectList.Remove(obj); //刷新表格 gridControl.RefreshDataSource(); //设置新的焦点行索引 GridHelper.FocuseRowAfterDelete(this.gridView, iOldHandle); this.gridView.EndUpdate(); }
private void FormCalculator_Load(object sender, EventArgs e) { #region 年平均s dt = new DataTable(); dt.Columns.Add("Name"); foreach (DataRow dataRow in dataTable.Rows) { TreeListNode treeNode = treeList1.FindNodeByKeyID(dataRow["ID"]); if (!treeNode.HasChildren) { dt.Columns.Add(dataRow["Title"].ToString().Trim(), typeof(double)); DevExpress.XtraVerticalGrid.Rows.EditorRow editorRow = new DevExpress.XtraVerticalGrid.Rows.EditorRow(); editorRow.Properties.FieldName = dataRow["Title"].ToString().Trim(); editorRow.Properties.Caption = dataRow["Title"].ToString().Trim(); editorRow.Height = 20; editorRow.Properties.RowEdit = this.repositoryItemCalcEdit4; this.vGridControl2.Rows.AddRange(new DevExpress.XtraVerticalGrid.Rows.BaseRow[] { editorRow }); } } DataRow newrow1 = dt.NewRow(); newrow1["Name"] = "增长率(计算)"; foreach (DataRow dataRow in dataTable.Rows) { TreeListNode treeNode = treeList1.FindNodeByKeyID(dataRow["ID"]); if (!treeNode.HasChildren) { int forecastYears = forecastReport.EndYear - forecastReport.StartYear; double[] historyValues = GenerateHistoryValue(treeNode); newrow1[dataRow["Title"].ToString().Trim()] = Calculator.AverageIncreasing(historyValues); } } //dt.Rows.Add(newrow1); newrow2 = dt.NewRow(); dt.Rows.Add(newrow2); newrow2["Name"] = "当前增长率"; vGridControl2.DataSource = dt; IList <PSP_Calc> list = Services.BaseService.GetList <PSP_Calc>("SelectPSP_CalcByFlag", type); if (list.Count == 0) { pc.ID = Guid.NewGuid().ToString(); pc.Flag = type; pc.Col1 = ""; pc.Value1 = 3; pc.Value2 = 0.4; Services.BaseService.Create <PSP_Calc>(pc); } else { pc = list[0]; } //textEdit1.Text = pc.Value2.ToString(); IList <PSP_Calc> list1 = Services.BaseService.GetList <PSP_Calc>("SelectPSP_CalcByFlag1", type); if (list1.Count == 0) { pc1.ID = Guid.NewGuid().ToString(); pc1.Flag = type; pc1.Col1 = "1"; int i = 1; foreach (DataColumn dc in dt.Columns) { if (dc.ColumnName == "Name") { continue; } double value = 0; try { value = Convert.ToDouble(newrow1[dc].ToString()); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } pc1.GetType().GetProperty("Value" + i.ToString()).SetValue(pc1, value, null); newrow2[dc] = value; i++; } Services.BaseService.Create <PSP_Calc>(pc1); } else { pc1 = list1[0]; int i = 1; foreach (DataColumn dc in dt.Columns) { if (dc.ColumnName == "Name") { continue; } double value = 0; try { value = (double)pc1.GetType().GetProperty("Value" + i.ToString()).GetValue(pc1, null); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } newrow2[dc] = value; i++; } } #endregion IList <PSP_Calc_Spring> list2 = Services.BaseService.GetList <PSP_Calc_Spring>("SelectPSP_Calc_SpringByFlag", type); int years = forecastReport.EndYear - forecastReport.StartYear; for (int i = 1; i <= years; i++) { bool bl = false; foreach (PSP_Calc_Spring pcs in list2) { if ((forecastReport.StartYear + i).ToString() == pcs.Name) { bl = true; } } if (!bl) { PSP_Calc_Spring pcss = new PSP_Calc_Spring(); pcss.ID = Guid.NewGuid().ToString(); pcss.Name = (forecastReport.StartYear + i).ToString(); pcss.Value1 = 0; pcss.Value2 = 0; pcss.Flag = type; Services.BaseService.Create <PSP_Calc_Spring>(pcss); list2.Add(pcss); } } }
private void FormCalculator_Load(object sender, EventArgs e) { HideToolBarButton(); #region 年平均s dt = new DataTable(); dt.Columns.Add("Name"); //MessageBox.Show("1"); foreach (DataRow dataRow in dataTable.Rows) { TreeListNode treeNode = treeList1.FindNodeByKeyID(dataRow["ID"]); if (treeNode != null && !treeNode.HasChildren) { dt.Columns.Add(dataRow["Title"].ToString().Trim(), typeof(double)); DevExpress.XtraVerticalGrid.Rows.EditorRow editorRow = new DevExpress.XtraVerticalGrid.Rows.EditorRow(); editorRow.Properties.FieldName = dataRow["Title"].ToString().Trim(); editorRow.Properties.Caption = dataRow["Title"].ToString().Trim(); editorRow.Height = 20; editorRow.Properties.RowEdit = this.repositoryItemCalcEdit4; this.vGridControl2.Rows.AddRange(new DevExpress.XtraVerticalGrid.Rows.BaseRow[] { editorRow }); } } DataRow newrow1 = dt.NewRow(); newrow1["Name"] = "历史增长率"; foreach (DataRow dataRow in dataTable.Rows) { TreeListNode treeNode = treeList1.FindNodeByKeyID(dataRow["ID"]); if (treeNode != null && !treeNode.HasChildren) { int forecastYears = forecastReport.EndYear - forecastReport.StartYear; double[] historyValues = GenerateHistoryValue(treeNode); newrow1[dataRow["Title"].ToString().Trim()] = Calculator.AverageIncreasing(historyValues); } } dt.Rows.Add(newrow1); newrow2 = dt.NewRow(); dt.Rows.Add(newrow2); newrow2["Name"] = "当前增长率"; vGridControl2.DataSource = dt; IList <PSP_Calc> list = Services.BaseService.GetList <PSP_Calc>("SelectPSP_CalcByFlag", type); if (list.Count == 0) { pc.ID = Guid.NewGuid().ToString(); pc.Flag = type; pc.Col1 = ""; pc.Value1 = 3; pc.Value2 = 0.4; Services.BaseService.Create <PSP_Calc>(pc); } else { pc = list[0]; } spinEdit1.Value = Convert.ToDecimal(pc.Value1); spinEdit2.Value = Convert.ToDecimal(pc.Value2); //textEdit1.Text = pc.Value2.ToString(); IList <PSP_Calc> list1 = Services.BaseService.GetList <PSP_Calc>("SelectPSP_CalcByFlag1", type); if (list1.Count == 0) { pc1.ID = Guid.NewGuid().ToString(); pc1.Flag = type; pc1.Col1 = "1"; int i = 1; foreach (DataColumn dc in dt.Columns) { if (dc.ColumnName == "Name") { continue; } double value = 0; try { value = Convert.ToDouble(newrow1[dc].ToString()); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } pc1.GetType().GetProperty("Value" + i.ToString()).SetValue(pc1, value, null); newrow2[dc] = value; i++; } Services.BaseService.Create <PSP_Calc>(pc1); } else { pc1 = list1[0]; int i = 1; foreach (DataColumn dc in dt.Columns) { if (dc.ColumnName == "Name") { continue; } double value = 0; try { value = (double)pc1.GetType().GetProperty("Value" + i.ToString()).GetValue(pc1, null); } catch (Exception ex) { System.Console.WriteLine(ex.Message); } newrow2[dc] = value; i++; } } #endregion string str11 = " Flag='" + type + "' and Type='弹性系数'"; IList <PSP_Calc_Spring> list2 = Services.BaseService.GetList <PSP_Calc_Spring>("SelectPSP_Calc_SpringByWhere", str11); int years = forecastReport.EndYear - forecastReport.StartYear; for (int i = 1; i <= years; i++) { bool bl = false; foreach (PSP_Calc_Spring pcs in list2) { if ((forecastReport.StartYear + i).ToString() == pcs.Name) { bl = true; } } if (!bl) { PSP_Calc_Spring pcss = new PSP_Calc_Spring(); pcss.ID = Guid.NewGuid().ToString(); pcss.Name = (forecastReport.StartYear + i).ToString(); pcss.Value1 = 0; pcss.Value2 = 0; pcss.Flag = type; pcss.Type = "弹性系数"; Services.BaseService.Create <PSP_Calc_Spring>(pcss); list2.Add(pcss); } } Hashtable htt1 = new Hashtable(); for (int i = 0; i < forecastReport.HistoryYears; i++) { double value1 = 0.0; double value2 = 0.0; double value3 = 0.0; double value4 = 0.0; double value5 = 0.0; int yeara = forecastReport.StartYear - forecastReport.HistoryYears + i + 1; PSP_Calc_Spring pcss = new PSP_Calc_Spring(); pcss.ID = Guid.NewGuid().ToString(); pcss.Name = yeara.ToString(); pcss.Flag = type; string str = " TypeID=1 and Year=" + (yeara - 1); IList <PSP_Values> pg = Services.BaseService.GetList <PSP_Values>("SelectPSP_ValuesByWhere", str); if (pg.Count > 0) { value3 = pg[0].Value; } str = " TypeID=1 and Year=" + yeara; IList <PSP_Values> pg1 = Services.BaseService.GetList <PSP_Values>("SelectPSP_ValuesByWhere", str); if (pg1.Count > 0) { value5 = pg1[0].Value; } pcss.Value2 = (value5 - value3) / value3; str = " TypeID=2 and Year=" + (yeara - 1); IList <PSP_Values> pv1 = Services.BaseService.GetList <PSP_Values>("SelectPSP_ValuesByWhere", str); if (pv1.Count > 0) { value1 = pv1[0].Value; } str = " TypeID=2 and Year=" + yeara; IList <PSP_Values> pv2 = Services.BaseService.GetList <PSP_Values>("SelectPSP_ValuesByWhere", str); if (pv2.Count > 0) { value2 = pv2[0].Value; } if (value1 != 0 && value3 != 0) { value4 = (value2 - value1) / (value1 * (value5 - value3) / value3); } pcss.Value1 = value4; list2.Add(pcss); } gridControl1.DataSource = list2; ////////string str12 = " Flag='" + type + "' and Type='专家指定'"; ////////IList<PSP_Calc_Spring> list3 = Services.BaseService.GetList<PSP_Calc_Spring>("SelectPSP_Calc_SpringByWhere", str12); ////////int years1 = forecastReport.EndYear - forecastReport.StartYear; ////////for (int i = 1; i <= years1; i++) ////////{ //////// bool bl = false; //////// foreach (PSP_Calc_Spring pcs in list3) //////// { //////// if ((forecastReport.StartYear + i).ToString() == pcs.Name) //////// { //////// bl = true; //////// } //////// } //////// if (!bl) //////// { //////// PSP_Calc_Spring pcss = new PSP_Calc_Spring(); //////// pcss.ID = Guid.NewGuid().ToString(); //////// pcss.Name = (forecastReport.StartYear + i).ToString(); //////// pcss.Value1 = 0; //////// pcss.Value2 = 0; //////// pcss.Flag = type; //////// pcss.Type = "专家指定"; //////// Services.BaseService.Create<PSP_Calc_Spring>(pcss); //////// list3.Add(pcss); //////// } ////////} ////////gridControl2.DataSource = list3; }