using DataServer.api; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Net; using System.Net.Http; using System.Security.Policy; using System.Text; using System.Web.Http; namespace DongYingAPI.Controllers.api { /// /// 空调-用电情况 /// public class GetElectricalConditionController : ApiController { DataServer.BLL.electricity_data bll = new DataServer.BLL.electricity_data(); DataServer.BLL.device_info bll_info = new DataServer.BLL.device_info(); public HttpResponseMessage Get() { var res = new get_electrical_condition(); //表名 var date_base = ConfigurationManager.AppSettings["MySQLDataBase"].ToString(); try { var data = new List(); var list = bll_info.GetModelList("").Where(x => x.FloorName == "科技馆负一层地源热泵").ToList(); #region 天 //今天 var now = DateTime.Now; var jdate = DateTime.Now.ToString("yyyy-MM-dd HH:00:00"); var jtime = now.ToString("yyyyMM"); var a = bll.IsExistsTable(date_base, "electricity_data_" + jtime); if (a == false) { bll.CreateTable(jtime); } //昨天 var zdate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 00:00:00"); var ztime = now.ToString("yyyyMM"); var b = bll.IsExistsTable(date_base, "electricity_data_" + ztime); if (b == false) { bll.CreateTable(ztime); } //前天 var qdate = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); decimal? num1 = 0; decimal? num2 = 0; decimal? num3 = 0; foreach (var aitem in list) { //今天列表 var list1 = bll.GetModelListDate(" DeviceId='"+aitem.DeviceId+ "' and EntireTime='"+ jdate + "'", jtime); num1 += list1.Sum(x=>Convert.ToDecimal(x.EH)); //昨天列表 var list2 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + zdate + "'", ztime); num2 += list2.Sum(x => Convert.ToDecimal(x.EH)); //前天列表 var list3 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + qdate + "'", jtime); num3 += list3.Sum(x => Convert.ToDecimal(x.EH)); } #endregion #region 月 //今月 var jmdate = DateTime.Now.ToString("yyyy-MM-dd HH:00:00"); var jmtime = now.ToString("yyyyMM"); var am = bll.IsExistsTable(date_base, "electricity_data_" + jmtime); if (am == false) { bll.CreateTable(jmtime); } //昨月 var zmdate = DateTime.Now.AddDays(-1).ToString("yyyy-MM-01 00:00:00"); var zmtime = now.ToString("yyyyMM"); var bm = bll.IsExistsTable(date_base, "electricity_data_" + zmtime); if (bm == false) { bll.CreateTable(zmtime); } //前月 var qmdate1 = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-01 00:00:00"); var qmdate2=Convert.ToDateTime(qmdate1); var qmdate = qmdate2.AddDays(-1); var qmtime = qmdate.ToString("yyyyMM"); var qm = bll.IsExistsTable(date_base, "electricity_data_" + qmtime); if (qm == false) { bll.CreateTable(qmtime); } decimal? mnum1 = 0; decimal? mnum2 = 0; decimal? mnum3 = 0; foreach (var aitem in list) { //今月列表 var mlist1 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + jmdate + "'", jmtime); mnum1 += mlist1.Sum(x => Convert.ToDecimal(x.EH)); //昨月列表 var mlist2 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + zmdate + "'", zmtime); mnum2 += mlist2.Sum(x => Convert.ToDecimal(x.EH)); //前月列表 var mlist3 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + qmdate + "'", jmtime); mnum3 += mlist3.Sum(x => Convert.ToDecimal(x.EH)); } #endregion #region 年 //今年 var jydate = DateTime.Now.ToString("yyyy-MM-dd HH:00:00"); var jytime = now.ToString("yyyyMM"); var ay = bll.IsExistsTable(date_base, "electricity_data_" + jytime); if (ay == false) { bll.CreateTable(jmtime); } //昨年 var zydate = DateTime.Now.AddYears(-1).ToString("yyyy-12-31 00:00:00"); var zytime = DateTime.Now.AddYears(-1).ToString("yyyy12"); var by = bll.IsExistsTable(date_base, "electricity_data_" + zytime); if (by == false) { bll.CreateTable(zytime); } //前年 var qydate1 = DateTime.Now.AddYears(-2).ToString("yyyy-12-31 00:00:00"); var qydate = Convert.ToDateTime(qydate1); var qytime = qmdate.ToString("yyyyMM"); var qy = bll.IsExistsTable(date_base, "electricity_data_" + qytime); if (qy == false) { bll.CreateTable(qytime); } decimal? ynum1 = 0; decimal? ynum2 = 0; decimal? ynum3 = 0; foreach (var aitem in list) { //今年列表 var ylist1 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + jydate + "'", jytime); ynum1 += ylist1.Sum(x => Convert.ToDecimal(x.EH)); //昨年列表 var ylist2 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + zydate + "'", zytime); ynum2 += ylist2.Sum(x => Convert.ToDecimal(x.EH)); //前年列表 var ylist3 = bll.GetModelListDate(" DeviceId='" + aitem.DeviceId + "' and EntireTime='" + qydate + "'", qytime); ynum3 += ylist3.Sum(x => Convert.ToDecimal(x.EH)); } #endregion var model = new electrical_conditionData(); model.ToDay = num1 - num2; model.YearDay = num2 - num3; model.ThisMonth = mnum1 - mnum2; model.LastMonth = mnum2 - mnum3; model.ThisYear= ynum1 - ynum2; model.LastYear= ynum2 - ynum3; if (model.YearDay == 0) { model.DayDency = 100; } else { model.DayDency = model.ToDay /model.YearDay * 100; if (model.DayDency < 0) { model.DayDency = model.DayDency * -1; } if (model.ToDay < model.DayDency) { model.DayDency = model.DayDency; } } if (model.LastMonth == 0) { model.MonthDency = 100; } else { model.MonthDency = model.ToDay / model.YearDay * 100; if (model.DayDency < 0) { model.DayDency = model.DayDency * -1; } if (model.ThisMonth < model.LastMonth) { model.DayDency = model.DayDency; } } if (model.LastYear == 0) { model.YearDency = 100; } else { model.YearDency = model.ToDay / model.YearDay * 100; if (model.DayDency < 0) { model.DayDency = model.DayDency * -1; } if (model.ThisYear < model.LastYear) { model.DayDency = model.DayDency; } } 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; } } }