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/Glfq")]
|
[ApiDescriptionSettings("LargeScreen", Name = "苏州金庭(管网分区)", Order = 999)]
|
public class SzjtGlfq_Controller : IDynamicApiController, ITransient
|
{
|
private readonly IHttpContextAccessor _httpContextAccessor;
|
|
/// <summary>
|
///
|
/// </summary>
|
public SzjtGlfq_Controller(IHttpContextAccessor httpContextAccessor)
|
{
|
_httpContextAccessor = httpContextAccessor;
|
}
|
|
private const long _corpid = 3;
|
|
/// <summary>
|
/// 管网概况 (左上部分 )
|
/// </summary>
|
/// <returns></returns>
|
[Route("GetLeftTopInfo")]
|
[HttpGet]
|
public SzjtGlfqLeftTopInfoDto GetLeftTopInfo()
|
{
|
SzjtGlfqLeftTopInfoDto info_list = new SzjtGlfqLeftTopInfoDto();
|
var r = new Random();
|
info_list.Area = 310;
|
info_list.Length = 15 + 25 + 35 + 25 + 23 + 45 + 35;
|
info_list.Items = new List<SzjtGlfqLeftTopItemInfoDto>();
|
info_list.Items.Add(new SzjtGlfqLeftTopItemInfoDto() { Label = "铸铁", Length = 15, Ratio = Math.Round(15 / info_list.Length, 1) });
|
info_list.Items.Add(new SzjtGlfqLeftTopItemInfoDto() { Label = "钢管", Length = 25, Ratio = Math.Round(15 / info_list.Length, 1) });
|
info_list.Items.Add(new SzjtGlfqLeftTopItemInfoDto() { Label = "PE", Length = 35, Ratio = Math.Round(15 / info_list.Length, 1) });
|
info_list.Items.Add(new SzjtGlfqLeftTopItemInfoDto() { Label = "混凝土", Length = 25, Ratio = Math.Round(15 / info_list.Length, 1) });
|
info_list.Items.Add(new SzjtGlfqLeftTopItemInfoDto() { Label = "PVC", Length = 23, Ratio = Math.Round(15 / info_list.Length, 1) });
|
info_list.Items.Add(new SzjtGlfqLeftTopItemInfoDto() { Label = "SN", Length = 45, Ratio = Math.Round(15 / info_list.Length, 1) });
|
info_list.Items.Add(new SzjtGlfqLeftTopItemInfoDto() { Label = "其他", Length = 35, Ratio = Math.Round(15 / info_list.Length, 1) });
|
|
return info_list;
|
}
|
|
/// <summary>
|
/// 获取泵站数据分析汇总信息(左中部分)
|
/// </summary>
|
/// <param name="StaticType">汇总类型(1按日 2 按周 3 按月 4 按年)</param>
|
[Route("GetLeftMiddleInfo")]
|
[HttpGet]
|
public List<SzjtGlfqLeftMiddleItemInfoDto> GetLeftMiddleInfo(int StaticType)
|
{
|
var r = new Random();
|
List<SzjtGlfqLeftMiddleItemInfoDto> info_list = new List<SzjtGlfqLeftMiddleItemInfoDto>();
|
|
int ratio = 1;
|
if (StaticType == 2)
|
ratio = 5;
|
if (StaticType == 3)
|
ratio = 20;
|
if (StaticType == 4)
|
ratio = 250;
|
|
SzjtGlfqLeftMiddleItemInfoDto item1 = new SzjtGlfqLeftMiddleItemInfoDto();
|
item1.Label = "机组故障";
|
item1.Number = r.Next(8, 11) * ratio;
|
info_list.Add(item1);
|
|
SzjtGlfqLeftMiddleItemInfoDto item2 = new SzjtGlfqLeftMiddleItemInfoDto();
|
item2.Label = "管道维修";
|
item2.Number = r.Next(2, 5) * ratio;
|
info_list.Add(item2);
|
|
|
SzjtGlfqLeftMiddleItemInfoDto item3 = new SzjtGlfqLeftMiddleItemInfoDto();
|
item3.Label = "阀门维修";
|
item3.Number = r.Next(1, 3) * ratio;
|
info_list.Add(item3);
|
|
SzjtGlfqLeftMiddleItemInfoDto item4 = new SzjtGlfqLeftMiddleItemInfoDto();
|
item4.Label = "仪表";
|
item4.Number = r.Next(2, 4) * ratio;
|
info_list.Add(item4);
|
|
SzjtGlfqLeftMiddleItemInfoDto item5 = new SzjtGlfqLeftMiddleItemInfoDto();
|
item5.Label = "其他";
|
item5.Number = r.Next(5, 12) * ratio;
|
info_list.Add(item5);
|
|
return info_list;
|
}
|
|
/// <summary>
|
/// 左面板信息(左):管网管理
|
/// </summary>
|
/// <returns></returns>
|
[Route("GetLeftBottomInfo")]
|
[HttpGet]
|
public List<SzjtGlfqLeftBottomItemInfoDto> GetLeftBottomInfo()
|
{
|
var r = new Random();
|
List<SzjtGlfqLeftBottomItemInfoDto> info_list = new List<SzjtGlfqLeftBottomItemInfoDto>();
|
|
SzjtGlfqLeftBottomItemInfoDto item1 = new SzjtGlfqLeftBottomItemInfoDto();
|
item1.Time = "2020-10-01";
|
item1.Type = "巡检**路段";
|
item1.UserName = "张三";
|
info_list.Add(item1);
|
|
SzjtGlfqLeftBottomItemInfoDto item2 = new SzjtGlfqLeftBottomItemInfoDto();
|
item2.Time = "2020-10-01";
|
item2.Type = "巡检**路段";
|
item2.UserName = "张三";
|
info_list.Add(item2);
|
|
|
SzjtGlfqLeftBottomItemInfoDto item3 = new SzjtGlfqLeftBottomItemInfoDto();
|
item3.Time = "2020-10-01";
|
item3.Type = "巡检**路段";
|
item3.UserName = "张三";
|
info_list.Add(item3);
|
|
|
SzjtGlfqLeftBottomItemInfoDto item4 = new SzjtGlfqLeftBottomItemInfoDto();
|
item4.Time = "2020-10-01";
|
item4.Type = "巡检**路段";
|
item4.UserName = "张三";
|
info_list.Add(item4);
|
|
|
SzjtGlfqLeftBottomItemInfoDto item5 = new SzjtGlfqLeftBottomItemInfoDto();
|
item5.Time = "2020-10-01";
|
item5.Type = "巡检**路段";
|
item5.UserName = "张三";
|
info_list.Add(item5);
|
|
|
SzjtGlfqLeftBottomItemInfoDto item6 = new SzjtGlfqLeftBottomItemInfoDto();
|
item6.Time = "2020-10-01";
|
item6.Type = "巡检**路段";
|
item6.UserName = "张三";
|
info_list.Add(item6);
|
|
|
SzjtGlfqLeftBottomItemInfoDto item7 = new SzjtGlfqLeftBottomItemInfoDto();
|
item7.Time = "2020-10-07";
|
item7.Type = "巡检**路段";
|
item7.UserName = "张三";
|
info_list.Add(item7);
|
|
|
return info_list;
|
}
|
|
/// <summary>
|
/// 获取首页报警和信息公告(中间底部)
|
/// </summary>
|
/// <param name="InfoType">信息类型(1信息 2报警)</param>
|
[Route("GetCenterBottomInfo")]
|
[HttpGet]
|
public List<SzjtGlfqCenterBottomItemInfoDto> GetCenterBottomInfo(int InfoType)
|
{
|
var r = new Random();
|
List<SzjtGlfqCenterBottomItemInfoDto> info_list = new List<SzjtGlfqCenterBottomItemInfoDto>();
|
|
|
if (InfoType == 1)
|
{
|
var service = new Service.RepairRequestForm();
|
var forms = service.GetLastByCorpID(_corpid, 8);
|
foreach (var f in forms)
|
{
|
var station_list = new Service.Station().GetByCorpID(_corpid);
|
var product_list = new Service.Product().GetByCorpID(_corpid);
|
var user_list = new Service.User().GetByCorpID(_corpid);
|
if (f.BelongType == ObjectType.Station)
|
{
|
var item1 = new SzjtGlfqCenterBottomItemInfoDto();
|
item1.ID = f.ID;
|
item1.Title = station_list?.Find(t => t.ID == f.BelongID)?.Name;
|
item1.UserName = user_list?.Find(t => t.ID == f.CreateUserID)?.RealName;
|
item1.Content = string.Format("{0} {1}发生:{2}", f.CreateTime.ToString("MM月dd日,HH时"), product_list?.Find(t => t.ID == f.ProductID)?.Name, f.Question);
|
info_list.Add(item1);
|
}
|
}
|
}
|
else
|
{
|
var service = new Service.MonitorAlarmRecord();
|
var serice_point = new IStation.Service.MonitorPoint();
|
var alarms = service.GetLastByCorpID(_corpid, 8);
|
if (alarms != null && alarms.Count > 0)
|
{
|
var station_list = new Service.Station().GetByCorpID(_corpid);
|
var point_list = new Service.MonitorPoint().GetByCorpID(_corpid);
|
foreach (var alarm in alarms)
|
{
|
var point = point_list?.Find(t => t.ID == alarm.MonitorPointID);
|
if (point == null)
|
continue;
|
string belong_name = "";
|
if (point.BelongType == IStation.ObjectType.Station)
|
{
|
belong_name = string.Format("{0}的{1}",
|
(from x in station_list where x.ID == point.BelongID select x.Name).FirstOrDefault(),
|
point.Name);
|
}
|
|
var item1 = new SzjtGlfqCenterBottomItemInfoDto();
|
item1.ID = alarm.ID;
|
item1.Title = belong_name;
|
item1.Content = string.Format("{0} {1}的值为:{2},超过设定{3}",
|
alarm.AlarmTime.ToString("MM月dd日,HH时"),
|
point.Name,
|
alarm.DataValue == null ? "" : Math.Round(double.Parse(alarm.DataValue), 4).ToString(),
|
alarm.ThresholdValue);
|
info_list.Add(item1);
|
}
|
}
|
}
|
|
|
return info_list;
|
}
|
|
/// <summary>
|
/// 获取报修(中间底部)
|
/// </summary>
|
/// <param name="ID"> (RequesFormID)</param>
|
/// <returns></returns>
|
[Route("GetRepairRequesFormDetalInfo")]
|
[HttpGet]
|
public SzjtGlfqRepairRequestFormDetailInfoDto GetRepairRequesFormDetalInfo(long ID)
|
{
|
|
var service = new Service.RepairRequestForm();
|
var form = service.GetByID(_corpid, ID);
|
if (form == null)
|
{
|
throw new Exception("表单不存在");
|
}
|
var station_list = new Service.Station().GetByCorpID(_corpid);
|
var product_list = new Service.Product().GetByCorpID(_corpid);
|
var user_list = new Service.User().GetByCorpID(_corpid);
|
|
|
var view_model = new SzjtGlfqRepairRequestFormDetailInfoDto();
|
view_model.BelongName = (from x in station_list where x.ID == form.BelongID select x.Name).FirstOrDefault();
|
view_model.ReportUserName = (from x in user_list where x.ID == form.CreateUserID select x.RealName).FirstOrDefault();
|
view_model.ObjectName = product_list?.Find(t => t.ID == form.ProductID)?.Name;
|
view_model.ReportTime = form.CreateTime.ToString("yyyy-MM-dd HH:mm:ss");
|
view_model.ProblemDescription = form.Question;
|
view_model.FormSource = "小程序";
|
if (form.FormStatus == Model.Repair.eRequestStatus.Pending)
|
view_model.RequestFormStatus = "待受理";
|
|
if (form.FormStatus == Model.Repair.eRequestStatus.Accepted)
|
view_model.RequestFormStatus = "已受理";
|
|
if (form.FormStatus == Model.Repair.eRequestStatus.Rejected)
|
view_model.RequestFormStatus = "已驳回";
|
|
return view_model;
|
}
|
|
/// <summary>
|
/// 分区管理(右部上)
|
/// </summary>
|
/// <returns></returns>
|
[Route("GetRightTopInfo")]
|
[HttpGet]
|
public SzjtGlfqRightTopInfoDto GetRightTopInfo()
|
{
|
var r = new Random();
|
|
|
SzjtGlfqRightTopInfoDto item1 = new SzjtGlfqRightTopInfoDto();
|
|
item1.DmaNumber = 8;
|
item1.LastTotalSupplyWater = r.Next(2504, 2580);
|
item1.LastMonthLeakRatio = 50.8;
|
item1.ThisYearLeakRatio = 48.9;
|
|
return item1;
|
}
|
|
/// <summary>
|
/// 漏损分析 (右部中:)
|
/// </summary>
|
/// <param name="StaticType">统计类型(1按日 2 按周 3 按月 4 按年)</param>
|
[Route("GetRightCenterInfo")]
|
[HttpGet]
|
public List<SzjtGlfqRightCenterInfoDto> GetRightCenterInfo(int StaticType)
|
{
|
var r = new Random();
|
|
List<SzjtGlfqRightCenterInfoDto> info_list = new List<SzjtGlfqRightCenterInfoDto>();
|
if (DateTime.Now.Month < 2)
|
{
|
for (int month = 1; month <= 12; month++)
|
{
|
SzjtGlfqRightCenterInfoDto m = new SzjtGlfqRightCenterInfoDto();
|
}
|
}
|
else
|
{
|
for (int month = 1; month <= DateTime.Now.Month; month++)
|
{
|
SzjtGlfqRightCenterInfoDto m = new SzjtGlfqRightCenterInfoDto();
|
m.Label = month.ToString();
|
m.ThisSupplyWater = r.Next(2000, 3000);
|
m.LastSupplyWater = r.Next(2000, 3000);
|
m.ThisSaleWater = r.Next(1800, 2500);
|
m.LastSaleWater = r.Next(1800, 2500);
|
if (m.ThisSupplyWater < m.ThisSaleWater)
|
{
|
double temp = m.ThisSaleWater;
|
m.ThisSaleWater = m.ThisSupplyWater;
|
m.ThisSupplyWater = temp;
|
}
|
if (m.LastSupplyWater < m.LastSaleWater)
|
{
|
double temp = m.LastSaleWater;
|
m.LastSaleWater = m.LastSupplyWater;
|
m.LastSupplyWater = temp;
|
}
|
m.ThisDistributionLosses = Math.Round(m.ThisSupplyWater * 100 / m.ThisSaleWater, 1);
|
m.LastDistributionLosses = Math.Round(m.LastSupplyWater * 100 / m.LastSaleWater, 1);
|
info_list.Add(m);
|
}
|
}
|
return info_list;
|
}
|
|
/// <summary>
|
/// 流量曲綫
|
/// </summary>
|
/// <param name="StaticType"></param>
|
/// <returns></returns>
|
[Route("GetRightBottomInfo")]
|
[HttpGet]
|
public SzjtGlfqRightBottomInfoDto GetRightBottomInfo(int StaticType)
|
{
|
var now = DateTime.Now;
|
List<SzjtGlfqRecordBaseDto> today_records = new List<SzjtGlfqRecordBaseDto>();
|
var r = new Random();
|
for (int h = 0; h < now.Hour; h++)
|
{
|
for (int m = 0; m < 60; m++)
|
{
|
var dt = new DateTime(now.Year, now.Month, now.Day, h, m, 0);
|
today_records.Add(new SzjtGlfqRecordBaseDto() { RecordTime = dt.ToString("yyyy-MM-dd HH:mm:ss"), RecordValue = r.Next(1000, 1100) / 100.0 });
|
}
|
}
|
for (int m = 0; m < now.Minute; m++)
|
{
|
var dt = new DateTime(now.Year, now.Month, now.Day, now.Hour, m, 0);
|
today_records.Add(new SzjtGlfqRecordBaseDto() { RecordTime = dt.ToString("yyyy-MM-dd HH:mm:ss"), RecordValue = r.Next(1000, 1100) / 100.0 });
|
}
|
|
|
var yest = DateTime.Now.AddDays(-1);
|
List<SzjtGlfqRecordBaseDto> yest_records = new List<SzjtGlfqRecordBaseDto>();
|
for (int h = 0; h < 24; h++)
|
{
|
for (int m = 0; m < 60; m++)
|
{
|
var dt = new DateTime(yest.Year, yest.Month, yest.Day, h, m, 0);
|
yest_records.Add(new SzjtGlfqRecordBaseDto() { RecordTime = dt.ToString("yyyy-MM-dd HH:mm:ss"), RecordValue = r.Next(1000, 1100) / 100.0 });
|
}
|
}
|
|
SzjtGlfqRightBottomInfoDto info = new SzjtGlfqRightBottomInfoDto();
|
info.TodayFlowCurve = today_records;
|
info.YesterdayFlowCurve = yest_records;
|
|
return info;
|
}
|
|
|
}
|
}
|