tangxu
2024-06-11 e08f18c84c96ca794407f4fcb737b26fa76c0a1f
WebApi/Controllers/ReservoirWaterLevelController.cs
@@ -10,7 +10,7 @@
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Web.Http;
namespace IStation.WebApi.Controllers
{
@@ -20,51 +20,124 @@
    [RoutePrefix("ReservoirWaterLevel")]
    public class ReservoirWaterLevelController : ApiController
    {
        /// <summary>
        /// 获取实时值
        /// </summary>
        /// 获取实时值
        /// </summary>
        /// <returns></returns>
        [Route("GetRealValue")]
        [HttpGet]
        public async Task<IStation.Dto.ApiResult> GetRealValue()
        public   IStation.Dto.ApiResult  GetRealValue()
        {
            var d = await  ZyConnectHelper.GetRealReservoirWaterLevel();
            var d = ZyConnectHelper.GetRealReservoirWaterLevel();
            return new IStation.Dto.ApiResult<double>(d);
        }
        /// <summary>
        /// 获取今日预测值(24点时)
        /// </summary>
        /// 获取最后一条
        /// </summary>
        /// <returns></returns>
        [Route("GetTodayEndPredictiveValue")]
        [Route("GetLastPredictValue")]
        [HttpGet]
        public async Task<IStation.Dto.ApiResult> GetTodayEndPredictiveValue()
        public IStation.Dto.ApiResult GetLastPredictValue()
        {
            var now_value = await ZyConnectHelper.GetRealReservoirWaterLevel();
            var today_prj = Common.HistoryAnaPrjFileHelper.GetPrj(DateTime.Today);
            if(today_prj == null || today_prj.BlockTimes == null || today_prj.PointTimes == null)
            try
            {
                return new IStation.Dto.ApiResult<double>(-100);
            }
            var now = DateTime.Now;
            double predictiveValue = now_value;
            foreach(var pt in today_prj.PointTimes)
            {
                if (now > pt.Time)
                IStation.DAL.WaterPredictRecord dal = new DAL.WaterPredictRecord();
                var records = dal.GetLast(1);
                if (records == null || records.Count == 0)
                {
                    predictiveValue = now_value + today_prj.PointTimes.Last().WaterLevelH - pt.WaterLevelH;
                    return new IStation.Dto.ApiResult<double>(predictiveValue);
                    return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = "数据为空" };
                }
                return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = records.Last().PredictValueList };
            }
            return new IStation.Dto.ApiResult<double>(now_value);
            catch (Exception ex)
            {
                return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = ex.Message };
            }
        }
        /// <summary>
        /// 获取最后一条
        /// </summary>
        /// <returns></returns>
        [Route("GetPredictRecordBySingleHour")]
        [HttpGet]
        public IStation.Dto.ApiResult GetPredictRecordBySingleHour(DateTime time)
        {
            try
            {
                IStation.DAL.WaterPredictRecord dal = new DAL.WaterPredictRecord();
                var records = dal.GetBySingleHour(time);
                if (records == null  )
                {
                    return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = "数据为空" };
                }
                return new IStation.Dto.ApiResult<IStation.Model.WaterPredictRecord>() { Code = ApiResultCode.Error, Data = records  };
            }
            catch (Exception ex)
            {
                return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = ex.Message };
            }
        }
        /// <summary>
        /// 获取最后一条
        /// </summary>
        /// <returns></returns>
        [Route("GetPredictRecordByHourRange")]
        [HttpGet]
        public IStation.Dto.ApiResult GetPredictRecordByHourRange(string  start_time, string  end_time)
        {
            if (string .IsNullOrEmpty(start_time) || string .IsNullOrEmpty(end_time))
            {
                return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = "start_time 或者 end_time 数据为空" };
            }
            try
            {
                IStation.DAL.WaterPredictRecord dal = new DAL.WaterPredictRecord();
                var records = dal.GetByHourRangle(DateTime.Parse( start_time), DateTime.Parse(end_time));
                if (records == null)
                {
                    return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = "数据为空" };
                }
                return new IStation.Dto.ApiResult<List<IStation.Model.WaterPredictRecord>>() { Code = ApiResultCode.Error, Data = records };
            }
            catch (Exception ex)
            {
                return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = ex.Message };
            }
        }
        ///// <summary>
        ///// 获取今日预测值(24点时)
        ///// </summary>
        ///// <returns></returns>
        //[Route("GetTodayEndPredictiveValue")]
        //[HttpGet]
        //public async Task<IStation.Dto.ApiResult> GetTodayEndPredictiveValue()
        //{
        //    var now_value = await ZyConnectHelper.GetRealReservoirWaterLevel();
        //    IStation.CalcModel.AnaRequestBase requestBase
        //    var today_prj = Common.HistoryAnaPrjFileHelper.GetPrj(DateTime.Today);
        //    if(today_prj == null || today_prj.BlockTimes == null || today_prj.PointTimes == null)
        //    {
        //        return new IStation.Dto.ApiResult<double>(-100);
        //    }
        //    var now = DateTime.Now;
        //    double predictiveValue = now_value;
        //    foreach(var pt in today_prj.PointTimes)
        //    {
        //        if (now > pt.Time)
        //        {
        //            predictiveValue = now_value + today_prj.PointTimes.Last().WaterLevelH - pt.WaterLevelH;
        //            return new IStation.Dto.ApiResult<double>(predictiveValue);
        //        }
        //    }
        //    return new IStation.Dto.ApiResult<double>(now_value);
        //}
    }
}