using Microsoft.VisualBasic;
namespace IStation.Application
{
///
/// BigScreen
///
[Route("SZJT/Big/Screen/Logic")]
[ApiDescriptionSettings("SZJT", Name = "大屏(Logic)", Order = 1000)]
public class BigScreen_LogicController : IDynamicApiController
{
#region 所有
///
/// 获取所有泵站kpi信息(待完善)
///
[Route("GetAllStationKpiInfo@V1.0")]
[HttpGet]
public BigScreenAllStationKpiDto GetAllStationKpiInfo()
{
var vm = new BigScreenAllStationKpiDto();
vm.Lws = new BigScreenAllStationKpiItemDto()
{
Name = "当日累计供水量",
Value = "1120",
UnitName = "m³"
};
vm.Lps = new BigScreenAllStationKpiItemDto()
{
Name = "当日累计用电量",
Value = "2300",
UnitName = "kW‧h"
};
vm.Sws = new BigScreenAllStationKpiItemDto()
{
Name = "当前瞬时总流量",
Value = "2300.2",
UnitName = "m³/h"
};
vm.Sps = new BigScreenAllStationKpiItemDto()
{
Name = "当前瞬时总功率",
Value = "2600.2",
UnitName = "kW"
};
vm.Tsc = new BigScreenAllStationKpiItemDto()
{
Name = "泵站总数量",
Value = "13",
UnitName = "座"
};
vm.Rsc = new BigScreenAllStationKpiItemDto()
{
Name = "运行泵站数量",
Value = "10",
UnitName = "座"
};
vm.Tpc = new BigScreenAllStationKpiItemDto()
{
Name = "机组总数",
Value = "50",
UnitName = "台"
};
vm.Rpc = new BigScreenAllStationKpiItemDto()
{
Name = "运行机组数量",
Value = "40",
UnitName = "台"
};
return vm;
}
///
/// 获取所有泵站项列表
///
[Route("GetAllStationItemList@V1.0")]
[HttpGet]
public List GetAllStationItemList()
{
var allStationList = new Service.LogicSite().GetAll();
if (allStationList == null || allStationList.Count < 1)
{
return default;
}
var service_monitor = new Lazy(() => new Yw.Service.MonitorPoint());
var service_monitor_record = new Lazy(() => new Yw.Service.MonitorRealRecord());
var vmList = new List();
foreach (var station in allStationList)
{
var vm = new BigScreenAllStationListItemDto();
vm.ID = station.ID;
vm.Name = station.Name;
vmList.Add(vm);
var allMonitorList = service_monitor.Value.GetExSignalWithSignalTypeByBelongTypeAndBelongID(IStation.DataType.LogicSite, station.ID, Yw.Monitor.eCronType.Real);
if (allMonitorList != null && allMonitorList.Count > 0)
{
var monitorQ = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.瞬时流量));
if (monitorQ != null)
{
var signalQ = monitorQ.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.瞬时流量);
vm.Qk = new BigScreenAllStationListKpiItemDto()
{
Name = "瞬时流量",
Value = null,
UnitName = signalQ.GetDisplayUnitName()
};
var recordQ = service_monitor_record.Value.GetLastRecord(signalQ.ID);
if (recordQ != null)
{
vm.Qk.Value = signalQ.GetDisplayValue(recordQ.DataValue);
}
}
var monitorPr = allMonitorList.Find(x => x.Flags.Contains(Yw.Monitor.Flags.出口) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.压力));
if (monitorPr != null)
{
var signalPr = monitorPr.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.压力);
vm.Prk = new BigScreenAllStationListKpiItemDto()
{
Name = "出口压力",
Value = null,
UnitName = signalPr.GetDisplayUnitName()
};
var recordPr = service_monitor_record.Value.GetLastRecord(signalPr.ID);
if (recordPr != null)
{
vm.Prk.Value = signalPr.GetDisplayValue(recordPr.DataValue);
}
}
}
}
return vmList;
}
///
/// 获取所有泵站工单Kpi信息
///
[Route("GetAllStationRepairKpiInfo@V1.0")]
[HttpGet]
public BigScreenAllStationRepairKpiDto GetAllStationRepairKpiInfo()
{
var vm = new BigScreenAllStationRepairKpiDto();
vm.Cd = 10;
vm.Cm = 235;
vm.Cy = 1230;
vm.Pending = 5;
vm.Accepted = 5;
vm.Progress = 35;
vm.Checked = 680;
return vm;
}
///
/// 获取所有泵站工单日统计(最近一月)
///
[Route("GetAllStationRepairDayStatisticsInfo@V1.0")]
[HttpGet]
public List GetAllStationRepairDayStatisticsInfo()
{
var dtEnd = DateTime.Now.Date;
var dtStart = dtEnd.AddMonths(-1);
var vmList = new List();
for (DateTime dt = dtStart; dt <= dtEnd; dt = dt.AddDays(1))
{
var vm = new BigScreenAllStationRepairDayCountDto();
vm.Day = dt;
vm.Count = Yw.Untity.RandomHelper.Random(10, 100);
vmList.Add(vm);
}
return vmList;
}
///
/// 获取所有泵站工单月统计(最近一年)
///
[Route("GetAllStationRepairMonthStatisticsInfo@V1.0")]
[HttpGet]
public List GetAllStationRepairMonthStatisticsInfo()
{
var dtNow = DateTime.Now;
var dtEnd = new DateTime(dtNow.Year, dtNow.Month, 1);
var dtStart = dtEnd.AddMonths(-11);
var vmList = new List();
for (DateTime dt = dtStart; dt <= dtEnd; dt = dt.AddMonths(1))
{
var vm = new BigScreenAllStationRepairMonthCountDto();
vm.Year = dt.Year;
vm.Month = dt.Month;
vm.Count = Yw.Untity.RandomHelper.Random(100, 1000);
vmList.Add(vm);
}
return vmList;
}
///
/// 获取所有泵站报警信息
///
[Route("GetAllStationAlarmInfo@V1.0")]
[HttpGet]
public List GetAllStationAlarmInfo()
{
var vmList = new List();
vmList.Add(new BigScreenAllStationAlarmItemDto()
{
ID = 1,
Name = "金庭中腰泵站",
Content = "1#机组出口压力过低,请关注状态变化"
});
vmList.Add(new BigScreenAllStationAlarmItemDto()
{
ID = 2,
Name = "凯泉一体化加压泵站",
Content = "2#瞬时流量数据异常,请检修"
});
vmList.Add(new BigScreenAllStationAlarmItemDto()
{
ID = 3,
Name = "凯泉一体化加压泵站",
Content = "2#瞬时流量数据异常,请检修"
});
vmList.Add(new BigScreenAllStationAlarmItemDto()
{
ID = 4,
Name = "凯泉一体化加压泵站",
Content = "2#瞬时流量数据异常,请检修"
});
vmList.Add(new BigScreenAllStationAlarmItemDto()
{
ID = 5,
Name = "凯泉一体化加压泵站",
Content = "2#瞬时流量数据异常,请检修"
});
vmList.Add(new BigScreenAllStationAlarmItemDto()
{
ID = 6,
Name = "凯泉一体化加压泵站",
Content = "2#瞬时流量数据异常,请检修"
});
return vmList;
}
#endregion
#region 单站
///
/// 获取单泵站kpi信息
///
[Route("GetSingleStationKpiInfo@V1.0")]
[HttpGet]
public BigScreenSingleStationKpiDto GetSingleStationKpiInfo([FromQuery][Required] StationIDInput input)
{
var vm = new BigScreenSingleStationKpiDto();
var service_monitor = new Lazy(() => new Yw.Service.MonitorPoint());
var service_monitor_record = new Lazy(() => new Yw.Service.MonitorRealRecord());
var service_equipment = new Lazy(() => new Yw.Service.Equipment());
var service_run_record = new Lazy(() => new Yw.Service.RunRealRecord());
var allMonitorList = service_monitor.Value.GetExSignalWithSignalTypeByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID, Yw.Monitor.eCronType.Real);
if (allMonitorList != null && allMonitorList.Count > 0)
{
var monitorQ = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.瞬时流量));
if (monitorQ != null)
{
var signalQ = monitorQ.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.瞬时流量);
vm.Q = new BigScreenSingleStationKpiItemDto()
{
Name = "瞬时流量",
Value = null,
UnitName = signalQ.GetDisplayUnitName()
};
var recordQ = service_monitor_record.Value.GetLastRecord(signalQ.ID);
if (recordQ != null)
{
vm.Q.Value = signalQ.GetDisplayValue(recordQ.DataValue);
}
}
var monitorPr = allMonitorList.Find(x => x.Flags.Contains(Yw.Monitor.Flags.出口) && x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.压力));
if (monitorPr != null)
{
var signalPr = monitorPr.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.压力);
vm.Pr = new BigScreenSingleStationKpiItemDto()
{
Name = "出口压力",
Value = null,
UnitName = signalPr.GetDisplayUnitName()
};
var recordPr = service_monitor_record.Value.GetLastRecord(signalPr.ID);
if (recordPr != null)
{
vm.Pr.Value = signalPr.GetDisplayValue(recordPr.DataValue);
}
}
var monitorZD = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.浊度));
if (monitorZD != null)
{
var signalZD = monitorZD.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.浊度);
vm.ZD = new BigScreenSingleStationKpiItemDto()
{
Name = "浊度",
Value = null,
UnitName = signalZD.GetDisplayUnitName()
};
var recordZD = service_monitor_record.Value.GetLastRecord(signalZD.ID);
if (recordZD != null)
{
vm.ZD.Value = signalZD.GetDisplayValue(recordZD.DataValue);
}
}
var monitorYL = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.余氯));
if (monitorYL != null)
{
var signalYL = monitorYL.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.余氯);
vm.YL = new BigScreenSingleStationKpiItemDto()
{
Name = "余氯",
Value = null,
UnitName = signalYL.GetDisplayUnitName()
};
var recordYL = service_monitor_record.Value.GetLastRecord(signalYL.ID);
if (recordYL != null)
{
vm.YL.Value = signalYL.GetDisplayValue(recordYL.DataValue);
}
}
}
var allEquipmentList = service_equipment.Value.GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID);
allEquipmentList = allEquipmentList?.Where(x => x.Flags.Contains(IStation.Flags.机组)).ToList();
if (allEquipmentList != null && allEquipmentList.Count > 0)
{
vm.RunList = new List();
foreach (var equipment in allEquipmentList)
{
var vm_run = new BigScreenSingleStationKpiRunItemDto()
{
Name = equipment.Name,
RunStatus = 0
};
var run_record = service_run_record.Value.GetLastRecord(Yw.Assets.DataType.Equipment, equipment.ID);
if (run_record != null)
{
vm_run.RunStatus = run_record.RSa;
}
vm.RunList.Add(vm_run);
}
}
return vm;
}
///
/// 获取单泵站指标信息
///
[Route("GetSingleStationQuotaInfo@V1.0")]
[HttpGet]
public BigScreenSingleStationQuotaKpiDto GetSingleStationQuotaInfo([FromQuery][Required] StationIDInput input)
{
var vm = new BigScreenSingleStationQuotaKpiDto();
vm.Ws = new List();
vm.Ps = new List();
var dtEnd = DateTime.Now.Date;
var dtStart = dtEnd.AddMonths(-1);
List allWsRecordList = null;//所有供水量
List allPsRecordList = null;//所有用电量
Yw.Model.Signal_SignalType signalWs = null;//用水量信号
Yw.Model.Signal_SignalType signalPs = null;//用电量信号
var service_day_record = new Lazy(() => new Yw.Service.MonitorDayRecord());
var allMonitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID, Yw.Monitor.eCronType.EachDay);
if (allMonitorList != null && allMonitorList.Count > 0)
{
var monitorWs = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.累积流量));
if (monitorWs != null)
{
signalWs = monitorWs.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.累积流量);
allWsRecordList = service_day_record.Value.GetBySignalIDOfDayRange(signalWs.ID, dtStart, dtEnd);
}
var monitorPs = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.有功电度));
if (monitorPs != null)
{
signalPs = monitorPs.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.有功电度);
allPsRecordList = service_day_record.Value.GetBySignalIDOfDayRange(signalPs.ID, dtStart, dtEnd);
}
}
for (DateTime dt = dtStart; dt <= dtEnd; dt = dt.AddDays(1))
{
var ws = allWsRecordList?.Find(x => x.DataDay.Date == dt.Date);
vm.Ws.Add(new BigScreenSingleStationQuotaItemDto()
{
Day = dt,
Value = ws == null ? "0" : signalWs.GetDisplayValue(ws.DataValue),
UnitName = signalWs?.GetDisplayUnitNames()
});
var ps = allPsRecordList.Find(x => x.DataDay.Date == dt.Date);
vm.Ps.Add(new BigScreenSingleStationQuotaItemDto()
{
Day = dt,
Value = ps == null ? "0" : signalPs.GetDisplayValue(ps.DataValue),
UnitName = signalPs?.GetDisplayUnitNames()
});
}
return vm;
}
///
/// 获取单泵站机组项列表
///
[Route("GetSingleStationEnginePumpItemList@V1.0")]
[HttpGet]
public List GetSingleStationEnginePumpItemList([FromQuery][Required] StationIDInput input)
{
var service_equipment = new Yw.Service.Equipment();
var allEnginePumpList = service_equipment.GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID);
allEnginePumpList = allEnginePumpList?.Where(x => x.Flags.Contains(IStation.Flags.机组)).ToList();
if (allEnginePumpList == null || allEnginePumpList.Count < 1)
{
return default;
}
var service_monitor_mapping = new Lazy(() => new Yw.Service.EquipmentMonitorMapping());
var service_monitor = new Lazy(() => new Yw.Service.MonitorPoint());
var service_monitor_record = new Lazy(() => new Yw.Service.MonitorRealRecord());
var vmList = new List();
foreach (var enginePump in allEnginePumpList)
{
var vm = new BigScreenSingleStationEnginePumpListItemDto();
vm.ID = enginePump.ID;
vm.Name = enginePump.Name;
vmList.Add(vm);
var allChildEquipmentList = service_equipment.GetChildAndSelfByID(enginePump.ID);
if (allChildEquipmentList != null && allChildEquipmentList.Count > 0)
{
var allChildEquipmentIds = allChildEquipmentList.Select(x => x.ID).Distinct().ToList();
var allMappingList = service_monitor_mapping.Value.GetByEquipmentIds(allChildEquipmentIds);
if (allMappingList != null && allMappingList.Count > 0)
{
var allMonitorIds = allMappingList.Select(x => x.MonitorPointID).Distinct().ToList();
var allMonitorList = service_monitor.Value.GetExSignalWithSignalTypeByIds(allMonitorIds);
if (allMonitorList != null && allMonitorList.Count > 0)
{
var monitorRs = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.运行状态));
if (monitorRs != null)
{
var signalRs = monitorRs.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.运行状态);
vm.Rs = new BigScreenSingleStationEnginePumpListKpiItemDto()
{
Name = "状态",
Value = null,
UnitName = null
};
var recordRs = service_monitor_record.Value.GetLastRecord(signalRs.ID);
if (recordRs != null)
{
vm.Rs.Value = recordRs.DataValue;
}
}
var monitorHz = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.频率));
if (monitorHz != null)
{
var signalHz = monitorHz.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.频率);
vm.Hz = new BigScreenSingleStationEnginePumpListKpiItemDto()
{
Name = "频率",
Value = null,
UnitName = signalHz.GetDisplayUnitName()
};
var recordHz = service_monitor_record.Value.GetLastRecord(signalHz.ID);
if (recordHz != null)
{
vm.Hz.Value = signalHz.GetDisplayValue(recordHz.DataValue);
}
}
var monitorP = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.有功功率));
if (monitorP != null)
{
var signalP = monitorP.SignalList.Find(x => x.SignalType.Code == Yw.Monitor.SignalType.有功功率);
vm.P = new BigScreenSingleStationEnginePumpListKpiItemDto()
{
Name = "功率",
Value = null,
UnitName = signalP.GetDisplayUnitName()
};
var recordP = service_monitor_record.Value.GetLastRecord(signalP.ID);
if (recordP != null)
{
vm.P.Value = signalP.GetDisplayValue(recordP.DataValue);
}
}
}
}
}
}
return vmList;
}
///
/// 获取单泵站工单Kpi信息(待完善)
///
[Route("GetSingleStationRepairKpiInfo@V1.0")]
[HttpGet]
public BigScreenSingleStationRepairKpiDto GetSingleStationRepairKpiInfo([FromQuery][Required] StationIDInput input)
{
var vm = new BigScreenSingleStationRepairKpiDto();
vm.Cd = 10;
vm.Cm = 235;
vm.Cy = 1230;
vm.Pending = 5;
vm.Accepted = 5;
vm.Progress = 35;
vm.Checked = 680;
return vm;
}
///
/// 获取单泵站工单统计信息
///
[Route("GetSingleStationRepairStatisticsInfo@V1.0")]
[HttpGet]
public BigScreenSingleStationRepairStatisticsInfoDto GetSingleStationRepairStatisticsInfo([FromQuery][Required] StationIDInput input)
{
var vm = new BigScreenSingleStationRepairStatisticsInfoDto();
vm.LastMonth = new List();
var dtEnd = DateTime.Now.Date;
var dtStart = dtEnd.AddMonths(-1);
for (DateTime dt = dtStart; dt <= dtEnd; dt = dt.AddDays(1))
{
var vm_day = new BigScreenSingleStationRepairDayCountDto();
vm_day.Day = dt;
vm_day.Count = Yw.Untity.RandomHelper.Random(10, 100);
vm.LastMonth.Add(vm_day);
}
vm.LastYear = new List();
var dtNow = DateTime.Now;
dtEnd = new DateTime(dtNow.Year, dtNow.Month, 1);
dtStart = dtEnd.AddMonths(-11);
for (DateTime dt = dtStart; dt <= dtEnd; dt = dt.AddMonths(1))
{
var vm_month = new BigScreenSingleStationRepairMonthCountDto();
vm_month.Year = dt.Year;
vm_month.Month = dt.Month;
vm_month.Count = Yw.Untity.RandomHelper.Random(100, 1000);
vm.LastYear.Add(vm_month);
}
return vm;
}
///
/// 获取单泵站机组工单统计信息
///
[Route("GetSingleStationRepairEnginePumpStatisticsInfo@V1.0")]
[HttpGet]
public BigScreenSingleStationRepairEnginePumpStatisticsInfoDto GetSingleStationRepairEnginePumpStatisticsInfo([FromQuery][Required] StationIDInput input)
{
var vm = new BigScreenSingleStationRepairEnginePumpStatisticsInfoDto();
vm.Cd = new List()
{
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="1#机组",Count=1},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="2#机组",Count=3},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="3#机组",Count=0},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="4#机组",Count=1}
};
vm.Cm = new List()
{
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="1#机组",Count=10},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="2#机组",Count=32},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="3#机组",Count=4},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="4#机组",Count=18}
};
vm.Cm = new List()
{
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="1#机组",Count=123},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="2#机组",Count=45},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="3#机组",Count=8},
new BigScreenSingleStationRepairEnginePumpCountDto(){ Name="4#机组",Count=23}
};
return vm;
}
///
/// 获取单泵站报警信息
///
[Route("GetSingleStationAlarmInfo@V1.0")]
[HttpGet]
public List GetSingleStationAlarmInfo([FromQuery][Required] StationIDInput input)
{
var vmList = new List();
var allEquipmentList = new Yw.Service.Equipment().GetByBelongTypeAndBelongID(IStation.DataType.LogicSite, input.StationID);
if (allEquipmentList == null || allEquipmentList.Count < 1)
{
return vmList;
}
var allEnginePumpList = allEquipmentList.Where(x => x.Flags.Contains(IStation.Flags.机组)).ToList();
if (allEnginePumpList.Count < 1)
{
return vmList;
}
var service_monitor_maping = new Yw.Service.EquipmentMonitorMapping();
var service_monitor = new Lazy(() => new Yw.Service.MonitorPoint());
var servie_alarm_record = new Lazy(() => new Yw.Service.MonitorValueAlarmRecord());
foreach (var enginePump in allEnginePumpList)
{
var allMonitorMappingList = service_monitor_maping.GetByEquipmentIDContainsChildren(enginePump.ID);
if (allMonitorMappingList != null && allMonitorMappingList.Count > 0)
{
var allMonitorIds = allMonitorMappingList.Select(x => x.MonitorPointID).Distinct().ToList();
var allMonitorList = service_monitor.Value.GetExSignalWithSignalTypeByIds(allMonitorIds);
var allSignalList = allMonitorList.SelectMany(x => x.SignalList).ToList();
var allSignalIds = allSignalList.Select(x => x.ID).Distinct().ToList();
var allAlarmList = servie_alarm_record.Value.GetLastListBySignalIds(allSignalIds, 3);
if (allAlarmList != null && allAlarmList.Count > 0)
{
foreach (var alarm in allAlarmList)
{
var vm = new BigScreenSingleStationAlarmItemDto()
{
ID = alarm.ID,
Name = enginePump.Name,
Content = alarm.AlarmName
};
vmList.Add(vm);
}
}
}
}
return vmList;
}
#endregion
}
}