From 97270e48e35dbce006263f6dc5fa6b6d8f81d0f5 Mon Sep 17 00:00:00 2001 From: tangxu <tangxu76880903> Date: 星期五, 02 八月 2024 10:44:48 +0800 Subject: [PATCH] 123 --- WebApi/Controllers/ZyPrjController.cs | 245 ++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 193 insertions(+), 52 deletions(-) diff --git a/WebApi/Controllers/ZyPrjController.cs b/WebApi/Controllers/ZyPrjController.cs index 92e5c3a..4509d18 100644 --- a/WebApi/Controllers/ZyPrjController.cs +++ b/WebApi/Controllers/ZyPrjController.cs @@ -29,16 +29,13 @@ //public int? StartOpenCount { get; set; } = -1;//宸蹭綔搴� public string StartReservoirLevel { get; set; }//寮�濮嬫按搴撴按浣�(鍙┖):鍗曚綅m - public List<int> StartOpenPumpIndexArray { get; set; }//寮�濮嬫満娉靛紑鏈虹姸鎬�(鏂�) + public string StartOpenPumpIndexArray { get; set; }//寮�濮嬫満娉靛紑鏈虹姸鎬�(涓嶅彲绌�) public string TotalFlowIn { get; set; }//鍙栨按鎬婚噺 (鍗曚綅 鍚�) public string TotalFlowOut { get; set; }//渚涙按鎬婚噺 (鍗曚綅 鍚�) 涓嶈緭鍏ュ氨鐢ㄩ娴嬪�� public string MaxReservoirLevel { get; set; }//鏈�楂樻按搴撴按浣嶉檺鍒�(鍙┖):鍗曚綅m public string MaxReservoirLevelTime { get; set; }//鏈�楂樻按搴撴按浣嶉檺鍒舵椂闂�(鍙┖) 鏃堕棿鏍煎紡 - - public string IsSubmit { get; set; }//璁$畻瀹�,鏄惁鎺ㄩ�� - public string IsTemporary { get; set; }//鏄惁鏄复鏃剁畻涓�涓�(鏂�) } } @@ -58,8 +55,7 @@ [Route("Calc")] [HttpPost] public IStation.Dto.ApiResult Calc([FromBody] ZyPrjRequest request) - { - LogHelper.Info(JsonHelper.Object2Json(request)); + { if (request == null) { return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "request is null" }; @@ -72,6 +68,11 @@ { return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "EndTime is null" }; } + // + 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; @@ -104,14 +105,12 @@ #region 鍙栨按鎬婚噺 - if (!string.IsNullOrEmpty(request.TotalFlowIn)) + if (!string.IsNullOrEmpty(request.TotalFlowIn) && !string.IsNullOrWhiteSpace(request.TotalFlowIn)) { double TotalFlowIn = 0; if (!double.TryParse(request.TotalFlowIn, out TotalFlowIn)) - { - IStation.LogHelper.Info(string.Format("Zy Prj Time:{0}-{1} , 娉ㄦ剰鍙栨按鎬婚噺鍗曚綅鏄惃,褰撳墠鍙傛暟鍙傛暟杩囧皬", - start_timme, end_timme)); - return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "娉ㄦ剰鍙栨按鎬婚噺鍗曚綅鏄惃,褰撳墠鍙傛暟鍙傛暟杩囧皬" }; + { + return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璇疯緭鍏ユ暟瀛楀瀷鍙栨按鎬婚噺,鎺ュ彈鍒扮殑杈撳叆鍊兼槸:" + request.TotalFlowIn }; } if (TotalFlowIn < 10000) { @@ -132,7 +131,7 @@ anaRequest.MaxReservoirLevelTime = request.MaxReservoirLevelTime; } - if (!string.IsNullOrEmpty(request.MaxReservoirLevel)) + if (!string.IsNullOrEmpty(request.MaxReservoirLevel) && !string.IsNullOrWhiteSpace(request.MaxReservoirLevel)) { double MaxReservoirLevel = 0; if (!double.TryParse(request.MaxReservoirLevel, out MaxReservoirLevel)) @@ -147,11 +146,14 @@ } else { - if (string.IsNullOrEmpty(request.TotalFlowIn)) + if (string.IsNullOrEmpty(request.TotalFlowIn) || string.IsNullOrWhiteSpace(request.TotalFlowIn)) { - IStation.LogHelper.Info(string.Format("Zy Prj Time:{0}-{1} , 璇疯緭鍏ュ彇姘存�婚噺鎴栨按浣嶈姹�", - start_timme, end_timme)); return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璇疯緭鍏ュ彇姘存�婚噺鎴栨按浣嶈姹�" }; + } + double TotalFlowIn = 0; + if (!double.TryParse(request.TotalFlowIn, out TotalFlowIn)) + { + return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "璇疯緭鍏ユ暟瀛楀瀷鍙栨按鎬婚噺,鎺ュ彈鍒扮殑杈撳叆鍊兼槸:"+ request.TotalFlowIn }; } } @@ -159,7 +161,10 @@ #region 渚涙按閲� - if (string.IsNullOrEmpty(request.TotalFlowOut)) + double TotalFlowOut = 0; + double TotalFlowOutPrecid = 0;//棰勬祴鍊肩殑渚涙按鎬婚噺 + + if (string.IsNullOrEmpty(request.TotalFlowOut) || string.IsNullOrWhiteSpace(request.TotalFlowOut)) {//鐢ㄩ娴嬪�� #region 鐢ㄩ娴嬪�� @@ -194,19 +199,17 @@ Data = error_info11 }; } + TotalFlowOutPrecid += r.LastPredictValue; anaRequest.PerHourFlowOut.Add(r.LastPredictValue);//璁$畻涓敤鍚� } - + IStation.LogHelper.Info(string.Format(" 鑾峰彇姘撮噺棰勬祴鍊�: {0} ", string.Join(",",anaRequest.PerHourFlowOut))); #endregion 鐢ㄩ娴嬪�� } else { - double TotalFlowOut = 0; if (!double.TryParse(request.TotalFlowOut, out TotalFlowOut)) - { - IStation.LogHelper.Info(string.Format("Zy Prj Time:{0}-{1} , 娉ㄦ剰鍙栨按鎬婚噺鍗曚綅鏄惃,褰撳墠鍙傛暟鍙傛暟杩囧皬", - start_timme, end_timme)); - return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "娉ㄦ剰渚涙按鎬婚噺鍗曚綅鏄惃,褰撳墠鍙傛暟鍙傛暟杩囧皬" }; + { + return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "娉ㄦ剰渚涙按鎬婚噺杈撳叆鍙傛暟鏃犳硶璇嗗埆,鍙傛暟鏄�:"+ request.TotalFlowOut }; } if (TotalFlowOut < 10000) { @@ -227,13 +230,28 @@ #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; + anaRequest.StartOpenPumpIndexArray = StartOpenPumpIndexArray; //闄堣姘村簱姘翠綅 if (string.IsNullOrEmpty(request.StartReservoirLevel)) @@ -253,36 +271,40 @@ anaRequest.StartReservoirLevel) }; } - bool isTemp = false; - if (!string.IsNullOrEmpty(request.IsTemporary)) - { - isTemp = Convert.ToBoolean(request.IsTemporary); - } + //bool isTemp = false; + //if (!string.IsNullOrEmpty(request.IsTemporary)) + //{ + // isTemp = Convert.ToBoolean(request.IsTemporary); + //} var calcHelper = new IStation.CalcPrjHelper(); AnaPrj defaultPrj = null; string error_info = calcHelper.Calc(anaRequest, out defaultPrj); if (!string.IsNullOrEmpty(error_info) || defaultPrj == null) - { - var er = string.Format("Zy Prj Time:{0}-{1} , 璁$畻閿欒, 鍘熷洜鏄�:{2} ,Request::: {3}", - start_timme, end_timme, error_info, JsonHelper.Object2Json(anaRequest)); - - IStation.LogHelper.Info(er); + { + 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 Time:{0}-{1} , 璁$畻鎴愬姛", start_timme, end_timme)); + { + // IStation.LogHelper.Info(string.Format("Zy Prj 璁$畻鎴愬姛: \r\n {0} ", JsonHelper.Object2Json(defaultPrj))); } + IStation.LogHelper.Info("-----------------------------END--------------------------------------"); - //淇濆瓨鏂规 - if (!isTemp) - { - var ret = Common.HistoryAnaPrjFileHelper.SavePrj(IStation.AnaGlobalParas.Setting, anaRequest, defaultPrj); - } + //淇濆瓨鏂规 + var ret = Common.HistoryAnaPrjFileHelper.SavePrj(IStation.AnaGlobalParas.Setting, anaRequest, defaultPrj); + // var dto_prj = ToPrjDto(defaultPrj); + if (TotalFlowOutPrecid > 1) + { + dto_prj.FlowTotalOut = Math.Round(TotalFlowOutPrecid / 10000, 1); + } + else + { + dto_prj.FlowTotalOut = TotalFlowOut; + } #region 鎺ㄩ�� @@ -372,6 +394,30 @@ } } + /// <summary> + /// 纭璋冨害鏂规 + /// </summary> + /// <param name="ana"></param> + /// <returns></returns> + [Route("ConfirmSchemeByID")] + [HttpPost] + public IStation.Dto.ApiResult ConfirmSchemeByID(string ID) + { + if (string.IsNullOrEmpty(ID) || ID == "string") + { + return new IStation.Dto.ApiResult<bool>(false); + } + var dal = new IStation.DAL.AnaProject(); + var info = dal.SetConfirmStatusByID(ID); + if (string.IsNullOrEmpty(info)) + return new IStation.Dto.ApiResult<bool>(true); + else + { + IStation.LogHelper.Info(string.Format(" ConfirmSchemeByID error ID:{0}, reason:{1}", ID, info)); + return new IStation.Dto.ApiResult<bool>(false); + } + } + #region 鎹㈢畻鎴怐TO private IStation.ZyDto.SubmitPrj ToPrjDto(AnaPrj defaultPrj) @@ -384,15 +430,17 @@ 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.FlowTotal = Math.Round(defaultPrj.SumFlow, 0); + 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) @@ -411,6 +459,7 @@ 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)); } } @@ -418,7 +467,7 @@ dto_prj.BlockTimes.Add(dto_item); } } - + dto_prj.MaxWaterLevelH = maxHeight; dto_prj.Switchs = new List<SubmitPrjSwitchInfo>(); if (defaultPrj.PumpSwitchs != null) { @@ -516,13 +565,40 @@ 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); //dto_setting.OptimalPumpIndexSequence = BuildSequenceToDto(model_setting.OptimalPumpIndexSequence); + + //妫�淇车鐨勮鏍�, 0 琛ㄧず1鍙锋车 1 琛ㄧず浜屽彿娉� 涓虹┖,琛ㄧず娌℃湁妫�淇� + try + { + var overhallStatus = ZyConnectHelper.GetOverhaulStatus(); + if (overhallStatus == null || overhallStatus.Count == 0) + { + if (model_setting.UnablePumpIndexArray != null) + { + dto_setting.UnablePumpIndexArray = ""; + model_setting.UnablePumpIndexArray = null; + IStation.Common.AnaSetting.SaveSetting(model_setting); + } + } + else + { + model_setting.UnablePumpIndexArray = overhallStatus.ToArray(); + dto_setting.UnablePumpIndexArray = string.Join(",", overhallStatus); + IStation.Common.AnaSetting.SaveSetting(model_setting); + } + } + catch(Exception ex) + { + return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "鏃犳硶閾炬帴宸ユ帶鏈嶅姟鍣�,閿欒鍘熷洜:" + ex.Message}; + } + + if (model_setting.SwitchPumpIgnoreTimes != null) { @@ -699,7 +775,7 @@ } } - if (dto.OpenPumpIndexSequence != null) + if (!string.IsNullOrEmpty(dto.OpenPumpIndexSequence)) { int[] new_set_sequence; var error = BuildSequenceFromDto(dto.OpenPumpIndexSequence, out new_set_sequence); @@ -711,7 +787,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); @@ -723,7 +799,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); @@ -735,10 +811,75 @@ model_setting.OptimalPumpIndexSequence = new_set_sequence; } + //妫�淇姸鎬�, 鐩存帴璇籗CADA绯荤粺 + //if (dto.UnablePumpIndexArray != null && dto.UnablePumpIndexArray.Count()>0) + //{ + // if (dto.UnablePumpIndexArray.Count() > 2) + // { + // return new IStation.Dto.ApiResult() { Code = ApiResultCode.Error, Message = "妫�淇车鏁伴噺涓嶈兘瓒呰繃2鍙� " }; + // } + // if (dto.UnablePumpIndexArray.Contains(5)) + // { + // List<int> penPumpIndexs1 = new List<int>(); + // foreach (var p in dto.UnablePumpIndexArray) + // { + // penPumpIndexs1.Add(p - 1); + // } + // model_setting.UnablePumpIndexArray = penPumpIndexs1.ToArray(); + // } + // else + // { + // model_setting.UnablePumpIndexArray = dto.UnablePumpIndexArray; + // } + // model_setting.Check_Optimal_UnablePumpIndexArray(); + //} + //else + //{ + // model_setting.UnablePumpIndexArray = null; + //} + return new IStation.Dto.ApiResult<bool>(IStation.Common.AnaSetting.SaveSetting(model_setting)); } - private string BuildSequenceFromDto(int[] sequenceDto, out int[] sequenceDs) + /// <summary> + ///鑾峰彇鏈烘车妫�淇姸鎬� + /// </summary> + /// <returns></returns> + [Route("SynOverhaulStatus")] + [HttpGet] + public IStation.Dto.ApiResult SynOverhaulStatus() + { + var overhallStatus = ZyConnectHelper.GetOverhaulStatus();//妫�淇车鐨勮鏍�, 0 琛ㄧず1鍙锋车 1 琛ㄧず浜屽彿娉� 涓虹┖,琛ㄧず娌℃湁妫�淇� + + return new IStation.Dto.ApiResult<List<int>>(overhallStatus); + } + 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) -- Gitblit v1.9.3