public ResultEnergyAnalyse GetEnergyAnalyseLineChart(QueryAnalyse query) { var pAction = new ExecuteProcess(); try { var result = new NTS.WEB.BLL.Charts().GetEnergyAnalyseLineChart(query); if (result == null) { pAction.Success = false; pAction.ExceptionMsg = "暂无数据信息"; return new ResultEnergyAnalyse() { ActionInfo = pAction }; } pAction.Success = true; result.ActionInfo = pAction; return result; } catch (Exception e) { pAction.Success = false; pAction.ExceptionMsg = e.Message; return new ResultEnergyAnalyse() { ActionInfo = pAction }; } }
public ResultEnergyAnalyse GetEnergyAnalyseLineChart_OLD(QueryAnalyse query) { try { VerifyPersonOrAreaExist(query); #region 返回对象定义 ResultEnergyAnalyse result = new ResultEnergyAnalyse() { OrderLst = new List<EnergyOrder>(), series = new List<EneryAnalyseSeries>() }; result.series.Add(new EneryAnalyseSeries() { data = new List<decimal>() }); #endregion List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>(); if (query.IsDevice == 0) { if (query.ItemCode == "00000") {//总能耗 itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID"); result.Unit = "T";//标准煤单位 result.series[0].name = "总能耗"; } else { itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); if (itemCodeList.Count > 0) { result.Unit = itemCodeList[0].Unit;//单个分类分项单位 result.series[0].name = itemCodeList[0].ItemCodeName; //var itemchildCodeList = new BLL.Itemcode().GetItemcodeList(string.Format(" and ParentID={0} ", itemCodeList[0].ItemcodeID), " order by ItemcodeID"); //if (itemchildCodeList.Count > 0) //{ // itemCodeList = itemchildCodeList; //} } } } else { var deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + deviceList[0].ItemCodeID + "'", " order by ItemcodeID"); if (itemCodeList.Count > 0) { result.Unit = itemCodeList[0].Unit;//单个分类分项单位 result.series[0].name = itemCodeList[0].ItemCodeName; } if (query.ItemCode == "00000") {//总能耗 result.Unit = "T";//标准煤单位 result.series[0].name = "总能耗"; } } switch (query.QueryType) { case EnergyAnalyseQueryType.Convert2Co2: case EnergyAnalyseQueryType.Convert2Coal: result.Unit = "T";//标准煤单位 break; case EnergyAnalyseQueryType.Convert2Money: result.Unit = "元";//标准煤单位 break; } DateTime tempStartTime = query.StartTime; DateTime tempEndTime = query.EndTime; switch (query.QueryType) { case EnergyAnalyseQueryType.YearCompare://同比值 tempStartTime = tempStartTime.AddYears(-1); tempEndTime = tempEndTime.AddYears(-1); break; case EnergyAnalyseQueryType.MonthCompare://环比值 tempStartTime = tempStartTime.AddMonths(-1); tempEndTime = tempEndTime.AddMonths(-1); break; } Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>(); Dictionary<string, decimal> tempConvertHour = new Dictionary<string, decimal>(); var model = new BaseQueryModel(); model.IsDevice = query.IsDevice; model.ObjectList = new List<int>(); model.ObjectList = new List<int>() { query.ObjectId }; //if (model.IsDevice == 0) //{//区域 // model.ObjectList = new List<int>() { query.ObjectId }; //} //else //{ // var device = new BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); // if (device.Count > 0) // { // model.ObjectList = (from p in device select p.DeviceID).ToList<int>(); // } //} //model.Unit = GetUnit(query.StartTime, query.EndTime); model.Unit = BaseTool.GetChartUnit(query.particle); if (model.Unit == ChartUnit.unit_month) { model.Starttime = Convert.ToDateTime(tempStartTime.ToString("yyyy-MM-1")); model.Endtime = Convert.ToDateTime(tempEndTime.ToString("yyyy-MM-1")); } else { model.Starttime = tempStartTime; model.Endtime = tempEndTime; } int templastmonthdays = 0; switch (model.Unit) { case ChartUnit.unit_month: for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddMonths(1)) { tempConvert.Add(i.ToString("yyyy-MM-dd"), 0); } break; case ChartUnit.unit_hour: for (DateTime i = model.Starttime; i < model.Endtime.AddDays(1); i = i.AddHours(1)) { tempConvert.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0); } break; case ChartUnit.unit_day: if ((DateTime.Now- model.Endtime).Days>0) { for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddDays(1)) { tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0); } } else { for (DateTime i = model.Starttime; i <= model.Endtime.AddDays(-1); i = i.AddDays(1)) { tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0); } for (DateTime i = model.Endtime; i <= DateTime.Now; i = i.AddHours(1)) { tempConvertHour.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0); } } templastmonthdays = (model.Endtime - model.Starttime).Days; break; } string objName = ""; foreach (var item in itemCodeList) { model.ItemCode = item.ItemCodeNumber; BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false); foreach (var r in resList.BaseLayerObjectResults) { if (model.IsDevice == 0) { objName = r.Value.baseLayerObject.LayerObjectName;//取区域名称 } else { objName = r.Value.device.DeviceName; } foreach (var rr in r.Value.Datas) { if (query.ItemCode == "00000") { switch (query.QueryType) { case EnergyAnalyseQueryType.Default://默认 case EnergyAnalyseQueryType.YearCompare://默认 case EnergyAnalyseQueryType.MonthCompare://默认 tempConvert[rr.DatePick] += rr.CoalDataValue; break; case EnergyAnalyseQueryType.UnitArea://单位面积 tempConvert[rr.DatePick] += rr.CoalDataValue / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); break; case EnergyAnalyseQueryType.UnitPerson://人均 tempConvert[rr.DatePick] += rr.CoalDataValue / decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString()); break; case EnergyAnalyseQueryType.Convert2Coal:// tempConvert[rr.DatePick] += rr.CoalDataValue; break; case EnergyAnalyseQueryType.Convert2Co2:// tempConvert[rr.DatePick] += rr.Co2DataValue; break; case EnergyAnalyseQueryType.Convert2Money:// tempConvert[rr.DatePick] += rr.MoneyDataValue; break; } } else { switch (query.QueryType) { case EnergyAnalyseQueryType.Default://默认 case EnergyAnalyseQueryType.YearCompare://默认 case EnergyAnalyseQueryType.MonthCompare://默认 tempConvert[rr.DatePick] += rr.DataValue; break; case EnergyAnalyseQueryType.UnitArea://单位面积 tempConvert[rr.DatePick] += rr.DataValue / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); break; case EnergyAnalyseQueryType.UnitPerson://人均 tempConvert[rr.DatePick] += rr.DataValue / decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString()); break; case EnergyAnalyseQueryType.Convert2Coal:// tempConvert[rr.DatePick] += rr.CoalDataValue; break; case EnergyAnalyseQueryType.Convert2Co2:// tempConvert[rr.DatePick] += rr.Co2DataValue; break; case EnergyAnalyseQueryType.Convert2Money:// tempConvert[rr.DatePick] += rr.MoneyDataValue; break; } } } } } int order = 1; foreach (var item in tempConvert) { var time = item.Key; if (model.Unit == ChartUnit.unit_month) { time = Convert.ToDateTime(time).ToString("yyyy-MM"); } decimal value = decimal.Round(item.Value, 2); result.series[0].data.Add(value); result.OrderLst.Add(new EnergyOrder() { Order = order, Tm = time, Obj = objName, Val = value, EneType = result.series[0].name // EneType =itemCodeList.Count > 1 ? "总能耗" : itemCodeList[0].ItemCodeName }); order++; } if (query.QueryType == EnergyAnalyseQueryType.MonthCompare) { int tempcurrentdays = (query.EndTime - query.StartTime).Days; //int index = (28 - query.StartTime.Day) < 0 ? 0 : (28 - query.StartTime.Day); if (model.Unit == ChartUnit.unit_day) { if (tempcurrentdays > templastmonthdays) {//当前时间范围大于上月环比范围 int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day; if (index < 0) { index = 0; } for (int i = templastmonthdays; i < tempcurrentdays; i++) { result.series[0].data.Insert(index, result.series[0].data[index]); } } else { if (tempcurrentdays < templastmonthdays) { int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day; for (int i = tempcurrentdays; i < templastmonthdays; i++) { result.series[0].data.RemoveAt(index); index--; } } } //for (int i = 0; i < ((query.EndTime - query.StartTime).Days - tempdaycount); i++) //{ // result.series[0].data.Insert(index, result.series[0].data[index]); //} } } return result; } catch (Exception ee) { throw ee; } }
public ResultEnergyAnalyse GetEnergyAnalyseLineChart(QueryAnalyse query) { try { VerifyPersonOrAreaExist(query); #region 返回对象定义 ResultEnergyAnalyse result = new ResultEnergyAnalyse() { OrderLst = new List<EnergyOrder>(), series = new List<EneryAnalyseSeries>() }; result.series.Add(new EneryAnalyseSeries() { data = new List<decimal>() }); #endregion List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>(); if (query.IsDevice == 0) { if (query.ItemCode == "00000") {//总能耗 itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID"); result.Unit = "T";//标准煤单位 result.series[0].name = "总能耗"; } else { itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); if (itemCodeList.Count > 0) { result.Unit = itemCodeList[0].Unit;//单个分类分项单位 result.series[0].name = itemCodeList[0].ItemCodeName; } } } else { var deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + deviceList[0].ItemCodeID + "'", " order by ItemcodeID"); if (itemCodeList.Count > 0) { result.Unit = itemCodeList[0].Unit;//单个分类分项单位 result.series[0].name = itemCodeList[0].ItemCodeName; } if (query.ItemCode == "00000") {//总能耗 result.Unit = "T";//标准煤单位 result.series[0].name = "总能耗"; } } switch (query.QueryType) { case EnergyAnalyseQueryType.Convert2Co2: case EnergyAnalyseQueryType.Convert2Coal: result.Unit = "T";//标准煤单位 break; case EnergyAnalyseQueryType.Convert2Money: result.Unit = "元";//标准煤单位 break; } DateTime tempStartTime = query.StartTime; DateTime tempEndTime = query.EndTime; if ((DateTime.Now - tempEndTime).Days == 0) { tempEndTime = DateTime.Now; } switch (query.QueryType) { case EnergyAnalyseQueryType.YearCompare://同比值 tempStartTime = tempStartTime.AddYears(-1); tempEndTime = tempEndTime.AddYears(-1); break; case EnergyAnalyseQueryType.MonthCompare://环比值 tempStartTime = tempStartTime.AddMonths(-1); tempEndTime = tempEndTime.AddMonths(-1); break; } Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>(); Dictionary<string, decimal> tempConvertHour = new Dictionary<string, decimal>(); var model = new BaseQueryModel(); model.IsDevice = query.IsDevice; model.ObjectList = new List<int>(); model.ObjectList = new List<int>() { query.ObjectId }; model.Unit = BaseTool.GetChartUnit(query.particle); if (model.Unit == ChartUnit.unit_month) { model.Starttime = Convert.ToDateTime(tempStartTime.ToString("yyyy-MM-1")); model.Endtime = Convert.ToDateTime(tempEndTime.ToString("yyyy-MM-1")); } else { model.Starttime = tempStartTime; model.Endtime = tempEndTime; } int templastmonthdays = 0; switch (model.Unit) { case ChartUnit.unit_month: for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddMonths(1)) { tempConvert.Add(i.ToString("yyyy-MM-dd"), 0); } break; case ChartUnit.unit_hour: for (DateTime i = model.Starttime; i < model.Endtime.AddDays(1); i = i.AddHours(1)) { tempConvert.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0); } break; case ChartUnit.unit_day: templastmonthdays = (model.Endtime - model.Starttime).Days; if (model.Endtime.Hour== 0) { for (DateTime i = model.Starttime; i <= model.Endtime; i = i.AddDays(1)) { tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0); } } else { for (DateTime i = model.Starttime; i <= model.Endtime.AddDays(-1); i = i.AddDays(1)) { tempConvert.Add(i.ToString(("yyyy-MM-dd")), 0); } for (DateTime i = DateTime.Parse(model.Endtime.ToString("yyyy-MM-dd 00:00:00")); i <= model.Endtime; i = i.AddHours(1)) { tempConvertHour.Add(i.ToString("yyyy-MM-dd HH:00:00"), 0); } model.Endtime = DateTime.Parse(tempEndTime.AddDays(-1).ToString("yyyy-MM-dd")); } break; } string objName = ""; decimal temphourValue = 0; foreach (var item in itemCodeList) { model.ItemCode = item.ItemCodeNumber; GenerateEnergyDicValue(model, query, tempConvert,ref objName); if (tempConvertHour.Count>0) { model.Unit = ChartUnit.unit_hour; model.Starttime = DateTime.Parse(tempEndTime.ToString("yyyy-MM-dd 00:00:00")); model.Endtime = DateTime.Parse(tempEndTime.ToString("yyyy-MM-dd HH:00:00")); GenerateEnergyDicValue(model, query, tempConvertHour, ref objName); temphourValue = tempConvertHour.Sum(i => i.Value); model.Starttime = tempStartTime; model.Endtime = DateTime.Parse(tempEndTime.AddDays(-1).ToString("yyyy-MM-dd")); model.Unit = ChartUnit.unit_day; } } if (tempConvertHour.Count > 0) { tempConvert.Add(DateTime.Now.ToString("yyyy-MM-dd"), temphourValue); } int order = 1; foreach (var item in tempConvert) { var time = item.Key; if (model.Unit == ChartUnit.unit_month) { time = Convert.ToDateTime(time).ToString("yyyy-MM"); } decimal value = decimal.Round(item.Value, 2); result.series[0].data.Add(value); result.OrderLst.Add(new EnergyOrder() { Order = order, Tm = time, Obj = objName, Val = value, EneType = result.series[0].name // EneType =itemCodeList.Count > 1 ? "总能耗" : itemCodeList[0].ItemCodeName }); order++; } if (query.QueryType == EnergyAnalyseQueryType.MonthCompare) { int tempcurrentdays = (query.EndTime - query.StartTime).Days; //int index = (28 - query.StartTime.Day) < 0 ? 0 : (28 - query.StartTime.Day); if (model.Unit == ChartUnit.unit_day) { if (tempcurrentdays > templastmonthdays) {//当前时间范围大于上月环比范围 int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day; if (index < 0) { index = 0; } for (int i = templastmonthdays; i < tempcurrentdays; i++) { result.series[0].data.Insert(index, result.series[0].data[index]); } } else { if (tempcurrentdays < templastmonthdays) { int index = System.DateTime.DaysInMonth(query.StartTime.AddMonths(-1).Year, query.StartTime.AddMonths(-1).Month) - query.StartTime.Day; for (int i = tempcurrentdays; i < templastmonthdays; i++) { result.series[0].data.RemoveAt(index); index--; } } } //for (int i = 0; i < ((query.EndTime - query.StartTime).Days - tempdaycount); i++) //{ // result.series[0].data.Insert(index, result.series[0].data[index]); //} } } return result; } catch (Exception ee) { throw ee; } }
public EnergyAnalyseCompare GetEnergyAnalyseCompare(QueryAnalyse query) { try { EnergyAnalyseCompare result = new EnergyAnalyseCompare(); query.QueryType = EnergyAnalyseQueryType.Default; ResultEnergyAnalyse temp = GetEnergyAnalyseLineChart(query); if (temp != null) { result.Unit = temp.Unit; result.MaxValue = decimal.Round(temp.OrderLst.Select(t => t.Val).Max(), 2); result.MinValue = decimal.Round(temp.OrderLst.Select(t => t.Val).Min(), 2); result.AverageValue = decimal.Round(temp.OrderLst.Select(t => t.Val).Average(), 2); result.TotalValue = decimal.Round(temp.OrderLst.Select(t => t.Val).Sum(), 2); } query.QueryType = EnergyAnalyseQueryType.YearCompare; temp = GetEnergyAnalyseLineChart(query); if (temp != null) { result.LastYearTotalValue = temp.OrderLst.Select(t => t.Val).Sum(); if (result.LastYearTotalValue > 0) { result.LastYearCompare = decimal.Round(100 * (result.TotalValue - result.LastYearTotalValue) / result.LastYearTotalValue, 2) .ToString(CultureInfo.InvariantCulture); } } query.QueryType = EnergyAnalyseQueryType.MonthCompare; temp = GetEnergyAnalyseLineChart(query); if (temp != null) { result.LastMonthTotalValue = temp.OrderLst.Select(t => t.Val).Sum(); if (result.LastMonthTotalValue > 0) { result.LastMonthCompare = decimal.Round(100 * (result.TotalValue - result.LastMonthTotalValue) / result.LastMonthTotalValue, 2).ToString(CultureInfo.InvariantCulture); } } return result; } catch (Exception ee) { throw ee; } }
private Dictionary<string, decimal> GenerateEnergyDicValue(BaseQueryModel model, QueryAnalyse query, Dictionary<string, decimal> tempConvert,ref string objName) { BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false); foreach (var r in resList.BaseLayerObjectResults) { if (model.IsDevice == 0) { objName = r.Value.baseLayerObject.LayerObjectName; //取区域名称 } else { objName = r.Value.device.DeviceName; } foreach (var rr in r.Value.Datas) { if (query.ItemCode == "00000") { switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认 case EnergyAnalyseQueryType.YearCompare: //默认 case EnergyAnalyseQueryType.MonthCompare: //默认 tempConvert[rr.DatePick] += rr.CoalDataValue; break; case EnergyAnalyseQueryType.UnitArea: //单位面积 tempConvert[rr.DatePick] += rr.CoalDataValue/ decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); break; case EnergyAnalyseQueryType.UnitPerson: //人均 tempConvert[rr.DatePick] += rr.CoalDataValue/ decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString()); break; case EnergyAnalyseQueryType.Convert2Coal: // tempConvert[rr.DatePick] += rr.CoalDataValue; break; case EnergyAnalyseQueryType.Convert2Co2: // tempConvert[rr.DatePick] += rr.Co2DataValue; break; case EnergyAnalyseQueryType.Convert2Money: // tempConvert[rr.DatePick] += rr.MoneyDataValue; break; } } else { switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认 case EnergyAnalyseQueryType.YearCompare: //默认 case EnergyAnalyseQueryType.MonthCompare: //默认 tempConvert[rr.DatePick] += rr.DataValue; break; case EnergyAnalyseQueryType.UnitArea: //单位面积 tempConvert[rr.DatePick] += rr.DataValue/ decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); break; case EnergyAnalyseQueryType.UnitPerson: //人均 tempConvert[rr.DatePick] += rr.DataValue/ decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString()); break; case EnergyAnalyseQueryType.Convert2Coal: // tempConvert[rr.DatePick] += rr.CoalDataValue; break; case EnergyAnalyseQueryType.Convert2Co2: // tempConvert[rr.DatePick] += rr.Co2DataValue; break; case EnergyAnalyseQueryType.Convert2Money: // tempConvert[rr.DatePick] += rr.MoneyDataValue; break; } } } } return tempConvert; }
public ResultEnergyAnalysePie GetEnergyAnalysePie(QueryAnalyse query) { try { VerifyPersonOrAreaExist(query); ResultEnergyAnalysePie result = new ResultEnergyAnalysePie() { LayerPie = new PieHighChart() { series = new List<Series>() }, ItemCodePie = new PieHighChart() { series = new List<Series>() } }; result.LayerPie.series.Add(new Series() { data = new List<EneryHighChart>() }); result.ItemCodePie.series.Add(new Series() { data = new List<EneryHighChart>() }); query.QueryType = EnergyAnalyseQueryType.Default; List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>(); if (query.ItemCode == "00000") {//总能耗 itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID"); result.Unit = "T";//标准煤单位 } else { itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); if (itemCodeList.Count > 0) { result.Unit = itemCodeList[0].Unit;//单个分类分项单位 var itemchildCodeList = new BLL.Itemcode().GetItemcodeList(string.Format(" and ParentID={0} ", itemCodeList[0].ItemcodeID), " order by ItemcodeID"); if (itemchildCodeList.Count > 0) { itemCodeList = itemchildCodeList; } } } switch (query.QueryType) { case EnergyAnalyseQueryType.Convert2Co2: case EnergyAnalyseQueryType.Convert2Coal: result.Unit = "T";//标准煤单位 break; case EnergyAnalyseQueryType.Convert2Money: result.Unit = "元";//标准煤单位 break; } var model = new BaseQueryModel(); model.IsDevice = query.IsDevice; model.ObjectList = new List<int>() { query.ObjectId }; model.IsDevice = 0;//只获取区域的 if (model.IsDevice == 0) {//区域 //model.ObjectList = (from p in LayerObjectList select p.LayerObjectID).ToList<int>(); model.ObjectList = query.ObjectChildren; if (model.ObjectList.Count == 0) {//如果选择的区域对象下没有子集则取当前对象能耗,否则取各子集能耗 model.ObjectList = new List<int>() { query.ObjectId }; } } else {//设备只取当前对象能耗 //var device = new BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); //if (device.Count > 0) //{ // model.ObjectList = (from p in device select p.DeviceID).ToList<int>(); //} } //model.Unit = GetUnit(query.StartTime, query.EndTime); model.Unit = BaseTool.GetChartUnit(query.particle); if (model.Unit == ChartUnit.unit_month) { model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-1")); model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-1")); } else { model.Starttime = query.StartTime; model.Endtime = query.EndTime; } Dictionary<string, decimal> tempLayerConvert = new Dictionary<string, decimal>(); Dictionary<string, decimal> tempItemcodeConvert = new Dictionary<string, decimal>(); if (query.ObjectChildren.Count == 0) {//当前选项没有子节点,则layer能耗和分类分项能耗就取当前选中节点的能耗值 foreach (var item in itemCodeList) { tempItemcodeConvert.Add(item.ItemCodeName, 0); model.ItemCode = item.ItemCodeNumber; BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false); foreach (var r in resList.BaseLayerObjectResults) { var key = ""; if (model.IsDevice == 0) { key = r.Value.baseLayerObject.LayerObjectName; } else { key = r.Value.device.DeviceName; } if (!tempLayerConvert.ContainsKey(key)) { tempLayerConvert.Add(key, 0); } if (query.ItemCode == "00000") {//选择总能耗后把其他分类分项的能耗转化成标准煤 switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认总能耗 tempLayerConvert[key] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());// tempItemcodeConvert[item.ItemCodeName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); break; default: tempLayerConvert[key] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); tempItemcodeConvert[item.ItemCodeName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); break; } } else { switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认总能耗 tempLayerConvert[key] += r.Value.Total; tempItemcodeConvert[item.ItemCodeName] += r.Value.Total; break; default: tempLayerConvert[key] += r.Value.Total; tempItemcodeConvert[item.ItemCodeName] += r.Value.Total; break; } } } } } else { model.ObjectList = query.ObjectChildren;//先获取layer子节点能耗值 foreach (var item in itemCodeList) { model.ItemCode = item.ItemCodeNumber; BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false); foreach (var r in resList.BaseLayerObjectResults) { var key = ""; if (model.IsDevice == 0) { key = r.Value.baseLayerObject.LayerObjectName; } else { key = r.Value.device.DeviceName; } if (!tempLayerConvert.ContainsKey(key)) { tempLayerConvert.Add(key, 0); } if (query.ItemCode == "00000") {//选择总能耗后把其他分类分项的能耗转化成标准煤 switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认总能耗 tempLayerConvert[key] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());// break; default: tempLayerConvert[key] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); break; } } else { switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认总能耗 tempLayerConvert[key] += r.Value.Total; break; default: tempLayerConvert[key] += r.Value.Total; break; } } } } model.ObjectList = new List<int>() { query.ObjectId };//获取分类分项能耗值 foreach (var item in itemCodeList) { tempItemcodeConvert.Add(item.ItemCodeName, 0); model.ItemCode = item.ItemCodeNumber; BaseResult resList = _reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false); foreach (var r in resList.BaseLayerObjectResults) { if (query.ItemCode == "00000") {//选择总能耗后把其他分类分项的能耗转化成标准煤 tempItemcodeConvert[item.ItemCodeName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); } else { tempItemcodeConvert[item.ItemCodeName] += r.Value.Total; } } } } var tempDesc = from tt in tempLayerConvert orderby tt.Value descending select tt;//PieChart按照能耗值从高到低排序 int tempindex = 1; decimal tempcount = 0; foreach (var item in tempDesc) { decimal value = decimal.Round(item.Value, 2); if (tempindex < 11) { result.LayerPie.series[0].data.Add(new EneryHighChart() { name = item.Key, y = value }); } else { tempcount += value; } tempindex++; } if (tempindex > 11) { result.LayerPie.series[0].data.Add(new EneryHighChart() { name = "其他", y = tempcount }); } tempDesc = from tt in tempItemcodeConvert orderby tt.Value descending select tt;//PieChart按照能耗值从高到低排序 tempindex = 1; tempcount = 0; foreach (var item in tempDesc) { decimal value = decimal.Round(item.Value, 2); if (tempindex < 11) { result.ItemCodePie.series[0].data.Add(new EneryHighChart() { name = item.Key, y = value }); } else { tempcount += value; } tempindex++; } if (tempindex > 10) { result.ItemCodePie.series[0].data.Add(new EneryHighChart() { name = "其他", y = tempcount }); } return result; } catch (Exception ee) { throw ee; } }
public static ResultContrast ShowEnergyAnalyseLineChart(QueryAnalyse queryAnalyse, string[] chartObject, string[] chartDept, Dictionary<string, List<decimal>> dir) { //表格数据定义 List<EnergyContrst> enerList = new List<EnergyContrst>(); ResultContrast contrast = new ResultContrast(); ExecuteProcess execu = new ExecuteProcess(); if (chartObject.Length == 0) { execu.Success = false; execu.ExceptionMsg = "暂无数据信息"; execu.ActionName = ""; execu.ActionUser = ""; execu.ActionTime = System.DateTime.Now; } else { execu.Success = true; execu.ExceptionMsg = ""; } string sql = " and ItemCodeNumber = '" + queryAnalyse.ItemCode + "'"; List<NTS.WEB.Model.Itemcode> itemList = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IEnergyContrastService>("EnergyContrastService") .GetItemCodeList(sql, ""); contrast.ActionInfo = execu; #region 数据series LineJson lineJson = new LineJson(); List<EneryCompare> compareList = new List<EneryCompare>(); #endregion int Index = 0; StringBuilder chartNew = new StringBuilder(); { foreach (var d in dir) { EnergyContrst ener = new EnergyContrst(); EneryCompare compareItem = new EneryCompare(); if (itemList.Count == 0) { ener.EneType = "总能耗"; } else { ener.EneType = itemList[0].ItemCodeName; } ener.Obj = d.Key; ener.Tm = queryAnalyse.StartTime.ToString(); ener.Val = Math.Round(d.Value.Sum(), 2); compareItem.name = d.Key; compareItem.data = d.Value; compareList.Add(compareItem); enerList.Add(ener); Index++; } if (chartDept.Length > 0) { lineJson.Unit = chartDept[0]; contrast.Unit = chartDept[0]; } lineJson.CompareType = "object"; contrast.ContrastLst = enerList; // 表格数据。 lineJson.series = compareList; contrast.lineJson = lineJson; //lineJson.series = return contrast; } }