using DataServer.api; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Web.Http; namespace JinanCementFactoryAPI.Controllers.api { /// /// 能效管理1-能耗日历 /// public class GetEnergyCalendarController : ApiController { DataServer.BLL.electrical_installation bll_electrical = new DataServer.BLL.electrical_installation(); DataServer.BLL.water_meter bll_water = new DataServer.BLL.water_meter(); DataServer.BLL.coal_equipment bll_coal = new DataServer.BLL.coal_equipment(); DataServer.BLL.gw_data bll_gw = new DataServer.BLL.gw_data(); // GET api/ public HttpResponseMessage Get(string type="", string date = "") { var res = new get_carbon_footprint(); var now = DateTime.Now; try { if (!string.IsNullOrEmpty(type)&&!string.IsNullOrEmpty(date)) { if (type == "电") { var sdate1 = date + "-01 00:00:00"; var sdate2 = Convert.ToDateTime(sdate1).AddMonths(1).AddDays(-1); var alist = new List(); var list = bll_electrical.GetModelList(""); var time_count = Convert.ToInt32(sdate2.Day); for (int i = 0; i < time_count; i++) { var ddate = now.AddMonths(1).ToString("yyyy-MM-01 00:00:00"); var date1 = Convert.ToDateTime(ddate).AddDays(-1); var sdate = Convert.ToDateTime(date1).AddDays(-i).ToString("yyyy-MM-dd 00:00:00"); var edate = Convert.ToDateTime(date1).AddDays(-(i + 1)).ToString("yyyy-MM-dd 00:00:00"); string stime; if (Convert.ToDateTime(sdate).Month < 10) { stime = Convert.ToDateTime(sdate).ToString("yyyy_M"); } else { stime = Convert.ToDateTime(sdate).ToString("yyyy_MM"); } decimal? num1 = 0; decimal? num2 = 0; var model = new carbon_footprintData(); var slist = string.Join(",", list.Select(x => x.EH)); var list1 = new List(); if (Convert.ToDateTime(sdate) == Convert.ToDateTime(now.ToString("yyyy-MM-dd 00:00:00"))) { list1 = bll_gw.GetModelListsDate(slist, stime).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); } else { list1 = bll_gw.GetModelListsDate(slist, stime).Where(x => x.XTimeStamp == Convert.ToDateTime(sdate)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); } var list2 = bll_gw.GetModelListsDate(slist, stime).Where(x => x.XTimeStamp == Convert.ToDateTime(edate)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); foreach (var item in list1) { num1 += Convert.ToDecimal(item.XValue); } foreach (var item in list2) { num2 += Convert.ToDecimal(item.XValue); } model.time = Convert.ToDateTime(sdate).ToString("dd"); model.CarbonValue = num1 - num2; if (model.CarbonValue < 0) { model.CarbonValue = 0; } alist.Add(model); } var blist = alist.OrderBy(x => x.time).ToList(); res.code = 200; res.msg = "成功"; res.data = blist; } if (type == "水") { var sdate1 = date + "-01 00:00:00"; var sdate2 = Convert.ToDateTime(sdate1).AddMonths(1).AddDays(-1); var alist = new List(); var list = bll_water.GetModelList(""); var time_count = Convert.ToInt32(sdate2.Day); for (int i = 0; i < time_count; i++) { var ddate = now.AddMonths(1).ToString("yyyy-MM-01 00:00:00"); var date1 = Convert.ToDateTime(ddate).AddDays(-1); var sdate = Convert.ToDateTime(date1).AddDays(-i).ToString("yyyy-MM-dd 00:00:00"); var edate = Convert.ToDateTime(date1).AddDays(-(i + 1)).ToString("yyyy-MM-dd 00:00:00"); string stime; if (Convert.ToDateTime(sdate).Month < 10) { stime = Convert.ToDateTime(sdate).ToString("yyyy_M"); } else { stime = Convert.ToDateTime(sdate).ToString("yyyy_MM"); } decimal? num1 = 0; decimal? num2 = 0; var model = new carbon_footprintData(); var slist = string.Join(",", list.Select(x => x.Reserve1)); var list1 = new List(); if (Convert.ToDateTime(sdate) == Convert.ToDateTime(now.ToString("yyyy-MM-dd 00:00:00"))) { list1 = bll_gw.GetModelListsDate(slist, stime).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); } else { list1 = bll_gw.GetModelListsDate(slist, stime).Where(x => x.XTimeStamp == Convert.ToDateTime(sdate)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); } var list2 = bll_gw.GetModelListsDate(slist, stime).Where(x => x.XTimeStamp == Convert.ToDateTime(edate)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); foreach (var item in list1) { num1 += Convert.ToDecimal(item.XValue); } foreach (var item in list2) { num2 += Convert.ToDecimal(item.XValue); } model.time = Convert.ToDateTime(sdate).ToString("dd"); model.CarbonValue = num1-num2; if (model.CarbonValue < 0) { model.CarbonValue = 0; } alist.Add(model); } var blist = alist.OrderBy(x => x.time).ToList(); res.code = 200; res.msg = "成功"; res.data = blist; } if (type == "煤") { var sdate1 = date + "-01 00:00:00"; var sdate2 = Convert.ToDateTime(sdate1).AddMonths(1).AddDays(-1); var alist = new List(); var list = bll_coal.GetModelList(""); var time_count = Convert.ToInt32(sdate2.Day); for (int i = 0; i < time_count; i++) { var ddate = now.AddMonths(1).ToString("yyyy-MM-01 00:00:00"); var date1 = Convert.ToDateTime(ddate).AddDays(-1); var sdate = Convert.ToDateTime(date1).AddDays(-i).ToString("yyyy-MM-dd 00:00:00"); var edate = Convert.ToDateTime(date1).AddDays(-(i + 1)).ToString("yyyy-MM-dd 00:00:00"); string stime; if (Convert.ToDateTime(sdate).Month < 10) { stime = Convert.ToDateTime(sdate).ToString("yyyy_M"); } else { stime = Convert.ToDateTime(sdate).ToString("yyyy_MM"); } decimal? num1 = 0; decimal? num2 = 0; var model = new carbon_footprintData(); var slist = string.Join(",", list.Select(x => x.Reserve1)); var list1 = new List(); if (Convert.ToDateTime(sdate) == Convert.ToDateTime(now.ToString("yyyy-MM-dd 00:00:00"))) { list1 = bll_gw.GetModelListsDate(slist, stime).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); } else { list1 = bll_gw.GetModelListsDate(slist, stime).Where(x => x.XTimeStamp == Convert.ToDateTime(sdate)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); } var list2 = bll_gw.GetModelListsDate(slist, stime).Where(x => x.XTimeStamp == Convert.ToDateTime(edate)).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); foreach (var item in list1) { num1 += Convert.ToDecimal(item.XValue); } foreach (var item in list2) { num2 += Convert.ToDecimal(item.XValue); } model.time = Convert.ToDateTime(sdate).ToString("dd"); model.CarbonValue = num1 - num2; if (model.CarbonValue < 0) { model.CarbonValue = 0; } alist.Add(model); } var blist = alist.OrderBy(x => x.time).ToList(); res.code = 200; res.msg = "成功"; res.data = blist; } } else { res.code = 201; res.msg = "参数不能为空"; } } 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; } } }