From f7253b1a5b2a945d88e6ab230910a78c2cbbc7ad Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期二, 24 十二月 2024 20:31:31 +0800
Subject: [PATCH] 批量问题修改

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs |   69 ++++++++++++++++++++++++++++++----
 1 files changed, 61 insertions(+), 8 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
index 522751c..7c3dc8a 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/05-function/SimulationFunctionCtrl.cs
@@ -1,6 +1,9 @@
-锘縰sing DevExpress.Utils.Extensions;
+锘縰sing DevExpress.CodeParser;
+using DevExpress.DataAccess.Native;
+using DevExpress.Utils.Extensions;
 using DevExpress.Utils.Svg;
 using DevExpress.XtraCharts;
+using System.Collections.Concurrent;
 using Yw.DAL.Basic;
 using Yw.Vmo;
 
@@ -65,6 +68,7 @@
         private Dictionary<HydroWorkingVmo, bool> _allWorkingCheckedListDict = null;//鎵�鏈夊伐鍐甸�夋嫨鍒楄〃瀛楀吀
         private Dictionary<XhsSchemeVmo, Yw.Model.HydroModelInfo> _allSchemeHydroInfoDict = null;//鎵�鏈夋柟妗堟按鍔涗俊鎭垪琛�
         private Dictionary<XhsSchemeVmo, Dictionary<HydroWorkingVmo, bool>> _allSchemeWorkingCheckedListDict = null;//鎵�鏈夋柟妗堝伐鍐甸�夋嫨鍒楄〃瀛楀吀
+        private ConcurrentDictionary<string, bool> _gettingHydroInfoDict = new ConcurrentDictionary<string, bool>();//鑾峰彇姘村姏淇℃伅瀛楀吀
 
         /// <summary>
         /// 缁戝畾鏁版嵁
@@ -157,6 +161,7 @@
             this.CreateProjectSiteSchemeEvent?.Invoke(_project, _projectSite, hydroInfo, this.svgImg32[3]);
         }
 
+        //鍙抽敭寮瑰嚭
         private void accordionControl1_MouseClick(object sender, MouseEventArgs e)
         {
             if (e.Button == MouseButtons.Right)
@@ -165,11 +170,13 @@
             }
         }
 
+        //鍏ㄩ儴鎶樺彔
         private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             this.accordionControl1.CollapseAll();
         }
 
+        //鍏ㄩ儴灞曞紑
         private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
             this.accordionControl1.ExpandAll();
@@ -186,7 +193,10 @@
             Yw.Model.HydroModelInfo hydroInfo = null;
             if (!useCache)
             {
-                hydroInfo = await GetHydroInfo(scheme);
+                if (hydroInfo == null)
+                {
+                    hydroInfo = await GetHydroInfo(scheme);
+                }
                 if (hydroInfo == null)
                 {
                     return default;
@@ -199,7 +209,15 @@
                 {
                     if (_hydroInfo == null)
                     {
-                        _hydroInfo = await GetHydroInfo(null);
+                        hydroInfo = await GetHydroInfo(null);
+                        if (hydroInfo == null)
+                        {
+                            return default;
+                        }
+                        if (_hydroInfo == null)
+                        {
+                            _hydroInfo = hydroInfo;
+                        }
                     }
                     return _hydroInfo;
                 }
@@ -217,9 +235,16 @@
                 if (!_allSchemeHydroInfoDict.ContainsKey(scheme))
                 {
                     hydroInfo = await GetHydroInfo(scheme);
-                    _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
-                    return hydroInfo;
+                    if (hydroInfo == null)
+                    {
+                        return default;
+                    }
+                    if (!_allSchemeHydroInfoDict.ContainsKey(scheme))
+                    {
+                        _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
+                    }
                 }
+                return _allSchemeHydroInfoDict[scheme];
             }
 
             if (_allSchemeHydroInfoDict.ContainsKey(scheme))
@@ -231,7 +256,7 @@
                 _allSchemeHydroInfoDict.Add(scheme, hydroInfo);
             }
 
-            return hydroInfo;
+            return _allSchemeHydroInfoDict[scheme];
         }
 
         //鑾峰彇姘村姏淇℃伅
@@ -244,6 +269,21 @@
             if (_projectSite == null)
             {
                 return default;
+            }
+            string key = $"{_project.ID}-{_projectSite.ID}-{scheme?.ID}";
+            if (_gettingHydroInfoDict.TryGetValue(key, out bool getting))
+            {
+                if (getting)
+                {
+                    return default;
+                }
+            }
+
+            WaitFormHelper.ShowWaitForm(this.FindForm(), "姝e湪鍔犺浇妯″瀷鏁版嵁锛岃绋嶅悗...");
+            //var overlay = this.ShowOverlay();
+            if (!_gettingHydroInfoDict.TryAdd(key, true))
+            {
+                _gettingHydroInfoDict[key] = true;
             }
 
             HydroModelRelationVmo relation = null;
@@ -261,7 +301,11 @@
             {
                 return default;
             }
-            var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID);
+            //var hydroInfo = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.GetByID(relation.ModelID);
+            var hydroInfo = await HStation.BLL.XhsHydroInfo.GetByID(relation.ModelID);
+            _gettingHydroInfoDict[key] = false;
+            //overlay.Close();
+            WaitFormHelper.HideWaitForm();
             return hydroInfo;
         }
 
@@ -484,6 +528,10 @@
                 elementWorking.Click += async (sender, e) =>
                 {
                     var hydroInfo = await GetHydroInfo(null, true);
+                    if (hydroInfo == null)
+                    {
+                        return;
+                    }
                     this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, null, hydroInfo, working, this.svgImg32[4]);
                 };
                 this.elementProjectSiteSimulation.Elements.Add(elementWorking);
@@ -534,6 +582,10 @@
                 elementWorking.Click += async (sender, e) =>
                 {
                     var hydroInfo = await GetHydroInfo(scheme, true);
+                    if (hydroInfo == null)
+                    {
+                        return;
+                    }
                     this.ShowProjectSiteWorkingEvent?.Invoke(_project, _projectSite, scheme, hydroInfo, working, this.svgImg32[4]);
                 };
                 elementScheme.Elements.Add(elementWorking);
@@ -755,7 +807,8 @@
             {
                 return default;
             }
-            var id = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(hydroInfo);
+            //var id = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance.Save(hydroInfo);
+            var id = await HStation.BLL.XhsHydroInfo.Save(hydroInfo);
             if (id < 1)
             {
                 return default;

--
Gitblit v1.9.3