/// <summary> /// /// </summary> /// <param name="query"></param> /// <returns></returns> public ResultFeeapportion GetFeeApportionData(Queryfeeapportion query) { try { ExecuteProcess process = new ExecuteProcess(); process.ActionName = ""; process.ActionTime = System.DateTime.Now; process.Success = true; process.ExceptionMsg = ""; ResultFeeapportion feeApption = new ResultFeeapportion(); feeApption.FeeApportionType = "按比例分摊"; List <TB_Alloction_Config> config = GetAlloctionConfig(query); if (config.Count == 0) { process.Success = false; process.ExceptionMsg = "此区域费用分摊没有配置"; ResultFeeapportion feeApptionReturn = new ResultFeeapportion(); feeApption.ActionInfo = process; return(feeApption); } Queryfeeapportion queryLastMonth = new Queryfeeapportion(); queryLastMonth.ItemCode = query.ItemCode; queryLastMonth.ObjType = query.ObjType; queryLastMonth.ObjectId = query.ObjectId; queryLastMonth.StartTime = query.StartTime.AddMonths(-1); List <TB_Alloction_Config> configLast = GetAlloctionConfig(queryLastMonth); FeeApportionValClass feeappVal = new FeeApportionValClass(); FeeApportionChartsClass chartClass = new FeeApportionChartsClass(); // 数据。 List <SeriesClass> serialClass = new List <SeriesClass>(); if (config.Count > 0) { DateTime dtBegin = config[0].ALLoction_StartDate; DateTime dtEnd = config[0].ALLoction_EndDate; double feeDai = config[0].ALLoction_Fee; feeappVal.ApportionVal = config[0].ALLoction_Fee; //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(query, dtBegin, dtEnd); EnergyContrast energy = new EnergyContrast(); BasicQuery query2 = new BasicQuery(); query2.AreaType = query.ObjType; query2.StartTime = config[0].ALLoction_StartDate; query2.EndTime = config[0].ALLoction_EndDate; query2.ObjectNum = query.ObjectId; query2.QueryType = EnergyAnalyseQueryType.Default; query2.Unit = 1; var lineChart = energy.GetSingleItemCodeByObject(query2, query.ItemCode); double befVal = 0; befVal = (double)lineChart.Values.Sum(); AccessCommon acess = new AccessCommon(); decimal flPrice = acess.GetFeePrice(query.ItemCode); befVal = befVal * (double)flPrice; //foreach (var costQueryModel in refModel) //{ // befVal += costQueryModel.TOTAL_COST; //} feeappVal.BeforeVal = Math.Round(befVal, 2); feeappVal.TotalVal = Math.Round((befVal + feeappVal.ApportionVal), 2); } List <SeriesData> sidatas = new List <SeriesData>(); SeriesData seri = new SeriesData(); // 统计明细数据 SeriesData data1 = new SeriesData(); SeriesData data2 = new SeriesData(); List <SeriesClass> serClass1 = new List <SeriesClass>(); List <SeriesClass> serClass2 = new List <SeriesClass>(); int iCout = 0; // 列表 List <FeeApportionListClass> appList = new List <FeeApportionListClass>(); foreach (TB_Alloction_Config conf in config) { FeeApportionListClass listClass = new FeeApportionListClass(); SeriesClass serial1 = new SeriesClass(); SeriesClass serial2 = new SeriesClass(); int objectId = conf.AreaID; List <Model.BaseLayerObject> objectList; string objectName = ""; TB_AreaInfo info = _accssCommon.GetAreaInfo(conf.AreaID); if (info != null) { objectName = info.CName; } //Queryfeeapportion queryItem = new Queryfeeapportion(); //queryItem = query; //queryItem.ObjectId = conf.AreaID; //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(queryItem, conf.ALLoction_StartDate, conf.ALLoction_EndDate); double BefFee = 0; //if (refModel.Count > 0) //{ // for (int jCount = 0; jCount < refModel.Count; jCount++) // { // BefFee += refModel[jCount].TOTAL_COST; // } //} EnergyContrast energy = new EnergyContrast(); BasicQuery query2 = new BasicQuery(); query2.AreaType = query.ObjType; query2.StartTime = config[0].ALLoction_StartDate; query2.EndTime = config[0].ALLoction_EndDate; query2.ObjectNum = conf.AreaID; query2.QueryType = EnergyAnalyseQueryType.Default; query2.Unit = 1; var lineChart2 = energy.GetSingleItemCodeByObject(query2, query.ItemCode); BefFee = (double)lineChart2.Values.Sum(); AccessCommon acess = new AccessCommon(); decimal flPrice = acess.GetFeePrice(query.ItemCode); BefFee = BefFee * (double)flPrice; serial1.name = objectName; serial2.name = objectName; serial1.y = Math.Round(BefFee); serial2.y = Math.Round((conf.ALLoction_Fee * conf.CfgPercent), 2); serClass1.Add(serial1); serClass2.Add(serial2); FeeApportionListClass list1 = new FeeApportionListClass(); list1.Id = iCout + 1; list1.Obj = objectName; list1.Tm = query.StartTime.ToString("yyyy-MM"); list1.BeforeVal = Math.Round(BefFee, 2); list1.ApportionVal = Math.Round((conf.ALLoction_Fee * conf.CfgPercent), 2); list1.TotalVal = list1.BeforeVal + list1.ApportionVal; appList.Add(list1); iCout++; } data1.name = "分摊前费用"; data1.data = serClass1; data2.name = "分摊费用"; data2.data = serClass2; sidatas.Add(data1); sidatas.Add(data2); chartClass.series = sidatas; feeApption.FeeApportionCharts = chartClass; if (configLast.Count > 0) { DateTime dtBegin2 = configLast[0].ALLoction_StartDate; DateTime dtEnd2 = configLast[0].ALLoction_EndDate; double feeDai = configLast[0].ALLoction_Fee; feeappVal.ApportionValLastMonth = configLast[0].ALLoction_Fee; //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(query, dtBegin2, dtEnd2); double beforeApportionVal = 0; //foreach (var costQueryModel in refModel) //{ // beforeApportionVal += costQueryModel.TOTAL_COST; //} EnergyContrast energy = new EnergyContrast(); BasicQuery query2 = new BasicQuery(); query2.AreaType = query.ObjType; query2.StartTime = configLast[0].ALLoction_StartDate; query2.EndTime = configLast[0].ALLoction_EndDate; query2.ObjectNum = query.ObjectId; query2.QueryType = EnergyAnalyseQueryType.Default; query2.Unit = 1; var lineChart2 = energy.GetSingleItemCodeByObject(query2, query.ItemCode); beforeApportionVal = (double)lineChart2.Values.Sum(); AccessCommon acess = new AccessCommon(); decimal flPrice = acess.GetFeePrice(query.ItemCode); beforeApportionVal = Math.Round(beforeApportionVal * (double)flPrice, 2); feeappVal.BeforeValLastMonth = beforeApportionVal; feeappVal.TotalValLastMonth = beforeApportionVal + feeappVal.ApportionValLastMonth; } if (feeappVal.ApportionValLastMonth > 0) { double compare = (feeappVal.ApportionVal - feeappVal.ApportionValLastMonth) * 100 / feeappVal.ApportionValLastMonth; feeappVal.ApportionValCompare = Math.Round(compare, 2).ToString(); } else { feeappVal.ApportionValCompare = "-"; } if (feeappVal.BeforeValLastMonth > 0) { double compare = (feeappVal.BeforeVal - feeappVal.BeforeValLastMonth) * 100 / feeappVal.BeforeValLastMonth; feeappVal.BeforeValCompare = Math.Round(compare, 2).ToString(); } else { feeappVal.BeforeValCompare = "-"; } if (feeappVal.TotalValLastMonth > 0) { double compare = (feeappVal.TotalVal - feeappVal.TotalValLastMonth) * 100 / feeappVal.TotalValLastMonth; feeappVal.TotalValCompare = Math.Round(compare, 2).ToString(); } else { feeappVal.TotalValCompare = "-"; } FeeApportionTblClass tblClass = new FeeApportionTblClass(); tblClass.FeeApportionList = appList; feeApption.FeeApportionTbl = tblClass; feeApption.FeeApportionVal = feeappVal; feeApption.ActionInfo = process; return(feeApption); } catch (Exception ex) { ExecuteProcess process = new ExecuteProcess(); process.ActionName = ""; process.ActionTime = System.DateTime.Now; process.Success = false; process.ExceptionMsg = ex.Message; ResultFeeapportion feeApption = new ResultFeeapportion(); feeApption.ActionInfo = process; return(feeApption); } }
/// <summary> /// 数据库获取导出数据列表 /// </summary> /// <param name="query"></param> /// <returns></returns> public List <FeeApportionListClass> GetFeeApportDataList(Queryfeeapportion query) { Queryfeeapportion queryLastMonth = query; List <TB_Alloction_Config> config = GetAlloctionConfig(query); int iCout = 0; // 列表 List <FeeApportionListClass> appList = new List <FeeApportionListClass>(); foreach (TB_Alloction_Config conf in config) { FeeApportionListClass listClass = new FeeApportionListClass(); SeriesClass serial1 = new SeriesClass(); SeriesClass serial2 = new SeriesClass(); int objectId = conf.AreaID; List <Model.BaseLayerObject> objectList; string objectName = ""; if (query.ObjType == AreaType.Area) { TB_AreaInfo info = _accssCommon.GetAreaInfo(conf.AreaID); //objectList = new BLL.BaseLayerObject().GetBaseLayerObjectList( // string.Format(" and layerobjectid ={0} ", conf.AreaID), " "); if (info != null) { objectName = info.CName; } } else { TB_AreaInfo info = _accssCommon.GetAreaInfo(conf.AreaID); if (info != null) { objectName = info.CName; } } Queryfeeapportion queryItem = new Queryfeeapportion(); queryItem = query; queryItem.ObjectId = conf.AreaID; double BefFee = 0; //List<CostQueryModel> refModel = _feeApportion.GetCostQuery(queryItem, conf.ALLoction_StartDate, conf.ALLoction_EndDate); //double BefFee = 0; //if (refModel.Count > 0) //{ // for (int jCount = 0; jCount < refModel.Count; jCount++) // { // BefFee += refModel[jCount].TOTAL_COST; // } //} EnergyContrast energy = new EnergyContrast(); BasicQuery query2 = new BasicQuery(); query2.AreaType = query.ObjType; query2.StartTime = config[0].ALLoction_StartDate; query2.EndTime = config[0].ALLoction_EndDate; query2.ObjectNum = query.ObjectId; query2.QueryType = EnergyAnalyseQueryType.Default; query2.Unit = 1; var lineChart = energy.GetSingleItemCodeByObject(query2, query.ItemCode); BefFee = (double)lineChart.Values.Sum(); AccessCommon acess = new AccessCommon(); decimal flPrice = acess.GetFeePrice(query.ItemCode); BefFee = BefFee * (double)flPrice; FeeApportionListClass list1 = new FeeApportionListClass(); list1.Id = iCout + 1; list1.Obj = objectName; list1.Tm = query.StartTime.ToString("yyyy-MM"); list1.BeforeVal = BefFee; list1.ApportionVal = (conf.ALLoction_Fee * conf.CfgPercent) / 100; list1.TotalVal = list1.BeforeVal + list1.ApportionVal; appList.Add(list1); iCout++; } return(appList); }