private void FillDropdown() { YearDesc.DataSource = MABL.BL.AppBL.DD_Get_YearList(DateTime.Now.Year); YearDesc.DataBind(); YearDesc.SelectedIndex = 1; MonthDesc.DataSource = MaheshV17.Utility.M_DropDownList.Fill_Drop_Down_List("AAA_M_RT_Month", "MonthID", "Month_ShortName", "", "0", "Month", 0, "N", ""); MonthDesc.DataBind(); MonthDesc.SelectedIndex = DateTime.Now.Month; }
// 使用月份描述物件 - Added by Evan 20160826 protected void initMonthDesc() { if (monthDescList != null) { return; } monthDescList = new List <MonthDesc>(); MonthDesc month0 = new MonthDesc(); month0.Numble = "01"; month0.NameCht = "一月"; monthDescList.Add(month0); MonthDesc month1 = new MonthDesc(); month1.Numble = "02"; month1.NameCht = "二月"; monthDescList.Add(month1); MonthDesc month2 = new MonthDesc(); month2.Numble = "03"; month2.NameCht = "三月"; monthDescList.Add(month2); MonthDesc month3 = new MonthDesc(); month3.Numble = "04"; month3.NameCht = "四月"; monthDescList.Add(month3); MonthDesc month4 = new MonthDesc(); month4.Numble = "05"; month4.NameCht = "五月"; monthDescList.Add(month4); MonthDesc month5 = new MonthDesc(); month5.Numble = "06"; month5.NameCht = "六月"; monthDescList.Add(month5); MonthDesc month6 = new MonthDesc(); month6.Numble = "07"; month6.NameCht = "七月"; monthDescList.Add(month6); MonthDesc month7 = new MonthDesc(); month7.Numble = "08"; month7.NameCht = "八月"; monthDescList.Add(month7); MonthDesc month8 = new MonthDesc(); month8.Numble = "09"; month8.NameCht = "九月"; monthDescList.Add(month8); MonthDesc month9 = new MonthDesc(); month9.Numble = "10"; month9.NameCht = "十月"; monthDescList.Add(month9); MonthDesc month10 = new MonthDesc(); month10.Numble = "11"; month10.NameCht = "十一月"; monthDescList.Add(month10); MonthDesc month11 = new MonthDesc(); month11.Numble = "12"; month11.NameCht = "十二月"; monthDescList.Add(month11); }
/// <summary> /// 获取VaR数据源 /// </summary> /// <param name="showType">展示类型:导入期、稳定期</param> /// <param name="assetsAmountRate">资产金额比例</param> /// <param name="riskRate">风险控制度</param> /// <param name="forecastQuantity">预测年数量</param> /// <returns></returns> public JsonResult GetVaRData(VaRType showType, double assetsAmountRate, int forecastQuantity = 0, double riskRate = 0d) { if (CheckSession() == false) { return(Json(ResultModelBase.CreateTimeoutModel(), JsonRequestBehavior.AllowGet)); } if (CheckSessionID() == false) { return(Json(ResultModelBase.CreateLogoutModel(), JsonRequestBehavior.AllowGet)); } ResultModel <Dictionary <string, object> > result = new ResultModel <Dictionary <string, object> >(); try { int userID = GetLoginUser().ID; var control = this.valuationDao.GetControl(userID); if (forecastQuantity == 0) { forecastQuantity = control.Years; } if (riskRate == 0) { riskRate = control.RiskRatio; } var resultData = this.valuationManager.GetValResultData(userID); double assetsAmount = this.valuationDao.QueryEquipmentList(userID, -1, -1, "", "", "", 0, 0, "", "", "f2.ID", true).Sum(e => e.Equipment.PurchaseAmount), deviationAvg = 0, stdDeviation = 0, length = ValControlInfo.ForecastYears.ForecastYear * 12; double vaR = assetsAmount * assetsAmountRate * 0.01; List <double> deviations = new List <double>(); List <Dictionary <string, object> > cost = new List <Dictionary <string, object> >(); if (showType == VaRType.StablePeriod) { Dictionary <string, object> costDetail; Dictionary <string, object> forecastCost; Dictionary <string, object> actualCost; for (int i = 0; i < length; i++) { bool flag = i < 12; costDetail = new Dictionary <string, object>(); forecastCost = new Dictionary <string, object>(); actualCost = new Dictionary <string, object>(); DateTime date = control.ContractStartDate.AddMonths(i); DateTime actualDate = control.ContractStartDate.AddYears(-ValControlInfo.ActualYears.ActualYear).AddMonths(i); var amountForecasts = (List <object>)resultData["AmountForecast"]; int index = i / 12; var amountForecast = (Dictionary <string, object>)amountForecasts[index]; var forecastValues = (List <double>)amountForecast["data"]; double forecastValue = SQLUtil.ConvertDouble(forecastValues[i % 12]); double actualValue = 0; if (flag) { var amountActuals = (List <object>)resultData["AmountActual"]; int indexActual = i / 12; var amountActual = (Dictionary <string, object>)amountActuals[indexActual]; var actualValues = (List <double>)amountActual["data"]; actualValue = SQLUtil.ConvertDouble(actualValues[i % 12]); } forecastCost.Add("Year", date.Year); forecastCost.Add("Month", MonthDesc.GetMonthDesc(date.Month)); forecastCost.Add("Value", forecastValue); actualCost.Add("Year", flag ? actualDate.Year.ToString() : ""); actualCost.Add("Month", flag ? MonthDesc.GetMonthDesc(actualDate.Month) : ""); actualCost.Add("Value", flag ? actualValue.ToString() : "-"); costDetail.Add("ForecastCost", forecastCost); costDetail.Add("ActualCost", actualCost); costDetail.Add("Deviation", flag ? (actualValue - forecastValue).ToString() : "-"); if (flag) { deviations.Add(actualValue - forecastValue); } cost.Add(costDetail); } deviationAvg = (deviations.Sum()) / deviations.Count; stdDeviation = Statistics.StandardDeviation(deviations); double NORMINV = Normal.InvCDF(0, 1, riskRate * 0.01); double SQRT = Math.Sqrt(forecastQuantity * 12); vaR = NORMINV * SQRT * stdDeviation + deviationAvg * forecastQuantity * 12; if (double.IsNaN(vaR) || vaR < 0) { vaR = 0; } } Dictionary <string, object> data = new Dictionary <string, object>(); data.Add("AssetsAmount", assetsAmount); data.Add("Cost", cost); data.Add("DeviationAvg", deviationAvg); data.Add("StdDeviation", stdDeviation); data.Add("VaR", vaR); result.Data = data; } catch (Exception ex) { NLog.LogManager.GetCurrentClassLogger().Error(ex, ex.Message); result.SetFailed(ResultCodes.SystemError, ControlManager.GetSettingInfo().ErrorMessage); } return(JsonResult(result)); }