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.Text; using System.Web.Http; using System.Web.Mvc; using System.Xml.Schema; namespace DongYingAPI.Controllers.api { /// /// 照明-照明负荷 /// public class GetIlluminationLoadController : 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(string date = "") { var res = new get_illumination_load(); try { var data = new List(); var time = DateTime.Now.ToString("yyyyMM"); #region 表是否存在 //表名 var date_base = ConfigurationManager.AppSettings["MySQLDataBase"].ToString(); //今月的表是否存在 var jtime = DateTime.Now.ToString("yyyyMM"); var a1 = bll.IsExistsTable(date_base, "electricity_data_" + jtime); if (a1 == false) { bll.CreateTable(jtime); } #endregion var list = bll_info.GetModelList("").Where(x => x.DeviceName.Contains("照明")).ToList(); var lists = string.Join(",", list.Select(x => x.DeviceId)); var alist = bll.GetModelListsDate(lists, time); if (date == "日") { var time_count = Convert.ToInt32(DateTime.Now.Hour); for (int i = 1; i < time_count; i++) { // 只处理今年的数据 if (DateTime.Now.AddHours(-i).Day != DateTime.Now.Day) { continue; } var model = new illumination_loadData(); string now = ""; model.time = DateTime.Now.AddHours(-i).ToString("HH:00"); now = DateTime.Now.ToString("yyyy-MM-dd HH:00:00"); var datetime = Convert.ToDateTime(now); var sdate = datetime.AddHours(-i); var sdate1=datetime.AddDays(-1).AddHours(-i); decimal? num3 = 0; decimal? num4 = 0; //var list1 = bll_info.GetModelList("").Where(x =>x.DeviceName.Contains("空调")&& x.EntireTime >= sdate && x.EntireTime < edate).ToList(); var list1 = alist.Where(x=>x.EntireTime==Convert.ToDateTime(sdate)).ToList(); var list2 = alist.Where(x => x.EntireTime == Convert.ToDateTime(sdate1)).ToList(); decimal? num1 = list1.Sum(x => Convert.ToDecimal(x.P)); decimal? num2 = list2.Sum(x => Convert.ToDecimal(x.P)); num3 += Convert.ToDecimal(num1); num4 += Convert.ToDecimal(num2); model.ToDay = num3; model.YearDay =num4; if (model.ToDay > model.YearDay) { model.Tendency = "上升"; } else { model.Tendency = "下降"; } data.Add(model); } } else if (date == "月") { var time_count = Convert.ToInt32(DateTime.Now.Day); for (int i = 0; i < time_count; i++) { // 只处理今月的数据 if (DateTime.Now.AddDays(-i).Month != DateTime.Now.Month) { continue; } var model = new illumination_loadData(); var atime = DateTime.Now.AddDays(-i).ToString("MM-dd"); model.time = atime; var now = DateTime.Now.AddDays(-i); var sdate = now.ToString("yyyy-MM-dd") + " 00:00:00"; var edate = now.AddDays(+1).ToString("yyyy-MM-dd") + " 00:00:00"; var sdate1 = now.AddMonths(-1).ToString("yyyy-MM-dd") + " 00:00:00"; var edate1 = now.AddMonths(-1).AddDays(+1).ToString("yyyy-MM-dd") + " 00:00:00"; decimal? num3 = 0; decimal? num4 = 0; var list1 = alist.Where(x=>x.EntireTime>=Convert.ToDateTime(sdate)&&x.EntireTime x.EntireTime >= Convert.ToDateTime(sdate1) && x.EntireTime < Convert.ToDateTime(edate1)).ToList(); decimal? num1 = list1.Sum(x => Convert.ToDecimal(x.P)); decimal? num2 = list2.Sum(x => Convert.ToDecimal(x.P)); num3 += Convert.ToDecimal(num1); num4 += Convert.ToDecimal(num2); model.ToDay = num3; model.YearDay =num4; if (model.ToDay > model.YearDay) { model.Tendency = "上升"; } else { model.Tendency = "下降"; } data.Add(model); } } else if (date == "年") { var time_count = Convert.ToInt32(DateTime.Now.Month); for (int i = 0; i < time_count; i++) { var model = new illumination_loadData(); var atime = DateTime.Now.AddMonths(-i).ToString("MM月"); model.time = atime; var now = DateTime.Now.AddMonths(-i); var sdate = now.ToString("yyyy-MM") + "-01 00:00:00"; var edate = now.AddMonths(+1).ToString("yyyy-MM") + "-01 00:00:00"; var sdate1 = now.AddYears(-1).ToString("yyyy-MM") + "-01 00:00:00"; var edate1= now.AddYears(-1).AddMonths(+1).ToString("yyyy-MM") + "-01 00:00:00"; var ctime = now.ToString("yyyyMM"); var etime = now.AddYears(-1).ToString("yyyyMM"); var c = bll.IsExistsTable(date_base, "electricity_data_" + ctime); if (c == false) { bll.CreateTable(ctime); } var e= bll.IsExistsTable(date_base, "electricity_data_" + etime); if (e == false) { bll.CreateTable(etime); } decimal? num3 = 0; decimal? num4 = 0; var list1 = bll.GetModelListsDate(lists, ctime).Where(x => x.EntireTime >= Convert.ToDateTime(sdate) && x.EntireTime < Convert.ToDateTime(edate)).ToList(); var list2 = bll.GetModelListsDate(lists, etime).Where(x => x.EntireTime >= Convert.ToDateTime(sdate1) && x.EntireTime < Convert.ToDateTime(edate1)).ToList(); decimal? num1 = list1.Sum(x => Convert.ToDecimal(x.P)); decimal? num2 = list2.Sum(x => Convert.ToDecimal(x.P)); num3 += Convert.ToDecimal(num1); num4 += Convert.ToDecimal(num2); model.ToDay = num3; model.YearDay = num4; if (model.ToDay > model.YearDay) { model.Tendency = "上升"; } else { model.Tendency = "下降"; } data.Add(model); } } var adata=data.OrderBy(x=>x.time).ToList(); res.code = 200; res.msg = "成功"; res.data = adata; } 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; } } }