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; } } }