duheng
2025-02-11 36a0ce55799c95821f39aab5c13566a5f238970b
WebApi/Controllers/PumpRunController.cs
@@ -1,12 +1,17 @@
using IStation.Common;
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>
@@ -15,7 +20,6 @@
    [RoutePrefix("PumpRun")]
    public class PumpRunController : ApiController
    {
        bool isdebug = true;
        /// <summary>
        ///  获取泵实际运行参数(一天)
        /// </summary>
@@ -23,7 +27,7 @@
        /// <returns></returns>
        [Route("GetByOneDay")]
        [HttpGet]
        public   async   Task< IStation.Dto.ApiResult>  GetByOneDay(string startday)
        public async Task<IStation.Dto.ApiResult> GetByOneDay(string startday)
        {
            if (startday == null)
            {
@@ -40,8 +44,9 @@
            }
            RunParasData result = null;
            PumpRunParasHelper pumpRunParasHelper = new PumpRunParasHelper();
            result =   Common.PumpRunParasHelper.ReadPumpRunParas(d);
            if (result != null&& isdebug)
            result = Common.PumpRunParasHelper.ReadPumpRunParas(d);
            string geterroer = null;
            if (result != null)
            {
                result.Electric = Math.Round(result.Electric, 2);
                result.Money = Math.Round(result.Money, 2);
@@ -92,22 +97,26 @@
                    }
                }
            }
            else
            else
            {
                var PumpTotalElecty = await ZyConnectHelper.GetPumpTotalElectricity(d, d);    //获取某段时间的用电量
                var PumpState = await ZyConnectHelper.GetPumpOpenStatusBySingleDay(d);  //获取泵的开机情况
                var TotalWater = await ZyConnectHelper.GetTotalWaterByDayTimeRange_In(d, d);    //取水量
                var PumpState = await ZyConnectHelper.GetPumpOpenStatusBySingleDay(d);  //获取泵的开机情况
                var TotalWater = await ZyConnectHelper.GetTotalWaterByDayTimeRange_In(d.AddDays(-1), d);    //取水量
                /*        PumpHistoryDataFileHelper pumpHistoryDataFileHelper=new PumpHistoryDataFileHelper();
                        var TotalWater = pumpHistoryDataFileHelper.GetAllWaterData();
                        var PumpState = pumpHistoryDataFileHelper.getpumpstate();
                        var PumpTotalElecty = pumpHistoryDataFileHelper.GetAllEleData();*/
                result = pumpRunParasHelper.GetRunParasDatas(PumpState, TotalWater, PumpTotalElecty, d);
             }
                result = pumpRunParasHelper.GetRunParasDatas(PumpState, TotalWater, PumpTotalElecty, d, out geterroer);
            }
            if (result != null)
            {
                pumpRunParasHelper.Save(result, out string error);
              //  LogHelper.Info(error);
                //  LogHelper.Info(error);
            }
            if (geterroer != null)
            {
                LogHelper.Info(geterroer);
            }
            return new IStation.Dto.ApiResult<Model.RunParasData>(result) { Code = ApiResultCode.Success, Message = "Success" };
        }
@@ -119,7 +128,7 @@
        /// <returns></returns>
        [Route("GetByHistoryOneDay")]
        [HttpGet]
        public  IStation.Dto.ApiResult  GetByHistoryOneDay(string day)
        public IStation.Dto.ApiResult GetByHistoryOneDay(string day)
        {
            if (day == null)
            {
@@ -131,7 +140,7 @@
                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);
@@ -185,8 +194,6 @@
            return new IStation.Dto.ApiResult<Model.RunParasData>(history) { Code = ApiResultCode.Success, Message = "Success" };
        }
        /// <summary>
        /// 一天内的总取水量和用电量
        /// </summary>
@@ -194,7 +201,7 @@
        /// <returns></returns>
        [Route("GetOneDayData")]
        [HttpGet]
        public  IStation.Dto.ApiResult  GetOneDayPumpWaterData(string day)
        public IStation.Dto.ApiResult GetOneDayPumpWaterData(string day)
        {
            if (day == null)
            {
@@ -210,8 +217,6 @@
            return new IStation.Dto.ApiResult<List<Model.PumpWater>>(WaterParas) { Code = ApiResultCode.Success, Message = "Success" };
        }
        /// <summary>
        /// 获取时间段内的单管道供水数据
        /// </summary>
@@ -221,52 +226,7 @@
        /// <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)
        public IStation.Dto.ApiResult GetPumpOutWater(string startday, string endday, int sign)
        {
            if (startday == null || endday == null)
            {
@@ -282,11 +242,50 @@
            {
                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" };
            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>
        /// 获取天的合并供水累计数据(总管)
@@ -296,7 +295,7 @@
        /// <returns></returns>
        [Route("GetPumpTotalDayAccOutWater")]
        [HttpGet]
        public IStation.Dto.ApiResult  GetPumpTotalDayAccOutWater(string startday, string endday)
        public IStation.Dto.ApiResult GetPumpTotalDayAccOutWater(string startday, string endday)
        {
            if (startday == null || endday == null)
            {
@@ -315,5 +314,131 @@
            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, string resolution)
        {
            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, resolution);    //取水量
            /*     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" };
        }
        [Route("GetPumpRealData")]
        [HttpGet]
        public async Task<IStation.Dto.ApiResult> GetPumpRealData(string startday, string endday, string resolution)
        {
            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, resolution);    //取水量
            return new IStation.Dto.ApiResult<List<RealScadaData>>(TotalWater) { Code = ApiResultCode.Success, Message = "Success" };
        }
    }
}
}