tangxu
2024-04-12 290cb94c5498997c7509f6955b1d3a5750c31610
WebApi/Controllers/ZyPrjController.cs
@@ -1,4 +1,5 @@
using IStation.CalcModel;
using Antlr.Runtime.Tree;
using IStation.CalcModel;
using IStation.Common;
using IStation.Dto;
using IStation.Model;
@@ -159,6 +160,202 @@
            return new IStation.Dto.ApiResult< IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success };
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        [Route("GetSetting")]
        [HttpGet]
        public IStation.Dto.ApiResult GetSetting()
        {
            var model_setting = IStation.AnaGlobalParas.Setting;
            IStation.Dto.ZyPrjAnaSetting dto_setting = new ZyPrjAnaSetting();
            dto_setting.MinOpenTimeMinute = model_setting.MinOpenTimeMinute;
            dto_setting.MinSwitchTimeMinute = model_setting.MinSwitchTimeMinute;
            dto_setting.MaxPumpSwitchCount = model_setting.MaxPumpSwitchCountQ;
            dto_setting.OptSortType = model_setting.OptSortType;
            if(model_setting.SwitchPumpIgnoreTimes != null)
            {
                dto_setting.SwitchPumpIgnoreTimes = new List<ZyPrjAnaSetting.TimeRange>();
                foreach(var m in model_setting.SwitchPumpIgnoreTimes)
                {
                    dto_setting.SwitchPumpIgnoreTimes.Add(new ZyPrjAnaSetting.TimeRange()
                    {
                        IsUse = m.IsUse,
                        StartHour = m.StartHour,
                        StartMinute = m.StartMinute,
                        EndHour = m.EndHour,
                        EndMinute = m.EndMinute,
                    });
                }
            }
            if (model_setting.OpenPumpTimes != null)
            {
                dto_setting.OpenPumpTimes = new List<ZyPrjAnaSetting.TimeRange>();
                foreach (var m in model_setting.OpenPumpTimes)
                {
                    dto_setting.OpenPumpTimes.Add(new ZyPrjAnaSetting.TimeRange()
                    {
                        IsUse = m.IsUse,
                        StartHour = m.StartHour,
                        StartMinute = m.StartMinute,
                        EndHour = m.EndHour,
                        EndMinute = m.EndMinute,
                    });
                }
            }
            return new IStation.Dto.ApiResult<IStation.Dto.ZyPrjAnaSetting>(dto_setting);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="ana"></param>
        /// <returns></returns>
        [Route("SaveSetting")]
        [HttpPost]
        public IStation.Dto.ApiResult SaveSetting([FromBody] IStation.Dto.ZyPrjAnaSetting dto)
        {
            if (dto == null)
            {
                return new IStation.Dto.ApiResult<bool>(false);
            }
            var model_setting = IStation.AnaGlobalParas.Setting;
            if (dto.MinOpenTimeMinute < 5)
            {
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "最少开泵时间 设置过少" };
            }
            if (dto.MinOpenTimeMinute > 120)
            {
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "最少开泵时间 设置过长" };
            }
            model_setting.MinOpenTimeMinute = dto.MinOpenTimeMinute;
            if (dto.MinSwitchTimeMinute < 5)
            {
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "最少切泵时间 设置过少" };
            }
            if (dto.MinSwitchTimeMinute > 120)
            {
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "最少切泵时间 设置过长" };
            }
            model_setting.MinSwitchTimeMinute = dto.MinSwitchTimeMinute;
            if (dto.MaxPumpSwitchCount < 1)
            {
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "最大切泵次数 设置过少" };
            }
            if (dto.MaxPumpSwitchCount > 10)
            {
                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "最大切泵次数 设置过长" };
            }
            model_setting.MaxPumpSwitchCountQ = dto.MaxPumpSwitchCount;
            model_setting.OptSortType = dto.OptSortType;
            if (dto.SwitchPumpIgnoreTimes != null)
            {
                model_setting.SwitchPumpIgnoreTimes = new List<CalcModel.AnaSetting.TimeRange>();
                foreach (var m in dto.SwitchPumpIgnoreTimes)
                {
                    if (m.StartHour < 0 || m.StartHour > 24)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "不许切泵时间 时间范围设置不合理" };
                    }
                    if (m.EndHour < 0 || m.EndHour > 24)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "不许切泵时间 时间范围设置不合理" };
                    }
                    if (m.StartMinute < 0 || m.StartMinute > 60)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "不许切泵时间 时间范围设置不合理" };
                    }
                    if (m.EndMinute < 0 || m.EndMinute > 60)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "不许切泵时间 时间范围设置不合理" };
                    }
                    if(m.StartHour > m.EndHour)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "不许切泵时间 时间范围设置不合理" };
                    }
                    if (m.StartHour == m.EndHour)
                    {
                        if (m.StartMinute > m.EndMinute)
                        {
                            return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "不许切泵时间 时间范围设置不合理" };
                        }
                    }
                    model_setting.SwitchPumpIgnoreTimes.Add(new CalcModel.AnaSetting.TimeRange()
                    {
                        IsUse = m.IsUse,
                        StartHour = m.StartHour,
                        StartMinute = m.StartMinute,
                        EndHour = m.EndHour,
                        EndMinute = m.EndMinute,
                    });
                }
            }
            if (dto.OpenPumpTimes != null)
            {
                model_setting.OpenPumpTimes = new List<CalcModel.AnaSetting.TimeRange>();
                foreach (var m in dto.OpenPumpTimes)
                {
                    if (m.StartHour < 0 || m.StartHour > 24)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "开泵时间 时间范围设置不合理" };
                    }
                    if (m.EndHour < 0 || m.EndHour > 24)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "开泵时间 时间范围设置不合理" };
                    }
                    if (m.StartMinute < 0 || m.StartMinute > 60)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "开泵时间 时间范围设置不合理" };
                    }
                    if (m.EndMinute < 0 || m.EndMinute > 60)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "开泵时间 时间范围设置不合理" };
                    }
                    if (m.StartHour > m.EndHour)
                    {
                        return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "开泵时间 时间范围设置不合理" };
                    }
                    if (m.StartHour == m.EndHour)
                    {
                        if (m.StartMinute > m.EndMinute)
                        {
                            return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "开泵时间 时间范围设置不合理" };
                        }
                    }
                    model_setting.OpenPumpTimes.Add(new CalcModel.AnaSetting.TimeRange()
                    {
                        IsUse = m.IsUse,
                        StartHour = m.StartHour,
                        StartMinute = m.StartMinute,
                        EndHour = m.EndHour,
                        EndMinute = m.EndMinute,
                    });
                }
            }
            return new IStation.Dto.ApiResult<bool>(IStation.Common.AnaSetting.SaveSetting(model_setting));
        }
        Model.eTideSouce _tideSouce = Model.eTideSouce.Book;
        private List<Model.TimeWaterLevel> GetTide3Day(DateTime calc_day )
        {