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.Text; using System.Web.Http; namespace JinanCementFactoryAPI.Controllers.api { /// /// 碳流图 /// public class GetCarbonFluxController : ApiController { DataServer.BLL.coal_equipment bll = new DataServer.BLL.coal_equipment(); DataServer.BLL.gw_data bll_gw=new DataServer.BLL.gw_data(); // GET api/ #region 旧代码 //public HttpResponseMessage Get() //{ // var res = new get_carbon_flux(); // try // { // var list = bll.GetModelList(""); // var alist = new List(); // var model=new carbon_fluxData(); // model.AmountName = "总量"; // decimal? num = 0; // var now=DateTime.Now; // var sdate = now.ToString("yyyy-MM-dd 00:00:00"); // foreach (var item in list) // { // var slist1 = bll_gw.GetModelList(" XTagName like '%" + item.Reserve1 + "%'").OrderByDescending(x=>x.XTimeStamp).FirstOrDefault(); // num +=Convert.ToDecimal(slist1.XValue); // var blist = new List(); // var list1 = list.DistinctBy(x => x.CoalName).ToList(); // //foreach (var aitem in list1) // //{ // // var list2 = bll_gw.GetModelList(" XTagName like '%" + aitem.Reserve1 + "%' and XTimeStamp>='" + sdate + "' and XTimeStamp<'" + edate + "'"); // // var model1 = new carbon_fluxlist(); // // model1.CoalName= aitem.CoalName; // // var flist1=list.Where(x=>x.CoalName==aitem.CoalName).ToList(); // // decimal? num1 = 0; // // var clist=new List(); // // foreach (var bitem in flist1) // // { // // var slist2= bll_gw.GetModelList(" XTagName like '%" + bitem.Reserve1 + "%' and XTimeStamp>='" + sdate + "' and XTimeStamp<'" + edate + "'"); // // var model2 = new carbon_flux(); // // model2.CarbonName = bitem.CoalDescription; // // decimal? num2 = 0; // // foreach (var citem in slist2) // // { // // num1 +=Convert.ToDecimal(citem.XValue); // // num2=Convert.ToDecimal( citem.XValue) * Convert.ToDecimal(25.909) * Convert.ToDecimal(0.02610) * 44 / 12; // // } // // model2.CarbonValue= bitem.CoalValue * Convert.ToDecimal(25.909) * Convert.ToDecimal(0.02610) * 44 / 12; // // clist.Add(model2); // // } // // model1.CoalValue= num1 * Convert.ToDecimal(25.909) * Convert.ToDecimal(0.02610) * 44 / 12; // // model1.data = clist; // // blist.Add(model1); // //} // model.list = blist; // } // model.AmountValue = num * Convert.ToDecimal(25.909) * Convert.ToDecimal(0.02610) * 44 / 12; // alist.Add(model); // res.code = 200; // res.msg = "成功"; // res.data = alist; // } // 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; //} #endregion public HttpResponseMessage Get() { var res = new get_carbon_flux(); try { var list = bll.GetModelList(""); var alist = new List(); var model = new carbon_fluxData(); model.AmountName = "总量"; decimal? num1 = 0; decimal? num2 = 0; var now = DateTime.Now; var date = now.ToString("yyyy-MM-dd 00:00:00"); string time; if (Convert.ToDateTime(now).Month < 10) { time = now.ToString("yyyy_M"); } else { time = now.ToString("yyyy_MM"); } var slists=string.Join(",", list.Select(x=>x.Reserve1)); var blist = new List(); var slist = bll_gw.GetModelListsDate(slists, time).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); var zlist = bll_gw.GetModelListsDate(slists, 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 slist) { num1 += Convert.ToDecimal(item.XValue); } foreach (var item in zlist) { num2 += Convert.ToDecimal(item.XValue); } var list1 = list.DistinctBy(x => x.CoalName).ToList(); //var list2 = list.DistinctBy(x=>x.CoalName).Where(x => x.CoalName==item.CoalName).ToList(); foreach (var aitem in list1) { decimal? num3 = 0; decimal? num4 = 0; var model1 = new carbon_fluxlist(); model1.CoalName = aitem.CoalName; var clist = new List(); var list2 = list.Where(x => x.CoalName == aitem.CoalName).ToList(); var slists1=string.Join(",", list2.Select(x=>x.Reserve1)); var slist1 = bll_gw.GetModelListsDate(slists1, time).GroupBy(x => x.XTagName).Select(g => g.OrderByDescending(x => x.XTimeStamp).FirstOrDefault()).ToList(); var zlist1 = bll_gw.GetModelListsDate(slists1, 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) { num3 += Convert.ToDecimal(item.XValue); } foreach (var item in zlist1) { num4 += Convert.ToDecimal(item.XValue); } foreach (var bitem in list2) { decimal? num5 = 0; decimal? num6 = 0; var model2 = new carbon_flux(); model2.CarbonName = bitem.CoalDescription; foreach (var item in slist1) { num5 = Convert.ToDecimal(item.XValue); } foreach (var item in zlist1) { num6 = Convert.ToDecimal(item.XValue); } model2.CarbonValue = Convert.ToDecimal(Math.Round(Convert.ToDouble((num5 - num6) * Convert.ToDecimal(25.909) * Convert.ToDecimal(0.02610) * 44 / 12), 3)); clist.Add(model2); } model1.CoalValue = Convert.ToDecimal(Math.Round(Convert.ToDouble((num3 - num4) * Convert.ToDecimal(25.909) * Convert.ToDecimal(0.02610) * 44 / 12), 3)); model1.data = clist; blist.Add(model1); } model.list = blist; model.AmountValue = Convert.ToDecimal(Math.Round(Convert.ToDouble((num1 - num2) * Convert.ToDecimal(25.909) * Convert.ToDecimal(0.02610) * 44 / 12), 3)); alist.Add(model); res.code = 200; res.msg = "成功"; res.data = alist; } 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; } } }