| | |
| | | using IStation.Dto; |
| | | using IStation.CalcModel.Tide; |
| | | using IStation.Common; |
| | | using IStation.Dto; |
| | | using IStation.Model; |
| | | using IStation.ZyModel; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.IO; |
| | | using System.Linq; |
| | | using System.Security.Policy; |
| | | using System.Threading.Tasks; |
| | | using System.Web.Http; |
| | | using System.Web.Http.Results; |
| | | |
| | | namespace IStation.WebApi.Controllers |
| | | { |
| | | /// <summary> |
| | |
| | | [RoutePrefix("PumpRun")] |
| | | public class PumpRunController : ApiController |
| | | { |
| | | private bool isdebug = true; |
| | | |
| | | /// <summary> |
| | | /// 获取某一天实际参数 |
| | | /// 获取泵实际运行参数(一天) |
| | | /// </summary> |
| | | /// <param name="day"></param> |
| | | /// <returns></returns> |
| | |
| | | [HttpGet] |
| | | public async Task<IStation.Dto.ApiResult> GetByOneDay(string startday) |
| | | { |
| | | List<RealScadaData> PumpState = new List<RealScadaData>(); |
| | | List<RealScadaData> TotalWater = new List<RealScadaData>(); |
| | | List<RealScadaData> PumpTotalElecty = new List<RealScadaData>(); |
| | | |
| | | Model.RunParasData runParasData = new Model.RunParasData(); |
| | | if (startday == null) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day null" }; |
| | |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | // PumpState = await ZyConnectHelper.GetPumpOpenStatusBySingleDay(d); //获取泵的开机情况 |
| | | // totalWater = await ZyConnectHelper.GetTotalWaterByDayRange_In(d, d); |
| | | // pumpRunParasDay.TotalWater = totalWater; |
| | | // PumpTotalElecty = await ZyConnectHelper.GetPumpTotalElectricity(d, d); //获取某段时间的用电量 |
| | | if (d > DateTime.Now.AddDays(1)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "天数不正确" }; |
| | | } |
| | | RunParasData result = null; |
| | | PumpRunParasHelper pumpRunParasHelper = new PumpRunParasHelper(); |
| | | result = Common.PumpRunParasHelper.ReadPumpRunParas(d); |
| | | string geterroer = null; |
| | | if (result != null && isdebug) |
| | | { |
| | | result.Electric = Math.Round(result.Electric, 2); |
| | | result.Money = Math.Round(result.Money, 2); |
| | | result.FlowIn = Math.Round(result.FlowIn, 2); |
| | | if (result.Pump1.Count != 0) |
| | | { |
| | | foreach (var item in result.Pump1) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | if (result.Pump2.Count != 0) |
| | | { |
| | | foreach (var item in result.Pump2) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | if (result.Pump3.Count != 0) |
| | | { |
| | | foreach (var item in result.Pump3) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | if (result.Pump4.Count != 0) |
| | | { |
| | | foreach (var item in result.Pump4) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | if (result.Pump5.Count != 0) |
| | | { |
| | | foreach (var item in result.Pump5) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var PumpTotalElecty = await ZyConnectHelper.GetPumpTotalElectricity(d, d); //获取某段时间的用电量 |
| | | var PumpState = await ZyConnectHelper.GetPumpOpenStatusBySingleDay(d); //获取泵的开机情况 |
| | | var TotalWater = await ZyConnectHelper.GetTotalWaterByDayTimeRange_In(d, d); //取水量 |
| | | |
| | | var debug = Common.PumpRunParasHelper.ReadPumpRunParas(d.AddDays(-15)); |
| | | if (debug == null) |
| | | { |
| | | /* PumpHistoryDataFileHelper pumpHistoryDataFileHelper=new PumpHistoryDataFileHelper(); |
| | | var TotalWater = pumpHistoryDataFileHelper.GetAllWaterData(); |
| | | var PumpState = pumpHistoryDataFileHelper.getpumpstate(); |
| | | var PumpTotalElecty = pumpHistoryDataFileHelper.GetAllEleData();*/ |
| | | result = pumpRunParasHelper.GetRunParasDatas(PumpState, TotalWater, PumpTotalElecty, d, out geterroer); |
| | | } |
| | | debug.Electric = Math.Round(debug.Electric, 2); |
| | | debug.Money = Math.Round(debug.Money, 2); |
| | | debug.FlowIn = Math.Round(debug.FlowIn, 2); |
| | | if (debug.Pump1.Count != 0) |
| | | if (result != null) |
| | | { |
| | | foreach (var item in debug.Pump1) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | pumpRunParasHelper.Save(result, out string error); |
| | | // LogHelper.Info(error); |
| | | } |
| | | if (debug.Pump2.Count != 0) |
| | | if (geterroer != null) |
| | | { |
| | | foreach (var item in debug.Pump2) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | LogHelper.Info(geterroer); |
| | | } |
| | | if (debug.Pump3.Count != 0) |
| | | { |
| | | foreach (var item in debug.Pump3) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | if (debug.Pump4.Count != 0) |
| | | { |
| | | foreach (var item in debug.Pump4) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | if (debug.Pump5.Count != 0) |
| | | { |
| | | foreach (var item in debug.Pump5) |
| | | { |
| | | item.Electric = Math.Round(item.Electric, 2); |
| | | item.Money = Math.Round(item.Money, 2); |
| | | item.FlowIn = Math.Round(item.FlowIn, 2); |
| | | } |
| | | } |
| | | return new IStation.Dto.ApiResult<Model.RunParasData>(debug) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | return new IStation.Dto.ApiResult<Model.RunParasData>(result) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取历史参数 |
| | | /// 获取泵历史运行参数 |
| | | /// </summary> |
| | | /// <param name="day"></param> |
| | | /// <returns></returns> |
| | | [Route("GetByHistoryOneDay")] |
| | | [HttpGet] |
| | | public async Task<IStation.Dto.ApiResult> GetByHistoryOneDay(string day) |
| | | public IStation.Dto.ApiResult GetByHistoryOneDay(string day) |
| | | { |
| | | if (day == null) |
| | | { |
| | |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | |
| | | var history = Common.PumpRunParasHelper.ReadPumpRunParas(d); |
| | | var history = Common.PumpRunParasHelper.ReadPumpRunParas(d); |
| | | if (history == null) |
| | | { |
| | | } |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "Data null" }; |
| | | history.Electric = Math.Round(history.Electric, 2); |
| | | history.Money = Math.Round(history.Money, 2); |
| | | history.FlowIn = Math.Round(history.FlowIn, 2); |
| | |
| | | return new IStation.Dto.ApiResult<Model.RunParasData>(history) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 一天内的总取水量和用电量 |
| | | /// </summary> |
| | | /// <param name="day"></param> |
| | | /// <returns></returns> |
| | | [Route("GetOneDayData")] |
| | | [HttpGet] |
| | | public async Task<IStation.Dto.ApiResult> GetOneDayData(string day) |
| | | public IStation.Dto.ApiResult GetOneDayPumpWaterData(string day) |
| | | { |
| | | if (day == null) |
| | | { |
| | |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | var WaterParas = Common.PumpRunParasHelper.ReadPumpWaterParas(d); |
| | | |
| | | return new IStation.Dto.ApiResult<Model.RunParasData>() { Code = ApiResultCode.Success, Message = "Success" }; |
| | | return new IStation.Dto.ApiResult<List<Model.PumpWater>>(WaterParas) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取时间段内的单管道供水数据 |
| | | /// </summary> |
| | | /// <param name="startday"></param> |
| | | /// <param name="endday"></param> |
| | | /// <param name="sign"></param> |
| | | /// <returns></returns> |
| | | [Route("GetPumpOutDayWater")] |
| | | [HttpGet] |
| | | public IStation.Dto.ApiResult GetPumpOutWater(string startday, string endday, int sign) |
| | | { |
| | | if (startday == null || endday == null) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day null" }; |
| | | } |
| | | DateTime Start; |
| | | if (!DateTime.TryParse(startday, out Start)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | DateTime End; |
| | | if (!DateTime.TryParse(endday, out End)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | var WaterParas = Common.PumpRunParasHelper.ReadPumpOutWater(Start, End, sign); |
| | | |
| | | return new IStation.Dto.ApiResult<List<Model.OutList>>(WaterParas) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取所有的月合计数据(单管道) |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [Route("GetPumpOutMonthWater")] |
| | | [HttpGet] |
| | | public IStation.Dto.ApiResult GetPumpOutMonthWater() |
| | | { |
| | | var WaterParas = Common.PumpRunParasHelper.ReadPumpMonthOutWater(); |
| | | return new IStation.Dto.ApiResult<List<Model.PumpOutWater>>(WaterParas) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | |
| | | /* /// <summary> |
| | | /// 获取天的合并供水瞬时数据(总管) |
| | | /// </summary> |
| | | /// <param name="startday"></param> 开始日期 |
| | | /// <param name="endday"></param> 结束日期 |
| | | /// <returns></returns> |
| | | [Route("GetPumpTotalDayOutWater")] |
| | | [HttpGet] |
| | | public IStation.Dto.ApiResult GetPumpTotalDayOutWater(string startday, string endday) |
| | | { |
| | | if (startday == null || endday == null) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day null" }; |
| | | } |
| | | DateTime Start; |
| | | if (!DateTime.TryParse(startday, out Start)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | DateTime End; |
| | | if (!DateTime.TryParse(endday, out End)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | var WaterParas = Common.PumpRunParasHelper.ReadPumpAllDayOutWater(Start, End); |
| | | return new IStation.Dto.ApiResult<List<Model.OutTotalOneDayList>>(WaterParas) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | }*/ |
| | | |
| | | /// <summary> |
| | | /// 获取天的合并供水累计数据(总管) |
| | | /// </summary> |
| | | /// <param name="startday"></param> 开始日期 |
| | | /// <param name="endday"></param> 结束日期 |
| | | /// <returns></returns> |
| | | [Route("GetPumpTotalDayAccOutWater")] |
| | | [HttpGet] |
| | | public IStation.Dto.ApiResult GetPumpTotalDayAccOutWater(string startday, string endday) |
| | | { |
| | | if (startday == null || endday == null) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day null" }; |
| | | } |
| | | DateTime Start; |
| | | if (!DateTime.TryParse(startday, out Start)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | DateTime End; |
| | | if (!DateTime.TryParse(endday, out End)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | var WaterParas = Common.PumpRunParasHelper.ReadPumpAllDayOutAccWater(Start, End); |
| | | return new IStation.Dto.ApiResult<List<Model.OutTotalOneDayList>>(WaterParas) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取给预测水位用的数据的历史取水量 (从众毅) |
| | | /// </summary> |
| | | /// <param name="startday"></param> 开始日期 |
| | | /// <param name="endday"></param> 结束日期 |
| | | /// <returns></returns> |
| | | [Route("GetPumpHistoryData")] |
| | | [HttpGet] |
| | | public async Task<IStation.Dto.ApiResult> GetPumpHistoryData(string startday, string endday) |
| | | { |
| | | if (startday == null || endday == null) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day null" }; |
| | | } |
| | | DateTime Start; |
| | | if (!DateTime.TryParse(startday, out Start)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | DateTime d; |
| | | if (!DateTime.TryParse(endday, out d)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | var TotalWater = await ZyConnectHelper.GetTotalWaterByTimeRange_Out(Start, d, "1h"); //取水量 |
| | | /* var one = TotalWater |
| | | .SelectMany(otdl => otdl.MonitorRecords); |
| | | var two = one.GroupBy(totalDay => totalDay.Time); |
| | | var three = two.Select(group => |
| | | { |
| | | var time = group.First().Time; // 从组中获取时间 |
| | | var totalSumForTimePoint = group.Sum(totalDay => totalDay.Value); // 在时间点分组中计算总和 |
| | | return new { Time = time, Total = totalSumForTimePoint }; |
| | | });*/ |
| | | var totalSumByTimePoint = TotalWater |
| | | .SelectMany(otdl => otdl.MonitorRecords) |
| | | .GroupBy(totalDay => totalDay.Time) // 按照小时和分钟进行分组 |
| | | .Select(group => |
| | | { |
| | | var time = group.First().Time; // 从组中获取时间 |
| | | var totalSumForTimePoint = group.Sum(totalDay => totalDay.Value); // 在时间点分组中计算总和 |
| | | return new { Time = time, Total = totalSumForTimePoint }; |
| | | }); |
| | | /* var totalSumByTimePoint = TotalWater |
| | | .SelectMany(otdl => otdl.pumpOutWater) |
| | | .GroupBy(totalDay => totalDay.DateTime.TimeOfDay) // 按照小时和分钟进行分组 |
| | | .Select(group => |
| | | { |
| | | var time = group.First().DateTime.TimeOfDay; // 从组中获取时间 |
| | | var totalSumForTimePoint = group.Sum(totalDay => totalDay.Total); // 在时间点分组中计算总和 |
| | | return new { Time = time, Total = totalSumForTimePoint }; |
| | | });*/ |
| | | List<SSAData> totalOneDays = new List<SSAData>(); |
| | | foreach (var item in totalSumByTimePoint) |
| | | { |
| | | totalOneDays.Add(new SSAData() { DateTime = item.Time, Total = (double)item.Total }); |
| | | } |
| | | return new IStation.Dto.ApiResult<List<SSAData>>(totalOneDays) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取供水开机状态 |
| | | /// </summary> |
| | | /// <param name="startday"></param> 开始日期 |
| | | /// <param name="endday"></param> 结束日期 |
| | | /// <returns></returns> |
| | | [Route("GetPumpOpenState")] |
| | | [HttpGet] |
| | | public async Task<IStation.Dto.ApiResult> GetPumpOpenState(string startday, string endday) |
| | | { |
| | | if (startday == null || endday == null) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day null" }; |
| | | } |
| | | DateTime Start; |
| | | if (!DateTime.TryParse(startday, out Start)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | DateTime d; |
| | | if (!DateTime.TryParse(endday, out d)) |
| | | { |
| | | return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 格式不正确" }; |
| | | } |
| | | var result = await ZyConnectHelper.GetPumpOpenStatusDay(Start, d, "1h"); |
| | | var totalSumByTimePoint = result |
| | | .SelectMany(otdl => otdl.MonitorRecords) |
| | | .GroupBy(totalDay => totalDay.Time) // 按照小时和分钟进行分组 |
| | | .Select(group => |
| | | { |
| | | var time = group.First().Time; // 从组中获取时间 |
| | | var totalSumForTimePoint = group.Sum(totalDay => totalDay.Value); // 在时间点分组中计算总和 |
| | | return new { Time = time, Total = totalSumForTimePoint }; |
| | | }); |
| | | List<SSAData> totalOneDays = new List<SSAData>(); |
| | | foreach (var item in totalSumByTimePoint) |
| | | { |
| | | totalOneDays.Add(new SSAData() { DateTime = item.Time, Total = (double)item.Total }); |
| | | } |
| | | return new IStation.Dto.ApiResult<List<SSAData>>(totalOneDays) { Code = ApiResultCode.Success, Message = "Success" }; |
| | | } |
| | | } |
| | | } |
| | | } |