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
{
///
/// 生产运营
///
[AllowAnonymous]
[Route("LargeScreen/Szjt/Scyy")]
[ApiDescriptionSettings("LargeScreen", Name = "苏州金庭(生产运营)", Order = 999)]
public class SzjtScyy_Controller : IDynamicApiController, ITransient
{
private readonly IHttpContextAccessor _httpContextAccessor;
///
///
///
public SzjtScyy_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;//出口压力信号
#endregion
///
/// 制水生产 (左上部分)
///
[Route("GetLeftTopInfo")]
[HttpGet]
public SzjtScyyLeftTopInfoDto GetLeftTopInfo()
{
var info_list = new SzjtScyyLeftTopInfoDto();
var servive_record = new Service.MonitorRealRecord();
//昨日累积供水量
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)
{
if (double.TryParse(tl_yes_firstValue.DataValue, out double tl_yes_first_value))
{
if (tl_yes_lastVlaue != null)
{
if (double.TryParse(tl_yes_lastVlaue.DataValue, out double tl_yes_last_value))
{
info_list.YesterdayTotalSupplyWater = NumberHelper.Round(tl_yes_last_value - tl_yes_first_value, 2);
}
}
}
}
//今日累积供水量
var tl_lastValue = servive_record.GetLastRecord(_corpid,_tlpointid_23,_tlsignalid_23);
if (tl_lastValue != null)
{
if (double.TryParse(tl_lastValue.DataValue, out double tl_last_value))
{
if (tl_yes_lastVlaue != null)
{
if (double.TryParse(tl_yes_lastVlaue.DataValue, out double tl_yes_last_value))
{
info_list.TodayTotalSupplyWater = NumberHelper.Round(tl_last_value - tl_yes_last_value, 2);
}
}
}
}
//当前瞬时流量
var l_lastValue = servive_record.GetLastRecord(_corpid, _lpointid_23,_lsignalid_23);
if (l_lastValue != null)
{
if (double.TryParse(l_lastValue.DataValue, out double l_last_value))
{
info_list.CurrentFlow = NumberHelper.Round(l_last_value, 1);
}
}
//浊度
var zh_lastValue = servive_record.GetLastRecord(_corpid, _zdpointId_23,_zdsignalid_23);
if (zh_lastValue != null)
{
if (double.TryParse(zh_lastValue.DataValue, out double zh_last_value))
{
info_list.CurrentTurbidity = NumberHelper.Round(zh_last_value, 2);
}
}
//余氯
var yu_lastValue = servive_record.GetLastRecord(_corpid, _ylpointid_23,_zdsignalid_23);
if (yu_lastValue != null)
{
if (double.TryParse(yu_lastValue.DataValue, out double yl_last_value))
{
info_list.CurrentResidualChlorine = NumberHelper.Round(yl_last_value, 2);
}
}
return info_list;
}
///
/// 获取当前压力 (左中部分:当前压力)
///
[Route("GetLeftMiddleInfo1")]
[HttpGet]
public double? GetLeftMiddleInfo1()
{
var service_record = new Service.MonitorRealRecord();
var lastRecord = service_record.GetLastNormalRecord(_corpid, _ckylpointid_23,_ckylsignalid_23);
if (lastRecord == null)
return default;
return NumberHelper.Round(double.Parse(lastRecord.DataValue),3);
//var r = new Random();
//var v = r.Next(2503, 2710) / 1000.0;
//return new Result(v);
}
///
/// 管网压力 (左中部分)
///
[Route("GetLeftMiddleInfo2")]
[HttpGet]
public SzjtScyyLeftMiddleInfoDto GetLeftMiddleInfo2()
{
var info = new SzjtScyyLeftMiddleInfoDto();
var service_record = new Service.MonitorRealRecord();
//单前压力
//var lastValue = service_record.GetLastRecordValue(_ckylpointid_13);
//info.Current = lastValue;
//昨日压力列表
var yesterday = service_record.GetBySignalIDOfDay(_corpid, _ckylpointid_23,_ckylsignalid_23, DateTime.Now.AddDays(-1));
if (yesterday != null && yesterday.Count > 0)
{
info.Yesterday = new List();
foreach (var item in yesterday)
{
var vm = new SzjtScyyGeneralRecord();
vm.RecordStatus = 0;
vm.RecordTime = item.DataTime;
vm.RecordValue = item.DataValue;
info.Yesterday.Add(vm);
}
}
//今日压力列表
var today = service_record.GetBySignalIDOfDay(_corpid, _ckylpointid_23, _ckylsignalid_23, DateTime.Now);
if (today != null && today.Count > 0)
{
info.Today = new List();
foreach (var item in today)
{
var vm = new SzjtScyyGeneralRecord();
vm.RecordStatus = 0;
vm.RecordTime = item.DataTime;
vm.RecordValue = item.DataValue;
info.Today.Add(vm);
}
}
return info;
//var r = new Random();
//List info_list = new List();
//for (int hour = 0; hour < DateTime.Now.Hour; hour++)
//{
// LeftMiddleItemInfo item = new LeftMiddleItemInfo();
// item.Label = hour.ToString();
// item.Yesterday = r.Next(2401, 2705) / 1000.0;
// item.Today = r.Next(2402, 2706) / 1000.0;
// info_list.Add(item);
//}
// return new Result>(info_list);
}
///
/// 泵站分析 (左下部分 )
///
/// 汇总类型(1按日 2 按周 3 按月 4 按年)
[Route("GetLeftBottomInfo")]
[HttpGet]
public List GetLeftBottomInfo(int StaticType)
{
var info_list = new List();
var service_station = new Service.Station();
var service_record = new Service.MonitorRealRecord();
var station_list = service_station.GetByCorpID(_corpid);
foreach (var station in station_list)
{
var item = new SzjtScyyLeftBottomItemInfoDto();
item.ID = station.ID;
item.Name = station.Name;
if (station.ID == _stationId)
{
item.Flow = NumberHelper.RoundString(double.Parse(service_record.GetLastRecord(_corpid, _lpointid_23, _lsignalid_23).DataValue), 2);
item.Press = NumberHelper.RoundString(double.Parse(service_record.GetLastRecord(_corpid, _ckylpointid_23, _ckylsignalid_23).DataValue), 2);
item.ResidualChlorine = NumberHelper.RoundString(double.Parse(service_record.GetLastRecord(_corpid, _ylpointid_23, _ylsignalid_23).DataValue), 3);
item.Turbidity = NumberHelper.RoundString(double.Parse(service_record.GetLastRecord(_corpid, _zdpointId_23, _zdsignalid_23).DataValue), 3);
}
info_list.Add(item);
}
//var r = new Random();
//List info_list = new List();
//var all_station = new Service.StationBase().GetByCorpID(1);
//foreach (var station in all_station)
//{
// LeftBottomItemInfo item = new LeftBottomItemInfo();
// item.ID = station.ID;
// item.Name = station.Name;
// item.Flow = r.Next(2600, 2800) / 100.0;
// item.Press = r.Next(211, 225) / 1000.0;
// item.WaterQuality = r.Next(210, 225) / 100.0;
// info_list.Add(item);
//}
return info_list;
}
///
/// 获取首页报警和信息公告(中间底部)
///
/// 信息类型(1信息 2报警)
[Route("GetCenterBottomInfo")]
[HttpGet]
public List GetCenterBottomInfo(int InfoType)
{
var info_list = new List();
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 SzjtScyyCenterBottomInfoDto();
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 SzjtScyyCenterBottomInfoDto();
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;
}
///
/// 获取报修(中间底部)
///
/// (RequesFormID)
[Route("GetRepairRequesFormDetalInfo")]
[HttpGet]
public SzjtScyyRepairRequesFormDetalInfoDto 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 SzjtScyyRepairRequesFormDetalInfoDto();
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;
}
///
/// 获取报警(中间底部)
///
/// (RequesFormID)
///
[Route("GetAlarmDataDetalInfo")]
[HttpGet]
public SzjtScyyAlarmDetalInfoDto GetAlarmDataDetalInfo(long ID)
{
var service = new Service.MonitorAlarmRecord();
var alarm = service.GetByID(_corpid, ID);
if (alarm == null)
{
throw new Exception("警报不存在");
}
var station_list = new Service.Station().GetByCorpID(_corpid);
var point = new Service.MonitorPoint().GetByID(_corpid,alarm.MonitorPointID);
var view_model = new SzjtScyyAlarmDetalInfoDto();
if (point.BelongType == IStation.ObjectType.Station)
{
view_model.StaionName = (from x in station_list where x.ID == point.BelongID select x.Name).FirstOrDefault();
}
view_model.RecordName = point.Name;
view_model.AlarmTime = alarm.AlarmTime.ToString("MM月dd日 HH时mm分ss秒");
//view_model.RecoveryTime = alarm.RecoveryTime == null?"":((DateTime)alarm.RecoveryTime).ToString("MM月dd日 HH时mm分ss秒");
view_model.RecordValue = alarm.DataValue.ToString();
view_model.ThresholdValue = alarm.ThresholdValue.ToString();
return view_model;
}
///
/// 工单数量 (右部上 )
///
///
[Route("GetRightTopInfo")]
[HttpGet]
public SzjtScyyRightTopInfoDto GetRightTopInfo()
{
var start = new DateTime(DateTime.Now.Year,DateTime.Now.Month,1);
var taskFormList = new Service.RepairTaskForm().GetFluzzyList(_corpid,null,null,null,null,null,null,null,start,null);
var taskFormCount = new Service.RepairTaskForm().GetCountByCorpID(_corpid);
var requestPendingCount=new Service.RepairRequestForm().GetPendingCountByCorpID(_corpid);
var vm = new SzjtScyyRightTopInfoDto();
vm.UnProcessingForm = requestPendingCount;
if (taskFormList == null || taskFormList.Count < 1)
{
vm.HistoryTotalForm = taskFormCount;
}
else
{
vm.TotalForm = taskFormList.Count;
vm.HistoryTotalForm = taskFormCount - vm.TotalForm;
vm.ProcessedForm = taskFormList.Where(x => x.Item1.FormStatus == Model.Repair.eTaskStatus.Accepted).Count();
vm.ProcessingForm = taskFormList.Where(x => x.Item1.FormStatus > Model.Repair.eTaskStatus.Accepted && x.Item1.FormStatus < Model.Repair.eTaskStatus.Succeed).Count();
vm.CheckedForm = taskFormList.Where(x => x.Item1.FormStatus >= Model.Repair.eTaskStatus.Succeed).Count();
}
return vm;
}
///
/// 产销差 (右部中)
///
///
[Route("GetRightCenterInfo")]
[HttpGet]
public List GetRightCenterInfo()
{
var r = new Random();
List info_list = new List();
if (DateTime.Now.Month < 2)
{
for (int month = 1; month <= 12; month++)
{
SzjtScyyRightCenterInfoDto m = new SzjtScyyRightCenterInfoDto();
}
}
else
{
for (int month = 1; month <= DateTime.Now.Month; month++)
{
SzjtScyyRightCenterInfoDto m = new SzjtScyyRightCenterInfoDto();
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;
}
}
}