From 03a0d99de9c5fed6bea8bc83b49ce27786bda38c Mon Sep 17 00:00:00 2001
From: tangxu <tangxu76880903>
Date: 星期五, 07 二月 2025 09:29:59 +0800
Subject: [PATCH] 添加OPENAPI接口

---
 WebApi/Controllers/ZyPrjController.cs |  417 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 281 insertions(+), 136 deletions(-)

diff --git a/WebApi/Controllers/ZyPrjController.cs b/WebApi/Controllers/ZyPrjController.cs
index 4ad0564..bf39aa0 100644
--- a/WebApi/Controllers/ZyPrjController.cs
+++ b/WebApi/Controllers/ZyPrjController.cs
@@ -48,14 +48,14 @@
     public class ZyPrjController : ApiController
     {
         /// <summary>
-        ///
+        ///  璁$畻
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
         [Route("Calc")]
         [HttpPost]
         public IStation.Dto.ApiResult Calc([FromBody] ZyPrjRequest request)
-        { 
+        {
             if (request == null)
             {
                 return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "request is null" };
@@ -71,8 +71,6 @@
             //
             IStation.LogHelper.Info("--------------------------START-----------------------------------------");
             IStation.LogHelper.Info(string.Format("Zy Prj Calc Request:  {0}", JsonHelper.Object2Json(request)));
- 
-
 
             DateTime start_timme = DateTime.Now;
             DateTime end_timme = DateTime.Now;
@@ -96,20 +94,23 @@
                 IStation.LogHelper.Error(string.Format("ZyPrjRequest Time:{0}-{1} 鏃堕棿鑼冨洿閿欒,涓嶈兘瓒呰繃24灏忔椂", start_timme, end_timme));
                 return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "鏃堕棿鑼冨洿閿欒,涓嶈兘瓒呰繃24灏忔椂" };
             }
-
+   
             IStation.CalcModel.AnaRequest anaRequest = new AnaRequest();
             anaRequest.CalcOptType = (eCalcOptType)IStation.AnaGlobalParas.Setting.OptSortType;
             anaRequest.StartTime = start_timme;
             anaRequest.EndTime = end_timme;
             anaRequest.WaterLevels闀挎睙 = GetTide3Day(_tideSouce, start_timme);
+            if(anaRequest.WaterLevels闀挎睙 ==null || anaRequest.WaterLevels闀挎睙.Count()==0)
+            { 
+                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "鏃犳硶鑾峰彇闀挎睙姘翠綅鏁版嵁" };
+            }
 
             #region 鍙栨按鎬婚噺
-
+            double TotalFlowIn = 0;
             if (!string.IsNullOrEmpty(request.TotalFlowIn) && !string.IsNullOrWhiteSpace(request.TotalFlowIn))
-            {
-                double TotalFlowIn = 0;
+            { 
                 if (!double.TryParse(request.TotalFlowIn, out TotalFlowIn))
-                { 
+                {
                     return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璇疯緭鍏ユ暟瀛楀瀷鍙栨按鎬婚噺,鎺ュ彈鍒扮殑杈撳叆鍊兼槸:" + request.TotalFlowIn };
                 }
                 if (TotalFlowIn < 10000)
@@ -123,7 +124,7 @@
             }
 
             #endregion 鍙栨按鎬婚噺
-
+       
             #region 姘翠綅瑕佹眰
 
             if (!string.IsNullOrEmpty(request.MaxReservoirLevelTime))
@@ -150,10 +151,10 @@
                 {
                     return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璇疯緭鍏ュ彇姘存�婚噺鎴栨按浣嶈姹�" };
                 }
-                double TotalFlowIn = 0;
-                if (!double.TryParse(request.TotalFlowIn, out TotalFlowIn))
+              
+                if (TotalFlowIn < 1000)
                 {
-                    return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璇疯緭鍏ユ暟瀛楀瀷鍙栨按鎬婚噺,鎺ュ彈鍒扮殑杈撳叆鍊兼槸:"+ request.TotalFlowIn };
+                    return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璇疯緭鍏ュ彇姘存�婚噺,鎺ュ彈鍒扮殑杈撳叆鍊兼槸:" + request.TotalFlowIn };
                 }
             }
 
@@ -161,13 +162,13 @@
 
             #region 渚涙按閲�
 
-            double TotalFlowOut = 0;
-            double TotalFlowOutPrecid = 0;//棰勬祴鍊肩殑渚涙按鎬婚噺
-
+            double TotalFlowOut鎵嬪姩杈撳叆闇�姹� = 0;//棰勬祴鍊肩殑渚涙按鎬婚噺(鍗曚綅 鍚�)
+            double TotalFlowOut棰勬祴鍊肩殑渚涙按鎬婚噺 = 0;//棰勬祴鍊肩殑渚涙按鎬婚噺 (鍗曚綅 鍚�)
+            double FlowTotalOut闇�姹� = 0;
+            bool isPredictRecord = false; //鏄惁鏄敤鍒版按閲忛娴�
             if (string.IsNullOrEmpty(request.TotalFlowOut) || string.IsNullOrWhiteSpace(request.TotalFlowOut))
             {//鐢ㄩ娴嬪��
                 #region 鐢ㄩ娴嬪��
-
                 anaRequest.PerHourFlowOut = new List<double>();
                 IStation.DAL.WaterPredictRecord dal = new DAL.WaterPredictRecord();
                 var water_records = dal.GetByHourRangle(start_timme, end_timme);
@@ -199,19 +200,23 @@
                             Data = error_info11
                         };
                     }
-                    TotalFlowOutPrecid += r.LastPredictValue;
+                    TotalFlowOut棰勬祴鍊肩殑渚涙按鎬婚噺 += r.LastPredictValue;
                     anaRequest.PerHourFlowOut.Add(r.LastPredictValue);//璁$畻涓敤鍚�
                 }
-                IStation.LogHelper.Info(string.Format("  鑾峰彇姘撮噺棰勬祴鍊�:  {0}   ", string.Join(",",anaRequest.PerHourFlowOut)));
+                IStation.LogHelper.Info(
+                    string.Format("鑾峰彇姘撮噺棰勬祴鍊�:  {0} ,  棰勬祴鍊兼�讳緵姘存�婚噺:{1} ", 
+                    string.Join(",", anaRequest.PerHourFlowOut), TotalFlowOut棰勬祴鍊肩殑渚涙按鎬婚噺));
+                FlowTotalOut闇�姹� = TotalFlowOut棰勬祴鍊肩殑渚涙按鎬婚噺;
+                isPredictRecord = true ;
                 #endregion 鐢ㄩ娴嬪��
             }
             else
             {
-                if (!double.TryParse(request.TotalFlowOut, out TotalFlowOut))
-                { 
-                    return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "娉ㄦ剰渚涙按鎬婚噺杈撳叆鍙傛暟鏃犳硶璇嗗埆,鍙傛暟鏄�:"+ request.TotalFlowOut };
+                if (!double.TryParse(request.TotalFlowOut, out TotalFlowOut鎵嬪姩杈撳叆闇�姹�))
+                {
+                    return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "娉ㄦ剰渚涙按鎬婚噺杈撳叆鍙傛暟鏃犳硶璇嗗埆,鍙傛暟鏄�:" + request.TotalFlowOut };
                 }
-                if (TotalFlowOut < 10000)
+                if (TotalFlowOut鎵嬪姩杈撳叆闇�姹� < 10000)
                 {
                     IStation.LogHelper.Info(string.Format("Zy Prj  Time:{0}-{1} ,  娉ㄦ剰鍙栨按鎬婚噺鍗曚綅鏄惃,褰撳墠鍙傛暟鍙傛暟杩囧皬",
                 start_timme, end_timme));
@@ -222,18 +227,21 @@
                 var count = (end_timme - start_timme).TotalHours;
                 for (var d = start_timme; d <= end_timme; d = d.AddHours(1))
                 {
-                    list.Add(Math.Round(TotalFlowOut / count, 1));
+                    list.Add(Math.Round(TotalFlowOut鎵嬪姩杈撳叆闇�姹� / count, 1));
                 }
                 anaRequest.PerHourFlowOut = list;
+
+                FlowTotalOut闇�姹� = TotalFlowOut鎵嬪姩杈撳叆闇�姹�;
+                isPredictRecord = false ;
             }
 
             #endregion 渚涙按閲�
 
             //寮�濮嬫椂鐨勫紑鏈虹姸鎬�
-            List<int> StartOpenPumpIndexArray = new List<int>();    
-            if (!string.IsNullOrEmpty(request.StartOpenPumpIndexArray  ))
+            List<int> StartOpenPumpIndexArray = new List<int>();
+            if (!string.IsNullOrEmpty(request.StartOpenPumpIndexArray))
             {
-                var sss = request.StartOpenPumpIndexArray.Split(','); 
+                var sss = request.StartOpenPumpIndexArray.Split(',');
                 foreach (var item in sss)
                 {
                     if (int.TryParse(item, out int index))
@@ -271,43 +279,33 @@
                     anaRequest.StartReservoirLevel)
                 };
             }
-            //bool isTemp = false;
-            //if (!string.IsNullOrEmpty(request.IsTemporary))
-            //{
-            //    isTemp = Convert.ToBoolean(request.IsTemporary);
-            //}
+
+            IStation.LogHelper.Info("kashi 璁$畻鍙栨按鎬婚噺 ");
 
             var calcHelper = new IStation.CalcPrjHelper();
             AnaPrj defaultPrj = null;
             string error_info = calcHelper.Calc(anaRequest, out defaultPrj);
 
             if (!string.IsNullOrEmpty(error_info) || defaultPrj == null)
-            { 
+            {
                 IStation.LogHelper.Info(string.Format("Zy Prj  璁$畻閿欒:  \r\n {0}  ", error_info));
                 return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璁$畻閿欒, 鍘熷洜鏄�:" + error_info };
             }
             else
-            { 
-              //  IStation.LogHelper.Info(string.Format("Zy Prj  璁$畻鎴愬姛:  \r\n {0}  ",  JsonHelper.Object2Json(defaultPrj)));
+            {
+                //  IStation.LogHelper.Info(string.Format("Zy Prj  璁$畻鎴愬姛:  \r\n {0}  ",  JsonHelper.Object2Json(defaultPrj)));
             }
             IStation.LogHelper.Info("-----------------------------END--------------------------------------");
 
             //淇濆瓨鏂规 
-            var ret = Common.HistoryAnaPrjFileHelper.SavePrj(IStation.AnaGlobalParas.Setting, anaRequest, defaultPrj);
+            var ret = Common.HistoryAnaPrjFileHelper.SavePrj(IStation.AnaGlobalParas.Setting, isPredictRecord, anaRequest, defaultPrj);
 
             //
             var dto_prj = ToPrjDto(defaultPrj);
-            if (TotalFlowOutPrecid > 1)
-            {
-                dto_prj.FlowTotalOut = Math.Round(TotalFlowOutPrecid / 10000, 1);
-            }
-            else
-            {
-                dto_prj.FlowTotalOut = TotalFlowOut;
-            }
+            dto_prj.FlowTotalOut = FlowTotalOut闇�姹�;
 
-            #region 鎺ㄩ��
 
+            //鎺ㄩ��:浠g爜淇濈暀
             //if (!string.IsNullOrEmpty(request.IsSubmit) && Convert.ToBoolean(request.IsSubmit))
             //{
             //    Task.Run(() =>
@@ -316,9 +314,10 @@
             //    });
             //}
 
-            #endregion 鎺ㄩ��
 
-            // IStation.LogHelper.Info(string.Format(" 浜х敓璁$畻鏂规:{0}", dto_prj.schemeID));
+            //IStation.LogHelper.Info(string.Format(" 浜х敓璁$畻鏂规:{0}", dto_prj.schemeID));
+            //IStation.LogHelper.Info(string.Format("Zy Prj  璁$畻鎴愬姛:  \r\n {0}  ", JsonHelper.Object2Json(dto_prj)));
+
 
             return new IStation.Dto.ApiResult<IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success };
         }
@@ -418,79 +417,7 @@
             }
         }
 
-        #region 鎹㈢畻鎴怐TO
 
-        private IStation.ZyDto.SubmitPrj ToPrjDto(AnaPrj defaultPrj)
-        {
-            IStation.ZyDto.SubmitPrj dto_prj = new ZyDto.SubmitPrj();
-
-            if (string.IsNullOrEmpty(defaultPrj.ID))
-            {
-                var time = DateTime.Now;
-                defaultPrj.ID = $"{time.Year}{time.Month}{time.Day}{time.Hour}{time.Minute}{time.Second}";
-            }
-            dto_prj.schemeID = defaultPrj.ID;
-            dto_prj.schemeName = defaultPrj.Name;
-            dto_prj.Day = defaultPrj.StartTime.ToString("yyyy-MM-dd");
-            dto_prj.StartTime = defaultPrj.StartTime.ToString("yyyy-MM-dd HH:mm:ss");
-            dto_prj.EndTime = defaultPrj.EndTime.ToString("yyyy-MM-dd HH:mm:ss");
-
-            dto_prj.FlowTotalIn = Math.Round(defaultPrj.SumFlow, 0);
-            dto_prj.PowerTotal = Math.Round(defaultPrj.SumPower, 0);
-            dto_prj.MoneyTotal = Math.Round(defaultPrj.SumMoney, 0);
-
-            dto_prj.BlockTimes = new List<ZyDto.SubmitPrjBlockTime>();
-            double maxHeight = 0;
-            double startHeight = 0;
-
-            if (defaultPrj.BlockTimes != null)
-            {
-                startHeight = defaultPrj.BlockTimes.First().ReservoirStartHeight;
-                foreach (var bt in defaultPrj.BlockTimes)
-                {
-                    if (bt.OpenPumpIndexs == null)
-                        continue;
-                    ZyDto.SubmitPrjBlockTime dto_item = new ZyDto.SubmitPrjBlockTime();
-                    dto_item.StartTime = bt.StartTime;
-                    dto_item.EndTime = bt.EndTime;
-                    dto_item.OpenPumpCount = bt.OpenPumpIndexs.Count;
-                    dto_item.OpenPumpIndexs = bt.OpenPumpIndexs;
-                    dto_item.StartSwitchGroupID = bt.StartSwitchGroupID;
-
-                    if (bt.PointTimes != null)
-                    {
-                        dto_item.Records = new List<SubmitPrjTime>();
-                        foreach (var bt2 in bt.PointTimes)
-                        {
-                            maxHeight = Math.Max(maxHeight, bt2.WaterLevelH);
-                            dto_item.Records.Add(new SubmitPrjTime(bt2));
-                        }
-                    }
-
-                    dto_prj.BlockTimes.Add(dto_item);
-                }
-            }
-            dto_prj.MaxWaterLevelH = maxHeight;
-            dto_prj.StartWaterLevelH = startHeight;
-            dto_prj.Switchs = new List<SubmitPrjSwitchInfo>();
-            if (defaultPrj.PumpSwitchs != null)
-            {
-                foreach (var bt in defaultPrj.PumpSwitchs)
-                {
-                    ZyDto.SubmitPrjSwitchInfo dto_item = new ZyDto.SubmitPrjSwitchInfo();
-                    dto_item.GroupID = bt.GroupID;//鍒嗙粍ID
-                    dto_item.PumpIndex = bt.PumpIndex;//娉佃鏍�
-                    dto_item.Time = bt.Time.ToString("yyyy-MM-dd HH:mm:ss");//鏃堕棿
-                    dto_item.SwitchType = bt.SwitchType;///1 寮�鏈� 0 鍏虫満
-
-                    dto_prj.Switchs.Add(dto_item);
-                }
-            }
-
-            return dto_prj;
-        }
-
-        #endregion 鎹㈢畻鎴怐TO
 
         /// <summary>
         ///  鑾峰彇鏌愪竴澶�,鏈�杩戜竴鏉�
@@ -510,24 +437,42 @@
             {
                 return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "day 鏍煎紡涓嶆纭�" };
             }
-            IStation.LogHelper.Info(string.Format(" api GetHistoryByDay {0}    format: {1}  ", day, d));
+            
 
             IStation.CalcModel.AnaRequestBase requestBase = null;
             var prj = Common.HistoryAnaPrjFileHelper.GetByCreateDay(d, out requestBase);
-
             if (prj != null)
             {
+                //IStation.LogHelper.Info(string.Format(" api GetHistoryByDay {0}    format: {1}  OK", day, d));
                 var dto_prj = ToPrjDto(prj);
+                if (requestBase != null && requestBase.PerHourFlowOut != null)
+                {
+                    var sumFlow = (from x in requestBase.PerHourFlowOut select x).Sum();
+                    dto_prj.FlowTotalOut = sumFlow;
+                }
+                if(dto_prj.Switchs != null)
+                {
+                    var switch2 = from x in dto_prj.Switchs orderby x.Time select x;
+                    int index = 1;
+                    foreach (var sw in switch2)
+                    {
+                        sw.Index = index;
+                        index++;
+                    }
+                    dto_prj.Switchs = switch2.ToList();
+                }
+
                 return new IStation.Dto.ApiResult<IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success };
             }
             else
             {
+                IStation.LogHelper.Info(string.Format(" api GetHistoryByDay {0}    format: {1} (鏈壘鍒伴」鐩�) ", day, d));
                 return new IStation.Dto.ApiResult() { Code = ApiResultCode.Alert, Message = "鏈壘鍒伴」鐩�" };
             }
         }
 
         /// <summary>
-        ///  鑾峰彇鏈�杩戜竴鏉�
+        ///  鑾峰彇鏈�杩戜竴鏉�(纭鐨�)
         /// </summary>
         /// <param name="day"></param>
         /// <returns></returns>
@@ -536,22 +481,96 @@
         public IStation.Dto.ApiResult GetLastHistoryRecord()
         {
             var dal = new IStation.DAL.AnaProject();
-            var record = dal.GetLastRecord();
+            var record = dal.GetLastConfirmRecord();
             if (record == null)
+            {
+                IStation.LogHelper.Info(" api GetLastHistoryRecord is null ");
                 return null;
-
+            }
+       
             IStation.CalcModel.AnaRequestBase requestBase = null;
             var prj = Common.HistoryAnaPrjFileHelper.GetByStartTime(record.StartTime, out requestBase);
             if (prj != null)
-            {
+            { 
                 var dto_prj = ToPrjDto(prj);
+                if (requestBase != null && requestBase.PerHourFlowOut != null)
+                {
+                    var sumFlow = (from x in requestBase.PerHourFlowOut select x).Sum();
+                    dto_prj.FlowTotalOut = sumFlow;
+                }
+                if (dto_prj.Switchs != null)
+                {
+                    var switch2 = from x in dto_prj.Switchs orderby x.Time select x;
+                    int index = 1;
+                    foreach (var sw in switch2)
+                    {
+                        sw.Index = index;
+                        index++;
+                    }
+                    dto_prj.Switchs = switch2.ToList();
+                }
                 return new IStation.Dto.ApiResult<IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success };
             }
             else
             {
+                IStation.LogHelper.Info(string.Format(
+                    " api GetLastHistoryRecord is null (鏈壘鍒伴」鐩�) LastRecord 淇℃伅: ID:{0}, StartTime:{1}, EndTime:{2}", 
+                    record.ID, 
+                    record.StartTime, record.EndTime));
                 return new IStation.Dto.ApiResult() { Code = ApiResultCode.Alert, Message = "鏈壘鍒伴」鐩�" };
             }
         }
+
+        /// <summary>
+        ///  鑾峰彇鏈�杩戜竴鏉�(鏂板缓)
+        /// </summary>
+        /// <param name="day"></param>
+        /// <returns></returns>
+        [Route("GetLastCreateRecord")]
+        [HttpGet]
+        public IStation.Dto.ApiResult GetLastCreateRecord()
+        {
+            var dal = new IStation.DAL.AnaProject();
+            var record = dal.GetLastRecord();
+            if (record == null)
+            {
+                IStation.LogHelper.Info(" api GetLastHistoryRecord is null ");
+                return null;
+            }
+
+            IStation.CalcModel.AnaRequestBase requestBase = null;
+            var prj = Common.HistoryAnaPrjFileHelper.GetByStartTime(record.StartTime, out requestBase);
+            if (prj != null)
+            { 
+                var dto_prj = ToPrjDto(prj);
+                if (requestBase != null && requestBase.PerHourFlowOut != null )
+                {
+                    var sumFlow = (from x in requestBase.PerHourFlowOut select x).Sum();
+                    dto_prj.FlowTotalOut = sumFlow;
+                }
+                if (dto_prj.Switchs != null)
+                {
+                    var switch2 = from x in dto_prj.Switchs orderby x.Time select x;
+                    int index = 1;
+                    foreach (var sw in switch2)
+                    {
+                        sw.Index = index;
+                        index++;
+                    }
+                    dto_prj.Switchs = switch2.ToList();
+                }
+                return new IStation.Dto.ApiResult<IStation.ZyDto.SubmitPrj>(dto_prj) { Code = ApiResultCode.Success };
+            }
+            else
+            {
+                IStation.LogHelper.Info(string.Format(
+                    " api GetLastHistoryRecord is null (鏈壘鍒伴」鐩�) GetLastCreateRecord 淇℃伅: ID:{0}, StartTime:{1}, EndTime:{2}",
+                    record.ID,
+                    record.StartTime, record.EndTime));
+                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Alert, Message = "鏈壘鍒伴」鐩�" };
+            }
+        }
+
 
         /// <summary>
         ///
@@ -569,7 +588,7 @@
             dto_setting.OptSortType = model_setting.OptSortType;
             dto_setting.SwitchPumpMinuteSpace = model_setting.SwitchPumpMinuteSpace;
 
-            dto_setting.OpenPumpIndexSequence = IStation.Dto.ZyPrjAnaSetting.ListToString( model_setting.OpenPumpIndexSequence);
+            dto_setting.OpenPumpIndexSequence = IStation.Dto.ZyPrjAnaSetting.ListToString(model_setting.OpenPumpIndexSequence);
             dto_setting.ClosePumpIndexSequence = IStation.Dto.ZyPrjAnaSetting.ListToString(model_setting.ClosePumpIndexSequence);
             dto_setting.OptimalPumpIndexSequence = IStation.Dto.ZyPrjAnaSetting.ListToString(model_setting.OptimalPumpIndexSequence);
 
@@ -595,14 +614,12 @@
                     model_setting.UnablePumpIndexArray = overhallStatus.ToArray();
                     dto_setting.UnablePumpIndexArray = string.Join(",", overhallStatus);
                     IStation.Common.AnaSetting.SaveSetting(model_setting);
-                } 
+                }
             }
-            catch(Exception ex)
+            catch (Exception ex)
             {
-                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "鏃犳硶閾炬帴宸ユ帶鏈嶅姟鍣�,閿欒鍘熷洜:" + ex.Message};
+                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "鏃犳硶閾炬帴宸ユ帶鏈嶅姟鍣�,閿欒鍘熷洜:" + ex.Message };
             }
-
-
 
             if (model_setting.SwitchPumpIgnoreTimes != null)
             {
@@ -676,6 +693,11 @@
                 return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "鏈�灏戝垏娉垫椂闂� 璁剧疆杩囬暱" };
             }
             model_setting.MinSwitchTimeMinute = dto.MinSwitchTimeMinute;
+            if (dto.SwitchPumpMinuteSpace < 2 || dto.SwitchPumpMinuteSpace > 30)
+            {
+                return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "鍒囨崲娉垫椂闂撮棿闅� 璁剧疆涓嶅悎鐞�" };
+            }
+            model_setting.SwitchPumpMinuteSpace = dto.SwitchPumpMinuteSpace;
 
             if (dto.MaxPumpSwitchCount < 1)
             {
@@ -857,12 +879,13 @@
 
             return new IStation.Dto.ApiResult<List<int>>(overhallStatus);
         }
-        private string BuildSequenceFromDto(string  sequenceDto, out int[] sequenceDs)
+
+        private string BuildSequenceFromDto(string sequenceDto, out int[] sequenceDs)
         {
             sequenceDs = null;
             if (string.IsNullOrEmpty(sequenceDto))
                 return null;
- 
+
             List<int> list = new List<int>();
             if (!string.IsNullOrEmpty(sequenceDto))
             {
@@ -880,10 +903,10 @@
                 }
             }
 
-            return BuildSequenceFromDto(list,out sequenceDs);
+            return BuildSequenceFromDto(list, out sequenceDs);
         }
-        
-        private string BuildSequenceFromDto(List<int>  sequenceDto, out int[] sequenceDs)
+
+        private string BuildSequenceFromDto(List<int> sequenceDto, out int[] sequenceDs)
         {
             sequenceDs = null;
             if (sequenceDto == null || sequenceDto.Count() == 0)
@@ -985,5 +1008,127 @@
 
             return timeValues;
         }
+
+        #region 鎹㈢畻鎴怐TO
+
+        private IStation.ZyDto.SubmitPrj ToPrjDto(AnaPrj defaultPrj)
+        {
+            IStation.ZyDto.SubmitPrj dto_prj = new ZyDto.SubmitPrj();
+
+            if (string.IsNullOrEmpty(defaultPrj.ID))
+            {
+                var time = DateTime.Now;
+                defaultPrj.ID = $"{time.Year}{time.Month}{time.Day}{time.Hour}{time.Minute}{time.Second}";
+            }
+            dto_prj.schemeID = defaultPrj.ID;
+            dto_prj.schemeName = defaultPrj.Name;
+            dto_prj.Day = defaultPrj.StartTime.ToString("yyyy-MM-dd");
+            dto_prj.StartTime = defaultPrj.StartTime.ToString("yyyy-MM-dd HH:mm:ss");
+            dto_prj.EndTime = defaultPrj.EndTime.ToString("yyyy-MM-dd HH:mm:ss");
+
+            dto_prj.FlowTotalIn = Math.Round(defaultPrj.SumFlow, 0);
+            dto_prj.FlowTotalOut = 0; //澶栭潰璧嬪��
+            dto_prj.PowerTotal = Math.Round(defaultPrj.SumPower, 0);
+            dto_prj.MoneyTotal = Math.Round(defaultPrj.SumMoney, 0);
+
+            dto_prj.BlockTimes = new List<ZyDto.SubmitPrjBlockTime>();
+
+            double startHeight = 0;
+
+            if (defaultPrj.BlockTimes != null)
+            {
+                startHeight = defaultPrj.BlockTimes.First().ReservoirStartHeight;
+                foreach (var bt in defaultPrj.BlockTimes)
+                {
+                    if (bt.OpenPumpIndexs == null)
+                        continue;
+                    ZyDto.SubmitPrjBlockTime dto_item = new ZyDto.SubmitPrjBlockTime();
+                    dto_item.StartTime = bt.StartTime;
+                    dto_item.EndTime = bt.EndTime;
+                    dto_item.OpenPumpCount = bt.OpenPumpIndexs.Count;
+                    dto_item.OpenPumpIndexs = bt.OpenPumpIndexs;
+                    dto_item.StartSwitchGroupID = bt.StartSwitchGroupID;
+
+                    if (bt.PointTimes != null)
+                    {
+                        dto_item.Records = new List<SubmitPrjTime>();
+                        foreach (var bt2 in bt.PointTimes)
+                        {
+                            //if(maxHeight < bt2.WaterLevelH)
+                            //{
+                            //    maxHeight = bt2.WaterLevelH;
+                            //    //maxHeight = Math.Max(maxHeight, bt2.WaterLevelH);
+                            //    maxHeightTime = bt2.Time;
+                            //}
+
+                            dto_item.Records.Add(new SubmitPrjTime(bt2));
+                        }
+                    }
+
+                    dto_prj.BlockTimes.Add(dto_item);
+                }
+            }
+            if (defaultPrj.MaxWaterLevelH <= 0)
+            {        
+                double maxHeight = 0;               
+                DateTime maxHeightTime = defaultPrj.StartTime;
+                if (defaultPrj.BlockTimes != null)
+                {
+                    foreach (var bt in defaultPrj.BlockTimes)
+                    {
+                        if (bt.OpenPumpIndexs == null)
+                            continue;
+
+                        if (bt.PointTimes != null)
+                        {
+                            foreach (var bt2 in bt.PointTimes)
+                            {
+                                if (maxHeight < bt2.WaterLevelH)
+                                {
+                                    maxHeight = bt2.WaterLevelH;
+                                    //maxHeight = Math.Max(maxHeight, bt2.WaterLevelH);
+                                    maxHeightTime = bt2.Time;
+                                }
+                            }
+                        }
+                    }
+                }
+                defaultPrj.MaxWaterLevelH = maxHeight;
+                defaultPrj.MaxWaterLevelTime = maxHeightTime;
+            }
+   
+            if(defaultPrj.MaxWaterLevelTime> defaultPrj.StartTime)
+            dto_prj.MaxWaterLevelH = string.Format("{0:N2}  ({1})",  Math.Round( defaultPrj.MaxWaterLevelH,2) ,
+                defaultPrj.MaxWaterLevelTime.ToString("HH:mm"));
+            else
+                dto_prj.MaxWaterLevelH = string.Format("{0:N2} ", Math.Round(defaultPrj.MaxWaterLevelH, 2));
+
+            //dto_prj.MaxWaterLevelH = defaultPrj.MaxWaterLevelH;
+            //dto_prj.MaxWaterLevelTime = defaultPrj.MaxWaterLevelTime;
+
+            dto_prj.StartWaterLevelH = string.Format("{0:N2}  ({1})", Math.Round(startHeight, 2),
+                defaultPrj.StartTime.ToString("HH:mm")); ;
+            dto_prj.Switchs = new List<SubmitPrjSwitchInfo>();
+            if (defaultPrj.PumpSwitchs != null)
+            {
+                var fi_PumpSwitchs = from x in defaultPrj.PumpSwitchs orderby x.Time select x;
+                foreach (var bt in fi_PumpSwitchs)
+                {
+                    ZyDto.SubmitPrjSwitchInfo dto_item = new ZyDto.SubmitPrjSwitchInfo();
+                    dto_item.Index = bt.Index;
+                    dto_item.GroupID = bt.GroupID;//鍒嗙粍ID
+                    dto_item.PumpIndex = bt.PumpIndex;//娉佃鏍�
+                    dto_item.Time = bt.Time.ToString("yyyy-MM-dd HH:mm:ss");//鏃堕棿
+                    dto_item.SwitchType = bt.SwitchType;///1 寮�鏈� 0 鍏虫満
+
+                    dto_prj.Switchs.Add(dto_item);
+                }
+            }
+
+            return dto_prj;
+        }
+
+        #endregion 鎹㈢畻鎴怐TO
+
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3