namespace IStation.Application { /// /// 输水调度 /// [AllowAnonymous] [Route("Standard/Dispatch/Solution")] [ApiDescriptionSettings("Schedule", Name = "调度", Order = 1000)] public class Schedule_Std_Controller : IDynamicApiController, ITransient { private readonly Service.ScheduleRequest _service_schedule_request = new(); private readonly Service.ScheduleScada _service_schedule_scada = new(); private readonly Service.ScheduleConclusion _service_schedule_conclusion = new(); private readonly Service.SchedulePump _service_schedule_pump = new(); /// /// 调度 /// [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.DataCode = item.DataCode; scada.DataTime = item.DataTime; scada.ReceiptTime = item.ReceiptTime; scada.DataValue = item.DataValue; 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; } } }