namespace IStation.Service { /// /// 能效(多)实时记录 /// public partial class EtaMultiRealRecord { /// /// 通过 Station 获取流量、扬程、日期区间内运行的汇总内容数据 /// public List GetRunSummaryContentByStationOfQHDayRange(int Station, double Qmin, double Qmax, double Hmin, double Hmax, DateTime StartDay, DateTime EndDay) { //判断流量 if (Qmin > Qmax) { return default; } //判断扬程 if (Hmin > Hmax) { return default; } //判断日期 if (StartDay.Date > EndDay.Date) { return default; } var dal = DALCreateHelper.CreateDAL(); var entity_list = dal.GetRunSummaryContentByStationOfQHDayRange(Station, Qmin, Qmax, Hmin, Hmax, StartDay.Date, EndDay.Date); var model_list = Entity2Models(entity_list); return model_list; } /// /// 获取流量扬程区间的运行时间和平均效率 /// public List GetRunQHETRectByObjectOfDayRange(int Station, double Qspace, double Hspace, DateTime StartDay, DateTime EndDay) { if (StartDay.Date > EndDay.Date) { return default; } if (Qspace <= 0 || Hspace <= 0) { return default; } var dal = DALCreateHelper.CreateDAL(); var entity_list = dal.GetRunQHETByStationOfDayRange(Station, StartDay, EndDay); if (entity_list == null || entity_list.Count < 1) { return default; } //流量最小值 var min_double_q = entity_list.Min(x => x.Q); int q_min = 0; if (min_double_q > 10000) q_min = (int)(Math.Floor((min_double_q / 10000)) * 10000); else if (min_double_q > 1000) q_min = (int)(Math.Floor((min_double_q / 1000)) * 1000); else if (min_double_q > 100) q_min = (int)(Math.Floor((min_double_q / 100)) * 100); else q_min = (int)(Math.Floor((min_double_q / Qspace)) * Qspace); //流量最大值 int q_max = (int)Math.Ceiling(entity_list.Max(x => x.Q)); //扬程最大值 int h_max = (int)Math.Ceiling(entity_list.Max(x => x.H)); //扬程最小值 int h_min = (int)Math.Floor(entity_list.Min(x => x.H)); //流量小数位数 var q_digit = 1; //扬程小数位数 var h_digit = 2; var list = new List(); double q_temp = q_min; while (q_temp < q_max) { double q_temp_over = Math.Round(q_temp + Qspace, q_digit); if (q_temp_over > q_max) q_temp_over = q_max; double h_temp = h_min; while (h_temp < h_max) { double h_temp_over = Math.Round(h_temp + Hspace, h_digit); if (h_temp_over > h_max) h_temp_over = h_max; var items = entity_list.Where(t => t.H >= h_temp && t.H <= h_temp_over && t.Q >= q_temp && t.Q <= q_temp_over).ToList(); var model = new Model.EtaQHETRect(); model.Hmax = h_temp_over; model.Hmin = h_temp; model.Qmax = q_temp_over; model.Qmin = q_temp; if (items.Count > 0) { model.Tsum = items.Sum(t => t.T); model.Eavg = Math.Round(items.Average(t => t.E), 2); } list.Add(model); h_temp = h_temp_over; } q_temp = q_temp_over; } return list; } /// /// 获取流量扬程区间的运行时间和平均效率 /// public Model.EtaQHETRectList GetRunQHETRectListByObjectOfDayRange(int Station, double Qspace, double Hspace, DateTime StartDay, DateTime EndDay) { if (EndDay.Date < StartDay.Date) { return default; } if (Qspace <= 0 || Hspace <= 0) { return default; } var dal = DALCreateHelper.CreateDAL(); var entity_list = dal.GetRunQHETByStationOfDayRange(Station, StartDay, EndDay); if (entity_list == null || entity_list.Count < 1) { return default; } var list = new Model.EtaQHETRectList(); //流量最大值 int q_max = (int)Math.Ceiling(entity_list.Max(x => x.Q)); //流量最小值 int q_min = (int)Math.Floor(entity_list.Min(x => x.Q)); //扬程最大值 int h_max = (int)Math.Ceiling(entity_list.Max(x => x.H)); //扬程最小值 int h_min = (int)Math.Floor(entity_list.Min(x => x.H)); //流量小数位数 var q_digit = 1; //扬程小数位数 var h_digit = 2; list.Qmax = q_max; list.Qmin = q_min; list.Hmax = h_max; list.Hmin = h_min; list.Qspace = Qspace; list.Hspace = Hspace; double q_temp = q_min; while (q_temp < q_max) { double q_temp_over = Math.Round(q_temp + Qspace, q_digit); if (q_temp_over > q_max) q_temp_over = q_max; double h_temp = h_min; while (h_temp < h_max) { double h_temp_over = Math.Round(h_temp + Hspace, h_digit); if (h_temp_over > h_max) h_temp_over = h_max; var items = entity_list.Where(t => t.H >= h_temp && t.H <= h_temp_over && t.Q >= q_temp && t.Q <= q_temp_over).ToList(); if (items.Count > 0) { var model = new Model.EtaQHETRect(); model.Hmax = h_temp_over; model.Hmin = h_temp; model.Qmax = q_temp_over; model.Qmin = q_temp; model.Tsum = items.Sum(t => t.T); model.Eavg = Math.Round(items.Average(t => t.E), 2); list.RectList.Add(model); } h_temp = h_temp_over; } q_temp = q_temp_over; } return list; } } }