public List<ReportCommonEntity> GetCustomerStageRate(string begintime, string endtime, string agentid, string clientid) { List<ReportCommonEntity> list = new List<ReportCommonEntity>(); DataSet ds = CustomerRPTDAL.BaseProvider.GetCustomerStageRate(begintime, endtime, agentid, clientid); var stages = SystemBusiness.BaseBusiness.GetCustomStages(agentid, clientid); int total = 0, prev = 0; foreach (var stage in stages) { ReportCommonEntity model = new ReportCommonEntity(); model.name = stage.StageName; model.iValue = 0; model.desc = ""; foreach (DataRow dr in ds.Tables["Data"].Select("StageID='" + stage.StageID + "'")) { model.desc += CommonBusiness.GetEnumDesc((EnumCustomStatus)Convert.ToInt32(dr["Status"])) + ":" + dr["Value"].ToString(); model.iValue += Convert.ToInt32(dr["Value"]); } total += model.iValue; list.Add(model); } if (total > 0) { for (int i = list.Count - 1; i >= 0; i--) { list[i].iValue += prev; prev = list[i].iValue; list[i].value = (Convert.ToDecimal(list[i].iValue) / total * 100).ToString("f2"); list[i].name += list[i].iValue; if (list[i].desc.Length > 0) { list[i].name += " (" + list[i].desc + ") "; } } } return list; }
public List<ReportCommonEntity> GetOpportunityStageRate(string begintime, string endtime, string UserID, string TeamID, string agentid, string clientid, out decimal forecast) { forecast = 0; List<ReportCommonEntity> list = new List<ReportCommonEntity>(); DataSet ds = SalesRPTDAL.BaseProvider.GetOpportunityStageRate(begintime, endtime, UserID, TeamID, agentid, clientid); var stages = SystemBusiness.BaseBusiness.GetOrderStages("", agentid, clientid); decimal total = 0, prev = 0; foreach (var stage in stages) { ReportCommonEntity model = new ReportCommonEntity(); model.name = stage.StageName; DataRow[] drs = ds.Tables["Data"].Select("StageID='" + stage.StageID + "'"); if (drs.Count() > 0) { model.dValue = Convert.ToDecimal(drs[0]["Value"]); } else { model.dValue = 0; } model.desc = "当前:" + model.dValue.ToString("f2") + "*" + (stage.Probability * 100).ToString("f2") + "%"; total += model.dValue; forecast += model.dValue * stage.Probability; list.Add(model); } if (total > 0) { for (int i = list.Count - 1; i >= 0; i--) { list[i].dValue += prev; prev = list[i].dValue; list[i].value = (list[i].dValue / total * 100).ToString("f2"); list[i].name += list[i].dValue.ToString("f2"); list[i].name += " (" + list[i].desc + ") "; } } else { return new List<ReportCommonEntity>(); } return list; }