Esempio n. 1
0
        /// <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();
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        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;
                }
            }
        }
Esempio n. 7
0
        /// <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();
        }
Esempio n. 8
0
        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);
                }
            }
        }
Esempio n. 9
0
        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;
        }