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 | 462 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 325 insertions(+), 137 deletions(-) diff --git a/WebApi/Controllers/ZyPrjController.cs b/WebApi/Controllers/ZyPrjController.cs index 2edbe73..bf39aa0 100644 --- a/WebApi/Controllers/ZyPrjController.cs +++ b/WebApi/Controllers/ZyPrjController.cs @@ -29,7 +29,7 @@ //public int? StartOpenCount { get; set; } = -1;//宸蹭綔搴� public string StartReservoirLevel { get; set; }//寮�濮嬫按搴撴按浣�(鍙┖):鍗曚綅m - public int[] StartOpenPumpIndexArray { get; set; }//寮�濮嬫満娉靛紑鏈虹姸鎬�(涓嶅彲绌�) + public string StartOpenPumpIndexArray { get; set; }//寮�濮嬫満娉靛紑鏈虹姸鎬�(涓嶅彲绌�) public string TotalFlowIn { get; set; }//鍙栨按鎬婚噺 (鍗曚綅 鍚�) public string TotalFlowOut { get; set; }//渚涙按鎬婚噺 (鍗曚綅 鍚�) 涓嶈緭鍏ュ氨鐢ㄩ娴嬪�� @@ -48,7 +48,7 @@ public class ZyPrjController : ApiController { /// <summary> - /// + /// 璁$畻 /// </summary> /// <param name="request"></param> /// <returns></returns> @@ -56,8 +56,6 @@ [HttpPost] public IStation.Dto.ApiResult Calc([FromBody] ZyPrjRequest request) { - - if (request == null) { return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "request is null" }; @@ -73,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; @@ -98,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) @@ -125,7 +124,7 @@ } #endregion 鍙栨按鎬婚噺 - + #region 姘翠綅瑕佹眰 if (!string.IsNullOrEmpty(request.MaxReservoirLevelTime)) @@ -152,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 }; } } @@ -163,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); @@ -201,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)); @@ -224,21 +227,39 @@ 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 渚涙按閲� //寮�濮嬫椂鐨勫紑鏈虹姸鎬� - if (request.StartOpenPumpIndexArray == null) + List<int> StartOpenPumpIndexArray = new List<int>(); + if (!string.IsNullOrEmpty(request.StartOpenPumpIndexArray)) { - IStation.LogHelper.Info(" 鏈缃紑濮嬫椂鏈烘车寮�鍋滅姸鎬� (Error: StartOpenPumpIndexArray is null)"); - return new IStation.Dto.ApiResult<string>() { Code = ApiResultCode.Error, Data = "鏈缃紑濮嬫椂鏈烘车寮�鍋滅姸鎬� (Error: StartOpenPumpIndexArray is null)" }; + var sss = request.StartOpenPumpIndexArray.Split(','); + foreach (var item in sss) + { + if (int.TryParse(item, out int index)) + { + if (index < 0 || index > 4) + { + return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "寮�濮嬫椂鐨勫紑鏈虹姸鎬�,鏈烘车瑙掓爣瑕佹眰涓嶈秴杩�4" }; + } + StartOpenPumpIndexArray.Add(index); + } + else + { + return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "寮�濮嬫椂鐨勫紑鏈虹姸鎬�,鍙傛暟涓嶆纭�" }; + } + } } anaRequest.IsKnownStartOpenPump = true; - anaRequest.StartOpenPumpIndexArray = request.StartOpenPumpIndexArray.ToList(); + anaRequest.StartOpenPumpIndexArray = StartOpenPumpIndexArray; //闄堣姘村簱姘翠綅 if (string.IsNullOrEmpty(request.StartReservoirLevel)) @@ -258,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(() => @@ -303,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 }; } @@ -405,75 +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; - if (defaultPrj.BlockTimes != null) - { - 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.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> /// 鑾峰彇鏌愪竴澶�,鏈�杩戜竴鏉� @@ -493,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> @@ -519,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> /// @@ -552,9 +588,9 @@ dto_setting.OptSortType = model_setting.OptSortType; dto_setting.SwitchPumpMinuteSpace = model_setting.SwitchPumpMinuteSpace; - dto_setting.OpenPumpIndexSequence = model_setting.OpenPumpIndexSequence; - dto_setting.ClosePumpIndexSequence = model_setting.ClosePumpIndexSequence; - dto_setting.OptimalPumpIndexSequence = model_setting.OptimalPumpIndexSequence; + 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); //dto_setting.OpenPumpIndexSequence = BuildSequenceToDto(model_setting.OpenPumpIndexSequence); //dto_setting.ClosePumpIndexSequence = BuildSequenceToDto(model_setting.ClosePumpIndexSequence); @@ -568,6 +604,7 @@ { if (model_setting.UnablePumpIndexArray != null) { + dto_setting.UnablePumpIndexArray = ""; model_setting.UnablePumpIndexArray = null; IStation.Common.AnaSetting.SaveSetting(model_setting); } @@ -575,16 +612,14 @@ else { model_setting.UnablePumpIndexArray = overhallStatus.ToArray(); + dto_setting.UnablePumpIndexArray = string.Join(",", overhallStatus); IStation.Common.AnaSetting.SaveSetting(model_setting); } - dto_setting.UnablePumpIndexArray = model_setting.UnablePumpIndexArray; } - 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) { @@ -633,7 +668,7 @@ { if (dto == null) { - return new IStation.Dto.ApiResult<bool>(false); + return new IStation.Dto.ApiResult<bool>(false) { Message = "鍏ュ弬涓虹┖" }; } var model_setting = IStation.AnaGlobalParas.Setting; @@ -658,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) { @@ -761,7 +801,7 @@ } } - if (dto.OpenPumpIndexSequence != null) + if (!string.IsNullOrEmpty(dto.OpenPumpIndexSequence)) { int[] new_set_sequence; var error = BuildSequenceFromDto(dto.OpenPumpIndexSequence, out new_set_sequence); @@ -773,7 +813,7 @@ model_setting.OpenPumpIndexSequence = new_set_sequence; } - if (dto.ClosePumpIndexSequence != null) + if (!string.IsNullOrEmpty(dto.ClosePumpIndexSequence))// if (dto.ClosePumpIndexSequence != null) { int[] new_set_sequence; var error = BuildSequenceFromDto(dto.ClosePumpIndexSequence, out new_set_sequence); @@ -785,7 +825,7 @@ model_setting.ClosePumpIndexSequence = new_set_sequence; } - if (dto.OptimalPumpIndexSequence != null) + if (!string.IsNullOrEmpty(dto.OptimalPumpIndexSequence))// if (dto.OptimalPumpIndexSequence != null) { int[] new_set_sequence; var error = BuildSequenceFromDto(dto.OptimalPumpIndexSequence, out new_set_sequence); @@ -840,7 +880,33 @@ return new IStation.Dto.ApiResult<List<int>>(overhallStatus); } - private string BuildSequenceFromDto(int[] 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)) + { + var sss = sequenceDto.Split(','); + foreach (var item in sss) + { + if (int.TryParse(item, out int index)) + { + list.Add(index); + } + else + { + return " 璁剧疆鍙傛暟涓嶅悎鐞�,鏈烘车搴忓彿鏈夐潪鏁板瓧"; + } + } + } + + return BuildSequenceFromDto(list, out sequenceDs); + } + + private string BuildSequenceFromDto(List<int> sequenceDto, out int[] sequenceDs) { sequenceDs = null; if (sequenceDto == null || sequenceDto.Count() == 0) @@ -942,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