From 982cde7e9372dc218f23b204265d8e54f7e9ce4f Mon Sep 17 00:00:00 2001
From: ningshuxia <ningshuxia0927@outlook.com>
Date: 星期四, 13 三月 2025 10:34:21 +0800
Subject: [PATCH] boxModel

---
 WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs |  432 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 269 insertions(+), 163 deletions(-)

diff --git a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs
index 4a86348..211d6f9 100644
--- a/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs
+++ b/WinFrmUI/Yw.WinFrmUI.Hydro.Core/14-matching/00-core/HydroMatchingHelper.cs
@@ -1,4 +1,5 @@
-锘縰sing Yw.Hydro;
+锘縰sing Yw.Ahart;
+using Yw.Hydro;
 using Yw.Model;
 
 namespace Yw.WinFrmUI
@@ -2485,8 +2486,11 @@
             //visual.DbLocked = matching.DbLocked;
             //visual.DbId = matching.DbId;
             //visual.ModelType = matching.ModelType;
+            //if (matching.TranslationType.HasValue)
+            //{
+            //    visual.TranslationType = HydroTranslationTypeEnumHelper.GetTranslationTypeName(matching.TranslationType.Value);
+            //}
             //visual.Material = matching.Material;
-            //visual.Diameter = matching.Diameter;
             //visual.StartDiameter = matching.StartDiameter;
             //visual.EndDiameter = matching.EndDiameter;
             //visual.Roughness = matching.Roughness;
@@ -2516,6 +2520,17 @@
                     visual.DbId = matching.MatchingDbId;
                     result = true;
                 }
+                if (matching.MatchingTranslationType.HasValue)
+                {
+                    var translationType = HydroTranslationTypeEnumHelper.GetTranslationTypeName(matching.MatchingTranslationType.Value);
+                    if (visual.TranslationType != translationType)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.TranslationType), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
+                    visual.TranslationType = translationType;
+                    result = true;
+                }
                 if (!string.IsNullOrEmpty(matching.MatchingMaterial))
                 {
                     if (visual.Material != matching.MatchingMaterial)
@@ -2524,16 +2539,6 @@
                         propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Material), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
                     }
                     visual.Material = matching.MatchingMaterial;
-                    result = true;
-                }
-                if (matching.MatchingDiameter.HasValue)
-                {
-                    if (visual.Diameter != matching.MatchingDiameter.Value)
-                    {
-                        changeHelper?.Append(visual, eChangeType.Update);
-                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Diameter), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
-                    }
-                    visual.Diameter = matching.MatchingDiameter.Value;
                     result = true;
                 }
                 if (matching.MatchingRoughness.HasValue)
@@ -2587,9 +2592,15 @@
         /// <summary>
         /// 搴旂敤
         /// </summary>
-        public static bool Apply(HydroPumpViewModel visualViewModel, HydroPumpMatchingViewModel matching)
+        public static bool Apply
+            (
+                HydroPumpViewModel visualViewModel,
+                HydroPumpMatchingViewModel matching,
+                HydroChangeHelper changeHelper = null,
+                HydroPropStatusHelper propStatusHelper = null
+            )
         {
-            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching);
+            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching, changeHelper, propStatusHelper);
             visualViewModel.UpdateProperty();
             return bol;
         }
@@ -2736,6 +2747,9 @@
                         }
                         hydroInfo.Curves.Add(curveqh);
                         visual.CurveQH = curveqh.Code;
+                        changeHelper?.Append(curveqh, eChangeType.Add);
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.CurveQH), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
                         result = true;
                     }
                     else
@@ -2744,6 +2758,7 @@
                         {
                             curveqh.DbId = matching.MatchingCurveDbId;
                             curveqh.CurveData = matching.MatchingCurveQH?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                            changeHelper?.Append(curveqh, eChangeType.Update);
                             result = true;
                         }
                     }
@@ -2767,6 +2782,9 @@
                         }
                         hydroInfo.Curves.Add(curveqp);
                         visual.CurveQP = curveqp.Code;
+                        changeHelper?.Append(curveqp, eChangeType.Add);
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.CurveQP), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
                         result = true;
                     }
                     else
@@ -2775,6 +2793,7 @@
                         {
                             curveqp.DbId = matching.MatchingCurveDbId;
                             curveqp.CurveData = matching.MatchingCurveQP?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                            changeHelper?.Append(curveqp, eChangeType.Update);
                             result = true;
                         }
                     }
@@ -2798,6 +2817,9 @@
                         }
                         hydroInfo.Curves.Add(curveqe);
                         visual.CurveQE = curveqe.Code;
+                        changeHelper?.Append(curveqe, eChangeType.Add);
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.CurveQE), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
                         result = true;
                     }
                     else
@@ -2806,6 +2828,7 @@
                         {
                             curveqe.DbId = matching.MatchingCurveDbId;
                             curveqe.CurveData = matching.MatchingCurveQE?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                            changeHelper?.Append(curveqe, eChangeType.Update);
                             result = true;
                         }
                     }
@@ -2822,9 +2845,15 @@
         /// <summary>
         /// 搴旂敤
         /// </summary>
-        public static bool Apply(HydroValveViewModel visualViewModel, HydroValveMatchingViewModel matching)
+        public static bool Apply
+            (
+                HydroValveViewModel visualViewModel,
+                HydroValveMatchingViewModel matching,
+                HydroChangeHelper changeHelper = null,
+                HydroPropStatusHelper propStatusHelper = null
+            )
         {
-            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching);
+            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching, changeHelper, propStatusHelper);
             visualViewModel.UpdateProperty();
             return bol;
         }
@@ -2832,7 +2861,14 @@
         /// <summary>
         /// 搴旂敤
         /// </summary>
-        public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroValveInfo visual, HydroValveMatchingViewModel matching)
+        public static bool Apply
+            (
+                Yw.Model.HydroModelInfo hydroInfo,
+                Yw.Model.HydroValveInfo visual,
+                HydroValveMatchingViewModel matching,
+                HydroChangeHelper changeHelper = null,
+                HydroPropStatusHelper propStatusHelper = null
+            )
         {
             if (hydroInfo == null)
             {
@@ -2847,15 +2883,13 @@
                 return false;
             }
 
-            visual.Name = matching.Name;
-            visual.DbLocked = matching.DbLocked;
-            visual.DbId = matching.DbId;
-            visual.ModelType = matching.ModelType;
-            visual.Material = matching.Material;
-            visual.Diameter = matching.Diameter;
-            visual.MinorLoss = matching.MinorLoss;
-            visual.ValveType = HydroValveTypeEnumHelper.GetValveTypeCode(matching.ValveType);
-            visual.ValveSetting = matching.ValveSetting;
+            //visual.Name = matching.Name;
+            //visual.DbLocked = matching.DbLocked;
+            //visual.DbId = matching.DbId;
+            //visual.ModelType = matching.ModelType;
+            //visual.Material = matching.Material;
+            //visual.Diameter = matching.Diameter;
+            //visual.MinorLoss = matching.MinorLoss;
 
             bool result = false;
 
@@ -2863,153 +2897,141 @@
             {
                 if (!string.IsNullOrEmpty(matching.MatchingModelType))
                 {
+                    if (visual.ModelType != matching.MatchingModelType)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.ModelType), ePropStatus.Matching, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.ModelType = matching.MatchingModelType;
                     result = true;
                 }
                 if (!string.IsNullOrEmpty(matching.MatchingDbId))
                 {
+                    if (visual.DbId != matching.MatchingDbId)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.DbId), ePropStatus.Matching, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.DbId = matching.MatchingDbId;
                     result = true;
                 }
                 if (!string.IsNullOrEmpty(matching.MatchingMaterial))
                 {
+                    if (visual.Material != matching.MatchingMaterial)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Material), ePropStatus.Matching, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.Material = matching.MatchingMaterial;
                     result = true;
                 }
                 if (matching.MatchingDiameter.HasValue)
                 {
+                    if (visual.Diameter != matching.MatchingDiameter.Value)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Diameter), ePropStatus.Matching, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.Diameter = matching.MatchingDiameter.Value;
                     result = true;
                 }
                 if (matching.MatchingMinorLoss.HasValue)
                 {
+                    if (visual.MinorLoss != matching.MatchingMinorLoss.Value)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.MinorLoss), ePropStatus.Matching, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.MinorLoss = matching.MatchingMinorLoss.Value;
                     result = true;
                 }
-                if (matching.MatchingValveType.HasValue)
+                if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
                 {
-                    visual.ValveType = HydroValveTypeEnumHelper.GetValveTypeCode(matching.MatchingValveType.Value);
-                    result = true;
-                }
-                switch (visual.ValveType)
-                {
-                    case Yw.Hydro.ValveType.PSV:
+                    //寮�搴︽崯澶辨洸绾�
+                    var curveol = hydroInfo.Curves?.Find(x => x.Code == visual.CurveOL);
+                    if (curveol == null)
+                    {
+                        curveol = new Yw.Model.HydroCurveInfo();
+                        curveol.Catalog = Yw.Hydro.ParterCatalog.Curve;
+                        curveol.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
+                        curveol.Name = "鍖归厤";
+                        curveol.ModelType = string.Empty;
+                        curveol.DbLocked = false;
+                        curveol.DbId = matching.MatchingCurveDbId;
+                        curveol.CurveType = Yw.WinFrmUI.HydroCurveType.CurveOL;
+                        curveol.CurveFactor = null;
+                        curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                        if (hydroInfo.Curves == null)
                         {
-                            if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
-                            {
-                                visual.ValveSetting = matching.MatchingValveSetting;
-                                result = true;
-                            }
+                            hydroInfo.Curves = new List<Yw.Model.HydroCurveInfo>();
                         }
-                        break;
-                    case Yw.Hydro.ValveType.PBV:
+                        hydroInfo.Curves.Add(curveol);
+                        visual.CurveOL = curveol.Code;
+                        changeHelper?.Append(curveol, eChangeType.Add);
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.CurveOL), ePropStatus.Matching, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                        result = true;
+                    }
+                    else
+                    {
+                        if (!curveol.DbLocked)
                         {
-                            if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
-                            {
-                                visual.ValveSetting = matching.MatchingValveSetting;
-                                result = true;
-                            }
+                            curveol.DbId = matching.MatchingCurveDbId;
+                            curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                            changeHelper?.Append(curveol, eChangeType.Update);
+                            result = true;
                         }
-                        break;
-                    case Yw.Hydro.ValveType.PRV:
-                        {
-                            if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
-                            {
-                                visual.ValveSetting = matching.MatchingValveSetting;
-                                result = true;
-                            }
-                        }
-                        break;
-                    case Yw.Hydro.ValveType.FCV:
-                        {
-                            if (!string.IsNullOrEmpty(matching.MatchingValveSetting))
-                            {
-                                visual.ValveSetting = matching.MatchingValveSetting;
-                                result = true;
-                            }
-                        }
-                        break;
-                    case Yw.Hydro.ValveType.TCV:
-                        {
-                            if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
-                            {
-                                //闃�闂ㄥ紑搴︽崯澶辩郴鏁版洸绾�
-                                var curveol = hydroInfo.Curves?.Find(x => x.Code == visual.ValveSetting);
-                                if (curveol == null)
-                                {
-                                    curveol = new Yw.Model.HydroCurveInfo();
-                                    curveol.Catalog = Yw.Hydro.ParterCatalog.Curve;
-                                    curveol.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
-                                    curveol.Name = "鍖归厤";
-                                    curveol.ModelType = visual.ModelType;
-                                    curveol.DbLocked = false;
-                                    curveol.DbId = matching.MatchingCurveDbId;
-                                    curveol.CurveType = Yw.WinFrmUI.HydroCurveType.CurveOL;
-                                    curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
-                                    if (hydroInfo.Curves == null)
-                                    {
-                                        hydroInfo.Curves = new List<Yw.Model.HydroCurveInfo>();
-                                    }
-                                    hydroInfo.Curves.Add(curveol);
-                                    visual.ValveSetting = curveol.Code;
-                                    result = true;
-                                }
-                                else
-                                {
-                                    if (!curveol.DbLocked)
-                                    {
-                                        curveol.DbId = matching.MatchingCurveDbId;
-                                        curveol.CurveType = Yw.WinFrmUI.HydroCurveType.CurveOL;
-                                        curveol.CurveData = matching.MatchingCurveOL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
-                                        result = true;
-                                    }
-                                }
-                            }
-                        }
-                        break;
-                    case Yw.Hydro.ValveType.GPV:
-                        {
-                            if (!string.IsNullOrEmpty(matching.MatchingCurveDbId))
-                            {
-                                //姘村ご鎹熷け鏇茬嚎
-                                var curveql = hydroInfo.Curves?.Find(x => x.Code == visual.ValveSetting);
-                                if (curveql == null)
-                                {
-                                    curveql = new Yw.Model.HydroCurveInfo();
-                                    curveql.Catalog = Yw.Hydro.ParterCatalog.Curve;
-                                    curveql.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
-                                    curveql.Name = "鍖归厤";
-                                    curveql.ModelType = visual.ModelType;
-                                    curveql.DbLocked = false;
-                                    curveql.DbId = matching.MatchingCurveDbId;
-                                    curveql.CurveType = Yw.WinFrmUI.HydroCurveType.CurveQL;
-                                    curveql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
-                                    if (hydroInfo.Curves == null)
-                                    {
-                                        hydroInfo.Curves = new List<Yw.Model.HydroCurveInfo>();
-                                    }
-                                    hydroInfo.Curves.Add(curveql);
-                                    visual.ValveSetting = curveql.Code;
-                                    result = true;
-                                }
-                                else
-                                {
-                                    if (!curveql.DbLocked)
-                                    {
-                                        curveql.DbId = matching.MatchingCurveDbId;
-                                        curveql.CurveType = Yw.WinFrmUI.HydroCurveType.CurveQL;
-                                        curveql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
-                                        result = true;
-                                    }
-                                }
-                            }
-                        }
-                        break;
-                    case Yw.Hydro.ValveType.CV:
-                        {
+                    }
 
+                    //姘村ご鎹熷け鏇茬嚎
+                    if (matching.MatchingCurvesQL != null && matching.MatchingCurvesQL.Count > 0)
+                    {
+                        if (visual.CurvesQL == null)
+                        {
+                            visual.CurvesQL = new List<string>();
                         }
-                        break;
+                        var curvesql = new List<string>();
+                        var matchingCurvesQL = matching.MatchingCurvesQL.OrderBy(x => x.CurveFactor).ToList();
+                        foreach (var matchingCurveQL in matchingCurvesQL)
+                        {
+                            var curveql = hydroInfo.Curves?.Find(x => visual.CurvesQL.Contains(x.Code) && x.CurveFactor.HasValue && x.CurveFactor.Value == matchingCurveQL.CurveFactor);
+                            if (curveql == null)
+                            {
+                                curveql = new Yw.Model.HydroCurveInfo();
+                                curveql.Catalog = Yw.Hydro.ParterCatalog.Curve;
+                                curveql.Code = Yw.Untity.UniqueHelper.CreateFromFirst("curve", hydroInfo.GetAllParterCodes());
+                                curveql.Name = "鍖归厤";
+                                curveql.ModelType = string.Empty;
+                                curveql.DbLocked = false;
+                                curveql.DbId = matching.MatchingCurveDbId;
+                                curveql.CurveType = Yw.WinFrmUI.HydroCurveType.CurveQL;
+                                curveql.CurveFactor = matchingCurveQL.CurveFactor;
+                                curveql.CurveData = matchingCurveQL.CurveData?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                                if (hydroInfo.Curves == null)
+                                {
+                                    hydroInfo.Curves = new List<Yw.Model.HydroCurveInfo>();
+                                }
+                                hydroInfo.Curves.Add(curveql);
+                                changeHelper?.Append(curveql, eChangeType.Add);
+                                result = true;
+                            }
+                            else
+                            {
+                                if (!curveql.DbLocked)
+                                {
+                                    curveql.DbId = matching.MatchingCurveDbId;
+                                    curveql.CurveFactor = matchingCurveQL.CurveFactor;
+                                    curveql.CurveData = matchingCurveQL.CurveData?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                                    changeHelper?.Append(curveql, eChangeType.Update);
+                                    result = true;
+                                }
+                            }
+                            curvesql.Add(curveql.Code);
+                        }
+                        visual.CurvesQL = curvesql;
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.CurvesQL), ePropStatus.Matching, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                 }
             }
             return result;
@@ -3022,9 +3044,15 @@
         /// <summary>
         /// 搴旂敤
         /// </summary>
-        public static bool Apply(HydroExchangerViewModel visualViewModel, HydroExchangerMatchingViewModel matching)
+        public static bool Apply
+            (
+                HydroExchangerViewModel visualViewModel,
+                HydroExchangerMatchingViewModel matching,
+                HydroChangeHelper changeHelper = null,
+                HydroPropStatusHelper propStatusHelper = null
+            )
         {
-            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching);
+            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching, changeHelper, propStatusHelper);
             visualViewModel.UpdateProperty();
             return bol;
         }
@@ -3032,7 +3060,14 @@
         /// <summary>
         /// 搴旂敤
         /// </summary>
-        public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroExchangerInfo visual, HydroExchangerMatchingViewModel matching)
+        public static bool Apply
+            (
+                Yw.Model.HydroModelInfo hydroInfo,
+                Yw.Model.HydroExchangerInfo visual,
+                HydroExchangerMatchingViewModel matching,
+                HydroChangeHelper changeHelper = null,
+                HydroPropStatusHelper propStatusHelper = null
+            )
         {
             if (hydroInfo == null)
             {
@@ -3046,39 +3081,64 @@
             {
                 return false;
             }
-            visual.Name = matching.Name;
-            visual.DbLocked = matching.DbLocked;
-            visual.DbId = matching.DbId;
-            visual.ModelType = matching.ModelType;
-            visual.Material = matching.Material;
-            visual.Diameter = matching.Diameter;
-            visual.MinorLoss = matching.MinorLoss;
+            //visual.Name = matching.Name;
+            //visual.DbLocked = matching.DbLocked;
+            //visual.DbId = matching.DbId;
+            //visual.ModelType = matching.ModelType;
+            //visual.Material = matching.Material;
+            //visual.Diameter = matching.Diameter;
+            //visual.MinorLoss = matching.MinorLoss;
 
             bool result = false;
             if (!visual.DbLocked)
             {
                 if (!string.IsNullOrEmpty(matching.MatchingModelType))
                 {
+                    if (visual.ModelType != matching.MatchingModelType)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.ModelType), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.ModelType = matching.MatchingModelType;
                     result = true;
                 }
                 if (!string.IsNullOrEmpty(matching.MatchingDbId))
                 {
+                    if (visual.DbId != matching.MatchingDbId)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.DbId), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.DbId = matching.MatchingDbId;
                     result = true;
                 }
                 if (!string.IsNullOrEmpty(matching.MatchingMaterial))
                 {
+                    if (visual.Material != matching.MatchingMaterial)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Material), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.Material = matching.MatchingMaterial;
                     result = true;
                 }
                 if (matching.MatchingDiameter.HasValue)
                 {
+                    if (visual.Diameter != matching.MatchingDiameter.Value)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Diameter), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.Diameter = matching.MatchingDiameter.Value;
                     result = true;
                 }
                 if (matching.MatchingMinorLoss.HasValue)
                 {
+                    if (visual.MinorLoss != matching.MatchingMinorLoss.Value)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.MinorLoss), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.MinorLoss = matching.MatchingMinorLoss.Value;
                     result = true;
                 }
@@ -3103,6 +3163,9 @@
                         }
                         hydroInfo.Curves.Add(curvevql);
                         visual.CurveQL = curvevql.Code;
+                        changeHelper?.Append(curvevql, eChangeType.Add);
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.CurveQL), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
                         result = true;
                     }
                     else
@@ -3111,6 +3174,7 @@
                         {
                             curvevql.DbId = matching.MatchingCurveDbId;
                             curvevql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                            changeHelper?.Append(curvevql, eChangeType.Update);
                             result = true;
                         }
                     }
@@ -3126,9 +3190,15 @@
         /// <summary>
         /// 搴旂敤
         /// </summary>
-        public static bool Apply(HydroCompressorViewModel visualViewModel, HydroCompressorMatchingViewModel matching)
+        public static bool Apply
+            (
+                HydroCompressorViewModel visualViewModel,
+                HydroCompressorMatchingViewModel matching,
+                HydroChangeHelper changeHelper = null,
+                HydroPropStatusHelper propStatusHelper = null
+            )
         {
-            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching);
+            var bol = Apply(visualViewModel.HydroInfo, visualViewModel.Vmo, matching, changeHelper, propStatusHelper);
             visualViewModel.UpdateProperty();
             return bol;
         }
@@ -3136,7 +3206,14 @@
         /// <summary>
         /// 搴旂敤
         /// </summary>
-        public static bool Apply(Yw.Model.HydroModelInfo hydroInfo, Yw.Model.HydroCompressorInfo visual, HydroCompressorMatchingViewModel matching)
+        public static bool Apply
+            (
+                Yw.Model.HydroModelInfo hydroInfo,
+                Yw.Model.HydroCompressorInfo visual,
+                HydroCompressorMatchingViewModel matching,
+                HydroChangeHelper changeHelper = null,
+                HydroPropStatusHelper propStatusHelper = null
+            )
         {
             if (hydroInfo == null)
             {
@@ -3150,39 +3227,64 @@
             {
                 return false;
             }
-            visual.Name = matching.Name;
-            visual.DbLocked = matching.DbLocked;
-            visual.DbId = matching.DbId;
-            visual.ModelType = matching.ModelType;
-            visual.Material = matching.Material;
-            visual.Diameter = matching.Diameter;
-            visual.MinorLoss = matching.MinorLoss;
+            //visual.Name = matching.Name;
+            //visual.DbLocked = matching.DbLocked;
+            //visual.DbId = matching.DbId;
+            //visual.ModelType = matching.ModelType;
+            //visual.Material = matching.Material;
+            //visual.Diameter = matching.Diameter;
+            //visual.MinorLoss = matching.MinorLoss;
 
             bool result = false;
             if (!visual.DbLocked)
             {
                 if (!string.IsNullOrEmpty(matching.MatchingModelType))
                 {
+                    if (visual.ModelType != matching.MatchingModelType)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.ModelType), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.ModelType = matching.MatchingModelType;
                     result = true;
                 }
                 if (!string.IsNullOrEmpty(matching.MatchingDbId))
                 {
+                    if (visual.DbId != matching.MatchingDbId)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.DbId), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.DbId = matching.MatchingDbId;
                     result = true;
                 }
                 if (!string.IsNullOrEmpty(matching.MatchingMaterial))
                 {
+                    if (visual.Material != matching.MatchingMaterial)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Material), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.Material = matching.MatchingMaterial;
                     result = true;
                 }
                 if (matching.MatchingDiameter.HasValue)
                 {
+                    if (visual.Diameter != matching.MatchingDiameter.Value)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.Diameter), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.Diameter = matching.MatchingDiameter.Value;
                     result = true;
                 }
                 if (matching.MatchingMinorLoss.HasValue)
                 {
+                    if (visual.MinorLoss != matching.MatchingMinorLoss.Value)
+                    {
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.MinorLoss), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
+                    }
                     visual.MinorLoss = matching.MatchingMinorLoss.Value;
                     result = true;
                 }
@@ -3207,6 +3309,9 @@
                         }
                         hydroInfo.Curves.Add(curvevql);
                         visual.CurveQL = curvevql.Code;
+                        changeHelper?.Append(curvevql, eChangeType.Add);
+                        changeHelper?.Append(visual, eChangeType.Update);
+                        propStatusHelper?.UpdatePropStatus(visual.Code, nameof(visual.CurveQL), ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}閫氳繃浜у搧閰嶇疆鍖归厤淇敼");
                         result = true;
                     }
                     else
@@ -3215,6 +3320,7 @@
                         {
                             curvevql.DbId = matching.MatchingCurveDbId;
                             curvevql.CurveData = matching.MatchingCurveQL?.Select(x => new Yw.Model.Hydro.CurvePoint(x.X, x.Y)).ToList();
+                            changeHelper?.Append(curvevql, eChangeType.Update);
                             result = true;
                         }
                     }

--
Gitblit v1.9.3