namespace IStation.Application
{
///
/// 调度
///
[AllowAnonymous]
[Route("ChenHang/Dispatch")]
[ApiDescriptionSettings("Web", Name = "优化调度", Order = 3)]
public class OptimalSchedule_Controller : IDynamicApiController
{
private readonly Service.ScheduleRequest _service_schedule_request = new();
private readonly Service.ScheduleConclusion _service_schedule_conclusion = new();
private readonly Service.SchedulePump _service_schedule_pump = new();
private static readonly IStation.Service.ScheduleScada _service_schedule_scada = new();
///
///获取泵站列表
///
[Route("GetStationList@V1.0")]
[HttpGet]
public List GetStationList()
{
var station1 = new StationTreeItemOutput()
{
ID = 1,
Name = "陈行1输",
SortCode = 1
};
var station2 = new StationTreeItemOutput()
{
ID = 2,
Name = "陈行2输",
SortCode = 2
};
return new List() { station1, station2 };
}
///
/// 调度
///
[AllowAnonymous]
[Route("Calculate@V1.0")]
[HttpPost]
public OptScheduleOutput Calculate([Required] OptScheduleStationInput input)
{
throw Yw.Dto.YOops.Oh(Yw.Dto.eResultCode.Alert, Yw.Dto.InternalErrorCodes.A001, "待恢复");
}
///
/// 调度
///
[AllowAnonymous]
[Route("GetLast")]
[HttpGet]
[NonUnify]
public OptScheduleOutput GetLast()
{
var last_request = _service_schedule_request.GetAll()?.LastOrDefault();
if (last_request == null)
{
return default;
}
var request_id = last_request.ID;
var conclusion_list = _service_schedule_conclusion.GetByRequestID(request_id);
var pump_list = _service_schedule_pump.GetByRequestID(request_id);
var scada_list = _service_schedule_scada.GetByRequestID(request_id);
var opt = new OptScheduleOutput();
opt.ID = request_id;
opt.TargetFlow1 = last_request.TargetFlow1;
opt.TargetPressure1 = last_request.TargetPressure1;
opt.TargetFlow2 = last_request.TargetFlow2;
opt.TargetPressure2 = last_request.TargetPressure2;
opt.ScheduleStatus1 = last_request.ScheduleStatus1;
opt.ScheduleStatus2 = last_request.ScheduleStatus2;
opt.TotalTimeSpent = last_request.TotalTimeSpent;
opt.ReceptionTime = last_request.ReceptionTime;
if (pump_list != null && pump_list.Any())
{
opt.Pumps = new List();
foreach (var item in pump_list)
{
var pump = new OptSchedulePumpOutput();
pump.RequestID = item.RequestID;
pump.Station = (int)item.Station;
pump.Flag = item.Flag;
pump.Flow = item.Flow;
pump.Head = item.Head;
pump.PressureDiff = item.PressureDiff;
pump.Power = item.Power;
pump.Efficiency = item.Efficiency;
pump.Hz = item.Hz;
pump.Rpm = item.Rpm;
opt.Pumps.Add(pump);
}
}
if (scada_list != null && scada_list.Any())
{
opt.Scadas = new List();
foreach (var item in scada_list)
{
var scada = new OptScheduleScadaOutput();
scada.RequestID = item.RequestID;
scada.Time = item.Time;
scada.Code = item.Code;
scada.Tag = item.Tag;
scada.Value = item.Value;
opt.Scadas.Add(scada);
}
}
if (conclusion_list != null && conclusion_list.Any())
{
opt.Conclusions = new List();
foreach (var item in conclusion_list)
{
var cl = new OptScheduleConclusionOutput();
cl.RequestID = item.RequestID;
cl.Station = (int)item.Station;
cl.TotalFlow = item.TotalFlow;
cl.TotalPressure = item.TotalPressure;
cl.TotalPower = item.TotalPower;
cl.TotalEfficiency = item.TotalEfficiency;
cl.WP = item.WP;
cl.UWP = item.UWP;
cl.Flags = item.Flags;
cl.MeritRatio = item.MeritRatio;
opt.Conclusions.Add(cl);
}
}
return opt;
}
}
}