From f373ad1f566c9c8679547f4205d86eb6e0836d59 Mon Sep 17 00:00:00 2001
From: lixiaojun <1287241240@qq.com>
Date: 星期一, 06 一月 2025 17:22:13 +0800
Subject: [PATCH] 修改保存逻辑

---
 WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs |  217 +++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 190 insertions(+), 27 deletions(-)

diff --git a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
index 6a21a93..895ddb0 100644
--- a/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
+++ b/WinFrmUI/HStation.WinFrmUI.Xhs.Core/03-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -2,7 +2,9 @@
 using DevExpress.CodeParser;
 using DevExpress.Diagram.Core.Native;
 using DevExpress.Mvvm.Native;
+using DevExpress.Office.Utils;
 using DevExpress.Utils.MVVM;
+using DevExpress.Xpo.Helpers;
 using DevExpress.XtraMap;
 using HStation.WinFrmUI.PhartRelation;
 using Mapster;
@@ -32,11 +34,6 @@
         /// 鏂板宸ュ喌浜嬩欢
         /// </summary>
         public event Action<HydroWorkingVmo> AppendWorkingEvent;
-
-        /// <summary>
-        /// 淇濆瓨妯″瀷浜嬩欢
-        /// </summary>
-        public event Func<Yw.Model.HydroModelInfo, Task<Yw.Model.HydroModelInfo>> SaveModelEvent;
 
         /// <summary>
         /// 鍒锋柊妯″瀷浜嬩欢
@@ -239,6 +236,62 @@
             return _propStatusHelper;
         }
 
+        //鑾峰彇灞炴�х姸鎬丏b鍒楄〃
+        private async Task<List<HydroParterPropStatusInfo>> GetPropStatusDbList()
+        {
+            var helper = await GetPropStatusHelper();
+            return helper.GetPropStatusDbList();
+        }
+
+        #endregion
+
+        #region 鏇存敼鐘舵��
+
+        //鏀瑰彉杈呭姪绫�
+        private HydroChangeHelper _changeHelper = null;
+
+        //鑾峰彇鏀瑰彉杈呭姪绫�
+        private HydroChangeHelper GetChangeHelper()
+        {
+            if (_hydroInfo == null)
+            {
+                return default;
+            }
+            if (_changeHelper == null)
+            {
+                _changeHelper = new HydroChangeHelper(_hydroInfo);
+            }
+            return _changeHelper;
+        }
+
+        //闄勫姞鏀瑰彉鏋勪欢
+        private void AppendChangeParter(HydroParterInfo parter, eChangeType changeType)
+        {
+            var helper = GetChangeHelper();
+            helper.Append(parter, changeType);
+        }
+
+        //鑾峰彇澧炲姞鏋勪欢鍒楄〃
+        private List<HydroParterInfo> GetAddParterList()
+        {
+            var helper = GetChangeHelper();
+            return helper.GetAddParterList();
+        }
+
+        //鑾峰彇鏇存柊鏋勪欢鍒楄〃
+        private List<HydroParterInfo> GetUpdateParterList()
+        {
+            var helper = GetChangeHelper();
+            return helper.GetUpdateParterList();
+        }
+
+        //鑾峰彇绉婚櫎鏋勪欢鍒楄〃
+        private List<string> GetRemoveParters()
+        {
+            var helper = GetChangeHelper();
+            return helper.GetRemoveParters();
+        }
+
         #endregion
 
         #region BIM鎺т欢
@@ -283,7 +336,7 @@
             this.tabPageBimface.Controls.Add(bimfaceCtrl);
         }
 
-        #endregion BIM鎺т欢
+        #endregion
 
         #region Q3d鎺т欢
 
@@ -320,7 +373,7 @@
             this.tabPageQ3d.Controls.Add(q3dCtrl);
         }
 
-        #endregion Q3d鎺т欢
+        #endregion
 
         #region 灞炴�ф帶浠�
 
@@ -407,12 +460,13 @@
                     var gradingHelper = await GetGradingHelper();
                     gradingHelper.Set(visual);
                 };
-                _propertyCtrl.FlowEffectPropertyValueChangedEvent += async (visual) =>
+                _propertyCtrl.ParterChangedEvent += (parter, changeType) =>
                 {
-                    //娴佸悜灞炴�у彂鐢熸敼鍙�
-                    //鍒ゆ柇娴佸悜鏄惁鍔犺浇锛屽鏋滃姞杞藉垯鏇存柊娴佸悜锛屾渶濂芥槸鏇存柊鍗曚釜娴佸悜
-                    var flowEffectHelper = await GetFlowEffectHelper();
-                    flowEffectHelper.Set(visual);
+                    if (parter == null)
+                    {
+                        return;
+                    }
+                    AppendChangeParter(parter, changeType);
                 };
             }
             return _propertyCtrl;
@@ -697,6 +751,10 @@
                 {
                     SelectVisual(_visual, eSimulationVisualSource.List);
                 };
+                _visualListCtrl.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
             }
             return _visualListCtrl;
         }
@@ -826,7 +884,7 @@
 
         #endregion 鏋勪欢鏄剧ず
 
-        #endregion 鏋勪欢鏄庣粏
+        #endregion
 
         #region 涓�閿樉闅�
 
@@ -874,6 +932,10 @@
 
         #region 淇濆瓨淇℃伅
 
+        //淇濆瓨閿佸畾瀵硅薄
+        private object _locker_save = new();
+        private bool _isSaving = false;//姝e湪淇濆瓨
+
         //淇濆瓨
         private async void barBtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
         {
@@ -881,19 +943,44 @@
             {
                 return;
             }
-            if (this.SaveModelEvent == null)
-            {
-                return;
-            }
-            var hydroInfo = await this.SaveModelEvent.Invoke(_hydroInfo);
-            if (hydroInfo == null)
-            {
-                TipFormHelper.ShowError("淇濆瓨澶辫触锛�");
-                return;
-            }
-            _hydroInfo = hydroInfo;
 
-            TipFormHelper.ShowSucceed("淇濆瓨鎴愬姛锛�");
+            lock (_locker_save)
+            {
+                if (_isSaving)
+                {
+                    TipFormHelper.ShowWarn("姝e湪淇濆瓨锛岃绋嶅悗閲嶈瘯锛�");
+                    return;
+                }
+            }
+
+            _isSaving = true;
+
+            var addParterList = GetAddParterList();
+            var updateParterList = GetUpdateParterList();
+            var removeParters = GetRemoveParters();
+
+            this.FindForm().ShowAlertInfo("姘村姏淇℃伅淇濆瓨", "姝e湪鏇存柊姘村姏淇℃伅锛�");
+            var bol = await BLLFactory<Yw.BLL.HydroModelInfo>.Instance
+                .Update(_hydroInfo, addParterList, updateParterList, removeParters);
+            if (!bol)
+            {
+                this.FindForm().ShowAlertInfo("姘村姏淇℃伅淇濆瓨", "姘村姏淇℃伅鏇存柊澶辫触锛�");
+                return;
+            }
+            this.FindForm().ShowAlertInfo("姘村姏淇℃伅淇濆瓨", "姘村姏淇℃伅鏇存柊鎴愬姛锛�");
+
+            this.FindForm().ShowAlertInfo("姘村姏淇℃伅淇濆瓨", "姝e湪淇濆瓨灞炴�х姸鎬侊紒");
+            var propStatusDbList = await GetPropStatusDbList();
+            bol = await BLLFactory<Yw.BLL.HydroParterPropStatusInfo>.Instance.Save(_hydroInfo.ID, propStatusDbList);
+            if (bol)
+            {
+                this.FindForm().ShowAlertInfo("姘村姏淇℃伅淇濆瓨", "灞炴�х姸鎬佷繚瀛樻垚鍔燂紒");
+            }
+            else
+            {
+                this.FindForm().ShowAlertInfo("姘村姏淇℃伅淇濆瓨", "灞炴�х姸鎬佷繚瀛樺け璐ワ紒");
+            }
+            _isSaving = false;
 
             //Stopwatch sw = new Stopwatch();
             //sw.Start();
@@ -925,6 +1012,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //姘存睜
@@ -941,6 +1032,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -959,6 +1054,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //杩炴帴鑺傜偣
@@ -975,6 +1074,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -993,6 +1096,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //寮ご
@@ -1009,6 +1116,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -1027,6 +1138,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //鍥涢��
@@ -1043,6 +1158,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -1061,6 +1180,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //娴侀噺璁�
@@ -1077,6 +1200,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -1095,6 +1222,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //鍠峰槾
@@ -1111,6 +1242,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -1129,6 +1264,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //绠¢亾
@@ -1145,6 +1284,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -1163,6 +1306,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //姘存车
@@ -1179,6 +1326,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -1197,6 +1348,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //鎹㈢儹鍣�
@@ -1214,6 +1369,10 @@
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
                 };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
+                };
                 dlg.ShowDialog();
             };
             //鍘嬬缉鏈�
@@ -1230,6 +1389,10 @@
                 {
                     SelectVisual(visuals?.FirstOrDefault(), eSimulationVisualSource.Set);
                     UpdateVisualListCtrl();
+                };
+                dlg.ParterChangedEvent += (parter, changeType) =>
+                {
+                    AppendChangeParter(parter, changeType);
                 };
                 dlg.ShowDialog();
             };
@@ -1450,7 +1613,7 @@
             }
         }
 
-        #endregion 鎵归噺閰嶇疆
+        #endregion
 
         #region 鏋勪欢鏌ヨ
 
@@ -1593,7 +1756,7 @@
             markHelper.Set();
         }
 
-        #endregion 妯″瀷鏍囨敞
+        #endregion
 
         #region 棰滆壊鍒嗙骇
 

--
Gitblit v1.9.3