public decimal[] GetIndexCompareEnery(DateTime startTime, DateTime endTime) { decimal[] MonthResult = new decimal[2]; // string userid = ""; // try // { // userid = Utils.GetCookie("userid"); // } // catch // { // userid = ""; // } // var ObjectList = new List<Model.BaseLayerObject>(); // string where = ""; // if (string.IsNullOrEmpty(userid)) // { // where = string.Format(@"and LayerObjectParentID={0} ", 0); // } // else // { // where = string.Format(@"and LayerObjectParentID={0} AND layerobjectid in( SELECT AREAID from TB_USERGROUPAREARIGHT //WHERE USERGROUPID =(SELECT GROUPS FROM TB_USER WHERE ID={1} ))", 0, userid); // } // ObjectList = new DAL.BaseLayerObject().GetBaseLayerObjectList(where, string.Format(" order by LayerObjectID")); var ObjectList = new BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and LayerObjectParentID={0}", 0), " order by LayerObjectID"); 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 = 0; model.ObjectList = (from p in ObjectList select p.LayerObjectID).ToList<int>(); decimal tempConvert = 0; foreach (var item in ItemCodeStr) { decimal tempCount = 0; decimal tempCountConvert = 0; model.ItemCode = item; model.Unit = ChartUnit.unit_month; model.Starttime = startTime; model.Endtime = endTime; var ResList = reportBll.GetBaseEneryDataList(model); foreach (var r in ResList.BaseLayerObjectResults) { tempCount += r.Value.Total; tempCountConvert += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); } if (item == "01000") { MonthResult[0] = tempCount; } tempConvert += tempCountConvert; } MonthResult[1] = tempConvert; return MonthResult; }
/// <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 IndexShopOrder GetIndexShopOrder(DateTime startTime, DateTime endTime) { var shopOrder = new IndexShopOrder { TotalEneryOrderList = new List<EneryOrder>(), AreaEneryOrderList = new List<EneryOrder>() }; var shopOrderLast = new IndexShopOrder { TotalEneryOrderList = new List<EneryOrder>(), AreaEneryOrderList = new List<EneryOrder>() }; Dictionary<int, string> cacheLayer = NTS.WEB.Common.CacheHelper.GetCache("object-Layer") as Dictionary<int, string>; if (cacheLayer == null) { var res = new LayerObjects().GetObjectLayers(); NTS.WEB.Common.CacheHelper.SetCache("object-Layer", res); cacheLayer = res; } var deepth = cacheLayer.ContainsKey(int.Parse(ConfigurationManager.AppSettings["ShopLevel"])) ? int.Parse(ConfigurationManager.AppSettings["ShopLevel"]) : cacheLayer.Count; shopOrderLast.ShopLevel = GetShopLevel(deepth); //层级对象数据 var listObject = new NTS.WEB.BLL.BaseLayerObject().GetBaseLayerObjectList (string.Format(" and layerobjectid in ({0})", cacheLayer[deepth]), " order by LayerObjectID"); //拼接表名 string tbName = "TS_COUNT_AREA_MONTH_" + startTime.Year.ToString(); var monthDataList = new NTS.WEB.BLL.MonthDataObject().GetMonthDataObjectList(tbName, startTime.ToShortDateString()); //分类分项 var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID"); //总能耗 //List<EneryOrder> lstTotal = (from o in listObject // join b in monthDataList // on o.LayerObjectID equals int.Parse(b.CNAME) // select new EneryOrder // { // BuildingName = o.LayerObjectName, // EneryValue = b.COUNTVALUE * ItemList.Find(p => p.ItemCodeNumber == b.ITEMCODE).ItemCoal // }).ToList(); List<EneryOrder> lstTotal = (from o in listObject join b in monthDataList on o.LayerObjectID equals int.Parse(b.CNAME) select new EneryOrder { BuildingName = o.LayerObjectName, // EneryValue=0 EneryValue = b.COUNTVALUE * Convert.ToDouble(ItemList.Find(p => p.ItemCodeNumber.Substring(0, 2) == b.ITEMCODE.Substring(0, 2)).ItemCoal.ToString()) }).ToList(); ////单位面积能耗 List<EneryOrder> lstArea = (from o in listObject join b in monthDataList on o.LayerObjectID equals int.Parse(b.CNAME) select new EneryOrder { BuildingName = o.LayerObjectName, //EneryValue=0 EneryValue = (b.COUNTVALUE * Convert.ToDouble(ItemList.Find(p => p.ItemCodeNumber.Substring(0, 2) == b.ITEMCODE.Substring(0, 2)).ItemCoal.ToString())) / o.AreaNum }).ToList(); List<EneryOrder> lstTtl = new List<EneryOrder>(); List<EneryOrder> lstAr = new List<EneryOrder>(); //按对象名称分组 var lstGpTtl = from item in lstTotal group item by item.BuildingName; string nm = string.Empty; double sum = 0; foreach (var group in lstGpTtl) { nm = string.Empty; sum = 0; foreach (var v in group) { nm = v.BuildingName; sum += v.EneryValue; } lstTtl.Add(new EneryOrder { BuildingName = nm, EneryValue = sum }); } var lstGpAr = from item in lstArea group item by item.BuildingName; foreach (var group in lstGpAr) { nm = string.Empty; sum = 0; foreach (var v in group) { nm = v.BuildingName; sum += v.EneryValue; } lstAr.Add(new EneryOrder { BuildingName = nm, EneryValue = sum }); } // var objectList = new NTS.WEB.BLL.BaseLayerObject().GetBaseLayerObjectList(string.Format(" and LayerObjectDeepth={0}", deepth), " order by LayerObjectID"); //List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>(); //var model = new BaseQueryModel(); //model.IsDevice = 0; //model.ObjectList = (from p in objectList select p.LayerObjectID).ToList<int>(); //Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>(); //Dictionary<string, decimal> tempAreaConvert = new Dictionary<string, decimal>(); //decimal[] tempConvert = new decimal[objectList.Count]; //decimal[] tempAreaConvert = new decimal[objectList.Count]; //foreach (var item in ItemCodeStr) //{ // model.ItemCode = item; // model.Unit = ChartUnit.unit_month; // model.Starttime = startTime; // model.Endtime = endTime; // var resList = reportBll.GetBaseEneryDataList(model); // const int order = 1; // foreach ( var r in resList.BaseLayerObjectResults) // { // if(tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName)) // { // tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); // tempAreaConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) / // decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); // } // else // { // tempConvert.Add(r.Value.baseLayerObject.LayerObjectName, decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString())); // tempAreaConvert.Add(r.Value.baseLayerObject.LayerObjectName, decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) / // decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString())); // } // shopOrder.TotalEneryOrderList.Add(new EneryOrder() // { // BuildingName = r.Value.baseLayerObject.LayerObjectName, //EneryValue = double.Parse(tempConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")), // OrderNum = order // }); // shopOrder.AreaEneryOrderList.Add(new EneryOrder() // { // BuildingName = r.Value.baseLayerObject.LayerObjectName, // EneryValue = double.Parse(tempAreaConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")), // OrderNum = order // }); // } //} //var res1 = from p in shopOrder.TotalEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) }; //var res2 = from p in shopOrder.AreaEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) }; foreach (var c in lstTtl) { shopOrderLast.TotalEneryOrderList.Add(new EneryOrder { BuildingName = c.BuildingName, EneryValue = double.Parse(c.EneryValue.ToString("f2")), OrderNum = c.OrderNum }); } foreach (var c in lstAr) { shopOrderLast.AreaEneryOrderList.Add(new EneryOrder { BuildingName = c.BuildingName, EneryValue = double.Parse(c.EneryValue.ToString("f2")), OrderNum = c.OrderNum }); } return shopOrderLast; }
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; }
public ResultCostQuery GetCostQuery4Demo(QueryCost query) { ResultCostQuery result = new ResultCostQuery() { FeePie = new PieHighChart() { series = new List<Series>() }, FeeQueryCharts = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() }, FeeAnalyses = new FeeAnalyses(), FeeTbl = new FeeTbl() { FeeList = new List<List<string>>() } }; result.FeePie.series.Add(new Series() { data = new List<EneryHighChart>() }); #region itemCodeList 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;//单个分类分项单位 result.FeeTbl.Unit = itemCodeList[0].Unit; result.FeeTbl.EneType = itemCodeList[0].ItemCodeName; result.FeeAnalyses.EnergyUnit = result.Unit; } } #endregion #region 生成EndTime switch (query.Particle) { case Particle.Month://月 query.StartTime格式为yyyy-MM-01 query.EndTime = query.StartTime.AddMonths(1).AddDays(-1); int day = DateTime.Now.Day; if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month)//月、年第一天不算进去 {//当月 query.EndTime = DateTime.Now.AddDays(-1);//精确到前一天的能耗值 } break; case Particle.Year://年 query.StartTime格式为yyyy-01-01 query.EndTime = query.StartTime.AddYears(1).AddMonths(-1); if (query.StartTime.Year == DateTime.Now.Year)//月、年第一天不算进去 { query.EndTime = DateTime.Now.AddDays(-1); } break; default: query.EndTime = query.StartTime.AddMonths(1).AddDays(-1); if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month) { query.EndTime = DateTime.Now.AddDays(-1); } break; } #endregion var cost = GenerateCost(query); if (cost.Count > 0) { result.FeeType = ((FeeType)cost[0].PAYMENT_TYPE).ToString(); #region 绑定Highchart switch (((FeeType)cost[0].PAYMENT_TYPE)) { case FeeType.分时计费: #region 绑定Highchart result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "尖时费用", data = (from item in cost select decimal.Round(decimal.Parse(item.SHARP_COST.ToString()), 2)).ToList() }); result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "峰时费用", data = (from item in cost select decimal.Round(decimal.Parse(item.HIGH_COST.ToString()), 2)).ToList() }); result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "平时费用", data = (from item in cost select decimal.Round(decimal.Parse(item.MID_COST.ToString()), 2)).ToList() }); result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "谷时费用", data = (from item in cost select decimal.Round(decimal.Parse(item.LOW_COST.ToString()), 2)).ToList() }); #endregion #region 绑定饼图 result.FeePie.series[0].data.Add(new EneryHighChart() { name = "尖时费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.SHARP_COST).Sum().ToString()), 2) }); result.FeePie.series[0].data.Add(new EneryHighChart() { name = "峰时费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.HIGH_COST).Sum().ToString()), 2) }); result.FeePie.series[0].data.Add(new EneryHighChart() { name = "平时费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.MID_COST).Sum().ToString()), 2) }); result.FeePie.series[0].data.Add(new EneryHighChart() { name = "谷时费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.LOW_COST).Sum().ToString()), 2) }); #endregion break; case FeeType.平时计费: #region 绑定Highchart result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "平时费用", data = (from item in cost select decimal.Round(decimal.Parse(item.TOTAL_COST.ToString()), 2)).ToList() }); #endregion #region 绑定饼图 result.FeePie.series[0].data.Add(new EneryHighChart() { name = "平时费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.MID_COST).Sum().ToString()), 2) }); #endregion break; case FeeType.阶梯计费: //1 峰 2 平 3 谷 4 尖 var stepsetting = _idal.GetStepSetting(query.ItemCode); result.StepSettingID = (from i in stepsetting select i.GEARSID).ToList<int>(); if (result.StepSettingID.Contains(1)) { result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "第一档费用", data = (from item in cost select decimal.Round(decimal.Parse(item.HIGH_COST.ToString()), 2)).ToList() }); result.FeePie.series[0].data.Add(new EneryHighChart() { name = "第一档费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.HIGH_COST).Sum().ToString()), 2) }); } if (result.StepSettingID.Contains(2)) { result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "第二档费用", data = (from item in cost select decimal.Round(decimal.Parse(item.MID_COST.ToString()), 2)).ToList() }); result.FeePie.series[0].data.Add(new EneryHighChart() { name = "第二档费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.MID_COST).Sum().ToString()), 2) }); } if (result.StepSettingID.Contains(3)) { result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "第三档费用", data = (from item in cost select decimal.Round(decimal.Parse(item.LOW_COST.ToString()), 2)).ToList() }); result.FeePie.series[0].data.Add(new EneryHighChart() { name = "第三档费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.LOW_COST).Sum().ToString()), 2) }); } if (result.StepSettingID.Contains(4)) { result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "第四档费用", data = (from item in cost select decimal.Round(decimal.Parse(item.SHARP_COST.ToString()), 2)).ToList() }); result.FeePie.series[0].data.Add(new EneryHighChart() { name = "第四档费用", y = decimal.Round(decimal.Parse(cost.Select(t => t.SHARP_COST).Sum().ToString()), 2) }); } break; } #endregion #region 绑定表格 foreach (var item in cost) { string time = ""; switch (query.Particle) { case Particle.Month: time = item.TIMEID.ToString("yyyy-MM-dd"); break; case Particle.Year: time = item.TIMEID.Year + "-" + item.TIMEID.Month; break; } List<string> fl = new List<string>(); fl.Add(time); switch (((FeeType)cost[0].PAYMENT_TYPE)) { case FeeType.分时计费: fl.Add(item.TOTAL.ToString("0.00")); fl.Add(item.TOTAL_COST.ToString("0.00")); fl.Add(item.SHARP.ToString("0.00")); fl.Add(item.SHARP_COST.ToString("0.00")); fl.Add(item.HIGH.ToString("0.00")); fl.Add(item.HIGH_COST.ToString("0.00")); fl.Add(item.MID.ToString("0.00")); fl.Add(item.MID_COST.ToString("0.00")); fl.Add(item.LOW.ToString("0.00")); fl.Add(item.LOW_COST.ToString("0.00")); break; case FeeType.平时计费: fl.Add(item.TOTAL.ToString("0.00")); fl.Add(item.TOTAL_COST.ToString("0.00")); break; case FeeType.阶梯计费: fl.Add(item.TOTAL.ToString("0.00")); fl.Add(item.TOTAL_COST.ToString("0.00")); if (result.StepSettingID.Contains(1)) { fl.Add(item.HIGH.ToString("0.00")); fl.Add(item.HIGH_COST.ToString("0.00")); } if (result.StepSettingID.Contains(2)) { fl.Add(item.MID.ToString("0.00")); fl.Add(item.MID_COST.ToString("0.00")); } if (result.StepSettingID.Contains(3)) { fl.Add(item.LOW.ToString("0.00")); fl.Add(item.LOW_COST.ToString("0.00")); } if (result.StepSettingID.Contains(4)) { fl.Add(item.SHARP.ToString("0.00")); fl.Add(item.SHARP_COST.ToString("0.00")); } break; } result.FeeTbl.FeeList.Add(fl); } #endregion #region 绑定分析 result.FeeAnalyses.TotalEnergy = decimal.Round( decimal.Parse(cost.Select(t => t.TOTAL).Sum().ToString()), 2); result.FeeAnalyses.TotalVal = decimal.Round( decimal.Parse(cost.Select(t => t.TOTAL_COST).Sum().ToString()), 2); result.FeeAnalyses.MaxVal = decimal.Round( decimal.Parse(cost.Select(t => t.TOTAL_COST).Max().ToString()), 2); result.FeeAnalyses.MinVal = decimal.Round( decimal.Parse(cost.Select(t => t.TOTAL_COST).Min().ToString()), 2); result.FeeAnalyses.AvgVal = decimal.Round( decimal.Parse(cost.Select(t => t.TOTAL_COST).Average().ToString()), 2); #endregion query.StartTime = query.StartTime.AddMonths(-1); query.EndTime = query.EndTime.AddMonths(-1); cost = GenerateCost(query); result.FeeAnalyses.EnergyLastMonth = decimal.Round( decimal.Parse(cost.Select(t => t.TOTAL_COST).Sum().ToString()), 2); if (result.FeeAnalyses.EnergyLastMonth > 0) { result.FeeAnalyses.CompareLastMonth = decimal.Round(100 * (result.FeeAnalyses.TotalVal - result.FeeAnalyses.EnergyLastMonth) / result.FeeAnalyses.EnergyLastMonth, 2) .ToString(CultureInfo.InvariantCulture) + "%"; } } else { return null; } return result; }
public string ExportExcelCostQuery() { var inputValue = _ntsPage.Request.Form["Inputs"]; var query = Newtonsoft.Json.JsonConvert.DeserializeObject<QueryCost>(inputValue); var result = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.ICostQueryService>("CostQueryService").GetCostQuery(query); string objectName = ""; switch(query.ObjType) { case AreaType.Area: objectName = new BLL.BaseLayerObject().GetBaseLayerObjectList( string.Format(" and layerobjectid={0}", query.ObjectId), " order by LayerObjectID")[0].LayerObjectName; break; case AreaType.Liquid: objectName = new BLL.BaseLayerObject().GetBaseFuncLayerObjectList( string.Format(" and layerobjectid={0}", query.ObjectId), " order by LayerObjectID")[0].LayerObjectName; break; } var dept = string.Empty; List<Model.Itemcode> itList = null; string unit = ""; string itemCodeName = ""; itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); if (itList.Count > 0) { dept = itList[0].Unit; } unit = query.ItemCode == "00000" ? "T" : dept; itemCodeName = itList.Count == 0 ? "总能耗" : itList[0].ItemCodeName; try { if (result.FeeTbl != null) { if (result.FeeTbl.FeeList.Count > 0) { DataTable dt = TableView.CreateCostQueryDataTable(result); for (var r = 0; r < result.FeeTbl.FeeList.Count; r++) { DataRow dr = dt.NewRow(); for (int j = 1; j <= dt.Columns.Count - 1; j++) { dr[j] = result.FeeTbl.FeeList[r][j - 1]; } dt.Rows.Add(dr); } string temp_path = AppDomain.CurrentDomain.BaseDirectory + "temp_file\\"; if (!Directory.Exists(temp_path)) { Directory.CreateDirectory(temp_path); string[] files = Directory.GetFiles(temp_path); foreach (string fn in files) { File.Delete(temp_path + fn); } } string save_path = DateTime.Now.Ticks + ".xls"; string templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\费用查询.xls"; string time = ""; switch (query.Particle) { case Particle.Month: time = query.StartTime.Year + "-" + query.StartTime.Month + "月"; break; case Particle.Year: time = query.StartTime.Year + "年"; break; } TemplateParam param = new TemplateParam(objectName + " 费用查询---" + itemCodeName + "能耗", new CellParam(0, 0), time, new CellParam(3, 0), true, new CellParam(4, 0)); List<int> columnIndex = new List<int>(); for (int i = 0; i <= dt.Columns.Count - 1; i++) { columnIndex.Add(i); } param.DataColumn = columnIndex.ToArray(); param.ItemUnit = "(单位:" + unit + ")"; param.ItemUnitCell = new CellParam(3, 5); param.SortColumn = 0; dt.TableName = "费用查询"; ExportHelper.ExportExcel(dt, temp_path + save_path, templatePath, param); return "{\"status\":\"success\",\"msg\":\"" + "/temp_file/" + save_path + "\"}"; } else { return "{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}"; } } else { return "{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}"; } } catch (Exception ex) { return "{\"status\":\"error\",\"msg\":\"导出失败:由于当前无数据或其他原因导致" + ex.Message + "\"}"; } }
public string ExportExcelDataRankingNew() { var inputValue = _ntsPage.Request.Form["Inputs"]; var query = Newtonsoft.Json.JsonConvert.DeserializeObject<QueryOrderObjects>(inputValue); string icode = query.ItemCode; query.QueryType = EnergyAnalyseQueryType.Default; ResultOrder resultAll = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery") .GetShopOrderNew(query); query.QueryType = EnergyAnalyseQueryType.UnitArea; ResultOrder resultArea = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery") .GetShopOrderNew(query); query.QueryType = EnergyAnalyseQueryType.UnitPerson; ResultOrder resultPerson = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery") .GetShopOrderNew(query); 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; } string unit = icode == "00000" ? "T" : dept; //switch (query.QueryType) //{ // case EnergyAnalyseQueryType.Convert2Co2: // case EnergyAnalyseQueryType.Convert2Coal: // unit = "T";//标准煤单位 // break; // case EnergyAnalyseQueryType.Convert2Money: // unit = "元";//标准煤单位 // break; //} string itemCodeName = itList.Count == 0 ? "总能耗" : itList[0].ItemCodeName; try { if (query.AreaIdLst.Count > 0) { DataTable dt = TableView.CreateOrderBaseDataTable(); for (var r = 0; r < resultAll.OrderLst.Count; r++) { DataRow dr = dt.NewRow(); dr[1] = resultAll.OrderLst[r].Obj; dr[2] = query.AreaIdLst; dr[3] = resultAll.OrderLst[r].Obj; dr[4] = resultAll.OrderLst[r].Obj; dr[5] = resultAll.OrderLst[r].Obj; dr[6] = itemCodeName; dr[7] = decimal.Round(decimal.Parse(resultAll.OrderLst[r].Val.ToString()), 2).ToString(); dr[8] = resultArea.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultArea.OrderLst[r].Val.ToString()), 2).ToString(); dr[9] = resultPerson.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultPerson.OrderLst[r].Val.ToString()), 2).ToString(); dt.Rows.Add(dr); } string temp_path = AppDomain.CurrentDomain.BaseDirectory + "temp_file\\"; if (!Directory.Exists(temp_path)) { Directory.CreateDirectory(temp_path); string[] files = Directory.GetFiles(temp_path); foreach (string fn in files) { File.Delete(temp_path + fn); } } string save_path = DateTime.Now.Ticks + ".xls"; string templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\新能耗排名表.xls"; if (!File.Exists(templatePath)) { return "{\"status\":\"error\",\"msg\":\"未发现Excel模板文件\"}"; } TemplateParam param = new TemplateParam(itemCodeName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0)); param.DataColumn = new[] { 0, 3, 7, 8, 9 }; param.ItemUnit = "(单位:" + unit + ")"; param.ItemUnitCell = new CellParam(3, 4); param.SortColumn = 0; dt.TableName = "能耗排名表"; ExportHelper.ExportExcel(dt, temp_path + save_path, templatePath, param); return "{\"status\":\"success\",\"msg\":\"" + "/temp_file/" + save_path + "\"}"; } else { return "{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}"; } } catch (Exception ex) { return "{\"status\":\"error\",\"msg\":\"导出失败:由于当前无数据或其他原因导致" + ex.Message + "\"}"; } }
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; }
/// <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 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 ResultRealLine DeviceRealChart(RealQuery query) { var pAction = new ExecuteProcess(); try { var result = new ResultRealLine { series = new List<EneryAnalyseSeries>(), Unit = "kwh" }; //ResultItemCode result = new ResultItemCode(); //result.Dept = new List<string>(); //result.Enery = new Dictionary<string, List<decimal>>(); //result.ObjectName = new List<string>(); // 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().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); model.IsDevice = 1; model.ObjectList = (from p in objectList select p.DeviceID).ToList<int>(); model.ItemCode = objectList[0].ItemCodeID; model.Unit = ChartUnit.unit_hour; if (query.QueryType == EnergyAnalyseQueryType.Default) { model.Starttime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd")); model.Endtime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd")); } else if (query.QueryType == EnergyAnalyseQueryType.MonthCompare) { model.Starttime = Convert.ToDateTime(System.DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd")); model.Endtime = Convert.ToDateTime(System.DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd")); } else if (query.QueryType == EnergyAnalyseQueryType.YearCompare) { model.Starttime = Convert.ToDateTime(System.DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd")); model.Endtime = Convert.ToDateTime(System.DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd")); } var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + model.ItemCode + "'", " order by ItemcodeID")[0]; result.Unit = itemList.Unit;//by added wxy var resList = _reportBll.GetBaseEneryDataList(model); foreach (var d in objectList.SelectMany(o => resList.BaseLayerObjectResults[o.DeviceID.ToString(CultureInfo.InvariantCulture)].Datas)) { if (!eneryDataList.ContainsKey(d.DatePick)) { eneryDataList.Add(d.DatePick, d.DataValue); } else { eneryDataList[d.DatePick] += d.DataValue; } } List<decimal> dat = new List<decimal>(); foreach (var e in eneryDataList) { dat.Add(e.Value); } EneryAnalyseSeries eas = new EneryAnalyseSeries(); eas.data = dat; result.series.Add(eas); pAction.Success = true; result.ActionInfo = pAction; return result; } catch (Exception ex) { pAction.Success = false; pAction.ExceptionMsg = ex.Message; return new ResultRealLine() { ActionInfo = pAction }; } }
public ResultItemCode RealChart(RealQuery query) { ResultItemCode result = new ResultItemCode(); result.Dept = new List<string>(); result.Enery = new Dictionary<string, List<decimal>>(); result.ObjectName = new List<string>(); // 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().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); model.IsDevice = 1; model.ObjectList = (from p in objectList select p.DeviceID).ToList<int>(); model.ItemCode = objectList[0].ItemCodeID; model.Unit = ChartUnit.unit_hour; model.Starttime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd")); model.Endtime = Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-dd")); var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + model.ItemCode + "'", " order by ItemcodeID")[0]; var resList = _reportBll.GetBaseEneryDataList(model); foreach (var d in objectList.SelectMany(o => resList.BaseLayerObjectResults[o.DeviceID.ToString(CultureInfo.InvariantCulture)].Datas)) { if (!eneryDataList.ContainsKey(d.DatePick)) { eneryDataList.Add(d.DatePick, d.DataValue); } else { eneryDataList[d.DatePick] += d.DataValue; } } result.Enery.Add(objectList[0].DeviceID.ToString(CultureInfo.InvariantCulture), eneryDataList.Values.ToList()); foreach (var e in eneryDataList) { result.Dept.Add(itemList.Unit); result.ObjectName.Add(e.Key); } return result; }
/// <summary> /// 获取定额分析 /// </summary> /// <param name="query"></param> /// <returns></returns> public ResultQuota GetQuotaAnalyseChart(QueryQuota query) { try { #region 返回对象定义 ResultQuota result = new ResultQuota() { Pie = new QuotaAnalysePie(), BalanceHighChart = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() }, TrendHighChart = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() } }; #endregion #region itemCodeList 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;//单个分类分项单位 } } #endregion #region 生成EndTime switch (query.Particle) { case Particle.Month://月 query.StartTime格式为yyyy-MM-01 query.EndTime = query.StartTime.AddMonths(1).AddDays(-1); int day = DateTime.Now.Day; if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month )//月、年第一天不算进去 {//当月 query.EndTime = DateTime.Now;//精确到前一天的能耗值 } break; case Particle.Year://年 query.StartTime格式为yyyy-01-01 query.EndTime = query.StartTime.AddYears(1).AddMonths(-1); if (query.StartTime.Year == DateTime.Now.Year)//月、年第一天不算进去 { query.EndTime = DateTime.Now; } break; default: query.EndTime = query.StartTime.AddMonths(1).AddDays(-1); if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month) { query.EndTime = DateTime.Now.AddDays(-1); } break; } #endregion #region 获取定额值 Model.QuotaAnalyseModel quotaAnalyseModel = GetQuotaAnalyseModel(query); if (quotaAnalyseModel != null) { result.Pie.QuotaValue = decimal.Round(quotaAnalyseModel.QuotaValue, 2); if (!(quotaAnalyseModel.QuotaValue > 0)) { throw new Exception("无效的定额值"); } } else { throw new Exception("当前未设置定额值"); //result.Pie.QuotaValue = 10000; } #endregion var model = new BaseQueryModel(); model.IsDevice = 0; model.ObjectList = new List<int>() { query.ObjectId }; model.Unit = BaseTool.GetChartUnit((int)query.Particle - 1);//查询颗粒度比方法中的颗粒度大于一 decimal averagequotavalue = 0; int TotalCount = 1;//月天数或者12月 if (model.Unit == ChartUnit.unit_month) {//年定额分析 精确到天 model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-01")); model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-01")); //定额月平均值 averagequotavalue = decimal.Round(result.Pie.QuotaValue / 12, 2); TotalCount = 12; } else {//月定额分析 精确到小时 model.Starttime = query.StartTime; model.Endtime = query.EndTime; //定额日平均值 TotalCount = DateTime.DaysInMonth(query.StartTime.Year, query.StartTime.Month); averagequotavalue = decimal.Round(result.Pie.QuotaValue / TotalCount, 2); } Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>(); if(query.EndTime>=query.StartTime) { tempConvert = GetSingleItemCodeValue(model, query, itemCodeList); } result.Pie.ActualValue = decimal.Round(tempConvert.Select(t => t.Value).Sum(), 2); result.Pie.OverPlusValue = decimal.Round(result.Pie.QuotaValue - result.Pie.ActualValue, 2); result.Pie.OverPlusPercent = (result.Pie.OverPlusValue * 100 / result.Pie.QuotaValue).ToString("0.00") + "%"; var balanceQuotaValue = new List<decimal>(); for (int i = 0; i <= TotalCount - 1;i++ ) { balanceQuotaValue.Add(result.Pie.QuotaValue); } //趋势分析能耗值 var TrendActualValue = new List<decimal>(); TrendActualValue = (from item in tempConvert select decimal.Round(item.Value, 2)).ToList(); for (int i = 0; i <= TrendActualValue.Count - 1; i++) { if (i > 0) { TrendActualValue[i] = TrendActualValue[i] + TrendActualValue[i - 1]; } } //差额分析能耗值 result.BalanceHighChart.series.Add(new EneryAnalyseSeries() { name = "ActualLine", //data = (from item in tempConvert select decimal.Round(item.Value, 2)).ToList() data = TrendActualValue }); //差额分析定额值 result.BalanceHighChart.series.Add(new EneryAnalyseSeries() { name = "QuotaLine", data = balanceQuotaValue }); //差额分析能耗差值 result.BalanceHighChart.series.Add(new EneryAnalyseSeries() { name = "BalanceLine", data = ((from item in TrendActualValue select result.Pie.QuotaValue - decimal.Round(item, 2))).ToList() }); //趋势分析定额值 var TrendQuotaValue = new List<decimal>(); //趋势分析预测值 var TrendForeCastValue = new List<decimal>(); result.TrendHighChart.series.Add(new EneryAnalyseSeries() { name = "ActualLine", data = TrendActualValue }); int[] x = new int[TotalCount]; int count = 1; //TrendQuotaValue.Add(0);//以0坐标开始 for (int i = 0; i <= x.Length - 1; i++) { x[i] = i; if (count == x.Length) { TrendQuotaValue.Add(result.Pie.QuotaValue); } else { TrendQuotaValue.Add(averagequotavalue * count); } count++; } result.TrendHighChart.series.Add(new EneryAnalyseSeries() { name = "QuotaLine", data = TrendQuotaValue }); TrendForeCastValue = SPT(x, TrendActualValue.ToArray()); //预测节能率:定额值-线性回归公式值(最后一天或者12月)/定额值 if (TrendForeCastValue.Count>0) { result.Pie.ForecastSavingPercent = ((result.Pie.QuotaValue - TrendForeCastValue[TrendForeCastValue.Count - 1]) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%"; } else { result.Pie.ForecastSavingPercent = "-"; } #region 暂时禁用 //decimal lastvalue = 0; //decimal lastsecondvalue = 0; //if (TrendActualValue.Count > 0) //{ // lastvalue = TrendActualValue[TrendActualValue.Count - 1]; // if (TrendActualValue.Count > 1) // { // lastsecondvalue = TrendActualValue[TrendActualValue.Count - 2]; // } //} //if (query.Particle == Particle.Year) //{ // if (query.StartTime.Year < DateTime.Now.Year) // { // result.Pie.ForecastSavingPercent = ((result.Pie.QuotaValue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%"; // } // else // { // //当前理论计划值= 年定额值/12*(结束时间月-1)+年定额值/12/结束月的总天数*(结束时间天-1) // decimal theoryPlanvalue = result.Pie.QuotaValue / 12 * (query.EndTime.Month - 1) + result.Pie.QuotaValue / 12 / DateTime.DaysInMonth(query.EndTime.Year, query.EndTime.Month) * (query.EndTime.Day - 1); // //预测节能率=(当前理论计划值-实时能耗值)/年定额值, // result.Pie.ForecastSavingPercent = ((theoryPlanvalue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%"; // if (query.EndTime.Month < 12) // {//添加趋势预测线 // TrendForeCastValue.Add(lastvalue); // for (int i = 1; i <= (12 - query.EndTime.Month); i++) // { // TrendForeCastValue.Add(lastvalue + (lastvalue - lastsecondvalue) * i); // } // } // } //} //else //{ // if (query.StartTime.Month < DateTime.Now.Month) // { // result.Pie.ForecastSavingPercent = ((result.Pie.QuotaValue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%"; // } // else // { // //当前理论计划值= 月定额值/当月天数*(当前天-1)+月定额值/当月天数/24*(当前小时数) // decimal theoryPlanvalue = result.Pie.QuotaValue / DateTime.DaysInMonth(query.EndTime.Year, query.EndTime.Month) * (query.EndTime.Day - 1) + result.Pie.QuotaValue / DateTime.DaysInMonth(query.EndTime.Year, query.EndTime.Month) / 24 * (query.EndTime.Hour); // //预测节能率=(当前理论计划值-实时能耗值)/年定额值, // result.Pie.ForecastSavingPercent = ((theoryPlanvalue - result.Pie.ActualValue) * 100 / result.Pie.QuotaValue).ToString("0.00") + "%"; // } // if (query.EndTime.Day < DateTime.DaysInMonth(query.StartTime.Year, query.StartTime.Month)) // {//添加趋势预测线 // TrendForeCastValue.Add(lastvalue); // for (int i = 1; i <= (DateTime.DaysInMonth(query.StartTime.Year, query.StartTime.Month) - query.EndTime.Day); i++) // { // TrendForeCastValue.Add(lastvalue + (lastvalue - lastsecondvalue) * i); // } // } //} #endregion result.TrendHighChart.series.Add(new EneryAnalyseSeries() { name = "ForeCastLine", data = TrendForeCastValue }); //同比 query.StartTime = query.StartTime.AddYears(-1); query.EndTime = query.EndTime.AddYears(-1); quotaAnalyseModel = GetQuotaAnalyseModel(query); if (quotaAnalyseModel != null) { result.Pie.LastYearQuotaValue = decimal.Round(quotaAnalyseModel.QuotaValue, 2); ; if (!(quotaAnalyseModel.QuotaValue > 0)) { throw new Exception("无效的定额值"); } } else { //throw new Exception("当前未设置定额值"); result.Pie.LastYearQuotaValue = 0; } model.Unit = BaseTool.GetChartUnit((int)query.Particle - 1); if (model.Unit == ChartUnit.unit_month) {//年定额分析 精确到天 model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-01")); model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-12-01")); } else {//月定额分析 精确到小时 model.Starttime = query.StartTime; model.Endtime = model.Starttime.AddMonths(1); } //model.Unit = ChartUnit.unit_month; //model.Starttime = Convert.ToDateTime(query.StartTime.ToString("yyyy-MM-01")); //model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-MM-01")); //if(query.Particle==Particle.Year) //{ // model.Endtime = Convert.ToDateTime(query.EndTime.ToString("yyyy-12-01")); //} tempConvert = new Dictionary<string, decimal>(); if (query.EndTime >= query.StartTime) { tempConvert = GetSingleItemCodeValue(model, query, itemCodeList); } result.Pie.LastYearActualValue = decimal.Round(tempConvert.Select(t => t.Value).Sum(), 2); if (result.Pie.LastYearQuotaValue>0) { result.Pie.LastYearSavingPercent = ((result.Pie.LastYearActualValue - result.Pie.LastYearQuotaValue) * 100 / result.Pie.LastYearQuotaValue) .ToString("0.00") + "%"; } else { result.Pie.LastYearSavingPercent = "-"; } return result; } catch (Exception ee) { throw ee; } }
public MainInfo GetIndexCompareEneryNew(DateTime startTime, DateTime endTime) { MainInfo mainInfo = new MainInfo(); mainInfo.IsOnlyElec = false; mainInfo.ItemValues = new List<EneryStatistic>(); mainInfo.PeriodValues = new List<EnerySum>(); var ObjectList = new BLL.BaseLayerObject().GetBaseFuncLayerObjectList(string.Format(" and LayerObjectParentID={0}", 0), " order by LayerObjectID"); var ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID"); //var ItemList = new BLL.Itemcode().GetItemcodeList("", " order by ItemcodeID"); EneryStatistic eneryStatistic4Elec = new EneryStatistic(); if (ItemList.Count == 1) {//只有电 mainInfo.IsOnlyElec = true;//只有电 eneryStatistic4Elec.CName = ItemList[0].ItemCodeName; eneryStatistic4Elec.ItemCode = ItemList[0].ItemCodeNumber; eneryStatistic4Elec.Unit = ItemList[0].Unit; ItemList = new BLL.Itemcode().GetItemcodeList(string.Format(" and ParentID={0}", ItemList[0].ItemcodeID), " order by ItemcodeID"); } BaseQueryModel model = new BaseQueryModel(); model.IsDevice = 0; model.ObjectList = (from p in ObjectList select p.LayerObjectID).ToList<int>(); foreach (var item in ItemList) { EneryStatistic eneryStatistic = new EneryStatistic(); eneryStatistic.CName = item.ItemCodeName; eneryStatistic.ItemCode = item.ItemCodeNumber; eneryStatistic.Unit = item.Unit; model.ItemCode = item.ItemCodeNumber; decimal tempItemCoalEneryValue = 0; decimal tempLastMonthItemCoalEneryValue = 0; BaseResult ResList = new BaseResult(); if ((endTime - startTime).Days > 0) { model.Unit = ChartUnit.unit_day; model.Starttime = startTime; model.Endtime = DateTime.Parse(endTime.AddDays(-1).ToString("yyyy-MM-dd 00:00:00")); ResList = reportBll.GetBaseEneryDataList(model, true); if (ResList == null) { continue; } foreach (var r in ResList.BaseLayerObjectResults) { eneryStatistic.EneryValue += r.Value.Total; eneryStatistic.EnergyValue2Coal += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); tempItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); } } if (endTime.Hour > 0) { model.Unit = ChartUnit.unit_hour; model.Starttime = DateTime.Parse(endTime.ToString("yyyy-MM-dd 00:00:00")); model.Endtime = DateTime.Parse(endTime.ToString("yyyy-MM-dd HH:00:00")); ResList = reportBll.GetBaseEneryDataList(model, true); if (ResList == null) { continue; } foreach (var r in ResList.BaseLayerObjectResults) { eneryStatistic.EneryValue += r.Value.Total; eneryStatistic.EnergyValue2Coal += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); tempItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); } } eneryStatistic.EneryValue = decimal.Round(eneryStatistic.EneryValue, 2); eneryStatistic.EnergyValue2Coal = decimal.Round(eneryStatistic.EnergyValue2Coal, 2); tempItemCoalEneryValue = decimal.Round(tempItemCoalEneryValue, 2); model.Starttime = startTime.AddMonths(-1); model.Endtime = endTime.AddMonths(-1); if ((endTime - startTime).Days > 0) { model.Unit = ChartUnit.unit_day; model.Endtime = DateTime.Parse(model.Endtime.AddDays(-1).ToString("yyyy-MM-dd 00:00:00")); ResList = reportBll.GetBaseEneryDataList(model, true); if (ResList == null) { continue; } foreach (var r in ResList.BaseLayerObjectResults) { eneryStatistic.EnergyLastMonth += decimal.Round(r.Value.Total, 2); tempLastMonthItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); } } if (endTime.Hour > 0) { model.Unit = ChartUnit.unit_hour; model.Starttime = DateTime.Parse(endTime.AddMonths(-1).ToString("yyyy-MM-dd 00:00:00")); model.Endtime = DateTime.Parse(endTime.AddMonths(-1).ToString("yyyy-MM-dd HH:00:00")); ResList = reportBll.GetBaseEneryDataList(model, true); if (ResList == null) { continue; } foreach (var r in ResList.BaseLayerObjectResults) { eneryStatistic.EnergyLastMonth += decimal.Round(r.Value.Total, 2); tempLastMonthItemCoalEneryValue += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); } } eneryStatistic.EnergyLastMonth = decimal.Round(eneryStatistic.EnergyLastMonth, 2); tempLastMonthItemCoalEneryValue = decimal.Round(tempLastMonthItemCoalEneryValue, 2); if (eneryStatistic.EnergyLastMonth > 0) { eneryStatistic.MonthCompare = decimal.Round(100 * (eneryStatistic.EneryValue - eneryStatistic.EnergyLastMonth) / eneryStatistic.EnergyLastMonth, 2) .ToString(CultureInfo.InvariantCulture) + "%"; } mainInfo.Total += Math.Round(tempItemCoalEneryValue, 2); mainInfo.TotalLastMon += Math.Round(tempLastMonthItemCoalEneryValue, 2); if (mainInfo.IsOnlyElec) { eneryStatistic4Elec.EneryValue += eneryStatistic.EneryValue; eneryStatistic4Elec.EnergyValue2Coal += eneryStatistic.EneryValue; eneryStatistic4Elec.EnergyLastMonth += eneryStatistic.EnergyLastMonth; } mainInfo.ItemValues.Add(eneryStatistic); if (item.ItemCodeNumber == "01000") { GeneratePeriodValues(model, mainInfo); } } if (mainInfo.TotalLastMon > 0) { mainInfo.TotalCompare = decimal.Round(100 * (mainInfo.Total - mainInfo.TotalLastMon) / mainInfo.TotalLastMon, 2) .ToString(CultureInfo.InvariantCulture) + "%"; } if (mainInfo.IsOnlyElec) { eneryStatistic4Elec.MonthCompare = mainInfo.TotalCompare; mainInfo.ItemValues.Insert(0, eneryStatistic4Elec); model.ItemCode = "01000"; GeneratePeriodValues(model, mainInfo); } return mainInfo; }
public ResultItemCode GetPeriodsQueryLineChart(QueryContrastPeriods querOld, TimePeriod time) { #region 定义区 QueryContrastPeriods query = new QueryContrastPeriods(); query = querOld; 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 objectList = // new BLL.BaseLayerObject().GetBaseLayerObjectList( // string.Format(" and layerobjectid={0}", query.AreaId), " order by LayerObjectID"); 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) { if (querOld.QueryType == QueryOrderType.Default) { var lineChart = GetSingleItemCodeByObjectNew(query, itemcode.ItemCodeNumber, time, 1); if (count < lineChart.Count) { count = lineChart.Count; maxcode = itemcode.ItemCodeNumber; } eneryDataListTotal.Add(itemcode.ItemCodeNumber, lineChart); } else if (querOld.QueryType == QueryOrderType.UnitArea) { var lineChart = this.GetAreaSingleItemCodeByObject(query, itemcode.ItemCodeNumber, time, 1); if (count < lineChart.Count) { count = lineChart.Count; maxcode = itemcode.ItemCodeNumber; } eneryDataListTotal.Add(itemcode.ItemCodeNumber, lineChart); } else if (querOld.QueryType == QueryOrderType.UnitPerson) { var lineChart = GetPersonNumSingleItemCodeByObject(query, itemcode.ItemCodeNumber, time, 1); 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]; if (querOld.QueryType == QueryOrderType.Default) { var lineChart = GetSingleItemCodeByObjectNew(query, query.ItemCode, time, 0); // resultList.Dept = new List<string>() {item.Unit}; resultList.ObjectName = lineChart.Select(p => p.Key.ToString()).ToList(); resultList.Enery.Add(item.ItemCodeName, lineChart.Select(p => decimal.Parse(p.Value.ToString())).ToList()); } else if (querOld.QueryType == QueryOrderType.UnitArea) { var lineChart = GetAreaSingleItemCodeByObject(query, query.ItemCode, time, 0); // resultList.Dept = new List<string>() {item.Unit}; resultList.ObjectName = lineChart.Select(p => p.Key.ToString()).ToList(); resultList.Enery.Add(item.ItemCodeName, lineChart.Select(p => decimal.Parse(p.Value.ToString())).ToList()); } else if (querOld.QueryType == QueryOrderType.UnitPerson) { var lineChart = GetPersonNumSingleItemCodeByObject(query, query.ItemCode, time, 0); // resultList.Dept = new List<string>() {item.Unit}; 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 BaseResult GetQueryDeviceSingleItemCodeEneryTotal(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; }
public ResultCompare GetPersonNumPeriodsCompareChart(QueryContrastPeriods query) { #region 定义区 var resultList = new ResultView.ResultCompare { ObjectName = new List<string>(), Enery = new Dictionary<string, List<decimal>>(), Dept = new List<string>() }; #endregion if (query.PeriodLst.Count > 0) { resultList.ObjectName.Clear(); for (int iCount = 0; iCount < query.PeriodLst.Count; iCount++) { //QueryContrastPeriods basicQuery = new QueryContrastPeriods(); //basicQuery.PeriodLst = query.PeriodLst; //basicQuery.ItemCode = query.ItemCode; //basicQuery.AreaId = query.AreaId; //basicQuery.ObjectNum = o.LayerObjectID; var result = GetPeriodsQueryLineChart(query, query.PeriodLst[iCount]); resultList.ObjectName.Add(query.PeriodLst[iCount].StartTime.ToString("yyyy-MM-dd") + "~" + query.PeriodLst[iCount].EndTime.ToString("yyyy-MM-dd")); if (query.ItemCode != "00000") { var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID")[0]; resultList.Enery.Add((iCount + 1).ToString(), 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(iCount.ToString(), tempValue.ToList()); //resultList.Enery.Add(o.LayerObjectName, tempValue.ToList().Select(p => p / decimal.Parse(o.PersonNum.ToString())).ToList()); } } return resultList; } 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 string ExportExcelDataRanking() { var inputValue = _ntsPage.Request.Form["Inputs"]; var query = Newtonsoft.Json.JsonConvert.DeserializeObject<NTS.WEB.DataContact.QueryOrder>(inputValue); query.PageCurrent = 1; query.PageSize = 10000; string icode = query.ItemCode; var result = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery") .GetShopOrder(query); query.Particle = "area"; var result2 = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IQueryEnery>("EneryQuery") .GetShopOrder(query); 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; } string itemName = icode == "00000" ? "T" : dept; var ItemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); string ItemName = query.ItemCode == "00000" ? "总能耗" : ItemList[0].ItemCodeName; try { string unittype = string.IsNullOrEmpty(HttpContext.Current.Request["unittype"]) ? "" : HttpContext.Current.Request["unittype"];// string type = "0"; string name = ""; switch (type) { case "0": name = "总能耗"; break; case "1": name = "面积能耗"; break; case "2": name = "人均能耗"; break; } if (query.ObjectNum.Count > 0) { DataTable dt = TableView.CreateOrderBaseDataTable(); for (var r = 0; r < result.OrderList.Count; r++) { DataRow dr = dt.NewRow(); dr[1] = result.OrderList[r].Title; dr[2] = query.ObjectNum; dr[3] = result.OrderList[r].Title; dr[4] = result.OrderList[r].Title; dr[5] = result.OrderList[r].Title; dr[6] = itemName; dr[7] = decimal.Round(decimal.Parse(result.OrderList[r].Energy.ToString()), 2).ToString(); dr[8] = decimal.Round(decimal.Parse(result2.OrderList[r].Energy.ToString()), 2).ToString(); dt.Rows.Add(dr); } string temp_path = AppDomain.CurrentDomain.BaseDirectory + "temp_file\\"; if (!Directory.Exists(temp_path)) { Directory.CreateDirectory(temp_path); string[] files = Directory.GetFiles(temp_path); foreach (string fn in files) { File.Delete(temp_path + fn); } } string save_path = DateTime.Now.Ticks + ".xls"; string templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\能耗排名表.xls"; TemplateParam param = new TemplateParam(ItemName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0)); param.DataColumn = new[] { 0, 3, 7, 8 }; param.ItemUnit = "(单位:" + dept + ")"; param.ItemUnitCell = new CellParam(3, 4); param.SortColumn = 0; dt.TableName = "能耗排名表"; ExportHelper.ExportExcel(dt, temp_path + save_path, templatePath, param); return "{\"status\":\"success\",\"msg\":\"" + "/temp_file/" + save_path + "\"}"; } else { return "{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}"; } } catch (Exception ex) { return "{\"status\":\"error\",\"msg\":\"导出失败:由于当前无数据或其他原因导致" + ex.Message + "\"}"; } }
public ResultReal GetRealTime(NTS.WEB.DataContact.RealQuery query) { ResultReal result = new ResultReal(); var objectList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); var itemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + objectList[0].ItemCodeID + "'", " order by ItemcodeID")[0]; result.Info = new DeviceInfo(); result.Data = new RealData(); result.Info.Affiliations = objectList[0].Organization; result.Info.DevType = objectList[0].DeviceType.ToString(CultureInfo.InvariantCulture); result.Info.Category = (itemList.ItemCodeNumber == "01000" || itemList.ItemCodeNumber == "01A00" || itemList.ItemCodeNumber == "01B00" || itemList.ItemCodeNumber == "01C00" || itemList.ItemCodeNumber == "01D00") ? "电表" : itemList.ItemCodeName + "表"; result.Info.Nature = objectList[0].DEVMODE; result.Info.Number = objectList[0].DeviceNumber; result.Info.Status = objectList[0].Status; result.Info.Location = objectList[0].Location; result.Info.Rating = objectList[0].Rating.ToString(); if (query.IsDetail == 1) { for (int i = 1; i < 4; i++) { BaseListModel model = new BaseListModel(); model.Page = 1; model.PageSize = 10000; model.ObjectId = objectList[0].DeviceID; model.CategoryId = i; DataTable dt = new Real().GetRealTimeData(model); if (dt.Rows.Count > 0) { if (i == 1) { result.Data.Pulse = new List<dataUnit>(); for (int j = 0; j < dt.Rows.Count; j++) { result.Data.Pulse.Add(new dataUnit() { Id = j + 1, DataName = dt.Rows[j]["DataPoint_Name"].ToString(), Unit = itemList.Unit, Value = decimal.Parse(dt.Rows[j]["Result"].ToString()) }); } } else if (i == 2) { result.Data.Analog = new List<dataUnit>(); for (int j = 0; j < dt.Rows.Count; j++) { result.Data.Analog.Add(new dataUnit() { Id = j + 1, DataName = dt.Rows[j]["DataPoint_Name"].ToString(), Unit = itemList.Unit, Value = decimal.Parse(dt.Rows[j]["Result"].ToString()) }); } } else { result.Data.Switch = new List<dataUnit>(); for (int j = 0; j < dt.Rows.Count; j++) { result.Data.Switch.Add(new dataUnit() { Id = j + 1, DataName = dt.Rows[j]["DataPoint_Name"].ToString(), Unit = itemList.Unit, Value = decimal.Parse(dt.Rows[j]["Result"].ToString()) }); } } } } } //result.Data.Analog = new List<dataUnit>(); //result.Data.Analog.Add(new dataUnit() { Id = 1, DataName = "29189H92-00", Unit = "kwh", Value = 900.88m }); //result.Data.Pulse = new List<dataUnit>(); //result.Data.Pulse.Add(new dataUnit() { Id = 1, DataName = "29189H92-10", Unit = "kwh", Value = 400.88m }); //result.Data.Switch = new List<dataUnit>(); //result.Data.Switch.Add(new dataUnit() { Id = 1, DataName = "29189H92-20", Unit = "kwh", Value = 200.88m }); return result; }
public string ExportExcelEnergyAnalyse() { var inputValue = _ntsPage.Request.Form["Inputs"]; var query = Newtonsoft.Json.JsonConvert.DeserializeObject<QueryAnalyse>(inputValue); string icode = query.ItemCode; EnergyAnalyseQueryType tempQueryType = query.QueryType; query.QueryType = EnergyAnalyseQueryType.Default;//总能耗 ResultEnergyAnalyse resultAll = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart").GetEnergyAnalyseLineChart(query); ResultEnergyAnalyse resultArea = null; ResultEnergyAnalyse resultPerson = null; if (query.IsDevice == 0) {// query.QueryType = EnergyAnalyseQueryType.UnitArea;//单位面积 resultArea = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart") .GetEnergyAnalyseLineChart(query); query.QueryType = EnergyAnalyseQueryType.UnitPerson;//人均 resultPerson = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart") .GetEnergyAnalyseLineChart(query); } var dept = string.Empty; List<Model.Itemcode> itList = null; string unit = ""; string itemCodeName = ""; if (query.IsDevice == 1) { var deviceList = new NTS.WEB.BLL.BaseLayerObject().GetDeviceObjectList(string.Format(" and deviceid={0}", query.ObjectId), " order by deviceid"); itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + deviceList[0].ItemCodeID + "'", " order by ItemcodeID"); if (itList.Count > 0) { unit = itList[0].Unit;//单个分类分项单位 itemCodeName = itList[0].ItemCodeName; } if (query.ItemCode == "00000") {//总能耗 unit = "T";//标准煤单位 itemCodeName = "总能耗"; } } else { itList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); if (itList.Count > 0) { dept = itList[0].Unit; } unit = icode == "00000" ? "T" : dept; itemCodeName = itList.Count == 0 ? "总能耗" : itList[0].ItemCodeName; } //query.QueryType = tempQueryType; //switch (query.QueryType) //{ // case EnergyAnalyseQueryType.Convert2Co2: // case EnergyAnalyseQueryType.Convert2Coal: // unit = "T";//标准煤单位 // break; // case EnergyAnalyseQueryType.Convert2Money: // unit = "元";//标准煤单位 // break; //} try { if (resultAll.OrderLst.Count > 0) { DataTable dt = TableView.CreateOrderBaseDataTable(); for (var r = 0; r < resultAll.OrderLst.Count; r++) { DataRow dr = dt.NewRow(); dr[1] = resultAll.OrderLst[r].Tm; dr[2] = query.ObjectId; dr[3] = resultAll.OrderLst[r].Obj; dr[4] = resultAll.OrderLst[r].Tm; dr[5] = resultAll.OrderLst[r].Tm; dr[6] = itemCodeName; dr[7] = decimal.Round(decimal.Parse(resultAll.OrderLst[r].Val.ToString()), 2).ToString(); if (query.IsDevice == 0) { dr[8] = resultArea.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultArea.OrderLst[r].Val.ToString()), 2).ToString(); dr[9] = resultPerson.OrderLst == null ? "0" : decimal.Round(decimal.Parse(resultPerson.OrderLst[r].Val.ToString()), 2).ToString(); } dt.Rows.Add(dr); } string temp_path = AppDomain.CurrentDomain.BaseDirectory + "temp_file\\"; if (!Directory.Exists(temp_path)) { Directory.CreateDirectory(temp_path); string[] files = Directory.GetFiles(temp_path); foreach (string fn in files) { File.Delete(temp_path + fn); } } string save_path = DateTime.Now.Ticks + ".xls"; string templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\能耗分析表.xls"; if (query.IsDevice == 1) { templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\能耗分析表_设备.xls"; } TemplateParam param = new TemplateParam(resultAll.OrderLst[0].Obj + " " + itemCodeName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0)); param.DataColumn = new[] { 0, 3, 1, 7, 8, 9 }; if (query.IsDevice == 1) { param.DataColumn = new[] { 0, 3, 1, 7 }; } param.ItemUnit = "(单位:" + unit + ")"; param.ItemUnitCell = new CellParam(3, 5); param.SortColumn = 0; dt.TableName = "能耗分析表"; ExportHelper.ExportExcel(dt, temp_path + save_path, templatePath, param); return "{\"status\":\"success\",\"msg\":\"" + "/temp_file/" + save_path + "\"}"; } else { return "{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}"; } } catch (Exception ex) { return "{\"status\":\"error\",\"msg\":\"导出失败:由于当前无数据或其他原因导致" + ex.Message + "\"}"; } }
public NTS.WEB.ResultView.ShopOrderResult GetShopOrder(NTS.WEB.DataContact.QueryOrder query) { string keyCatch = string.Empty; foreach (var q in query.ObjectNum) { keyCatch += q.ToString() + "_"; } keyCatch += query.ItemCode + query.OrderWay + query.StartTime + query.EndTime + query.Particle; if (CacheHelper.GetCache(keyCatch) != null) { return PaddingList((ShopOrderResult)CacheHelper.GetCache(keyCatch), query); } #region 定义区 ShopOrderResult shopOrderResult = new ShopOrderResult(); shopOrderResult.OrderList = new List<BaseOrder>(); shopOrderResult.page = new Padding(); #endregion var ItemList = new List<Model.Itemcode>(); var shopOrder = new IndexShopOrder { TotalEneryOrderList = new List<EneryOrder>(), AreaEneryOrderList = new List<EneryOrder>() }; var shopOrderLast = new IndexShopOrder { TotalEneryOrderList = new List<EneryOrder>(), AreaEneryOrderList = new List<EneryOrder>() }; // var deepth = int.Parse(ConfigurationManager.AppSettings["ShopLevel"]); if (query.ItemCode == "00000") { ItemList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0", " order by ItemcodeID"); } else { ItemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); } List<string> ItemCodeStr = (from item in ItemList select item.ItemCodeNumber).ToList<string>(); var model = new BaseQueryModel(); model.IsDevice = 0; model.ObjectList = query.ObjectNum; Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>(); Dictionary<string, decimal> tempAreaConvert = new Dictionary<string, decimal>(); // decimal[] tempConvert = new decimal[objectList.Count]; // decimal[] tempAreaConvert = new decimal[objectList.Count]; foreach (var item in ItemCodeStr) { model.ItemCode = item; model.Unit = GetUnit(query.StartTime, query.EndTime); 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; } var resList = reportBll.GetBaseEneryDataList(model); const int order = 1; foreach (var r in resList.BaseLayerObjectResults) { if (tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName)) { if (query.ItemCode == "00000") { tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); tempAreaConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); } else { tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total; tempAreaConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); } } else { if (query.ItemCode == "00000") { tempConvert.Add(r.Value.baseLayerObject.LayerObjectName, decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString())); tempAreaConvert.Add(r.Value.baseLayerObject.LayerObjectName, decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString())); } else { tempConvert.Add(r.Value.baseLayerObject.LayerObjectName, r.Value.Total); tempAreaConvert.Add(r.Value.baseLayerObject.LayerObjectName, r.Value.Total / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString())); } } shopOrder.TotalEneryOrderList.Add(new EneryOrder() { BuildingName = r.Value.baseLayerObject.LayerObjectName, EneryValue = double.Parse(tempConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")), OrderNum = order }); shopOrder.AreaEneryOrderList.Add(new EneryOrder() { BuildingName = r.Value.baseLayerObject.LayerObjectName, EneryValue = double.Parse(tempAreaConvert[r.Value.baseLayerObject.LayerObjectName].ToString("f2")), OrderNum = order }); } } var res1 = from p in shopOrder.TotalEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) }; var res2 = from p in shopOrder.AreaEneryOrderList group p by p.BuildingName into g select new { g.Key, BuildingName = g.Max(p => p.BuildingName), OrderNum = g.Max(p => p.OrderNum), EneryValue = g.Max(p => p.EneryValue) }; foreach (var c in res1) { shopOrderLast.TotalEneryOrderList.Add(new EneryOrder { BuildingName = c.BuildingName, EneryValue = c.EneryValue, OrderNum = c.OrderNum }); } foreach (var c in res2) { shopOrderLast.AreaEneryOrderList.Add(new EneryOrder { BuildingName = c.BuildingName, EneryValue = c.EneryValue, OrderNum = c.OrderNum }); } int record = shopOrderLast.TotalEneryOrderList.Count; shopOrderResult.page = new Padding() { Current = query.PageCurrent, Total = (record % query.PageSize == 0) ? record / query.PageSize : record / query.PageSize + 1 }; int orders = 1; if (query.Particle == "total") { foreach (var r in shopOrderLast.TotalEneryOrderList) { shopOrderResult.OrderList.Add(new BaseOrder() { Energy = decimal.Parse(r.EneryValue.ToString("f2")), Id = orders, Title = r.BuildingName, Units = query.ItemCode == "00000" ? "T" : ItemList[0].Unit }); orders++; } } else { foreach (var r in shopOrderLast.AreaEneryOrderList) { shopOrderResult.OrderList.Add(new BaseOrder() { Energy = decimal.Parse(r.EneryValue.ToString("f2")), Id = r.OrderNum, Title = r.BuildingName, Units = query.ItemCode == "00000" ? "T" : ItemList[0].Unit }); } } if (CacheHelper.GetCache(keyCatch) == null) { CacheHelper.SetCache(keyCatch, shopOrderResult); } return PaddingList(shopOrderResult, query); }
public string ExportQueryLineChart() { var inputValue = _ntsPage.Request.Form["Inputs"]; var query = Newtonsoft.Json.JsonConvert.DeserializeObject<BasicQuery>(inputValue); var result = Framework.Common.BaseWcf.CreateChannel<ServiceInterface.IChart>("Chart") .GetQueryLineChart(query); try { string name = new BLL.BaseLayerObject().GetBaseLayerObjectList( string.Format(" and layerobjectid={0}", query.ObjectNum), " order by LayerObjectID")[0].LayerObjectName; string itemUnit = result.Dept[0]; 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; } string itemName = query.ItemCode == "00000" ? "总能耗" : dept; var ItemList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); string ItemName = query.ItemCode == "00000" ? "总能耗" : ItemList[0].ItemCodeName; DataTable dt = TableView.CreateBaseDataTable(); if (query.ItemCode != "00000") { for (var r = 0; r < result.Enery[itList[0].ItemCodeName].Count; r++) { DataRow dr = dt.NewRow(); dr[1] = result.ObjectName[r]; dr[2] = query.ObjectNum; dr[3] = name; dr[4] = result.ObjectName[r]; dr[5] = result.ObjectName[r]; dr[6] = itemName; dr[7] = decimal.Round(decimal.Parse(result.Enery[itList[0].ItemCodeName][r].ToString()), 2).ToString(); dt.Rows.Add(dr); } } else { foreach (var i in result.Enery) { DataRow drs = dt.NewRow(); drs[1] = i.Key; drs[2] = "-"; drs[3] = "-"; drs[4] = "-"; drs[5] = "-"; drs[6] = "-"; drs[7] = "-"; dt.Rows.Add(drs); for (var r = 0; r < result.Enery[i.Key].Count; r++) { DataRow dr = dt.NewRow(); dr[1] = result.ObjectName[r]; dr[2] = query.ObjectNum; dr[3] = name; dr[4] = result.ObjectName[r]; dr[5] = result.ObjectName[r]; dr[6] = itemName; dr[7] = decimal.Round(decimal.Parse(result.Enery[i.Key][r].ToString()), 2); dt.Rows.Add(dr); } } } if (dt != null) { string temp_path = AppDomain.CurrentDomain.BaseDirectory + "temp_file\\"; if (!Directory.Exists(temp_path)) { Directory.CreateDirectory(temp_path); string[] files = Directory.GetFiles(temp_path); foreach (string fn in files) { File.Delete(temp_path + fn); } } string save_path = DateTime.Now.Ticks + ".xls"; string templatePath = AppDomain.CurrentDomain.BaseDirectory + "template\\能耗查询.xls"; TemplateParam param = new TemplateParam(name + " " + ItemName + " ", new CellParam(0, 0), query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), new CellParam(3, 0), false, new CellParam(4, 0)); param.DataColumn = new[] { 0, 3, 1, 7 }; param.ItemUnit = "(单位:" + itemUnit + ")"; param.ItemUnitCell = new CellParam(3, 4); dt.TableName = "能耗查询统计"; ExportHelper.ExportExcel(dt, temp_path + save_path, templatePath, param); return "{\"status\":\"success\",\"msg\":\"" + "/temp_file/" + save_path + "\"}"; } else { return "{\"status\":\"error\",\"msg\":\"导出失败:当前无任何数据\"}"; } } catch (Exception ex) { return "{\"status\":\"error\",\"msg\":\"导出失败:由于当前无数据或其他原因导致" + ex.Message + "\"}"; } }
public ResultOrder GetShopOrderNew(NTS.WEB.DataContact.QueryOrderObjects query) { try { string keyCatch = string.Empty; foreach (var q in query.AreaIdLst) { keyCatch += q.ToString() + "_"; } keyCatch += query.ItemCode + query.StartTime + query.EndTime + query.QueryType + query.ObjType; if (CacheHelper.GetCache(keyCatch) != null) { return (ResultOrder)CacheHelper.GetCache(keyCatch); } VerifyPersonOrAreaExist(query); #region 返回对象定义 ResultOrder resultOrder = new ResultOrder(); resultOrder.lineHighChart = new LineHighChart() { series = new List<Series>() }; resultOrder.lineHighChart.series.Add(new Series() { data = new List<EneryHighChart>() }); resultOrder.pieHighChart = new PieHighChart() { series = new List<Series>() }; resultOrder.pieHighChart.series.Add(new Series() { data = new List<EneryHighChart>() }); resultOrder.OrderLst = new List<EnergyOrder>(); #endregion List<Model.Itemcode> itemCodeList = new List<Model.Itemcode>(); if (query.ItemCode == "00000") {//总能耗 itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ParentID=0 ", " order by ItemcodeID"); resultOrder.Unit = "T";//标准煤单位 } else { itemCodeList = new BLL.Itemcode().GetItemcodeList(" and ItemCodeNumber='" + query.ItemCode + "'", " order by ItemcodeID"); if (itemCodeList.Count > 0) { resultOrder.Unit = itemCodeList[0].Unit;//单个分类分项单位 } } switch(query.QueryType) { case EnergyAnalyseQueryType.Convert2Co2: case EnergyAnalyseQueryType.Convert2Coal: resultOrder.Unit = "T";//标准煤单位 break; case EnergyAnalyseQueryType.Convert2Money: resultOrder.Unit = "元";//标准煤单位 break; } Dictionary<string, decimal> tempConvert = new Dictionary<string, decimal>(); Dictionary<string, int> tempObjectConvert = new Dictionary<string, int>(); var model = new BaseQueryModel(); model.IsDevice = 0; model.ObjectList = query.AreaIdLst; //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; } foreach (var item in itemCodeList) { model.ItemCode = item.ItemCodeNumber; BaseResult resList = reportBll.GetBaseEneryDataList(model, query.ObjType == AreaType.Liquid ? true : false); if (resList == null) { continue; } foreach (var r in resList.BaseLayerObjectResults) { if (!tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName)) { tempConvert.Add(r.Value.baseLayerObject.LayerObjectName, 0); } if (!tempObjectConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName)) { tempObjectConvert.Add(r.Value.baseLayerObject.LayerObjectName, r.Value.baseLayerObject.LayerObjectID); } if (tempConvert.ContainsKey(r.Value.baseLayerObject.LayerObjectName)) { if (query.ItemCode == "00000") {//选择总能耗后把其他分类分项的能耗转化成标准煤 switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认总能耗 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());// break; case EnergyAnalyseQueryType.UnitArea://单位面积能耗 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); break; case EnergyAnalyseQueryType.UnitPerson://人均能耗 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()) / decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString()); break; case EnergyAnalyseQueryType.Convert2Coal://标准煤 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); break; case EnergyAnalyseQueryType.Convert2Co2://二氧化碳 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCO2"].ToString()); break; case EnergyAnalyseQueryType.Convert2Money://人民币 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMMONEY"].ToString()); break; default: tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString());// break; } } else { switch (query.QueryType) { case EnergyAnalyseQueryType.Default: //默认总能耗 tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total; break; case EnergyAnalyseQueryType.UnitArea://单位面积能耗 tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total / decimal.Parse(r.Value.baseLayerObject.AreaNum.ToString()); break; case EnergyAnalyseQueryType.UnitPerson://人均能耗 tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total / decimal.Parse(r.Value.baseLayerObject.PersonNum.ToString()); break; case EnergyAnalyseQueryType.Convert2Coal://标准煤 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCOAL"].ToString()); break; case EnergyAnalyseQueryType.Convert2Co2://二氧化碳 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMCO2"].ToString()); break; case EnergyAnalyseQueryType.Convert2Money://人民币 tempConvert[r.Value.baseLayerObject.LayerObjectName] += decimal.Parse(r.Value.ConvertDataValueList["ITEMMONEY"].ToString()); break; default: tempConvert[r.Value.baseLayerObject.LayerObjectName] += r.Value.Total; break; } } } } } var tempAsc = from tt in tempConvert orderby tt.Value ascending select tt;//LineChart按照能耗值从低到高排序 foreach (var tempConvertItem in tempAsc) { resultOrder.lineHighChart.series[0].data.Add(new EneryHighChart() { name = tempConvertItem.Key, id = tempObjectConvert[tempConvertItem.Key].ToString(), y = decimal.Parse(tempConvertItem.Value.ToString("f2")) }); } var tempDesc = from tt in tempConvert orderby tt.Value descending select tt;//PieChart按照能耗值从高到低排序 int temppieindex = 1; decimal temppiecount = 0; foreach (var tempConvertItem in tempDesc) { if (temppieindex < 6) { resultOrder.pieHighChart.series[0].data.Add(new EneryHighChart() { name = tempConvertItem.Key, y = decimal.Parse(tempConvertItem.Value.ToString("f2")) }); } else { temppiecount += decimal.Parse(tempConvertItem.Value.ToString("f2")); } temppieindex++; } if (temppieindex > 6) { resultOrder.pieHighChart.series[0].data.Add(new EneryHighChart() { name = "其他", y = temppiecount }); } int order = 1; foreach (var tt in resultOrder.lineHighChart.series[0].data) { resultOrder.OrderLst.Add(new EnergyOrder() { Order = order, Tm = model.Unit == ChartUnit.unit_hour ? query.StartTime.ToString("yyyy-MM-dd") : query.StartTime.ToString("yyyy-MM-dd") + "~" + query.EndTime.ToString("yyyy-MM-dd"), Obj = tt.name, //ObjID=tempObjectConvert[tt.name], Val = tt.y, EneType = itemCodeList.Count > 1 ? "总能耗" : itemCodeList[0].ItemCodeName }); order++; } if (CacheHelper.GetCache(keyCatch) == null) { CacheHelper.SetCache(keyCatch, resultOrder, 30); } return resultOrder; } catch (Exception ee) { throw ee; } }
public ResultCostQuery GetCostQuery(QueryCost query) { ResultCostQuery result = new ResultCostQuery() { FeePie = new PieHighChart() { series = new List<Series>() }, FeeQueryCharts = new QuotaHighChart() { series = new List<EneryAnalyseSeries>() }, FeeAnalyses = new FeeAnalyses(), FeeTbl = new FeeTbl() { FeeList = new List<List<string>>() } }; result.FeePie.series.Add(new Series() { data = new List<EneryHighChart>() }); #region itemCodeList 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;//单个分类分项单位 result.FeeTbl.Unit = itemCodeList[0].Unit; result.FeeTbl.EneType = itemCodeList[0].ItemCodeName; result.FeeAnalyses.EnergyUnit = result.Unit; } } #endregion #region 生成EndTime switch (query.Particle) { case Particle.Month://月 query.StartTime格式为yyyy-MM-01 query.EndTime = query.StartTime.AddMonths(1).AddDays(-1); int day = DateTime.Now.Day; if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month)//月、年第一天不算进去 {//当月 query.EndTime = DateTime.Now.AddDays(-1);//精确到前一天的能耗值 } break; case Particle.Year://年 query.StartTime格式为yyyy-01-01 query.EndTime = query.StartTime.AddYears(1).AddMonths(-1).AddDays(-1); if (query.StartTime.Year == DateTime.Now.Year)//月、年第一天不算进去 { query.EndTime = DateTime.Now.AddDays(-1); } break; default: query.EndTime = query.StartTime.AddMonths(1).AddDays(-1); if (query.StartTime.Year == DateTime.Now.Year && query.StartTime.Month == DateTime.Now.Month) { query.EndTime = DateTime.Now.AddDays(-1); } break; } #endregion Dictionary<string, EnergyValueCost> tempConvert = new Dictionary<string, EnergyValueCost>(); tempConvert = GetSingleItemCodeValue(query, itemCodeList); if (tempConvert.Count > 0) { result.FeeType = FeeType.平时计费.ToString(); #region 绑定Highchart #region 绑定Highchart result.FeeQueryCharts.series.Add(new EneryAnalyseSeries() { name = "平时费用", data = (from item in tempConvert select decimal.Round(item.Value.EnergyCost, 2)).ToList() }); #endregion #region 绑定饼图 result.FeePie.series[0].data.Add(new EneryHighChart() { name = "平时费用", y = decimal.Round(decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Sum().ToString()), 2) }); #endregion #endregion #region 绑定表格 foreach (var item in tempConvert) { string time = ""; switch (query.Particle) { case Particle.Month: time = item.Key; break; case Particle.Year: time = item.Key.Substring(0, item.Key.LastIndexOf('-')); break; } List<string> fl = new List<string>(); fl.Add(time); fl.Add(item.Value.EnergyValue.ToString("0.00")); fl.Add((item.Value.EnergyCost).ToString("0.00")); result.FeeTbl.FeeList.Add(fl); } #endregion #region 绑定分析 result.FeeAnalyses.TotalEnergy = decimal.Round( decimal.Parse(tempConvert.Select(t => t.Value.EnergyValue).Sum().ToString()), 2); result.FeeAnalyses.TotalVal = decimal.Round( decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Sum().ToString()), 2); result.FeeAnalyses.MaxVal = decimal.Round( decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Max().ToString()), 2); result.FeeAnalyses.MinVal = decimal.Round( decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Min().ToString()), 2); result.FeeAnalyses.AvgVal = decimal.Round( decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Average().ToString()), 2); #endregion if (query.Particle==Particle.Month) { query.StartTime = query.StartTime.AddMonths(-1); query.EndTime = query.EndTime.AddMonths(-1); } else { query.StartTime = query.StartTime.AddYears(-1); query.EndTime = query.EndTime.AddYears(-1); } tempConvert = GetSingleItemCodeValue(query, itemCodeList); result.FeeAnalyses.EnergyLastMonth = decimal.Round( decimal.Parse(tempConvert.Select(t => t.Value.EnergyCost).Sum().ToString()), 2); if (result.FeeAnalyses.EnergyLastMonth > 0) { result.FeeAnalyses.CompareLastMonth = decimal.Round(100 * (result.FeeAnalyses.TotalVal - result.FeeAnalyses.EnergyLastMonth) / result.FeeAnalyses.EnergyLastMonth, 2) .ToString(CultureInfo.InvariantCulture) + "%"; } } else { return null; } return result; }
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; } }