/// <summary> /// 根据查询条件获取数据。 /// </summary> /// <param name="basicQuery"></param> /// <returns></returns> public ResultCompare GetDateTongJiData(BasicQuery basicQuery) { var resultList = new ResultView.ResultCompare { ObjectName = new List<string>(), Enery = new Dictionary<string, List<decimal>>(), Dept = new List<string>() }; List<Model.BaseLayerObject> objectList; if (basicQuery.AreaType == AreaType.Area) { objectList = new BLL.BaseLayerObject().GetBaseLayerObjectList( string.Format(" and layerobjectid = {0}", basicQuery.ObjectNum), ""); } else { objectList = new BLL.BaseLayerObject().GetBaseFuncLayerObjectList( string.Format(" and layerobjectid = {0}", basicQuery.ObjectNum), ""); } EnergyContrast contst = new EnergyContrast(); var result = contst.GetQueryLineChart(basicQuery); resultList.ObjectName = result.ObjectName; if (basicQuery.ItemCode != "00000") { var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + basicQuery.ItemCode + "'", " order by ItemcodeID")[0]; resultList.Enery.Add(objectList[0].LayerObjectName, result.Enery[itemList.ItemCodeName]); for (int i = 0; i < result.Dept.Count; i++) { resultList.Dept.Add(itemList.Unit); } } else { var tempValue = new decimal[result.Enery[result.Enery.Keys.First<string>()].Count]; foreach (var re in result.Enery) { for (var i = 0; i < re.Value.Count; i++) { tempValue[i] += re.Value[i]; } } for (int i = 0; i < result.Dept.Count; i++) { resultList.Dept.Add("T"); } resultList.Enery.Add(objectList[0].LayerObjectName, tempValue.ToList()); } return resultList; }
public BaseResult GetDeviceQuerySingleItemCodeEneryTotal(NTS.WEB.DataContact.BasicQuery query) { var ObjectList = new BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectNum), " order by deviceid"); var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID"); List <string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList <string>(); BaseQueryModel model = new BaseQueryModel(); model.IsDevice = 1; model.ObjectList = (from p in ObjectList select p.DeviceID).ToList <int>(); model.ItemCode = query.ItemCode; model.Unit = BaseTool.GetChartUnit(query.Unit); model.Starttime = query.StartTime; model.Endtime = query.EndTime; var ResList = reportBll.GetBaseEneryDataList(model); return(ResList); }
/// <summary> /// add by: jy /// add at: 2014-3-24 /// note : 人均能耗对比 /// </summary> /// <param name="query"></param> /// <returns></returns> public ResultCompare GetPersonNumCompareChart(QueryOrderObjects queryObject) { #region 定义区 var resultList = new ResultView.ResultCompare { ObjectName = new List<string>(), Enery = new Dictionary<string, List<decimal>>(), Dept = new List<string>() }; #endregion var olist = queryObject.AreaIdLst.Aggregate(string.Empty, (current, q) => current + ("," + q.ToString())); if (olist.Length > 0) { List<Model.BaseLayerObject> objectList; if (queryObject.ObjType == AreaType.Area) { objectList = new BLL.BaseLayerObject().GetBaseLayerObjectList( string.Format(" and layerobjectid in ({0})", olist.Substring(1)), " order by LayerObjectID"); } else { objectList = new BLL.BaseLayerObject().GetBaseFuncLayerObjectList( string.Format(" and layerobjectid in ({0})", olist.Substring(1)), " order by LayerObjectID"); } foreach (var o in objectList) { var basicQuery = new BasicQuery { EndTime = queryObject.EndTime, StartTime = queryObject.StartTime, ItemCode = queryObject.ItemCode, Unit = queryObject.Particle, AreaType = queryObject.ObjType, QueryType = queryObject.QueryType }; basicQuery.ObjectNum = o.LayerObjectID; var result = GetQueryLineChart(basicQuery); //resultList.Dept = result.Dept; resultList.ObjectName = result.ObjectName; if (queryObject.ItemCode != "00000") { var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + queryObject.ItemCode + "'", " order by ItemcodeID")[0]; //resultList.Enery.Add(o.LayerObjectName, result.Enery[itemList.ItemCodeName]); for (int i = 0; i < result.Dept.Count; i++) { resultList.Dept.Add(itemList.Unit); } resultList.Enery.Add(o.LayerObjectName, result.Enery[itemList.ItemCodeName].Select(p => p / decimal.Parse(o.PersonNum.ToString())).ToList()); } else { var tempValue = new decimal[result.Enery[result.Enery.Keys.First<string>()].Count]; foreach (var re in result.Enery) { for (var i = 0; i < re.Value.Count; i++) { tempValue[i] += re.Value[i]; } } for (int i = 0; i < result.Dept.Count; i++) { resultList.Dept.Add("T"); } resultList.Enery.Add(o.LayerObjectName, tempValue.ToList().Select(p => p / decimal.Parse(o.PersonNum.ToString())).ToList()); } } return resultList; } return null; }
public QueryEneryTotal GetDeviceQueryEneryTotal(NTS.WEB.DataContact.BasicQuery query) { BaseResult baseResult = new BaseResult(); baseResult.BaseLayerObjectResults = new Dictionary <string, BaseData>(); var Object = new BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectNum), " order by deviceid")[0]; baseResult.BaseLayerObjectResults = new Dictionary <string, BaseData>(); baseResult.BaseLayerObjectResults.Add(Object.DeviceID.ToString(), new BaseData()); baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList = new System.Collections.Hashtable(); baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].Datas = new List <DataItems>(); baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList.Add("ITEMCOAL", 0); baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList.Add("ITEMCO2", 0); if (query.ItemCode != "00000") { query.ItemCode = Object.ItemCodeID; var resList = GetQueryDeviceSingleItemCodeEneryTotal(query); return(resList != null ? new QueryEneryTotal { TotalEnergy = resList.BaseLayerObjectResults[Object.DeviceID.ToString()].Total } : null); } else { query.ItemCode = Object.ItemCodeID; query.ItemCode = Object.ItemCodeID; var resList = GetQueryDeviceSingleItemCodeEneryTotal(query); return(resList != null ? new QueryEneryTotal { TotalEnergy = decimal.Parse(resList.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) } : null); //var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID"); //List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>(); //Dictionary<string, decimal> DataValue = new Dictionary<string, decimal>(); //Dictionary<string, decimal> CoalDataValue = new Dictionary<string, decimal>(); //Dictionary<string, decimal> Co2DataValue = new Dictionary<string, decimal>(); //for (var item = 0; item < ItemCodeStr.Count; item++) //{ // query.ItemCode = ItemCodeStr[item]; // var ResList = GetQueryDeviceSingleItemCodeEneryTotal(query); // if (ResList != null) // { // baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].Total += ResList.BaseLayerObjectResults[Object.DeviceID.ToString()].Total; // baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList["ITEMCOAL"] = decimal.Parse(baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) + decimal.Parse(ResList.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()); // baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList["ITEMCO2"] = decimal.Parse(baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList["ITEMCO2"].ToString()) + decimal.Parse(ResList.BaseLayerObjectResults[Object.DeviceID.ToString()].ConvertDataValueList["ITEMCO2"].ToString()); // foreach (var li in ResList.BaseLayerObjectResults[Object.DeviceID.ToString()].Datas) // { // #region 累加赋值 // if (DataValue.ContainsKey(li.DatePick)) // { // DataValue[li.DatePick] += li.DataValue; // } // else // { // DataValue.Add(li.DatePick, li.DataValue); // } // if (CoalDataValue.ContainsKey(li.DatePick)) // { // CoalDataValue[li.DatePick] += li.CoalDataValue; // } // else // { // CoalDataValue.Add(li.DatePick, li.CoalDataValue); // } // if (Co2DataValue.ContainsKey(li.DatePick)) // { // Co2DataValue[li.DatePick] += li.Co2DataValue; // } // else // { // Co2DataValue.Add(li.DatePick, li.Co2DataValue); // } // #endregion // if (item == ItemCodeStr.Count - 1) // { // li.DataValue = DataValue[li.DatePick]; // li.CoalDataValue = CoalDataValue[li.DatePick]; // li.Co2DataValue = Co2DataValue[li.DatePick]; // baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].Datas.Add(li); // } // } // } //} // if (baseResult != null) { return new QueryEneryTotal { TotalEnergy = baseResult.BaseLayerObjectResults[Object.DeviceID.ToString()].Total }; } //return null; } }
public QueryEneryTotal GetQueryEneryTotal(NTS.WEB.DataContact.BasicQuery query) { BaseResult baseResult = new BaseResult(); baseResult.BaseLayerObjectResults = new Dictionary <string, BaseData>(); var Object = new BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and LayerObjectID={0}", query.ObjectNum), " order by LayerObjectID")[0]; baseResult.BaseLayerObjectResults = new Dictionary <string, BaseData>(); baseResult.BaseLayerObjectResults.Add(Object.LayerObjectID.ToString(), new BaseData()); baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList = new System.Collections.Hashtable(); baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Datas = new List <DataItems>(); baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList.Add("ITEMCOAL", 0); baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList.Add("ITEMCO2", 0); if (query.ItemCode != "00000") { var ResList = GetQuerySingleItemCodeEneryTotal(query); if (ResList != null) { return(new QueryEneryTotal { TotalEnergy = decimal.Parse(ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) }); } //TotalEnergy = ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Total return(null); } else { var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID"); List <string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList <string>(); Dictionary <string, decimal> DataValue = new Dictionary <string, decimal>(); Dictionary <string, decimal> CoalDataValue = new Dictionary <string, decimal>(); Dictionary <string, decimal> Co2DataValue = new Dictionary <string, decimal>(); for (var item = 0; item < ItemCodeStr.Count; item++) { query.ItemCode = ItemCodeStr[item]; var ResList = GetQuerySingleItemCodeEneryTotal(query); if (ResList != null) { baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Total += ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Total; baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"] = decimal.Parse(baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) + decimal.Parse(ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()); baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCO2"] = decimal.Parse(baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCO2"].ToString()) + decimal.Parse(ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCO2"].ToString()); foreach (var li in ResList.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Datas) { #region 累加赋值 if (DataValue.ContainsKey(li.DatePick)) { DataValue[li.DatePick] += li.DataValue; } else { DataValue.Add(li.DatePick, li.DataValue); } if (CoalDataValue.ContainsKey(li.DatePick)) { CoalDataValue[li.DatePick] += li.CoalDataValue; } else { CoalDataValue.Add(li.DatePick, li.CoalDataValue); } if (Co2DataValue.ContainsKey(li.DatePick)) { Co2DataValue[li.DatePick] += li.Co2DataValue; } else { Co2DataValue.Add(li.DatePick, li.Co2DataValue); } #endregion if (item == ItemCodeStr.Count - 1) { li.DataValue = DataValue[li.DatePick]; li.CoalDataValue = CoalDataValue[li.DatePick]; li.Co2DataValue = Co2DataValue[li.DatePick]; baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].Datas.Add(li); } } } } if (baseResult != null) { return(new QueryEneryTotal { TotalEnergy = decimal.Parse(baseResult.BaseLayerObjectResults[Object.LayerObjectID.ToString()].ConvertDataValueList["ITEMCOAL"].ToString()) }); } return(null); } }
public ResultLoadForecastMap GetLoadForecastChart(QueryLoadForecast loadCast) { try { ResultLoadForecastMap mapNew = new ResultLoadForecastMap(); ExecuteProcess proc = new ExecuteProcess(); proc.ActionName = ""; proc.ActionTime = DateTime.Now; proc.ActionUser = ""; proc.ExceptionMsg = ""; proc.Success = true; var basicQuery = new BasicQuery { EndTime = loadCast.EndTime, StartTime = loadCast.StartTime, ItemCode = loadCast.ItemCode, Unit = loadCast.Particle, AreaType = loadCast.ObjType, ObjectNum = loadCast.ObjectId }; // 获取数据 var resultList = GetDateTongJiData(basicQuery); List<decimal> lstDecAvg = GetYuceData(basicQuery, loadCast); List<SerialData> serData = new List<SerialData>(); foreach (var d in resultList.Enery) { SerialData ser1 = new SerialData(); ser1.name = "负荷预测值"; ser1.data = lstDecAvg; serData.Add(ser1); ser1 = new SerialData(); ser1.name = "能耗实际值"; TimeSpan ts = DateTime.Parse(System.DateTime.Now.ToString("yyyy-MM-dd")) - loadCast.StartTime; int DayChas = ts.Days; List<decimal> lstNew = d.Value; if (DayChas == 0) { for (int iCount = 0; iCount < lstNew.Count; iCount++) { lstNew[iCount] = Math.Round(lstNew[iCount], 2); } } else if (DayChas > 0) { for (int iCount = 0; iCount < lstNew.Count; iCount++) { if (iCount > DayChas) { lstNew[iCount] = 0; } else { lstNew[iCount] = Math.Round(lstNew[iCount], 2); } } } else { for (int i = 0; i < lstNew.Count; i++) { lstNew[i] = -9999; } } ser1.data = lstNew; serData.Add(ser1); } mapNew.ActionInfo = proc; // 判断是否是将来当天数据。 if (loadCast.StartTime.CompareTo(DateTime.Now) > 0) { List<SerialData> serDataNew = new List<SerialData>(); serDataNew.Add(serData[0]); mapNew.series = serDataNew; } else { mapNew.series = serData; } if (resultList.Dept.Count > 0) { mapNew.Unit = resultList.Dept[0].ToString(); } List<ResultLoadForecastList> listFore = new List<ResultLoadForecastList>(); for (int i = 0; i < serData[0].data.Count; i++) { ResultLoadForecastList list = new ResultLoadForecastList(); list.Id = i + 1; if (loadCast.StartTime.Date == loadCast.EndTime.Date) { string hour = ""; if (i < 10) { hour = "0" + i.ToString(); } else { hour = i.ToString(); } list.TimeArea = loadCast.StartTime.ToString("yyyy-MM-dd" + " " + hour + ":00:00"); } else { list.TimeArea = loadCast.StartTime.AddDays(i).ToString("yyyy-MM-dd"); } if (i < serData[1].data.Count) { list.History = Math.Round(serData[1].data[i], 2); } else { list.History = -9999; } list.ForeCast = Math.Round(serData[0].data[i], 2); if (list.History == -9999) { list.Deviation = -9999; } else { list.Deviation = Math.Round((serData[0].data[i] - serData[1].data[i]), 2); } if (list.History == -9999) { list.Pecent = "--"; listFore.Add(list); } else { decimal dec1 = (serData[0].data[i] - serData[1].data[i]) * 100; decimal dec2 = serData[1].data[i]; if (dec1 != 0 && dec2 != 0) { decimal pec = (serData[0].data[i] - serData[1].data[i]) * 100 / serData[1].data[i]; list.Pecent = Math.Round(pec, 2).ToString() + "%"; listFore.Add(list); } else { list.Pecent = "--"; listFore.Add(list); } } } mapNew.LoadForecast = listFore; mapNew.HistoryTotal = 0; Math.Round(serData[1].data.Sum(), 2); for (int rCount = 0; rCount < serData[1].data.Count; rCount++) { if (serData[1].data[rCount] != -9999) { mapNew.HistoryTotal = mapNew.HistoryTotal + serData[1].data[rCount]; } } mapNew.ForeCastTotal = Math.Round(lstDecAvg.Sum(), 2); return mapNew; } catch (Exception ex) { ResultLoadForecastMap map2 = new ResultLoadForecastMap(); ExecuteProcess proc = new ExecuteProcess(); proc.ActionName = ""; proc.ActionTime = DateTime.Now; proc.ActionUser = ""; proc.ExceptionMsg = ex.Message; proc.Success = false; map2.ActionInfo = proc; return map2; } }
private List<decimal> GetYuceData(BasicQuery basicQuery, QueryLoadForecast queryLoad) { List<ResultCompare> compReult = new List<ResultCompare>(); DateTime deBegin = new DateTime(); DateTime deEnd = new DateTime(); TimeSpan ts = queryLoad.EndTime - queryLoad.StartTime; int Days = ts.Days; #region 获取35%数据 if (Days == 0) { deBegin = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")).AddDays(-10); deEnd = queryLoad.StartTime; // 循环前10天 for (DateTime begTime = deBegin; begTime < DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 00:00:00")); begTime = begTime.AddDays(1)) { BasicQuery baseQueryItem = basicQuery; baseQueryItem.StartTime = begTime; baseQueryItem.EndTime = begTime; ResultCompare reultCom = GetDateTongJiData(baseQueryItem); compReult.Add(reultCom); } } else { if (queryLoad.StartTime.CompareTo(DateTime.Now) > 0) { BasicQuery baseQueryItem = basicQuery; baseQueryItem.StartTime = DateTime.Now.AddDays(-(Days + 1)); ; baseQueryItem.EndTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")).AddDays(-1); ResultCompare reultCom = GetDateTongJiData(baseQueryItem); compReult.Add(reultCom); } else { BasicQuery baseQueryItem = basicQuery; baseQueryItem.StartTime = queryLoad.StartTime.AddDays(-(Days + 1)); ; baseQueryItem.EndTime = queryLoad.StartTime.AddDays(-1); ResultCompare reultCom = GetDateTongJiData(baseQueryItem); compReult.Add(reultCom); } } #endregion #region 获取65%数据。 //获取去年当天的预测值 BasicQuery baseQuery2 = basicQuery; baseQuery2.StartTime = queryLoad.StartTime.AddYears(-1); baseQuery2.EndTime = queryLoad.EndTime.AddYears(-1); var resultList2 = GetDateTongJiData(baseQuery2); List<decimal> lstAvg2 = new List<decimal>(); List<decimal> lstAvgMonth = GetAvgYuce(compReult, queryLoad); if (Days == 0) { foreach (var d in resultList2.Enery) { List<decimal> lstDec = d.Value; for (int i = 0; i < d.Value.Count; i++) { if (d.Value[i] > 0) { lstAvg2.Add(Math.Round((d.Value[i]), 2)); } } } // 最终值。 List<decimal> lstAvgEnd = new List<decimal>(); for (int i = 0; i < lstAvgMonth.Count; i++) { if (lstAvg2.Count == 0) { lstAvgEnd.Add(lstAvgMonth[i]); } else { lstAvgEnd.Add(lstAvgMonth[i] * 35 / 100 + lstAvg2[i] * 65 / 100); } } return lstAvgEnd; } else { foreach (var d in resultList2.Enery) { List<decimal> lstDec = d.Value; for (int i = 0; i < d.Value.Count; i++) { lstAvg2.Add(Math.Round((d.Value[i]), 2)); } } // 最终值。 List<decimal> lstAvgEnd = new List<decimal>(); for (int i = 0; i < lstAvgMonth.Count; i++) { if (lstAvgMonth.Count == Days + 1) { if (lstAvg2.Count == 0) { decimal avgDec = lstAvgMonth[i]; lstAvgEnd.Add(Math.Round(avgDec, 2)); } else { decimal avgDec = lstAvgMonth[i] * 35 / 100 + lstAvg2[i] * 65 / 100; lstAvgEnd.Add(Math.Round(avgDec, 2)); } } else { throw new Exception("没有历史数据,无法进行预测"); } } return lstAvgEnd; } #endregion }
public ResultQueryPie GetQueryPieChart(BasicQuery query) { return new NTS.WEB.BLL.Charts().GetQueryPieChart(query); }
public ResultItemCode GetTwoQueryLineChart(BasicQuery query, BasicQuery query2, int tabId) { #region 定义区 var queryCode = query.ItemCode; var resultList = new ResultView.ResultItemCode { ObjectName = new List<string>(), Enery = new Dictionary<string, List<decimal>>(), Dept = new List<string>() }; #endregion ResultItemCode result = GetQueryLineChart(query); ResultItemCode result2 = GetQueryLineChart(query2); resultList.Dept = result.Dept; foreach (var oname in result.ObjectName) { resultList.ObjectName.Add(""); } // resultList.ObjectName = result.ObjectName; decimal[] Arr = new decimal[result.Enery[result.Enery.Keys.First<string>()].Count]; decimal[] ArrNew = new decimal[result2.Enery[result2.Enery.Keys.First<string>()].Count]; if (queryCode == "00000") { foreach (var re in result.Enery) { for (int i = 0; i < re.Value.Count; i++) { Arr[i] += re.Value[i]; } } foreach (var re2 in result2.Enery) { for (int i = 0; i < re2.Value.Count; i++) { ArrNew[i] += re2.Value[i]; } } if (tabId == 1) { resultList.Enery.Add(query.StartTime.ToString("yyyy") + "总能耗", Arr.ToList()); resultList.Enery.Add(query2.StartTime.ToString("yyyy") + "总能耗", ArrNew.ToList()); } else { resultList.Enery.Add(query.StartTime.ToString("yyyy-MM") + "总能耗", Arr.ToList()); resultList.Enery.Add(query2.StartTime.ToString("yyyy-MM") + "总能耗", ArrNew.ToList()); } } else { var itemcodeList = new NTS.WEB.BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + queryCode + "'", " order by itemcodeid")[0]; foreach (var r1 in result.Enery) { if (tabId == 1) { resultList.Enery.Add(query.StartTime.ToString("yyyy") + r1.Key, r1.Value); } else { resultList.Enery.Add(query.StartTime.ToString("yyyy-MM") + r1.Key, r1.Value); } } foreach (var r2 in result2.Enery) { if (tabId == 1) { resultList.Enery.Add(query2.StartTime.ToString("yyyy") + r2.Key, r2.Value); } else { resultList.Enery.Add(query2.StartTime.ToString("yyyy-MM") + r2.Key, r2.Value); } } } return resultList; }
public Dictionary<string, decimal> GetSingleItemCodeByObject(BasicQuery query, int isCoal) { // var result = new ResultIndexLineChart { DatePick = new List<string>(), DatePickEnery = new List<decimal>() }; var eneryDataList = new Dictionary<string, decimal>(); var model = new BaseQueryModel(); var objectList = new NTS.WEB.BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and layerobjectid={0}", query.ObjectNum), " order by LayerObjectID"); model.IsDevice = 0; model.ObjectList = (from p in objectList select p.LayerObjectID).ToList<int>(); model.ItemCode = query.ItemCode; model.Unit = BaseTool.GetChartUnit(query.Unit); model.Starttime = query.StartTime; model.Endtime = query.EndTime; var resList = _reportBll.GetBaseEneryDataList(model); foreach (var d in objectList.SelectMany(o => resList.BaseLayerObjectResults[o.LayerObjectID.ToString(CultureInfo.InvariantCulture)].Datas)) { if (!eneryDataList.ContainsKey(d.DatePick)) { eneryDataList.Add(d.DatePick, isCoal == 0 ? d.DataValue : d.CoalDataValue); } else { eneryDataList[d.DatePick] += isCoal == 0 ? d.DataValue : d.CoalDataValue; } } //foreach (var e in eneryDataList) //{ // result.DatePick.Add(e.Key); // result.DatePickEnery.Add(e.Value); //} return eneryDataList; }
public ResultQueryPie GetQueryPieChart(DataContact.BasicQuery query) { #region 定义区 var resultList = new ResultView.ResultQueryPie { ObjectName = new List<string>(), Enery = new List<decimal>(), Dept = new List<string>() }; #endregion var objectList = new BLL.BaseLayerObject().GetBaseLayerObjectList( string.Format(" and layerobjectparentid={0}", query.ObjectNum), " order by LayerObjectID"); if (objectList.Count > 0) { decimal eTotal = 0; for (var i = 0; i < objectList.Count; i++) { var querynew = new BasicQuery { StartTime = query.StartTime, EndTime = query.EndTime, ItemCode = query.ItemCode, ObjectNum = objectList[i].LayerObjectID, ObjectType = query.ObjectType, Unit = query.Unit }; //if (i < 5) //{ if (query.ItemCode != "00000") { var item = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0]; resultList.Dept.Add(item.Unit); } else { resultList.Dept.Add("T"); } resultList.ObjectName.Add(objectList[i].LayerObjectName); resultList.Enery.Add(new QueryEnery().GetQueryEneryTotal(querynew).TotalEnergy); //} //else //{ // eTotal += new QueryEnery().GetQueryEneryTotal(querynew).TotalEnergy; // if (i == objectList.Count - 1) // { // if (query.ItemCode != "00000") // { // var item = // new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", // " order by ItemcodeID")[0]; // resultList.Dept.Add(item.Unit); // } // else // { // resultList.Dept.Add("T"); // } // resultList.ObjectName.Add("其他"); // resultList.Enery.Add(eTotal); // } //} } if (resultList.Enery.Count > 5) { //resultList.ObjectName[5] = "其他"; List<EnergyRank> lstEnergy = new List<EnergyRank>(); for (var i = 0; i < resultList.Enery.Count; i++) { EnergyRank er = new EnergyRank(); er.ObjName = resultList.ObjectName[i]; er.Energy = resultList.Enery[i]; lstEnergy.Add(er); } lstEnergy = lstEnergy.OrderByDescending(p => p.Energy).ToList(); resultList.Dept.Clear(); resultList.ObjectName.Clear(); resultList.Enery.Clear(); if (lstEnergy.Count < 6) { foreach (EnergyRank er in lstEnergy) { resultList.Dept.Add("T"); resultList.ObjectName.Add(er.ObjName); resultList.Enery.Add(er.Energy); } } else { for (int i = 0; i < 5; i++) { resultList.Dept.Add("T"); resultList.ObjectName.Add(lstEnergy[i].ObjName); resultList.Enery.Add(lstEnergy[i].Energy); } resultList.Dept.Add("T"); resultList.ObjectName.Add("其他"); //统计排名第五以后的能耗总和。 resultList.Enery.Add(lstEnergy.GetRange(5, lstEnergy.Count - 5).Sum(p => p.Energy)); } } return resultList; } else { var deviceList = new List<Device>(); if (query.ItemCode == "00000") { deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(" and areaid=" + query.ObjectNum, " order by deviceid"); } else { string itemCodeAll = query.ItemCode; string tempCode = string.Empty; var itemcodeList = new NTS.WEB.BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by itemcodeid")[0]; var itemcodeListChild = new NTS.WEB.BLL.Itemcode().GetItemcodeList(" and ParentID=" + itemcodeList.ParentID, " order by itemcodeid"); foreach (Model.Itemcode itemcode in itemcodeListChild) tempCode += ",'" + itemcode.ItemCodeNumber + "'"; itemCodeAll = itemCodeAll.Length > 0 ? "'" + itemCodeAll + "'" : itemCodeAll.Substring(1); deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(" and ItemCodeID in (" + itemCodeAll + ") and areaid=" + query.ObjectNum, " order by deviceid"); } if (deviceList.Count > 0) { decimal eTotal = 0; for (var i = 0; i < deviceList.Count; i++) { var querynew = new BasicQuery { StartTime = query.StartTime, EndTime = query.EndTime, ItemCode = query.ItemCode, ObjectNum = deviceList[i].DeviceID, ObjectType = query.ObjectType, Unit = query.Unit }; if (i < 5) { if (query.ItemCode != "00000") { var item = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0]; resultList.Dept.Add(item.Unit); } else { resultList.Dept.Add("T"); } resultList.ObjectName.Add(deviceList[i].DeviceName); resultList.Enery.Add(new QueryEnery().GetDeviceQueryEneryTotal(querynew).TotalEnergy); } else { eTotal += new QueryEnery().GetDeviceQueryEneryTotal(querynew).TotalEnergy; if (i == deviceList.Count - 1) { if (query.ItemCode != "00000") { var item = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0]; resultList.Dept.Add(item.Unit); } else { resultList.Dept.Add("T"); } resultList.ObjectName.Add("其他"); resultList.Enery.Add(eTotal); } } } return resultList; } } return null; }
/// <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; }
/// <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; } }
public ResultItemCode GetTwoQueryLineChart(BasicQuery query, BasicQuery query2, int tabId) { return new NTS.WEB.BLL.Charts().GetTwoQueryLineChart(query, query2, tabId); }
public ResultItemCode GetQueryLineChart(BasicQuery query) { #region 定义区 var resultList = new ResultView.ResultItemCode { ObjectName = new List<string>(), Enery = new Dictionary<string, List<decimal>>(), Dept = new List<string>() }; #endregion var dept = string.Empty; var itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); if (itList.Count > 0) { dept = itList[0].Unit; } dept = query.ItemCode == "00000" ? "T" : dept; if (query.ItemCode == "00000") { // resultList.Dept = new List<string>() { "T" }; var itemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID"); var eneryDataListTotal = new Dictionary<string, Dictionary<string, decimal>>(); var maxcode = "01000"; var count = 0; foreach (var itemcode in itemList) { var lineChart = GetSingleItemCodeByObject(query, itemcode.ItemCodeNumber); if (count < lineChart.Count) { count = lineChart.Count; maxcode = itemcode.ItemCodeNumber; } eneryDataListTotal.Add(itemcode.ItemCodeNumber, lineChart); // resultList.Enery.Add(itemcode.ItemCodeName, lineChart.DatePickEnery); } // 重新赋值 foreach (var itemcode in itemList) { var itemcode1 = itemcode; foreach (var max in eneryDataListTotal[maxcode].Where(max => !eneryDataListTotal[itemcode1.ItemCodeNumber].ContainsKey(max.Key))) { eneryDataListTotal[itemcode.ItemCodeNumber].Add(max.Key, 0); } var temp = eneryDataListTotal[itemcode.ItemCodeNumber].OrderBy(p => Convert.ToDateTime(p.Key)); var tempOrder = temp.ToDictionary(keyValuePair => keyValuePair.Key, keyValuePair => keyValuePair.Value); eneryDataListTotal[itemcode.ItemCodeNumber] = tempOrder; resultList.Enery.Add(itemcode.ItemCodeName, eneryDataListTotal[itemcode.ItemCodeNumber].Values.ToList()); } resultList.ObjectName = eneryDataListTotal[maxcode].Select(p => p.Key.ToString(CultureInfo.InvariantCulture)).ToList(); } else { var item = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0]; var lineChart = GetSingleItemCodeByObject(query, query.ItemCode); // resultList.Dept = new List<string>() {item.Unit}; if (lineChart != null) { resultList.ObjectName = lineChart.Select(p => p.Key.ToString()).ToList(); resultList.Enery.Add(item.ItemCodeName, lineChart.Select(p => decimal.Parse(p.Value.ToString())).ToList()); } } foreach (var baseLayerObject in resultList.ObjectName) { resultList.Dept.Add(dept); } return resultList; }
public Dictionary<string, decimal> GetSingleItemCodeByObject(BasicQuery query, string itemcode) { // var result = new ResultIndexLineChart { DatePick = new List<string>(), DatePickEnery = new List<decimal>() }; var eneryDataList = new Dictionary<string, decimal>(); var model = new BaseQueryModel(); List<Model.BaseLayerObject> objectList = new List<Model.BaseLayerObject>(); if (query.AreaType == AreaType.Area) { objectList = new NTS.WEB.BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and layerobjectid={0}", query.ObjectNum), " order by LayerObjectID"); } else { objectList = new NTS.WEB.BLL.BaseLayerObject().GetBaseFuncLayerObjectList(string.Format(" and layerobjectid={0}", query.ObjectNum), " order by LayerObjectID"); } model.IsDevice = 0; model.ObjectList = (from p in objectList select p.LayerObjectID).ToList<int>(); model.ItemCode = itemcode; model.Unit = BaseTool.GetChartUnit(query.Unit); model.Starttime = query.StartTime; model.Endtime = query.EndTime; model.areaType = query.AreaType; var resList = _energCon.GetBaseEneryDataListNew(model); foreach (var d in objectList.SelectMany(o => resList.BaseLayerObjectResults[o.LayerObjectID.ToString(CultureInfo.InvariantCulture)].Datas)) { if (!eneryDataList.ContainsKey(d.DatePick)) { switch (query.QueryType) { case EnergyAnalyseQueryType.Convert2Co2: eneryDataList.Add(d.DatePick, d.Co2DataValue); break; case EnergyAnalyseQueryType.Convert2Coal: eneryDataList.Add(d.DatePick, d.CoalDataValue); break; case EnergyAnalyseQueryType.Convert2Money: eneryDataList.Add(d.DatePick, d.MoneyDataValue); break; default: eneryDataList.Add(d.DatePick, d.DataValue); break; } } else { switch (query.QueryType) { case EnergyAnalyseQueryType.Convert2Co2: eneryDataList[d.DatePick] += d.Co2DataValue; break; case EnergyAnalyseQueryType.Convert2Coal: eneryDataList[d.DatePick] += d.CoalDataValue; break; case EnergyAnalyseQueryType.Convert2Money: eneryDataList[d.DatePick] += d.MoneyDataValue; break; default: eneryDataList[d.DatePick] += d.DataValue; break; } } } //foreach (var e in eneryDataList) //{ // result.DatePick.Add(e.Key); // result.DatePickEnery.Add(e.Value); //} return eneryDataList; }
public ResultItemCode GetQueryLineChart(BasicQuery query) { return new NTS.WEB.BLL.Charts().GetQueryLineChart(query); }