using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using MadRunFabric.Common;
using MadRunFabric.Model.PLCAutomationApi;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using MongoDB.Driver;
using PLCAutomationApi.IRepositories;
namespace PLCAutomationApi.Controllers
{
///
/// plc数据
///
[ApiVersion("6.0")]
[Produces("application/json")]
[Route("api/[controller]")]
public class PLCDataController : BaseController
{
public IActionResult Index()
{
return View();
}
private readonly ILogger _logger;
private readonly IPLC_InputDataRepository _plc_inputdataRepository;
private readonly IPLC_MonthDataRepository _plc_monthdataRepository;
public PLCDataController(ILogger logger, IPLC_InputDataRepository plc_inputdataRepository, IPLC_MonthDataRepository plc_monthdataRepository)
{
_logger = logger;
_plc_inputdataRepository = plc_inputdataRepository;
_plc_monthdataRepository = plc_monthdataRepository;
}
///
/// 用电量信息
///
///
///
[HttpGet("getelectricdatalisto")]
public IActionResult GetElectricDataListO(string projectid, int datetype = 4)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddDays(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddDays(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Day;
dr["DataValue"] = 200 - test[i - 1];
dt.Rows.Add(dr);
}
//int h = DateTime.Now.Hour;
//for (int i = 0; i <= h; i++)
//{
// //Random rd = new Random();
// //int j = rd.Next(1, 20);
// DataRow dr = dt.NewRow();
// dr["TimeValue"] = i;
// if (i % 2 == 0)
// {
// dr["DataValue"] = 200 - (i*2);
// }
// else
// {
// dr["DataValue"] = 150 + (i * 2);
// }
// dt.Rows.Add(dr);
//}
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddMonths(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddMonths(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Month;
dr["DataValue"] = 1000 + test[i - 1];
dt.Rows.Add(dr);
}
}
if (datetype == 3)//年
{
for (int i = 2016; i <= 2018; i++)
{
//Random rd = new Random();
//int j = rd.Next(1, 20);
DataRow dr = dt.NewRow();
dr["TimeValue"] = i;
dr["DataValue"] = 1500 + (i / 4);
dt.Rows.Add(dr);
}
}
//string start = string.Empty;
//string end = string.Empty;
//GetStartEndTime(datetype, out start, out end);
//var result = _runningchartRepository.GetRunningList(projectid, start, end, userinfo);
return Success("获取成功", dt);
}
///
/// 用电量信息
///
///
///
[HttpGet("getelectricdatalist")]
public async Task GetElectricDataList(string projectname, int datetype = 4)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
#region
for (int i = -10; i < 0; i++)
{
string starttime = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");
string endtime = DateTime.Now.AddDays(i + 1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 1 & s.inputtime == starttime & s.deleteflag == 0&s.projectname ==projectname ));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddDays(i + 1).Day;//starttime;
dr["DataValue"] = totalnum * 1500;
dt.Rows.Add(dr);
}
}
#endregion
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
#region 新修改
for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & (int)s.datamonth == dtime.Month & s.datakind == 1 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum * 1500;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.AddDays(1 - dtime.Day).ToString("yyyy-MM-dd");
string endtime = dtime.AddDays(1 - dtime.Day).AddMonths(1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 1 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 30; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 1 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 30; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel == null)
{
for (int j = 1; j < 30; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == dtime.AddDays(-j).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum * 1500;
dt.Rows.Add(dr);
}
}*/
#endregion
}
if (datetype == 3)//年
{
#region 新修改
for (int i = -2; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddYears(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & s.datakind == 1 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = totalnum * 1500;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = 2 ; i >= 0; i--)
{
DateTime dt1= DateTime.Parse(DateTime.Now.AddYears(-i).Year + "-01-01 00:00:00");
DateTime dt2 = DateTime.Parse(DateTime.Now.AddYears(-i + 1).Year + "-01-01 00:00:00");
string starttime = DateTime.Now.AddYears(-i).Year + "-01-01"; //DateTime.Parse (DateTime.Now.AddYears(-3).Year+"01-01 00:00:00" );
string endtime = DateTime.Now.AddYears(-i+1).Year + "-01-01";
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 1 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 365; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 1 & s.inputtime == dt1.AddDays(j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 365; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == dt2.AddDays(j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(-i).Year;
dr["DataValue"] = totalnum * 1500;
dt.Rows.Add(dr);
}
//Random rd = new Random();
//int j = rd.Next(1, 20);
}*/
#endregion
}
//string start = string.Empty;
//string end = string.Empty;
//GetStartEndTime(datetype, out start, out end);
//var result = _runningchartRepository.GetRunningList(projectid, start, end, userinfo);
return Success("获取成功", dt);
}
///
/// 用水量信息
///
///
///
[HttpGet("getwaterdatalist")]
public async Task GetWaterDataList(string projectname, int datetype = 4)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
#region
for (int i = -10; i < 0; i++)
{
string starttime = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");
string endtime = DateTime.Now.AddDays(i + 1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 0 & s.inputtime == starttime & s.deleteflag == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 0 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddDays(i + 1).Day; //starttime;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
#region 新修改
for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & (int)s.datamonth == dtime.Month & s.datakind == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.AddDays(1 - dtime.Day).ToString("yyyy-MM-dd");
string endtime = dtime.AddDays(1 - dtime.Day).AddMonths(1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 0 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 30; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 0 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 0 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 30; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 0 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}*/
#endregion
}
if (datetype == 3)//年
{
#region 新修改
for (int i = -2; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddYears(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & s.datakind == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = 2; i >= 0; i--)
{
DateTime dt1 = DateTime.Parse(DateTime.Now.AddYears(-i).Year + "-01-01 00:00:00");
DateTime dt2 = DateTime.Parse(DateTime.Now.AddYears(-i + 1).Year + "-01-01 00:00:00");
string starttime = DateTime.Now.AddYears(-i).Year + "-01-01"; //DateTime.Parse (DateTime.Now.AddYears(-3).Year+"01-01 00:00:00" );
string endtime = DateTime.Now.AddYears(-i + 1).Year + "-01-01";
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 0 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 365; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 0 & s.inputtime == dt1.AddDays(j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 365; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == dt2.AddDays(j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(-i).Year;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}*/
#endregion
}
return Success("获取成功", dt);
}
///
/// 用气量信息
///
///
///
[HttpGet("getgasdatalist")]
public async Task GetGasDataList(string projectname, int datetype = 4)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
#region
for (int i = -10; i < 0; i++)
{
string starttime = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");
string endtime = DateTime.Now.AddDays(i + 1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 2 & s.inputtime == starttime & s.deleteflag == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 2 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddDays(i + 1).Day; //starttime;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
#region 新修改
for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & (int)s.datamonth == dtime.Month & s.datakind == 2 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.AddDays(1 - dtime.Day).ToString("yyyy-MM-dd");
string endtime = dtime.AddDays(1 - dtime.Day).AddMonths(1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 2 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 10; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 2 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 2 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 10; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 2 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}*/
#endregion
}
if (datetype == 3)//年
{
#region 新修改
for (int i = -2; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddYears(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & s.datakind == 2 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = 2; i >= 0; i--)
{
DateTime dt1 = DateTime.Parse(DateTime.Now.AddYears(-i).Year + "-01-01 00:00:00");
DateTime dt2 = DateTime.Parse(DateTime.Now.AddYears(-i + 1).Year + "-01-01 00:00:00");
string starttime = DateTime.Now.AddYears(-i).Year + "-01-01"; //DateTime.Parse (DateTime.Now.AddYears(-3).Year+"01-01 00:00:00" );
string endtime = DateTime.Now.AddYears(-i + 1).Year + "-01-01";
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 2 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 365; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 2 & s.inputtime == dt1.AddDays(j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 2 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 365; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 2 & s.inputtime == dt2.AddDays(j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(-i).Year;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}*/
#endregion
}
return Success("获取成功", dt);
}
///
/// 用氧量信息
///
///
///
[HttpGet("getoxygendatalist")]
public async Task GetOxygenDataList(string projectname, int datetype = 4)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
#region
for (int i = -10; i < 0; i++)
{
string starttime = DateTime.Now.AddDays(i).ToString("yyyy-MM-dd");
string endtime = DateTime.Now.AddDays(i + 1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 3 & s.inputtime == starttime & s.deleteflag == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 3 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddDays(i + 1).Day;// starttime;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
#region 新修改
for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & (int)s.datamonth == dtime.Month & s.datakind == 3 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = -9; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddMonths(i);
string starttime = dtime.AddDays(1 - dtime.Day).ToString("yyyy-MM-dd");
string endtime = dtime.AddDays(1 - dtime.Day).AddMonths(1).ToString("yyyy-MM-dd");
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 3 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 10; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 3 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 3 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 10; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 3 & s.inputtime == dtime.AddDays(1 - dtime.Day + j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = dtime.Month;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}*/
#endregion
}
if (datetype == 3)//年
{
#region 新修改
for (int i = -2; i <= 0; i++)
{
DateTime dtime = DateTime.Now.AddYears(i);
string starttime = dtime.ToString("yyyy-MM-dd");
//var aModel = await _plc_monthdataRepository.GetSingle(s => s.datayear == dtime.Year .ToString () & (int)s.datamonth == dtime.Month & s.datakind == 1, null);
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == dtime.Year.ToString() & s.datakind == 3 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = 0;
dt.Rows.Add(dr);
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(i).Year;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}
#endregion
#region
/*for (int i = 2; i >= 0; i--)
{
DateTime dt1 = DateTime.Parse(DateTime.Now.AddYears(-i).Year + "-01-01 00:00:00");
DateTime dt2 = DateTime.Parse(DateTime.Now.AddYears(-i + 1).Year + "-01-01 00:00:00");
string starttime = DateTime.Now.AddYears(-i).Year + "-01-01"; //DateTime.Parse (DateTime.Now.AddYears(-3).Year+"01-01 00:00:00" );
string endtime = DateTime.Now.AddYears(-i + 1).Year + "-01-01";
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 3 & s.inputtime == starttime & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist == null)
{
for (int j = 1; j < 365; j++)
{
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 3 & s.inputtime == dt1.AddDays(j).ToString("yyyy-MM-dd") & s.deleteflag == 0));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
dlist = await _plc_inputdataRepository.Get(filter1);
if (dlist != null)
break;
}
}
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 3 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel == null)
{
for (int j = 1; j < 365; j++)
{
dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 3 & s.inputtime == dt2.AddDays(j).AddMonths(1).ToString("yyyy-MM-dd") & s.deleteflag == 0 & s.dataname == item.dataname, null);
if (dModel != null)
break;
}
}
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
DataRow dr = dt.NewRow();
dr["TimeValue"] = DateTime.Now.AddYears(-i).Year;
dr["DataValue"] = totalnum;
dt.Rows.Add(dr);
}
}*/
#endregion
}
return Success("获取成功", dt);
}
///
/// 用水量信息
///
///
///
[HttpGet("getwaterdatalisto")]
public IActionResult GetWaterDataListo(string projectid, int datetype = 4)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddDays(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddDays(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Day;
dr["DataValue"] = 100 + test[i - 1];
dt.Rows.Add(dr);
}
//int h = DateTime.Now.Hour;
//for (int i = 0; i <= h; i++)
//{
// //Random rd = new Random();
// //int j = rd.Next(1, 20);
// DataRow dr = dt.NewRow();
// dr["TimeValue"] = i;
// if (i % 2 == 0)
// {
// dr["DataValue"] = 200 - (i*2);
// }
// else
// {
// dr["DataValue"] = 150 + (i * 2);
// }
// dt.Rows.Add(dr);
//}
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddMonths(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddMonths(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Month;
dr["DataValue"] = 2000 - test[i - 1];
dt.Rows.Add(dr);
}
}
if (datetype == 3)//年
{
for (int i = 2016; i <= 2018; i++)
{
//Random rd = new Random();
//int j = rd.Next(1, 20);
DataRow dr = dt.NewRow();
dr["TimeValue"] = i;
dr["DataValue"] = 1000 + (i / 4);
dt.Rows.Add(dr);
}
}
//string start = string.Empty;
//string end = string.Empty;
//GetStartEndTime(datetype, out start, out end);
//var result = _runningchartRepository.GetRunningList(projectid, start, end, userinfo);
return Success("获取成功", dt);
}
///
/// 用气量信息
///
///
///
[HttpGet("getgasdatalisto")]
public IActionResult GetGasDataListo(string projectid, int datetype = 4)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddDays(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddDays(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Day;
dr["DataValue"] = 150 - test[i - 1];
dt.Rows.Add(dr);
}
//int h = DateTime.Now.Hour;
//for (int i = 0; i <= h; i++)
//{
// //Random rd = new Random();
// //int j = rd.Next(1, 20);
// DataRow dr = dt.NewRow();
// dr["TimeValue"] = i;
// if (i % 2 == 0)
// {
// dr["DataValue"] = 200 - (i*2);
// }
// else
// {
// dr["DataValue"] = 150 + (i * 2);
// }
// dt.Rows.Add(dr);
//}
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddMonths(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddMonths(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Month;
dr["DataValue"] = 1200 + test[i - 1];
dt.Rows.Add(dr);
}
}
if (datetype == 3)//年
{
for (int i = 2016; i <= 2018; i++)
{
//Random rd = new Random();
//int j = rd.Next(1, 20);
DataRow dr = dt.NewRow();
dr["TimeValue"] = i;
dr["DataValue"] = 1100 + (i / 4);
dt.Rows.Add(dr);
}
}
//string start = string.Empty;
//string end = string.Empty;
//GetStartEndTime(datetype, out start, out end);
//var result = _runningchartRepository.GetRunningList(projectid, start, end, userinfo);
return Success("获取成功", dt);
}
///
/// 用氧量信息
///
///
///
[HttpGet("getoxygendatalisto")]
public IActionResult GetOxygenDataListo(string projectid, int datetype = 3)
{
DataTable dt = new DataTable();
dt.Columns.Add("TimeValue");
dt.Columns.Add("DataValue");
if (datetype == 0)//天
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddDays(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddDays(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Day;
dr["DataValue"] = 170 - test[i - 1];
dt.Rows.Add(dr);
}
//int h = DateTime.Now.Hour;
//for (int i = 0; i <= h; i++)
//{
// //Random rd = new Random();
// //int j = rd.Next(1, 20);
// DataRow dr = dt.NewRow();
// dr["TimeValue"] = i;
// if (i % 2 == 0)
// {
// dr["DataValue"] = 200 - (i*2);
// }
// else
// {
// dr["DataValue"] = 150 + (i * 2);
// }
// dt.Rows.Add(dr);
//}
}
else if (datetype == 1)//本周
{
}
if (datetype == 2)//月
{
int[] test = { 11, 24, 58, 32, 65, 74, 18, 15, 24, 23 };
DateTime dt1 = DateTime.Now.AddMonths(-10);
for (int i = 1; i <= 10; i++)
{
DateTime dt2 = dt1.AddMonths(i);
DataRow dr = dt.NewRow();
dr["TimeValue"] = dt2.Month;
dr["DataValue"] = 1700 + test[i - 1];
dt.Rows.Add(dr);
}
}
if (datetype == 3)//年
{
for (int i = 2016; i <= 2018; i++)
{
//Random rd = new Random();
//int j = rd.Next(1, 20);
DataRow dr = dt.NewRow();
dr["TimeValue"] = i;
dr["DataValue"] = 1000 + (i / 2);
dt.Rows.Add(dr);
}
}
//string start = string.Empty;
//string end = string.Empty;
//GetStartEndTime(datetype, out start, out end);
//var result = _runningchartRepository.GetRunningList(projectid, start, end, userinfo);
return Success("获取成功", dt);
}
///
/// 获取当天、本周、本月、本年、累计时间
///
///
///
///
public void GetStartEndTime(int datetype, out string start, out string end)
{
start = string.Empty;
end = string.Empty;
var datenow = DateTime.Now;
var datestart = datenow;
var dateend = datenow;
switch (datetype)
{
case 0://当天
break;
case 1://本周
int n = (int)datenow.DayOfWeek == 0 ? 7 : (int)datenow.DayOfWeek;
datestart = datenow.AddDays(1 - n);//本周周一
dateend = datestart.AddDays(6);//本周周日
break;
case 2://本月
datestart = datenow.AddDays(1 - datenow.Day); //本月月初
dateend = datestart.AddMonths(1).AddDays(-1); //本月月末
break;
case 3://本年
datestart = new DateTime(datenow.Year, 1, 1); //本年年初
dateend = new DateTime(datenow.Year, 12, 31); //本年年末
break;
case 4://全部
break;
default:
break;
}
if (datetype != 4)
{
start = datestart.ToString("yyyy-MM-dd") + " 00:00:00";
end = dateend.ToString("yyyy-MM-dd") + " 23:59:59";
}
}
#region 报表
//获取数据
[HttpGet("getdatalist")]
public async Task GetDataList(string projectname,string checkyear, string checkmonth)
{
DataTable dtNew = new DataTable();
dtNew = GetData(projectname,checkyear, checkmonth).Result;
if (dtNew != null)
{
return Success("获取能耗报表数据成功", dtNew);
}
else
{
return Error("获取能耗报表数据失败");
}
}
//获取数据源
[HttpGet("getdata")]
private async Task GetData(string projectname,string checkyear, string checkmonth)
{
DataTable dtNew = new DataTable();
#region 编辑表头
DataColumn dc1 = new DataColumn("日期", Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("水", Type.GetType("System.String"));
DataColumn dc3 = new DataColumn("电", Type.GetType("System.String"));
DataColumn dc4 = new DataColumn("气", Type.GetType("System.String"));
DataColumn dc5 = new DataColumn("氧", Type.GetType("System.String"));
dtNew.Columns.Add(dc1);
dtNew.Columns.Add(dc2);
dtNew.Columns.Add(dc3);
dtNew.Columns.Add(dc4);
dtNew.Columns.Add(dc5);
decimal totals = 0;//水合计
decimal totald = 0;//电合计
decimal totalq = 0;//气合计
decimal totaly = 0;//氧合计
#endregion
if (!String.IsNullOrEmpty(checkyear))
{
if (String.IsNullOrEmpty(checkmonth))//查询年报表(按年的每个月统计)
{
for (int i = 1; i <= 12; i++)
{
DataRow dr = dtNew.NewRow();
//查询水
#region
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datayear == checkyear & (int)s.datamonth == i & s.datakind == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_monthdataRepository.Get(filter);
if (dlist == null)
{
dr["水"] = 0;
}
else
{
var lis = dlist.ToList();
foreach (var item in lis)
{
if (!String.IsNullOrEmpty(item.endvalue))
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
dr["水"] = totalnum;
totals += totalnum;
}
#endregion
//查询电
#region
decimal totalnum1 = 0;
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datayear == checkyear & (int)s.datamonth == i & s.datakind == 1&s.projectname== projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
var dlist1 = await _plc_monthdataRepository.Get(filter1);
if (dlist1 == null)
{
dr["电"] = 0;
}
else
{
var lis = dlist1.ToList();
foreach (var item in lis)
{
if (!String.IsNullOrEmpty(item.endvalue))
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum1 += x; }
}
}
dr["电"] = totalnum1*1500;
totald += totalnum1 * 1500;
}
#endregion
//查询气
#region
decimal totalnum2 = 0;
var list2 = new List>();
list2.Add(Builders.Filter.Where(s => s.datayear == checkyear & (int)s.datamonth == i & s.datakind == 2 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter2 = Builders.Filter.And(list2);
var dlist2 = await _plc_monthdataRepository.Get(filter2);
if (dlist2 == null)
{
dr["气"] = 0;
}
else
{
var lis = dlist2.ToList();
foreach (var item in lis)
{
if (!String.IsNullOrEmpty(item.endvalue))
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum2 += x; }
}
}
dr["气"] = totalnum2 ;
totalq += totalnum2;
}
#endregion
//查询氧
#region
decimal totalnum3 = 0;
var list3 = new List>();
list3.Add(Builders.Filter.Where(s => s.datayear == checkyear & (int)s.datamonth == i & s.datakind == 3 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter3 = Builders.Filter.And(list3);
var dlist3 = await _plc_monthdataRepository.Get(filter3);
if (dlist3 == null)
{
dr["氧"] = 0;
}
else
{
var lis = dlist3.ToList();
foreach (var item in lis)
{
if (!String.IsNullOrEmpty(item.endvalue))
{
decimal x = decimal.Parse(item.endvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum3 += x; }
}
}
dr["氧"] = totalnum3;
totaly += totalnum3;
}
#endregion
dr["日期"] = checkyear + "年" + i.ToString() + "月";
dtNew.Rows.Add(dr);
}
#region 合计行
DataRow dr1 = dtNew.NewRow();
dr1["日期"] = "合计";
dr1["水"] = totals;
dr1["电"] = totald;
dr1["气"] = totalq;
dr1["氧"] = totaly;
dtNew.Rows.Add(dr1);
#endregion
}
else//查询月报表
{
DateTime datecheck = DateTime.Parse (checkyear + "-" + checkmonth + "-01 12:00:00");
DateTime datestart = datecheck.AddDays(1 - datecheck.Day); //月初
DateTime dateend = datestart.AddMonths(1).AddDays(-1); //月末
for (int i = 0; i < dateend.Day; i++)
{
DataRow dr = dtNew.NewRow();
string starttime = datestart.AddDays(i).ToString("yyyy-MM-dd");
string endtime = datestart.AddDays(i+1).ToString("yyyy-MM-dd");
#region 水
decimal totalnum = 0;
var list = new List>();
list.Add(Builders.Filter.Where(s => s.datakind == 0 & s.inputtime == starttime & s.deleteflag == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter = Builders.Filter.And(list);
var dlist = await _plc_inputdataRepository.Get(filter);
if (dlist != null)
{
var lis = dlist.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 0 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum += x; }
}
}
dr["水"] = totalnum;
totals += totalnum;
}
#endregion
#region 电
decimal totalnum1 = 0;
var list1 = new List>();
list1.Add(Builders.Filter.Where(s => s.datakind == 1 & s.inputtime == starttime & s.deleteflag == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter1 = Builders.Filter.And(list1);
var dlist1 = await _plc_inputdataRepository.Get(filter1);
if (dlist1 != null)
{
var lis = dlist1.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 1 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum1 += x; }
}
}
dr["电"] = totalnum1*1500;
totald += totalnum1 * 1500;
}
#endregion
#region 气
decimal totalnum2 = 0;
var list2 = new List>();
list2.Add(Builders.Filter.Where(s => s.datakind == 2 & s.inputtime == starttime & s.deleteflag == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter2 = Builders.Filter.And(list2);
var dlist2 = await _plc_inputdataRepository.Get(filter2);
if (dlist2 != null)
{
var lis = dlist2.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 2 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum2 += x; }
}
}
dr["气"] = totalnum2;
totalq += totalnum2;
}
#endregion
#region 氧
decimal totalnum3 = 0;
var list3 = new List>();
list3.Add(Builders.Filter.Where(s => s.datakind == 3 & s.inputtime == starttime & s.deleteflag == 0 & s.projectname == projectname));// || s.dealtype.Equals(2) || s.dealtype.Equals(3) || s.dealtype.Equals(4) || s.dealtype.Equals(5) || s.dealtype.Equals(6)
var filter3 = Builders.Filter.And(list3);
var dlist3 = await _plc_inputdataRepository.Get(filter3);
if (dlist3 != null)
{
var lis = dlist3.ToList();
foreach (var item in lis)
{
var dModel = await _plc_inputdataRepository.GetSingle(s => s.datakind == 3 & s.inputtime == endtime & s.deleteflag == 0 & s.dataname == item.dataname & s.projectname == projectname, null);
if (dModel != null)
{
decimal x = decimal.Parse(dModel.startvalue) - decimal.Parse(item.startvalue);
if (x > 0)
{ totalnum3 += x; }
}
}
dr["氧"] = totalnum3;
totaly += totalnum3;
}
#endregion
dr["日期"] = datestart.AddDays(i).ToString("yyyy年MM月dd日");
dtNew.Rows.Add(dr);
}
#region 合计行
DataRow dr1 = dtNew.NewRow();
dr1["日期"] = "合计";
dr1["水"] = totals ;
dr1["电"] = totald ;
dr1["气"] = totalq;
dr1["氧"] = totaly;
dtNew.Rows.Add(dr1);
#endregion
}
}
return dtNew;
}
//导出
[HttpGet("exportexcel")]
public async Task ExportExcelAsync(string projectname, string checkyear, string checkmonth)
{
try
{
DataTable dtNew = new DataTable();
dtNew = GetData(projectname, checkyear, checkmonth).Result;
if (dtNew != null)
{
//导出dtnew
NPOIHelper npoi = new NPOIHelper();
string[] cols = { "日期", "水", "电", "气", "氧" };
byte[] sm = npoi.ExportToExcel1(dtNew, cols);
if (sm != null)
{
if (!String.IsNullOrEmpty(checkyear))
{
if (String.IsNullOrEmpty(checkmonth))//查询年报表(按年的每个月统计)
{
return File(sm, "application/vnd.ms-excel", projectname +"能耗年报.xlsx");
}
else
{
return File(sm, "application/vnd.ms-excel", projectname + "能耗月报.xlsx");
}
}
}
else
{
return Error("导出失败");
}
}
return Error("导出失败");
//return Success("根据条件获取数据成功", tasklist);
}
catch (Exception ex)
{
_logger.LogError(ex, "导出异常");
return Error("导出失败");
}
//return Success("导出成功");
}
#endregion
}
}