using DataServer.api; using Microsoft.Ajax.Utilities; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Web.Http; namespace JinanCementFactoryAPI.Controllers.api { /// /// 能效管理1-系统能耗概况 /// public class GetSystemOverviewController : ApiController { DataServer.BLL.electrical_installation bll = new DataServer.BLL.electrical_installation(); DataServer.BLL.gw_data bll_gw = new DataServer.BLL.gw_data(); public HttpResponseMessage Get() { var res = new get_system_overview(); try { var list = bll.GetModelList(""); var data = new List(); var now = DateTime.Now; string time; if (now.Month < 10) { time = now.ToString("yyyy_M"); } else { time = now.ToString("yyyy_MM"); } var date = now.ToString("yyyy-MM-dd 00:00:00"); #region 回转窑 var hlist = list.Where(x => x.EquipmentName.Contains("回转窑") || x.EquipmentName.Contains("空压机")).ToList(); var alist1=string.Join(",", hlist.Select(x=>x.EH)); decimal? hnum1 = 0; decimal? hnum2 = 0; var hlist1 = bll_gw.GetModelListsDate(alist1, time).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); var hlist2 = bll_gw.GetModelListsDate(alist1, time).Where(x => x.XTimeStamp == Convert.ToDateTime(date)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); foreach (var item in hlist1) { hnum1 += Convert.ToDecimal(item.XValue); } foreach (var item in hlist2) { hnum2 += Convert.ToDecimal(item.XValue); } var hnum = hnum1 - hnum2; #endregion #region 煤磨 var mlist = list.Where(x => x.EquipmentName.Contains("煤磨")).ToList(); var alist2 = string.Join(",", mlist.Select(x => x.EH)); decimal? mnum1 = 0; decimal? mnum2 = 0; var mlist1 = bll_gw.GetModelListsDate(alist2, time).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); var mlist2 = bll_gw.GetModelListsDate(alist2, time).Where(x => x.XTimeStamp == Convert.ToDateTime(date)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); foreach (var item in mlist1) { mnum1 += Convert.ToDecimal(item.XValue); } foreach (var item in mlist2) { mnum2 += Convert.ToDecimal(item.XValue); } var mnum = mnum1 - mnum2; #endregion #region 生料 var slist = list.Where(x => x.EquipmentName.Contains("生料")).ToList(); var alist3 = string.Join(",", slist.Select(x => x.EH)); decimal? snum1 = 0; decimal? snum2 = 0; var slist1 = bll_gw.GetModelListsDate(alist3, time).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); var slist2 = bll_gw.GetModelListsDate(alist3, time).Where(x => x.XTimeStamp == Convert.ToDateTime(date)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); foreach (var item in slist1) { snum1 += Convert.ToDecimal(item.XValue); } foreach (var item in slist2) { snum2 += Convert.ToDecimal(item.XValue); } var snum = snum1 - snum2; #endregion #region 破碎 var plist = list.Where(x => x.EquipmentName.Contains("破碎")).ToList(); var alist4 = string.Join(",", plist.Select(x => x.EH)); decimal? pnum1 = 0; decimal? pnum2 = 0; var plist1 = bll_gw.GetModelListsDate(alist4, time).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); var plist2 = bll_gw.GetModelListsDate(alist4, time).Where(x => x.XTimeStamp == Convert.ToDateTime(date)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); foreach (var item in plist1) { pnum1 += Convert.ToDecimal(item.XValue); } foreach (var item in plist2) { pnum2 += Convert.ToDecimal(item.XValue); } var pnum = pnum1 - pnum2; #endregion var model = new system_overviewData(); model.Amount = hnum + mnum + snum + pnum; var adata = new List(); var amodel = new system_overview(); amodel.RotaryKiln = hnum; amodel.CoalMill = mnum; amodel.RawMaterial = snum; amodel.Broken = pnum; adata.Add(amodel); model.list= adata; data.Add(model); res.code = 200; res.msg = "成功"; res.data = data; } catch (Exception ex) { res.code = 500; res.msg = ex.Message; } HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(JsonConvert.SerializeObject(res), Encoding.GetEncoding("UTF-8"), "application/json") }; return result; } } }