namespace IStation.Application
|
{
|
/// <summary>
|
/// StationStatistics
|
/// </summary>
|
[Route("SZJT/Station/Statistics/Mobile")]
|
[ApiDescriptionSettings("SZJT", Name = "泵站统计(手机)", Order = 1300)]
|
public class StationStatistics_MobileController : IDynamicApiController
|
{
|
|
/// <summary>
|
/// 获取单月统计记录
|
/// </summary>
|
[Route("GetSingleMonthStatisticsInfo")]
|
[HttpGet]
|
public StationStatisticsMonthRecordMobileDto GetSingleMonthStatisticsInfo(long StationID, int Year, int Month)
|
{
|
var keyContent = $"SZJT_Station_Statistics_Mobile_GetSingleMonthStatisticsInfo_{StationID}_{Year}_{Month}";
|
var cacheKey = MemoryCacheKeyHelper.GetKey(MemoryCacheKey.WebApiLevel, MemoryCacheKey.Module, keyContent);
|
|
var vm_list = MemoryCacheHelper.GetSet(cacheKey, () =>
|
{
|
var allMonitorList = new Yw.Service.MonitorPoint().GetExSignalWithSignalTypeByBelongTypeAndBelongID(IStation.DataType.LogicSite, StationID);
|
Yw.Service.MonitorPoint.PublishCache(cacheKey);
|
if (allMonitorList == null || allMonitorList.Count < 1)
|
{
|
return default;
|
}
|
|
var startTime = new DateTime(Year, Month, 1);
|
var endTime = startTime.AddMonths(1);
|
|
var monthRecord = new StationStatisticsMonthRecordMobileDto();
|
for (DateTime dt = startTime.Date; dt < endTime.Date; dt = dt.AddDays(1))
|
{
|
var dayRecord = new StationStatisticsDayRecordMobileDto();
|
dayRecord.Day = dt;
|
dayRecord.Ws = null;
|
dayRecord.Ed = null;
|
monthRecord.DayRecords.Add(dayRecord);
|
}
|
|
var serviceRecord = new Yw.Service.MonitorRealRecord();
|
var monitor_ws = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.累积流量));
|
if (monitor_ws != null)
|
{
|
|
var ws_list = serviceRecord.GetLimitBySignalIDOfTimeRange(monitor_ws.SignalList.First().ID, startTime, endTime, 3600);
|
if (ws_list != null && ws_list.Count > 0)
|
{
|
var first = ws_list.First();
|
var last = ws_list.Last();
|
if (double.TryParse(first.DataValue, out double firstDataValue) && double.TryParse(last.DataValue, out double lastDataValue))
|
{
|
monthRecord.Ws = Math.Round(lastDataValue - firstDataValue, 2);
|
}
|
foreach (var dayRecord in monthRecord.DayRecords)
|
{
|
var ws_day_list = ws_list.Where(x => x.DataTime >= dayRecord.Day.Date && x.DataTime < dayRecord.Day.AddDays(1).Date && x.DataStatus.Count < 1).ToList();
|
if (ws_day_list != null && ws_day_list.Count > 0)
|
{
|
var firstDay = ws_day_list.First();
|
var lastDay = ws_day_list.Last();
|
if (double.TryParse(firstDay.DataValue, out double firstDayDataValue) && double.TryParse(lastDay.DataValue, out double lastDayDataValue))
|
{
|
dayRecord.Ws = Math.Round(lastDayDataValue - firstDayDataValue, 2);
|
}
|
}
|
}
|
}
|
}
|
|
var monitor_ed = allMonitorList.Find(x => x.SignalList.Exists(t => t.SignalType.Code == Yw.Monitor.SignalType.有功电度));
|
if (monitor_ed != null)
|
{
|
var ed_list = serviceRecord.GetLimitBySignalIDOfTimeRange(monitor_ed.SignalList.First().ID, startTime, endTime, 3600);
|
if (ed_list != null && ed_list.Count > 0)
|
{
|
var first = ed_list.First();
|
var last = ed_list.Last();
|
if (double.TryParse(first.DataValue, out double firstDataValue) && double.TryParse(last.DataValue, out double lastDataValue))
|
{
|
monthRecord.Ed = Math.Round(lastDataValue - firstDataValue, 2);
|
}
|
foreach (var dayRecord in monthRecord.DayRecords)
|
{
|
var ed_day_list = ed_list.Where(x => x.DataTime >= dayRecord.Day.Date && x.DataTime < dayRecord.Day.AddDays(1).Date).ToList();
|
if (ed_day_list != null && ed_day_list.Count > 0)
|
{
|
var firstDay = ed_day_list.First();
|
var lastDay = ed_day_list.Last();
|
if (double.TryParse(firstDay.DataValue, out double firstDayDataValue) && double.TryParse(lastDay.DataValue, out double lastDayDataValue))
|
{
|
dayRecord.Ed = Math.Round(lastDayDataValue - firstDayDataValue, 2);
|
}
|
}
|
}
|
}
|
}
|
|
return monthRecord;
|
}, Yw.Service.ConfigHelper.CacheLevel1);
|
|
return vm_list;
|
|
}
|
|
|
}
|
}
|