using Microsoft.AspNetCore.Mvc;
|
using System.Net;
|
using System.Net.Http.Headers;
|
using Microsoft.Extensions.Hosting.Internal;
|
using Microsoft.AspNetCore.Http.Extensions;
|
using IStation.Untity;
|
using Furion.DynamicApiController;
|
using System.ComponentModel.DataAnnotations;
|
using Mapster;
|
using Microsoft.AspNetCore.Http;
|
using Furion.DependencyInjection;
|
using Microsoft.AspNetCore.Authorization;
|
using Furion.DataEncryption;
|
using Furion.FriendlyException;
|
|
namespace IStation.Application
|
{
|
/// <summary>
|
/// 泵站
|
/// </summary>
|
[AllowAnonymous]
|
[Route("LargeScreen/Szjt/Station")]
|
[ApiDescriptionSettings("LargeScreen", Name = "苏州金庭(泵站)", Order = 999)]
|
public class SzjtStation_Controller : IDynamicApiController, ITransient
|
{
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
/// <summary>
|
///
|
/// </summary>
|
public SzjtStation_Controller(IHttpContextAccessor httpContextAccessor)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
}
|
|
#region const
|
|
private const long _corpid = 3;//客户标识
|
|
private const long _stationId = 23;//泵站标识
|
|
private const long _tlpointid_23 = 1688;//累积流量
|
private const long _tlsignalid_23 = 2388;//累积流量信号
|
|
private const long _lpointid_23 = 1687;//瞬时流量
|
private const long _lsignalid_23 = 2387;//瞬时流量信号
|
|
private const long _zdpointId_23 = 1692;//浊度
|
private const long _zdsignalid_23 = 2392;//浊度信号
|
|
private const long _ylpointid_23 = 1693;//余氯
|
private const long _ylsignalid_23 = 2393;//余氯信号
|
|
private const long _ckylpointid_23 = 1690;//出口压力
|
private const long _ckylsignalid_23 = 2390;//出口压力信号
|
|
private const long _ygdnpointid_23 = 1701;//有功电能
|
private const long _ygdnsignalid_23 = 2401;//有功电能信号
|
|
|
#endregion
|
|
/// <summary>
|
/// 获取泵站主页汇总信息(左上部分)
|
/// </summary>
|
/// <param name="StationID">泵站ID</param>
|
/// <returns></returns>
|
[Route("GetLeftTopInfo")]
|
[HttpGet]
|
public SzjtStationLeftTopInfoDto GetLeftTopInfo(long StationID)
|
{
|
var server_station = new Service.Station();
|
|
SzjtStationLeftTopInfoDto info_list = new SzjtStationLeftTopInfoDto();
|
var station = new Service.Station().GetByID(_corpid, StationID);
|
if (station == null)
|
station = new Model.Station();
|
|
if (station.ID == 23)
|
{
|
var service_record = new Service.MonitorRealRecord();
|
var service_product = new Service.Product();
|
info_list.StationName = station.Name;
|
info_list.RecordInfos = new List<SzjtStationRecordInfoDto>();
|
|
//出口压力
|
var ckyl_lastValue = service_record.GetLastNormalRecord(_corpid, _ckylpointid_23,_ckylsignalid_23);
|
var ckyl_record = new SzjtStationRecordInfoDto();
|
ckyl_record.ID = _ckylpointid_23;
|
ckyl_record.Name = "出口压力";
|
ckyl_record.Unit = "MPa";
|
ckyl_record.Value = NumberHelper.RoundString(double.Parse(ckyl_lastValue.DataValue), 2);
|
info_list.RecordInfos.Add(ckyl_record);
|
|
|
//瞬时流量
|
var q_lastValue = service_record.GetLastNormalRecord(_corpid,_lpointid_23,_lsignalid_23);
|
var q_record = new SzjtStationRecordInfoDto();
|
q_record.ID = _lpointid_23;
|
q_record.Name = "瞬时流量";
|
q_record.Unit = "m³/h";
|
q_record.Value = NumberHelper.RoundString(double.Parse(q_lastValue.DataValue), 2);
|
info_list.RecordInfos.Add(q_record);
|
|
|
//总电度
|
var d_lastValue = service_record.GetLastNormalRecord(_corpid,_ygdnpointid_23,_ygdnsignalid_23);
|
var d_record = new SzjtStationRecordInfoDto();
|
d_record.ID = _ygdnpointid_23;
|
d_record.Name = "总电度";
|
d_record.Unit = "kW·h";
|
d_record.Value = NumberHelper.RoundString(double.Parse(d_lastValue.DataValue), 2);
|
info_list.RecordInfos.Add(d_record);
|
|
//单位能耗
|
var lq_lastValue = service_record.GetLastNormalRecord(_corpid,_tlpointid_23,_tlsignalid_23);
|
var lq_record = new SzjtStationRecordInfoDto();
|
lq_record.ID = _tlpointid_23;
|
lq_record.Name = "单位能耗";
|
lq_record.Unit = "kW/千吨水";
|
if (lq_lastValue != null)
|
{
|
if (d_lastValue != null)
|
{
|
lq_record.Value = NumberHelper.RoundString(double.Parse(d_lastValue.DataValue)/ double.Parse(lq_lastValue.DataValue) * 1000, 2);
|
}
|
}
|
info_list.RecordInfos.Add(lq_record);
|
|
info_list.RunInfos = new List<SzjtStationRunInfoDto>();
|
var allPumps = service_product.GetEnginePumpListByBelongTypeAndBelongID(_corpid,ObjectType.Station, station.ID);
|
foreach (var pump in allPumps)
|
{
|
var runInfo = new SzjtStationRunInfoDto();
|
runInfo.ID = pump.ID;
|
runInfo.Name = pump.Name;
|
runInfo.OpenStatus = new Random().Next(0,2);
|
info_list.RunInfos.Add(runInfo);
|
}
|
|
|
return info_list;
|
}
|
|
var r = new Random();
|
info_list.StationName = station.Name;
|
info_list.RecordInfos = new List<SzjtStationRecordInfoDto>();
|
info_list.RecordInfos.Add(new SzjtStationRecordInfoDto() { ID = 1, Name = "出口压力", Value = (r.Next(10, 30) / 200.0 + 0.341).ToString(), Unit = "MPa" });
|
info_list.RecordInfos.Add(new SzjtStationRecordInfoDto() { ID = 2, Name = "出口流量", Value = (r.Next(510, 530) + 2).ToString(), Unit = "m³/h" });
|
info_list.RecordInfos.Add(new SzjtStationRecordInfoDto() { ID = 3, Name = "总功率", Value = (r.Next(210, 230) + 1.2).ToString(), Unit = "kW" });
|
info_list.RecordInfos.Add(new SzjtStationRecordInfoDto() { ID = 4, Name = "单位能耗", Value = (r.Next(10, 30) + 73.2).ToString(), Unit = "kW/千吨水" });
|
|
var server_product = new Service.Product();
|
var all_product = server_product.GetEnginePumpListByBelongTypeAndBelongID(_corpid,ObjectType.Station, StationID);
|
|
if (all_product == null || all_product.Count() == 0)
|
{
|
info_list.RunInfos = new List<SzjtStationRunInfoDto>();
|
info_list.RunInfos.Add(new SzjtStationRunInfoDto() { ID = 1, Name = "一号泵", OpenStatus = 1 });
|
info_list.RunInfos.Add(new SzjtStationRunInfoDto() { ID = 2, Name = "二号泵", OpenStatus = 0 });
|
info_list.RunInfos.Add(new SzjtStationRunInfoDto() { ID = 3, Name = "三号泵", OpenStatus = 0 });
|
info_list.RunInfos.Add(new SzjtStationRunInfoDto() { ID = 4, Name = "四号泵", OpenStatus = 1 });
|
info_list.RunInfos.Add(new SzjtStationRunInfoDto() { ID = 5, Name = "五号泵", OpenStatus = -1 });
|
info_list.RunInfos.Add(new SzjtStationRunInfoDto() { ID = 6, Name = "六号泵", OpenStatus = 1 });
|
}
|
else
|
{
|
info_list.RunInfos = new List<SzjtStationRunInfoDto>();
|
|
foreach (var p in all_product)
|
{
|
info_list.RunInfos.Add(new SzjtStationRunInfoDto() { ID = p.ID, Name = p.Name, OpenStatus = 0 });
|
}
|
}
|
|
|
|
|
return info_list;
|
}
|
|
/// <summary>
|
/// 获取泵站数据分析汇总信息(左中部分)
|
/// </summary>
|
/// <param name="StationID">泵站ID</param>
|
/// <param name="StaticType">汇总类型(1按日 2 按周 3 按月 4 按年)</param>
|
/// <returns></returns>
|
[Route("GetLeftMiddleInfo")]
|
[HttpGet]
|
public SzjtStationLeftMiddleInfoDto GetLeftMiddleInfo(long StationID, int StaticType)
|
{
|
var info = new SzjtStationLeftMiddleInfoDto();
|
var servive_record = new Service.MonitorRealRecord();
|
//var service_stationRun = new Service.StationRun();
|
//var service_sum=new Service.statin
|
|
|
//昨日累积供水量
|
var tl_yes_firstValue = servive_record.GetFirstBySignalIDOfDay(_corpid,_tlpointid_23,_tlsignalid_23, DateTime.Now.AddDays(-1));
|
var tl_yes_lastVlaue = servive_record.GetLastBySignalIDOfDay(_corpid, _tlpointid_23, _tlsignalid_23, DateTime.Now.AddDays(-1));
|
if (tl_yes_firstValue != null && tl_yes_lastVlaue != null)
|
info.YesterdayTotalSupplyWater = double.Parse(tl_yes_lastVlaue.DataValue) - double.Parse(tl_yes_firstValue.DataValue);
|
|
//今日累积供水量
|
var tl_lastValue = servive_record.GetLastRecord(_corpid, _tlpointid_23, _tlsignalid_23);
|
if (tl_lastValue != null && tl_yes_lastVlaue != null)
|
info.TodayTotalSupplyWater = double.Parse(tl_lastValue.DataValue) - double.Parse(tl_yes_lastVlaue.DataValue);
|
|
|
info.Items = new List<SzjtStationLeftMiddleItemInfoDto>();
|
var startDate = DateTime.Now.AddDays(-5);
|
var endDate = DateTime.Now.AddDays(-1);
|
|
// var daySums = service_stationRun.GetRealDaySumListByRange(13,null,startDate,endDate);
|
|
for (DateTime i = DateTime.Now.AddDays(-5).Date; i < DateTime.Now.Date; i.AddDays(1))
|
{
|
var dt = i.ToString("yyyy-MM-dd");
|
//var daySum = daySums?.Find(x => x.SumDay.ToString("yyyy-MM-dd") == dt);
|
var item = new SzjtStationLeftMiddleItemInfoDto();
|
item.Label = dt;
|
//item.SupplyWater = NumberHelper.Round(daySum?.Qt,2);
|
//item.TotalDegree = NumberHelper.Round(daySum?.Dt,2);
|
info.Items.Add(item);
|
}
|
|
|
return info;
|
|
|
//var r = new Random();
|
//List<LeftMiddleItemInfo> info_list = new List<LeftMiddleItemInfo>();
|
//if (StaticType == 1 || StaticType <= 0)
|
//{
|
// for (DateTime day = DateTime.Today.AddMonths(-1); day < DateTime.Today; day = day.AddDays(1))
|
// {
|
// LeftMiddleItemInfo item = new LeftMiddleItemInfo();
|
// item.Label = day.ToString("yyyy-MM-dd");
|
// item.SupplyWater = r.Next(260, 280);
|
// item.TotalDegree = r.Next(280, 295);
|
// info_list.Add(item);
|
// }
|
//}
|
//else if (StaticType == 3 || StaticType == 2)
|
//{//2 按周 3 按月
|
// for (int month = 1; month < DateTime.Today.Month; month = month + 1)
|
// {
|
// LeftMiddleItemInfo item = new LeftMiddleItemInfo();
|
// item.Label = month.ToString();
|
// item.SupplyWater = r.Next(260, 280) * 30;
|
// item.TotalDegree = r.Next(220, 235) * 30;
|
// info_list.Add(item);
|
// }
|
//}
|
//else
|
//{//4 按年
|
// for (int year = 1; year < 4; year = year + 1)
|
// {
|
// LeftMiddleItemInfo item = new LeftMiddleItemInfo();
|
// item.Label = (DateTime.Today.Year - 3 + year).ToString();
|
// item.SupplyWater = r.Next(260, 280) * 270;
|
// item.TotalDegree = r.Next(260, 275) * 270;
|
// info_list.Add(item);
|
// }
|
//}
|
//return new Result<List<LeftMiddleItemInfo>>(info_list);
|
}
|
|
/// <summary>
|
/// 获取泵站数据分析明细信息(左下部分)
|
/// </summary>
|
/// <param name="StationID">泵站ID</param>
|
/// <param name="StaticType">汇总类型(1按日 2 按周 3 按月 4 按年)</param>
|
/// <returns></returns>
|
[Route("GetLeftBottomInfo")]
|
[HttpGet]
|
public List<SzjtStationLeftBottomItemInfoDto> GetLeftBottomInfo(long StationID, int StaticType)
|
{
|
var r = new Random();
|
List<SzjtStationLeftBottomItemInfoDto> info_list = new List<SzjtStationLeftBottomItemInfoDto>();
|
|
int ratio = 1;
|
if (StaticType == 2)
|
ratio = 7;
|
if (StaticType == 3)
|
ratio = 30;
|
if (StaticType == 4)
|
ratio = 350;
|
|
var server_product = new Service.Product();
|
var all_product = server_product.GetEnginePumpListByBelongTypeAndBelongID(_corpid,ObjectType.Station, StationID);
|
|
if (all_product == null || all_product.Count() == 0)
|
{
|
List<string> product_name_list = new List<string>() { "一号泵", "二号泵", "三号泵", "四号泵", "五号泵", "六号泵" };
|
long ID = 1;
|
foreach (var name in product_name_list)
|
{
|
SzjtStationLeftBottomItemInfoDto item = new SzjtStationLeftBottomItemInfoDto();
|
item.ID = ID;
|
item.Name = name;
|
item.SupplyWater = r.Next(260, 270) * ratio;
|
item.EnergyConsumption = r.Next(260, 275) * ratio;
|
item.UnitEnergyConsumption = r.Next(183, 195) / 10.0;
|
info_list.Add(item);
|
|
ID++;
|
}
|
}
|
else
|
{
|
foreach (var p in all_product)
|
{
|
SzjtStationLeftBottomItemInfoDto item = new SzjtStationLeftBottomItemInfoDto();
|
item.ID = p.ID;
|
item.Name = p.Name;
|
item.SupplyWater = 130;
|
item.EnergyConsumption = 32;
|
item.UnitEnergyConsumption = 18.5;
|
info_list.Add(item);
|
}
|
}
|
|
return info_list;
|
}
|
|
/// <summary>
|
/// 获取首页报警和信息公告(中间底部)
|
/// </summary>
|
/// /// <param name="StationID">泵站ID</param>
|
/// <param name="InfoType">信息类型(1公告信息 2报警信息)</param>
|
[Route("GetCenterBottomInfo")]
|
[HttpGet]
|
public List<SzjtStationCenterBottomItemInfoDto> GetCenterBottomInfo(long StationID, int InfoType)
|
{
|
var r = new Random();
|
List<SzjtStationCenterBottomItemInfoDto> info_list = new List<SzjtStationCenterBottomItemInfoDto>();
|
|
if (InfoType == 1)
|
{
|
SzjtStationCenterBottomItemInfoDto item1 = new SzjtStationCenterBottomItemInfoDto();
|
item1.Title = "一号泵";
|
item1.UserName = "管理员";
|
item1.Content = "2020年8月26日,控江路管道维修抢修完成。";
|
info_list.Add(item1);
|
|
SzjtStationCenterBottomItemInfoDto item2 = new SzjtStationCenterBottomItemInfoDto();
|
item2.Title = "二号泵";
|
item2.UserName = "管理员";
|
item2.Content = "2020年9月11日,二号泵电机振动过大,进行大修。";
|
info_list.Add(item2);
|
|
|
SzjtStationCenterBottomItemInfoDto item3 = new SzjtStationCenterBottomItemInfoDto();
|
item3.Title = "二号泵";
|
item3.UserName = "管理员";
|
item3.Content = "2020年9月22日,巡检员张坤成在人民广场附件发现曝管。";
|
info_list.Add(item2);
|
}
|
else
|
{
|
SzjtStationCenterBottomItemInfoDto item1 = new SzjtStationCenterBottomItemInfoDto();
|
item1.Title = "二号泵";
|
item1.UserName = "李三林";
|
item1.Content = "2020年9月20日 12时30分,一号机漏水严重。";
|
info_list.Add(item1);
|
|
SzjtStationCenterBottomItemInfoDto item2 = new SzjtStationCenterBottomItemInfoDto();
|
item2.Title = "二号泵";
|
item2.UserName = "李三林";
|
item2.Content = "2020年9月21日 12时30分,一号机漏水严重。";
|
info_list.Add(item2);
|
|
|
SzjtStationCenterBottomItemInfoDto item3 = new SzjtStationCenterBottomItemInfoDto();
|
item3.Title = "二号泵";
|
item3.UserName = "管理员";
|
item3.Content = "2020年9月25日 12时30分,二号电机电流超标。";
|
info_list.Add(item2);
|
}
|
|
|
return info_list;
|
}
|
|
/// <summary>
|
/// 获取表单状态统计占比(右部上)
|
/// </summary>
|
/// <param name="StationID">泵站ID</param>
|
/// <param name="StaticType">统计类型(1按日 2 按周 3 按月 4 按年) </param>
|
[Route("GetRightTopInfo")]
|
[HttpGet]
|
public SzjtStationRightTopInfoDto GetRightTopInfo(long StationID, int StaticType)
|
{
|
var r = new Random();
|
int ratio = 1;
|
if (StaticType == 2)
|
ratio = 5;
|
if (StaticType == 3)
|
ratio = 20;
|
if (StaticType == 4)
|
ratio = 250;
|
|
SzjtStationRightTopInfoDto item1 = new SzjtStationRightTopInfoDto();
|
|
item1.ProcessedForm = r.Next(1, 2) * ratio;
|
item1.ProcessingForm = r.Next(1, 3) * ratio;
|
item1.UnProcessingForm = r.Next(0, 1) * ratio;
|
item1.TotalForm = item1.ProcessedForm + item1.ProcessingForm + item1.UnProcessingForm;
|
|
return item1;
|
}
|
|
/// <summary>
|
/// 获取表单类型统计占比(右部中)
|
/// </summary>
|
/// <param name="StationID">泵站ID</param>
|
/// <param name="StaticType">统计类型(1按日 2 按周 3 按月 4 按年)</param>
|
[Route("GetRightCenterInfo")]
|
[HttpGet]
|
public List<SzjtStationRightCenterInfoDto> GetRightCenterInfo(long StationID, int StaticType)
|
{
|
var r = new Random();
|
List<SzjtStationRightCenterInfoDto> info_list = new List<SzjtStationRightCenterInfoDto>();
|
int ratio = 1;
|
if (StaticType == 2)
|
ratio = 7;
|
if (StaticType == 3)
|
ratio = 30;
|
if (StaticType == 4)
|
ratio = 350;
|
|
|
SzjtStationRightCenterInfoDto item1 = new SzjtStationRightCenterInfoDto();
|
item1.Label = "机组故障";
|
item1.Number = r.Next(1, 3) * ratio;
|
info_list.Add(item1);
|
|
|
SzjtStationRightCenterInfoDto item2 = new SzjtStationRightCenterInfoDto();
|
item2.Label = "管道维修";
|
item2.Number = r.Next(0, 3) * ratio;
|
info_list.Add(item2);
|
|
|
SzjtStationRightCenterInfoDto item3 = new SzjtStationRightCenterInfoDto();
|
item3.Label = "阀门维修";
|
item3.Number = r.Next(0, 3) * ratio;
|
info_list.Add(item3);
|
|
SzjtStationRightCenterInfoDto item4 = new SzjtStationRightCenterInfoDto();
|
item4.Label = "仪表";
|
item4.Number = r.Next(0, 4) * ratio;
|
info_list.Add(item4);
|
|
SzjtStationRightCenterInfoDto item5 = new SzjtStationRightCenterInfoDto();
|
item5.Label = "其他";
|
item5.Number = r.Next(0, 5) * ratio;
|
info_list.Add(item5);
|
return info_list;
|
}
|
|
/// <summary>
|
/// 通过 ID 获取详细
|
/// </summary>
|
[Route("GetDetailByID")]
|
[HttpGet]
|
public SzjtStationDetailDto GetDetailByID([FromQuery][Required] IDInput input)
|
{
|
var model = new Service.Station().GetByID(_corpid, input.ID);
|
return model == null ? null : new SzjtStationDetailDto(model);
|
}
|
|
|
}
|
}
|