duheng
2024-09-20 7d17fabc46e87ea0f0896f760034f4d16a4dfed0
提交修改
已删除1个文件
已修改33个文件
已添加1个文件
834 ■■■■■ 文件已修改
Dto/HStation.Dto.Assets.Core/02-AdaptingManage/AdaptingManageDto.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/HStation.Dto.Assets.Core/02-AdaptingManage/AddAdaptingManageInput.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/HStation.Dto.Assets.Core/02-AdaptingManage/UpdateAdaptingManageInput.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/HStation.Dto.Assets.Core/04-PipeLineManage/AddPipeLineManageInput.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/HStation.Dto.Assets.Core/04-PipeLineManage/PipeLineManageDto.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/HStation.Dto.Assets.Core/04-PipeLineManage/UpdatePipeLineManageInput.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Assets.Core/00-core/eAlgorithmType.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Assets.Core/01-entity/AdaptingManage/AdaptingManage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Assets.Core/01-entity/PipeLineRoughnessCoefficient/PipeLineManage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Assets.Core/02-model/AdaptingManage/AdaptingManage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Service/HStation.Service.Assets.Core/02-model/PipeLineRoughnessCoefficient/PipeLineManage.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Vmo/HStation.Vmo.Assets.Core/03-AdaptingManage/AdaptingManage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Vmo/HStation.Vmo.Assets.Core/05-PipeLineManage/PipeLineManageVmo.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/02-AdaptingManage/AdaptingViewModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/02-AdaptingManage/AddAdaptingMainDlg.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/02-AdaptingManage/EditAdaptingMainDlg.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/06-pipelineManage/AddPipeLineMainDlg.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/06-pipelineManage/EditPipeLineMainDlg.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Assets.Core/06-pipelineManage/PipeLineViewModel.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/01-ViewModel/AdaptingViewModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/01-ViewModel/PumpMatchingViewModel.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/AdaptingAutoMatchingHelper.cs 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/AsstesAutoMatchingHelper.cs 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ElbowsMatchingCtrl.Designer.cs 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/FourLinkMatchingCtrl.Designer.cs 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PipeLineMatchingCtrl.Designer.cs 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PipeLineMatchingCtrl.cs 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PumpMatchingCtrl.Designer.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PumpMatchingCtrl.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ThreeLinkMatchingCtrl.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ValveMatchingCtrl.Designer.cs 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ValveMatchingCtrl.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/AssetsAutoMatchingMainDlg.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/AssetsMainChoicePage.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/XhsProjectSimulationCorePage.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Dto/HStation.Dto.Assets.Core/02-AdaptingManage/AdaptingManageDto.cs
@@ -45,7 +45,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Dto/HStation.Dto.Assets.Core/02-AdaptingManage/AddAdaptingManageInput.cs
@@ -27,7 +27,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Dto/HStation.Dto.Assets.Core/02-AdaptingManage/UpdateAdaptingManageInput.cs
@@ -34,7 +34,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Dto/HStation.Dto.Assets.Core/04-PipeLineManage/AddPipeLineManageInput.cs
@@ -17,17 +17,17 @@
        /// <summary>
        ///Hazen
        /// </summary>
        public string Hazen { get; set; }
        public double Hazen { get; set; }
        /// <summary>
        ///Darcy
        /// </summary>
        public string Darcy { get; set; }
        public double? Darcy { get; set; }
        /// <summary>
        ///Manning
        /// </summary>
        public string Manning { get; set; }
        public double? Manning { get; set; }
        /// <summary>
        /// ææ–™
@@ -37,7 +37,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Dto/HStation.Dto.Assets.Core/04-PipeLineManage/PipeLineManageDto.cs
@@ -34,17 +34,17 @@
        /// <summary>
        ///Hazen
        /// </summary>
        public string Hazen { get; set; }
        public double Hazen { get; set; }
        /// <summary>
        ///Darcy
        /// </summary>
        public string Darcy { get; set; }
        public double? Darcy { get; set; }
        /// <summary>
        ///Manning
        /// </summary>
        public string Manning { get; set; }
        public double? Manning { get; set; }
        /// <summary>
        /// ææ–™
@@ -54,7 +54,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Dto/HStation.Dto.Assets.Core/04-PipeLineManage/UpdatePipeLineManageInput.cs
@@ -23,17 +23,17 @@
        /// <summary>
        ///Hazen
        /// </summary>
        public string Hazen { get; set; }
        public double Hazen { get; set; }
        /// <summary>
        ///Darcy
        /// </summary>
        public string Darcy { get; set; }
        public double? Darcy { get; set; }
        /// <summary>
        ///Manning
        /// </summary>
        public string Manning { get; set; }
        public double? Manning { get; set; }
        /// <summary>
        /// ææ–™
@@ -43,7 +43,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Service/HStation.Service.Assets.Core/00-core/eAlgorithmType.cs
@@ -8,21 +8,21 @@
    public enum eAlgorithmType
    {
        /// <summary>
        /// æ— é‡çº²
        /// æµ·æ£®-威廉姆斯系数
        /// </summary>
        [Display(Name = "无量纲")]
        [Display(Name = "海森-威廉姆斯系数")]
        Hazen = 0,
        /// <summary>
        /// Darcy
        /// è¾¾è¥¿-魏斯巴赫粗糙度系数
        /// </summary>
        [Display(Name = "Darcy")]
        [Display(Name = "达西-魏斯巴赫粗糙度系数")]
        Darcy = 1,
        /// <summary>
        /// Manning
        /// æ›¼å®ç²—糙系数
        /// </summary>
        [Display(Name = "Manning")]
        [Display(Name = "曼宁粗糙系数")]
        Manning = 2
    }
}
Service/HStation.Service.Assets.Core/01-entity/AdaptingManage/AdaptingManage.cs
@@ -39,7 +39,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Service/HStation.Service.Assets.Core/01-entity/PipeLineRoughnessCoefficient/PipeLineManage.cs
@@ -33,22 +33,22 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        ///Hazen
        /// </summary>
        public string Hazen { get; set; }
        public double Hazen { get; set; }
        /// <summary>
        ///Darcy
        /// </summary>
        public string Darcy { get; set; }
        public double? Darcy { get; set; }
        /// <summary>
        ///Manning
        /// </summary>
        public string Manning { get; set; }
        public double? Manning { get; set; }
        /// <summary>
        /// æŽ’序码
Service/HStation.Service.Assets.Core/02-model/AdaptingManage/AdaptingManage.cs
@@ -60,7 +60,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Service/HStation.Service.Assets.Core/02-model/PipeLineRoughnessCoefficient/PipeLineManage.cs
@@ -61,22 +61,22 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        ///Hazen
        /// </summary>
        public string Hazen { get; set; }
        public double Hazen { get; set; }
        /// <summary>
        ///Darcy
        /// </summary>
        public string Darcy { get; set; }
        public double? Darcy { get; set; }
        /// <summary>
        ///Manning
        /// </summary>
        public string Manning { get; set; }
        public double? Manning { get; set; }
        /// <summary>
        /// æŽ’序码
Vmo/HStation.Vmo.Assets.Core/03-AdaptingManage/AdaptingManage.cs
@@ -30,7 +30,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
Vmo/HStation.Vmo.Assets.Core/05-PipeLineManage/PipeLineManageVmo.cs
@@ -17,17 +17,17 @@
        /// <summary>
        ///Hazen
        /// </summary>
        public string Hazen { get; set; }
        public double Hazen { get; set; }
        /// <summary>
        ///Darcy
        /// </summary>
        public string Darcy { get; set; }
        public double? Darcy { get; set; }
        /// <summary>
        ///Manning
        /// </summary>
        public string Manning { get; set; }
        public double? Manning { get; set; }
        /// <summary>
        /// ææ–™
@@ -37,7 +37,7 @@
        /// <summary>
        /// ç³»æ•°
        /// </summary>
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
WinFrmUI/HStation.WinFrmUI.Assets.Core/02-AdaptingManage/AdaptingViewModel.cs
@@ -70,7 +70,7 @@
        /// </summary>
        [DisplayName("损失系数")]
        [Browsable(true)]
        public string Coefficient { get; set; }
        public double? Coefficient { get; set; }
        /// <summary>
        /// æŽ’序码
WinFrmUI/HStation.WinFrmUI.Assets.Core/02-AdaptingManage/AddAdaptingMainDlg.cs
@@ -58,7 +58,10 @@
            if (!(Valid()))
                return;
            _AdaptingVmo.Material = TextEditMaterial.Text.Trim();
            _AdaptingVmo.Coefficient = TextEditCoefficient.Text.Trim();
            if (double.TryParse(TextEditAdaptingType.Text.Trim(), out double coeffcient))
            {
                _AdaptingVmo.Coefficient = coeffcient;
            }
            _AdaptingVmo.Description = DescriptionTextEdit.Text.Trim();
            _AdaptingVmo.Name = TextEditName.Text.Trim();
            _AdaptingVmo.Caliber = TextEditCaliber.Text.Trim();
WinFrmUI/HStation.WinFrmUI.Assets.Core/02-AdaptingManage/EditAdaptingMainDlg.cs
@@ -16,7 +16,7 @@
            _AdaptingVmo = adaptingManageVmo;
            this.TextEditName.Text = _AdaptingVmo.Name;
            this.TextEditCaliber.Text = _AdaptingVmo.Caliber;
            this.TextEditCoefficient.Text = _AdaptingVmo.Coefficient;
            this.TextEditCoefficient.Text = _AdaptingVmo.Coefficient.ToString();
            this.TextEditMaterial.Text = _AdaptingVmo.Material;
            this.TextEditDescription.Text = _AdaptingVmo.Description;
            var allCaliber = await new Yw.BLL.SysDictData().GetByTypeCode("1");
@@ -64,7 +64,10 @@
            if (!(Valid()))
                return;
            _AdaptingVmo.Material = TextEditMaterial.Text.Trim();
            _AdaptingVmo.Coefficient = TextEditCoefficient.Text.Trim();
            if (double.TryParse(TextEditCoefficient.Text.Trim(), out double coeffcient))
            {
                _AdaptingVmo.Coefficient = coeffcient;
            }
            _AdaptingVmo.Description = TextEditDescription.Text.Trim();
            _AdaptingVmo.Name = TextEditName.Text.Trim();
            _AdaptingVmo.Caliber = TextEditCaliber.Text.Trim();
WinFrmUI/HStation.WinFrmUI.Assets.Core/06-pipelineManage/AddPipeLineMainDlg.cs
@@ -61,13 +61,21 @@
            if (!(Valid()))
                return;
            _PipeLineVmo.Material = TextEditMaterial.Text.Trim();
            _PipeLineVmo.Coefficient = TextEditHazenValue.Text.Trim();
            if (double.TryParse(TextEditHazenValue.Text, out double hazen))
            {
                _PipeLineVmo.Hazen = hazen;
            }
            _PipeLineVmo.Description = DescriptionTextEdit.Text.Trim();
            _PipeLineVmo.Name = TextEditName.Text.Trim();
            _PipeLineVmo.Caliber = TextEditCaliber.Text.Trim();
            _PipeLineVmo.Hazen = TextEditHazenValue.Text;
            _PipeLineVmo.Darcy = TextEditDarcyValue.Text;
            _PipeLineVmo.Manning = TextEditManningValue.Text;
            if (double.TryParse(TextEditDarcyValue.Text, out double darcy))
            {
                _PipeLineVmo.Darcy = darcy;
            }
            if (double.TryParse(TextEditManningValue.Text, out double manning))
            {
                _PipeLineVmo.Manning = manning;
            }
            if (await this.ReloadDataEvent.Invoke(_PipeLineVmo))
            {
                TipFormHelper.ShowSucceed("添加成功!");
WinFrmUI/HStation.WinFrmUI.Assets.Core/06-pipelineManage/EditPipeLineMainDlg.cs
@@ -63,7 +63,19 @@
            if (!(Valid()))
                return;
            _PipeLineVmo.Material = TextEditMaterial.Text.Trim();
            _PipeLineVmo.Coefficient = TextEditHazenStatrtValue.Text.Trim();
            if (double.TryParse(TextEditHazenStatrtValue.Text, out double hazen))
            {
                _PipeLineVmo.Hazen = hazen;
            }
            if (double.TryParse(TextEditDarcyStartValue.Text, out double darcy))
            {
                _PipeLineVmo.Darcy = darcy;
            }
            if (double.TryParse(TextEditManningStartValue.Text, out double manning))
            {
                _PipeLineVmo.Manning = manning;
            }
            _PipeLineVmo.Description = DescriptionTextEdit.Text.Trim();
            _PipeLineVmo.Name = TextEditName.Text.Trim();
            _PipeLineVmo.Caliber = TextEditCaliber.Text.Trim();
WinFrmUI/HStation.WinFrmUI.Assets.Core/06-pipelineManage/PipeLineViewModel.cs
@@ -65,21 +65,21 @@
        /// </summary>
        [DisplayName("Hazen")]
        [Browsable(true)]
        public string Hazen { get; set; }
        public double Hazen { get; set; }
        /// <summary>
        /// Darcy
        /// </summary>
        [DisplayName("Darcy")]
        [Browsable(true)]
        public string Darcy { get; set; }
        public double? Darcy { get; set; }
        /// <summary>
        /// Manning
        /// </summary>
        [DisplayName("Manning")]
        [Browsable(true)]
        public string Manning { get; set; }
        public double? Manning { get; set; }
        /// <summary>
        /// æŽ’序码
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/01-ViewModel/AdaptingViewModel.cs
@@ -78,7 +78,7 @@
        /// </summary>
        [DisplayName("损失系数")]
        [Browsable(true)]
        public string LossCoefficient { get; set; }
        public double? MinorLoss { get; set; }
        /// <summary>
        /// æ˜¯å¦åŒ¹é…æˆåŠŸ
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/01-ViewModel/PumpMatchingViewModel.cs
@@ -14,6 +14,13 @@
        public string Name { get; set; }
        /// <summary>
        /// ç¼–码
        /// </summary>
        [DisplayName("编码")]
        [Browsable(true)]
        public string Code { get; set; }
        /// <summary>
        /// åž‹å·å
        /// </summary>
        [DisplayName("型号名")]
@@ -55,9 +62,9 @@
        [Browsable(true)]
        public bool DbLocked { get; set; }
        [DisplayName("DbID")]
        [DisplayName("匹配前DbID")]
        [Browsable(false)]
        public long DbID { get; set; }
        public string DbID { get; set; }
        [DisplayName("ChartDbID")]
        [Browsable(false)]
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/AdaptingAutoMatchingHelper.cs
ÎļþÒÑɾ³ý
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/AsstesAutoMatchingHelper.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,236 @@
namespace HStation.WinFrmUI
{
    public class AsstesAutoMatchingHelper
    {
        public static T AutoMatching<T>(T input, List<Vmo.AdaptingManageVmo> adaptingManageVmos) where T : AdaptingViewModel
        {
            Vmo.AdaptingManageVmo vmo = null;
            int firstCount = 0;
            //口径最小差值
            const double caliberTolerance = 10.0;
            // ç»å¯¹åŒ¹é…
            var absoluteMatch = adaptingManageVmos.Where(i =>
              ((input.Caliber == null && i.Caliber == "默认") || i.Caliber == input.Caliber) &&
               ((input.Material == null && i.Material == "默认") || i.Material == input.Material)).ToList();
            if (absoluteMatch.Any())
            {
                foreach (var range in absoluteMatch)
                {
                    int commonCount = CountCommonCharacters(input.ModelType, range.Name);
                    if (commonCount > firstCount)
                    {
                        vmo = range;
                        firstCount = commonCount;
                    }
                }
            }
            else
            {
                double inputCaliber;
                if (!double.TryParse(input.Caliber, out inputCaliber))
                {
                    return null;
                }
                //区间匹配
                var rangeMatch = adaptingManageVmos.Where(item =>
                {
                    double itemCaliber;
                    if (double.TryParse(item.Caliber, out itemCaliber))
                    {
                        return Math.Abs(itemCaliber - inputCaliber) <= caliberTolerance;
                    }
                    return false;
                })
             .ToList();
                if (rangeMatch != null)
                {
                    foreach (var range in rangeMatch)
                    {
                        //以材料为条件开始匹配
                        int commonCount = CountCommonCharacters(input.Material, range.Material);
                        if (commonCount > firstCount)
                        {
                            vmo = range;
                            firstCount = commonCount;
                        }
                    }
                }
            }
            //口径和材料都没有匹配上,就用型号名匹配
            if (vmo == null)
            {
                foreach (var item in adaptingManageVmos)
                {
                    int commonCount = CountCommonCharacters(input.ModelType, item.Name);
                    if (commonCount > firstCount)
                    {
                        vmo = item;
                        firstCount = commonCount;
                    }
                }
            }
            if (vmo != null)
            {
                input.MinorLoss = vmo.Coefficient;
                return input;
            }
            return null;
        }
        //泵匹配
        public static PumpMatchingViewModel PumpMatching(PumpMatchingViewModel viewModel, List<Vmo.PumpMainVmo> pumpMainVmos)
        {
            const double speedTolerance = 100;
            const double flowTolerance = 10;
            const double headTolerance = 5;
            const double powerTolerance = 0.05;
            Vmo.PumpMainVmo vmo = null;
            int firstCount = 0;
            // å°è¯•绝对匹配
            var absoluteMatch = pumpMainVmos.Where(item =>
            (viewModel.RatedN == null || viewModel.RatedN == item.RatedSpeed) &&
            (viewModel.RatedQ == null || viewModel.RatedQ == item.RatedFlow) &&
            (viewModel.RatedH == null || viewModel.RatedH == item.RatedHead) &&
            (viewModel.RatedP == item.RatedPower)).ToList();
            if (absoluteMatch != null && absoluteMatch.Count != 0)
            {
                foreach (var item in absoluteMatch)
                {
                    int commonCount = CountCommonCharacters(viewModel.ModelType, item.Name);
                    if (commonCount > firstCount)
                    {
                        vmo = item;
                        firstCount = commonCount;
                    }
                }
            }
            else
            {
                // å°è¯•区间匹配
                var rangeMatch = pumpMainVmos.Where(item =>
                   (viewModel.RatedN.HasValue ? Math.Abs(viewModel.RatedN.Value - item.RatedSpeed) <= speedTolerance : true) &&
                   (viewModel.RatedQ.HasValue ? Math.Abs(viewModel.RatedQ.Value - item.RatedFlow) <= flowTolerance : true) &&
                   (viewModel.RatedH.HasValue ? Math.Abs(viewModel.RatedH.Value - item.RatedHead) <= headTolerance : true) &&
                   (Math.Abs(viewModel.RatedP - item.RatedPower) <= powerTolerance)).ToList();
                if (rangeMatch != null && rangeMatch.Count != 0)
                {
                    foreach (var item in rangeMatch)
                    {
                        int commonCount = CountCommonCharacters(viewModel.ModelType, item.Name);
                        if (commonCount > firstCount)
                        {
                            vmo = item;
                            firstCount = commonCount;
                        }
                    }
                }
            }
            return new PumpMatchingViewModel();
        }
        //管道匹配
        public static PipeLineMatchingViewModel AutoMatching(PipeLineMatchingViewModel input, List<Vmo.PipeLineManageVmo> adaptingManageVmos)
        {
            Vmo.PipeLineManageVmo vmo = null;
            int StartCount = 0;
            //口径最小差值
            const double caliberTolerance = 10.0;
            // ç»å¯¹åŒ¹é…
            var absoluteMatch = adaptingManageVmos.Where(i =>
              ((input.Caliber == null && i.Caliber == "默认") || i.Caliber == input.Caliber) &&
               ((input.Material == null && i.Material == "默认") || i.Material == input.Material)).ToList();
            if (absoluteMatch.Any())
            {
                foreach (var range in absoluteMatch)
                {
                    int commonCount = CountCommonCharacters(input.ModelType, range.Name);
                    if (commonCount > StartCount)
                    {
                        vmo = range;
                        StartCount = commonCount;
                    }
                }
            }
            else
            {
                double inputCaliber;
                if (!double.TryParse(input.Caliber, out inputCaliber))
                {
                    return null;
                }
                //区间匹配
                var rangeMatch = adaptingManageVmos.Where(item =>
                {
                    double itemCaliber;
                    if (double.TryParse(item.Caliber, out itemCaliber))
                    {
                        return Math.Abs(itemCaliber - inputCaliber) <= caliberTolerance;
                    }
                    return false;
                })
             .ToList();
                if (rangeMatch != null)
                {
                    foreach (var range in rangeMatch)
                    {
                        //以材料为条件开始匹配
                        int commonCount = CountCommonCharacters(input.Material, range.Material);
                        if (commonCount > StartCount)
                        {
                            vmo = range;
                            StartCount = commonCount;
                        }
                    }
                }
            }
            //口径和材料都没有匹配上,就用型号名匹配
            if (vmo == null)
            {
                foreach (var item in adaptingManageVmos)
                {
                    int commonCount = CountCommonCharacters(input.ModelType, item.Name);
                    if (commonCount > StartCount)
                    {
                        vmo = item;
                        StartCount = commonCount;
                    }
                }
            }
            if (vmo != null)
            {
                switch (input.eAlgorithmType)
                {
                    case HStation.Assets.eAlgorithmType.Hazen:
                        input.MinorLoss = vmo.Hazen;
                        return input;
                    case HStation.Assets.eAlgorithmType.Manning:
                        input.MinorLoss = vmo.Manning;
                        return input;
                    case HStation.Assets.eAlgorithmType.Darcy:
                        input.MinorLoss = vmo.Darcy;
                        return input;
                    default:
                        input.MinorLoss = vmo.Hazen;
                        return input;
                }
            }
            return null;
        }
        //返回两个字符串之间相同的字符
        private static int CountCommonCharacters(string baseString, string comparisonString)
        {
            // å°†å­—符串转换为字符集合
            HashSet<char> baseChars = new HashSet<char>(baseString);
            HashSet<char> comparisonChars = new HashSet<char>(comparisonString);
            // è®¡ç®—两个集合的交集
            int commonCount = baseChars.Intersect(comparisonChars).Count();
            return commonCount;
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ElbowsMatchingCtrl.Designer.cs
@@ -30,18 +30,17 @@
        {
            components = new Container();
            gridControl1 = new DevExpress.XtraGrid.GridControl();
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            elbowsMatchingViewModelBindingSource = new BindingSource(components);
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            colName = new DevExpress.XtraGrid.Columns.GridColumn();
            colDbid = new DevExpress.XtraGrid.Columns.GridColumn();
            colCode = new DevExpress.XtraGrid.Columns.GridColumn();
            colModelType = new DevExpress.XtraGrid.Columns.GridColumn();
            colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
            colCaliber = new DevExpress.XtraGrid.Columns.GridColumn();
            colDbLocked = new DevExpress.XtraGrid.Columns.GridColumn();
            ((ISupportInitialize)gridControl1).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            ((ISupportInitialize)elbowsMatchingViewModelBindingSource).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            SuspendLayout();
            // 
            // gridControl1
@@ -55,16 +54,16 @@
            gridControl1.TabIndex = 0;
            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
            // 
            // gridView1
            //
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colDbid, colCode, colModelType, colMaterial, colCaliber, colDbLocked });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
            //
            // elbowsMatchingViewModelBindingSource
            // 
            elbowsMatchingViewModelBindingSource.DataSource = typeof(ElbowsMatchingViewModel);
            //
            // gridView1
            //
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colCode, colModelType, colMaterial, colCaliber, colDbLocked });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
            // 
            // colName
            // 
@@ -73,47 +72,40 @@
            colName.Visible = true;
            colName.VisibleIndex = 0;
            // 
            // colDbid
            //
            colDbid.FieldName = "Dbid";
            colDbid.Name = "colDbid";
            colDbid.Visible = true;
            colDbid.VisibleIndex = 1;
            //
            // colCode
            // 
            colCode.FieldName = "Code";
            colCode.Name = "colCode";
            colCode.Visible = true;
            colCode.VisibleIndex = 2;
            colCode.VisibleIndex = 1;
            // 
            // colModelType
            // 
            colModelType.FieldName = "ModelType";
            colModelType.Name = "colModelType";
            colModelType.Visible = true;
            colModelType.VisibleIndex = 3;
            colModelType.VisibleIndex = 2;
            // 
            // colMaterial
            // 
            colMaterial.FieldName = "Material";
            colMaterial.Name = "colMaterial";
            colMaterial.Visible = true;
            colMaterial.VisibleIndex = 4;
            colMaterial.VisibleIndex = 3;
            // 
            // colCaliber
            // 
            colCaliber.FieldName = "Caliber";
            colCaliber.Name = "colCaliber";
            colCaliber.Visible = true;
            colCaliber.VisibleIndex = 5;
            colCaliber.VisibleIndex = 4;
            // 
            // colDbLocked
            // 
            colDbLocked.FieldName = "DbLocked";
            colDbLocked.Name = "colDbLocked";
            colDbLocked.Visible = true;
            colDbLocked.VisibleIndex = 6;
            colDbLocked.VisibleIndex = 5;
            // 
            // ElbowsMatchingCtrl
            // 
@@ -123,8 +115,8 @@
            Name = "ElbowsMatchingCtrl";
            Size = new Size(1035, 503);
            ((ISupportInitialize)gridControl1).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ((ISupportInitialize)elbowsMatchingViewModelBindingSource).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ResumeLayout(false);
        }
@@ -134,7 +126,6 @@
        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
        private BindingSource elbowsMatchingViewModelBindingSource;
        private DevExpress.XtraGrid.Columns.GridColumn colName;
        private DevExpress.XtraGrid.Columns.GridColumn colDbid;
        private DevExpress.XtraGrid.Columns.GridColumn colCode;
        private DevExpress.XtraGrid.Columns.GridColumn colModelType;
        private DevExpress.XtraGrid.Columns.GridColumn colMaterial;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/FourLinkMatchingCtrl.Designer.cs
@@ -30,18 +30,16 @@
        {
            components = new Container();
            gridControl1 = new DevExpress.XtraGrid.GridControl();
            fourLinkMatchingViewModelBindingSource = new BindingSource(components);
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            colName = new DevExpress.XtraGrid.Columns.GridColumn();
            colDbid = new DevExpress.XtraGrid.Columns.GridColumn();
            colCode = new DevExpress.XtraGrid.Columns.GridColumn();
            colModelType = new DevExpress.XtraGrid.Columns.GridColumn();
            colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
            colCaliber = new DevExpress.XtraGrid.Columns.GridColumn();
            colDbLocked = new DevExpress.XtraGrid.Columns.GridColumn();
            fourLinkMatchingViewModelBindingSource = new BindingSource(components);
            ((ISupportInitialize)gridControl1).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            ((ISupportInitialize)fourLinkMatchingViewModelBindingSource).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            SuspendLayout();
            // 
            // gridControl1
@@ -55,9 +53,13 @@
            gridControl1.TabIndex = 0;
            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
            // 
            // fourLinkMatchingViewModelBindingSource
            //
            fourLinkMatchingViewModelBindingSource.DataSource = typeof(FourLinkMatchingViewModel);
            //
            // gridView1
            // 
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colDbid, colCode, colModelType, colMaterial, colCaliber, colDbLocked });
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colCode, colMaterial, colCaliber, colDbLocked });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
@@ -69,51 +71,33 @@
            colName.Visible = true;
            colName.VisibleIndex = 0;
            // 
            // colDbid
            //
            colDbid.FieldName = "Dbid";
            colDbid.Name = "colDbid";
            colDbid.Visible = true;
            colDbid.VisibleIndex = 1;
            //
            // colCode
            // 
            colCode.FieldName = "Code";
            colCode.Name = "colCode";
            colCode.Visible = true;
            colCode.VisibleIndex = 2;
            //
            // colModelType
            //
            colModelType.FieldName = "ModelType";
            colModelType.Name = "colModelType";
            colModelType.Visible = true;
            colModelType.VisibleIndex = 3;
            colCode.VisibleIndex = 1;
            // 
            // colMaterial
            // 
            colMaterial.FieldName = "Material";
            colMaterial.Name = "colMaterial";
            colMaterial.Visible = true;
            colMaterial.VisibleIndex = 4;
            colMaterial.VisibleIndex = 2;
            // 
            // colCaliber
            // 
            colCaliber.FieldName = "Caliber";
            colCaliber.Name = "colCaliber";
            colCaliber.Visible = true;
            colCaliber.VisibleIndex = 5;
            colCaliber.VisibleIndex = 3;
            // 
            // colDbLocked
            // 
            colDbLocked.FieldName = "DbLocked";
            colDbLocked.Name = "colDbLocked";
            colDbLocked.Visible = true;
            colDbLocked.VisibleIndex = 6;
            //
            // fourLinkMatchingViewModelBindingSource
            //
            fourLinkMatchingViewModelBindingSource.DataSource = typeof(FourLinkMatchingViewModel);
            colDbLocked.VisibleIndex = 4;
            // 
            // FourLinkMatchingCtrl
            // 
@@ -123,8 +107,8 @@
            Name = "FourLinkMatchingCtrl";
            Size = new Size(1035, 503);
            ((ISupportInitialize)gridControl1).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ((ISupportInitialize)fourLinkMatchingViewModelBindingSource).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ResumeLayout(false);
        }
@@ -133,9 +117,7 @@
        private DevExpress.XtraGrid.GridControl gridControl1;
        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
        private DevExpress.XtraGrid.Columns.GridColumn colName;
        private DevExpress.XtraGrid.Columns.GridColumn colDbid;
        private DevExpress.XtraGrid.Columns.GridColumn colCode;
        private DevExpress.XtraGrid.Columns.GridColumn colModelType;
        private DevExpress.XtraGrid.Columns.GridColumn colMaterial;
        private DevExpress.XtraGrid.Columns.GridColumn colCaliber;
        private DevExpress.XtraGrid.Columns.GridColumn colDbLocked;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PipeLineMatchingCtrl.Designer.cs
@@ -34,7 +34,6 @@
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            colName = new DevExpress.XtraGrid.Columns.GridColumn();
            colCode = new DevExpress.XtraGrid.Columns.GridColumn();
            colModelType = new DevExpress.XtraGrid.Columns.GridColumn();
            colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
            colCaliber = new DevExpress.XtraGrid.Columns.GridColumn();
            colDbLocked = new DevExpress.XtraGrid.Columns.GridColumn();
@@ -61,7 +60,7 @@
            // 
            // gridView1
            // 
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colCode, colModelType, colMaterial, colCaliber, colDbLocked, colMatchingType });
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colCode, colMaterial, colCaliber, colDbLocked, colMatchingType });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
@@ -80,40 +79,33 @@
            colCode.Visible = true;
            colCode.VisibleIndex = 1;
            // 
            // colModelType
            //
            colModelType.FieldName = "ModelType";
            colModelType.Name = "colModelType";
            colModelType.Visible = true;
            colModelType.VisibleIndex = 2;
            //
            // colMaterial
            // 
            colMaterial.FieldName = "Material";
            colMaterial.Name = "colMaterial";
            colMaterial.Visible = true;
            colMaterial.VisibleIndex = 3;
            colMaterial.VisibleIndex = 2;
            // 
            // colCaliber
            // 
            colCaliber.FieldName = "Caliber";
            colCaliber.Name = "colCaliber";
            colCaliber.Visible = true;
            colCaliber.VisibleIndex = 4;
            colCaliber.VisibleIndex = 3;
            // 
            // colDbLocked
            // 
            colDbLocked.FieldName = "DbLocked";
            colDbLocked.Name = "colDbLocked";
            colDbLocked.Visible = true;
            colDbLocked.VisibleIndex = 5;
            colDbLocked.VisibleIndex = 4;
            // 
            // colMatchingType
            // 
            colMatchingType.FieldName = "MatchingType";
            colMatchingType.Name = "colMatchingType";
            colMatchingType.Visible = true;
            colMatchingType.VisibleIndex = 6;
            colMatchingType.VisibleIndex = 5;
            // 
            // PipeLineMatchingCtrl
            // 
@@ -134,7 +126,6 @@
        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
        private DevExpress.XtraGrid.Columns.GridColumn colName;
        private DevExpress.XtraGrid.Columns.GridColumn colCode;
        private DevExpress.XtraGrid.Columns.GridColumn colModelType;
        private DevExpress.XtraGrid.Columns.GridColumn colMaterial;
        private DevExpress.XtraGrid.Columns.GridColumn colCaliber;
        private DevExpress.XtraGrid.Columns.GridColumn colDbLocked;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PipeLineMatchingCtrl.cs
@@ -9,5 +9,27 @@
            this.gridView1.OptionsView.ShowDetailButtons = true;
            this.gridView1.OptionsView.ShowGroupPanel = false;
        }
        private List<PipeLineMatchingViewModel> _allBindingList = null;
        public List<PipeLineMatchingViewModel> SetBindingData(List<PipeLineMatchingViewModel> inputs, List<AdaptingManageVmo> alllist)
        {
            var finishList = new List<PipeLineMatchingViewModel>();
            foreach (var item in inputs)
            {
                var result = AsstesAutoMatchingHelper.AutoMatching(item, alllist);
                if (result != null)
                {
                    finishList.Add(result);
                }
                else
                {
                }
            }
            _allBindingList = finishList;
            this.pipeLineMatchingViewModelBindingSource.DataSource = _allBindingList;
            this.pipeLineMatchingViewModelBindingSource.ResetBindings(false);
            return finishList;
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PumpMatchingCtrl.Designer.cs
@@ -30,18 +30,17 @@
        {
            components = new Container();
            gridControl1 = new DevExpress.XtraGrid.GridControl();
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            pumpMatchingViewModelBindingSource = new BindingSource(components);
            colDbLocked = new DevExpress.XtraGrid.Columns.GridColumn();
            colModelType = new DevExpress.XtraGrid.Columns.GridColumn();
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            colName = new DevExpress.XtraGrid.Columns.GridColumn();
            colRatedH = new DevExpress.XtraGrid.Columns.GridColumn();
            colRatedN = new DevExpress.XtraGrid.Columns.GridColumn();
            colRatedQ = new DevExpress.XtraGrid.Columns.GridColumn();
            colRatedQ1 = new DevExpress.XtraGrid.Columns.GridColumn();
            colDbLocked = new DevExpress.XtraGrid.Columns.GridColumn();
            ((ISupportInitialize)gridControl1).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            ((ISupportInitialize)pumpMatchingViewModelBindingSource).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            SuspendLayout();
            // 
            // gridControl1
@@ -55,30 +54,16 @@
            gridControl1.TabIndex = 0;
            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
            // 
            // gridView1
            //
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colModelType, colRatedH, colRatedN, colRatedQ, colRatedQ1, colDbLocked });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
            //
            // pumpMatchingViewModelBindingSource
            // 
            pumpMatchingViewModelBindingSource.DataSource = typeof(PumpMatchingViewModel);
            // 
            // colDbLocked
            // gridView1
            // 
            colDbLocked.FieldName = "DbLocked";
            colDbLocked.Name = "colDbLocked";
            colDbLocked.Visible = true;
            colDbLocked.VisibleIndex = 6;
            //
            // colModelType
            //
            colModelType.FieldName = "ModelType";
            colModelType.Name = "colModelType";
            colModelType.Visible = true;
            colModelType.VisibleIndex = 1;
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colRatedH, colRatedN, colRatedQ, colRatedQ1, colDbLocked });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
            // 
            // colName
            // 
@@ -92,28 +77,35 @@
            colRatedH.FieldName = "RatedH";
            colRatedH.Name = "colRatedH";
            colRatedH.Visible = true;
            colRatedH.VisibleIndex = 2;
            colRatedH.VisibleIndex = 1;
            // 
            // colRatedN
            // 
            colRatedN.FieldName = "RatedN";
            colRatedN.Name = "colRatedN";
            colRatedN.Visible = true;
            colRatedN.VisibleIndex = 3;
            colRatedN.VisibleIndex = 2;
            // 
            // colRatedQ
            // 
            colRatedQ.FieldName = "RatedQ";
            colRatedQ.Name = "colRatedQ";
            colRatedQ.Visible = true;
            colRatedQ.VisibleIndex = 4;
            colRatedQ.VisibleIndex = 3;
            // 
            // colRatedQ1
            // 
            colRatedQ1.FieldName = "RatedQ";
            colRatedQ1.Name = "colRatedQ1";
            colRatedQ1.Visible = true;
            colRatedQ1.VisibleIndex = 5;
            colRatedQ1.VisibleIndex = 4;
            //
            // colDbLocked
            //
            colDbLocked.FieldName = "DbLocked";
            colDbLocked.Name = "colDbLocked";
            colDbLocked.Visible = true;
            colDbLocked.VisibleIndex = 5;
            // 
            // PumpMatchingCtrl
            // 
@@ -123,8 +115,8 @@
            Name = "PumpMatchingCtrl";
            Size = new Size(1035, 503);
            ((ISupportInitialize)gridControl1).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ((ISupportInitialize)pumpMatchingViewModelBindingSource).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ResumeLayout(false);
        }
@@ -134,7 +126,6 @@
        private DevExpress.XtraGrid.Views.Grid.GridView gridView1;
        private BindingSource pumpMatchingViewModelBindingSource;
        private DevExpress.XtraGrid.Columns.GridColumn colName;
        private DevExpress.XtraGrid.Columns.GridColumn colModelType;
        private DevExpress.XtraGrid.Columns.GridColumn colRatedH;
        private DevExpress.XtraGrid.Columns.GridColumn colRatedN;
        private DevExpress.XtraGrid.Columns.GridColumn colRatedQ;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/PumpMatchingCtrl.cs
@@ -11,72 +11,19 @@
        }
        private List<PumpMatchingViewModel> _allBindingList = null;
        private BLL.PumpMain _pumpMainBll = null;
        public List<PumpMatchingViewModel> SetBindingData(List<PumpMatchingViewModel> pumpMatchingViewModel, out List<PumpMatchingViewModel> errorList)
        public List<PumpMatchingViewModel> SetBindingData(List<PumpMatchingViewModel> pumpMatchingViewModel, List<PumpMainVmo> pumpMainVmos, out List<PumpMatchingViewModel> errorList)
        {
            _pumpMainBll = new BLL.PumpMain();
            errorList = null;
            _allBindingList = new List<PumpMatchingViewModel>();
            List<PumpMatchingViewModel> _allBindingList = new List<PumpMatchingViewModel>();
            if (pumpMatchingViewModel == null)
                return null;
            var alllist = _pumpMainBll.GetAll().Result;
            const double speedTolerance = 100;
            const double flowTolerance = 10;
            const double headTolerance = 5;
            const double efficiencyTolerance = 0.05;
            foreach (var viewModel in pumpMatchingViewModel)
            foreach (var item in pumpMatchingViewModel)
            {
                foreach (var pumpMain in alllist)
                {
                    // å°è¯•绝对匹配
                    var absoluteMatch = alllist.Where(item =>
                        viewModel.RatedN == item.RatedSpeed &&
                        viewModel.RatedQ == item.RatedFlow &&
                        viewModel.RatedH == item.RatedHead &&
                        viewModel.RatedP == item.RatedPower).ToList();
                    if (absoluteMatch != null)
                    {
                    }
                    else
                    {
                        // å°è¯•区间匹配
                        var rangeMatch = alllist.Where(item =>
                           (viewModel.RatedN.HasValue ? Math.Abs(viewModel.RatedN.Value - item.RatedSpeed) <= speedTolerance : true) &&
                           (viewModel.RatedQ.HasValue ? Math.Abs(viewModel.RatedQ.Value - item.RatedFlow) <= flowTolerance : true) &&
                           (viewModel.RatedH.HasValue ? Math.Abs(viewModel.RatedH.Value - item.RatedHead) <= headTolerance : true) &&
                           (Math.Abs(viewModel.RatedP - item.RatedPower) <= efficiencyTolerance)).ToList();
                        if (rangeMatch != null)
                        {
                            var vmo = new Vmo.PumpMainVmo();
                            int firstCount = 0;
                            foreach (var item in rangeMatch)
                            {
                                int commonCount = CountCommonCharacters(viewModel.ModelType, item.Name);
                                if (commonCount > firstCount)
                                {
                                    vmo = item;
                                    firstCount = commonCount;
                                }
                            }
                        }
                    }
                }
                var result = AsstesAutoMatchingHelper.PumpMatching(item, pumpMainVmos);
            }
            this.pumpMatchingViewModelBindingSource.DataSource = _allBindingList;
            return new List<PumpMatchingViewModel>();
        }
        private static int CountCommonCharacters(string baseString, string comparisonString)
        {
            // å°†å­—符串转换为字符集合
            HashSet<char> baseChars = new HashSet<char>(baseString);
            HashSet<char> comparisonChars = new HashSet<char>(comparisonString);
            // è®¡ç®—两个集合的交集
            int commonCount = baseChars.Intersect(comparisonChars).Count();
            return commonCount;
            return _allBindingList;
        }
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ThreeLinkMatchingCtrl.cs
@@ -12,18 +12,16 @@
            this.gridView1.OptionsView.ShowGroupPanel = false;
        }
        private BLL.AdaptingManage _adaptingBll;
        private List<ThreeLinkMatchingViewModel> _allBindingList = null;
        public List<ThreeLinkMatchingViewModel> SetBindingData(List<ThreeLinkMatchingViewModel> inputs)
        public List<ThreeLinkMatchingViewModel> SetBindingData(List<ThreeLinkMatchingViewModel> inputs, List<AdaptingManageVmo> alllist)
        {
            if (inputs == null || inputs.Count == 0)
                return null;
            var finishList = new List<ThreeLinkMatchingViewModel>();
            _adaptingBll = new BLL.AdaptingManage();
            var alllist = _adaptingBll.GetAll().Result;
            foreach (var item in inputs)
            {
                var result = AdaptingAutoMatchingHelper.AutoMatching(item, alllist);
                var result = AsstesAutoMatchingHelper.AutoMatching(item, alllist);
                if (result != null)
                {
                    finishList.Add(result);
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ValveMatchingCtrl.Designer.cs
@@ -30,18 +30,18 @@
        {
            components = new Container();
            gridControl1 = new DevExpress.XtraGrid.GridControl();
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            valveMatchingViewModelBindingSource = new BindingSource(components);
            gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView();
            colName = new DevExpress.XtraGrid.Columns.GridColumn();
            colCode = new DevExpress.XtraGrid.Columns.GridColumn();
            colModelType = new DevExpress.XtraGrid.Columns.GridColumn();
            colMaterial = new DevExpress.XtraGrid.Columns.GridColumn();
            colCaliber = new DevExpress.XtraGrid.Columns.GridColumn();
            colDbLocked = new DevExpress.XtraGrid.Columns.GridColumn();
            colIsMatching = new DevExpress.XtraGrid.Columns.GridColumn();
            colMatchingType = new DevExpress.XtraGrid.Columns.GridColumn();
            colLossCoefficient = new DevExpress.XtraGrid.Columns.GridColumn();
            ((ISupportInitialize)gridControl1).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            ((ISupportInitialize)valveMatchingViewModelBindingSource).BeginInit();
            ((ISupportInitialize)gridView1).BeginInit();
            SuspendLayout();
            // 
            // gridControl1
@@ -55,16 +55,16 @@
            gridControl1.TabIndex = 0;
            gridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { gridView1 });
            // 
            // gridView1
            //
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colCode, colModelType, colMaterial, colCaliber, colDbLocked, colIsMatching });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
            //
            // valveMatchingViewModelBindingSource
            // 
            valveMatchingViewModelBindingSource.DataSource = typeof(ValveMatchingViewModel);
            //
            // gridView1
            //
            gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { colName, colCode, colMaterial, colCaliber, colLossCoefficient, colDbLocked, colMatchingType });
            gridView1.GridControl = gridControl1;
            gridView1.Name = "gridView1";
            gridView1.OptionsView.ShowGroupPanel = false;
            // 
            // colName
            // 
@@ -80,40 +80,40 @@
            colCode.Visible = true;
            colCode.VisibleIndex = 1;
            // 
            // colModelType
            //
            colModelType.FieldName = "ModelType";
            colModelType.Name = "colModelType";
            colModelType.Visible = true;
            colModelType.VisibleIndex = 2;
            //
            // colMaterial
            // 
            colMaterial.FieldName = "Material";
            colMaterial.Name = "colMaterial";
            colMaterial.Visible = true;
            colMaterial.VisibleIndex = 3;
            colMaterial.VisibleIndex = 2;
            // 
            // colCaliber
            // 
            colCaliber.FieldName = "Caliber";
            colCaliber.Name = "colCaliber";
            colCaliber.Visible = true;
            colCaliber.VisibleIndex = 4;
            colCaliber.VisibleIndex = 3;
            // 
            // colDbLocked
            // 
            colDbLocked.FieldName = "DbLocked";
            colDbLocked.Name = "colDbLocked";
            colDbLocked.Visible = true;
            colDbLocked.VisibleIndex = 5;
            colDbLocked.VisibleIndex = 4;
            // 
            // colIsMatching
            // colMatchingType
            // 
            colIsMatching.FieldName = "IsMatching";
            colIsMatching.Name = "colIsMatching";
            colIsMatching.Visible = true;
            colIsMatching.VisibleIndex = 6;
            colMatchingType.FieldName = "MatchingType";
            colMatchingType.Name = "colMatchingType";
            colMatchingType.Visible = true;
            colMatchingType.VisibleIndex = 5;
            //
            // colLossCoefficient
            //
            colLossCoefficient.FieldName = "LossCoefficient";
            colLossCoefficient.Name = "colLossCoefficient";
            colLossCoefficient.Visible = true;
            colLossCoefficient.VisibleIndex = 6;
            // 
            // ValveMatchingCtrl
            // 
@@ -123,8 +123,8 @@
            Name = "ValveMatchingCtrl";
            Size = new Size(1035, 503);
            ((ISupportInitialize)gridControl1).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ((ISupportInitialize)valveMatchingViewModelBindingSource).EndInit();
            ((ISupportInitialize)gridView1).EndInit();
            ResumeLayout(false);
        }
@@ -135,10 +135,10 @@
        private BindingSource valveMatchingViewModelBindingSource;
        private DevExpress.XtraGrid.Columns.GridColumn colName;
        private DevExpress.XtraGrid.Columns.GridColumn colCode;
        private DevExpress.XtraGrid.Columns.GridColumn colModelType;
        private DevExpress.XtraGrid.Columns.GridColumn colMaterial;
        private DevExpress.XtraGrid.Columns.GridColumn colCaliber;
        private DevExpress.XtraGrid.Columns.GridColumn colDbLocked;
        private DevExpress.XtraGrid.Columns.GridColumn colIsMatching;
        private DevExpress.XtraGrid.Columns.GridColumn colLossCoefficient;
        private DevExpress.XtraGrid.Columns.GridColumn colMatchingType;
    }
}
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/02-AsstesFormCtrl/ValveMatchingCtrl.cs
@@ -21,7 +21,7 @@
            var alllist = _adaptingBll.GetAll().Result;
            foreach (var item in inputs)
            {
                var result = AdaptingAutoMatchingHelper.AutoMatching(item, alllist);
                var result = AsstesAutoMatchingHelper.AutoMatching(item, alllist);
                if (result != null)
                {
                    finishList.Add(result);
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/AssetsAutoMatchingMainDlg.cs
@@ -28,10 +28,10 @@
        }
        //自动匹配
        private void BtnAutoMatching_Click(object sender, EventArgs e)
        private async void BtnAutoMatching_Click(object sender, EventArgs e)
        {
            WaitFormHelper.ShowWaitForm(this);
            _assetsAutoMatching = this.AssetsMainChoicePage.SetMatching(_assetsAutoMatching);
            _assetsAutoMatching = await this.AssetsMainChoicePage.SetMatching(_assetsAutoMatching);
            WaitFormHelper.HideWaitForm(this);
        }
    }
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/01-AutoMatching/AssetsMainChoicePage.cs
@@ -7,14 +7,22 @@
            InitializeComponent();
        }
        private BLL.PumpMain _pumpMain = null;
        private BLL.AdaptingManage _adaptingManage = null;
        /// <summary>
        /// åˆå§‹åŒ–
        /// </summary>
        public AssetsAutoMatchingInputViewModel SetMatching(AssetsAutoMatchingInputViewModel input)
        public async Task<AssetsAutoMatchingInputViewModel> SetMatching(AssetsAutoMatchingInputViewModel input)
        {
            _pumpMain = new BLL.PumpMain();
            _adaptingManage = new BLL.AdaptingManage();
            var allPump = await _pumpMain.GetAll();
            var allAdapting = await _adaptingManage.GetAll();
            var assetsAutoMatching = new AssetsAutoMatchingInputViewModel();
            var pumpMatching = this.pumpMatchingCtrl1.SetBindingData(input.PumpMatchingModels, out List<PumpMatchingViewModel> pumpErrors);
            var threeLinkMatching = this.threeLinkMatchingCtrl1.SetBindingData(input.ThreeLinkMatchingModels);
            var pumpMatching = this.pumpMatchingCtrl1.SetBindingData(input.PumpMatchingModels, allPump, out List<PumpMatchingViewModel> pumpErrors);
            var threeLinkMatching = this.threeLinkMatchingCtrl1.SetBindingData(input.ThreeLinkMatchingModels, allAdapting);
            assetsAutoMatching.PumpMatchingModels = pumpMatching;
            assetsAutoMatching.ThreeLinkMatchingModels = threeLinkMatching;
WinFrmUI/HStation.WinFrmUI.Xhs.Core/04-simulation/06-simulation/XhsProjectSimulationCorePage.cs
@@ -261,7 +261,49 @@
        //自动匹配
        private void barBtnAllAutoMatching_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            var dlg = new AssetsAutoMatchingMainDlg(new AssetsAutoMatchingInputViewModel());
            //   _hydroInfo
            var pump = _hydroInfo.Pumps;
            var threelinks = _hydroInfo.Threelinks;
            var aa = new AssetsAutoMatchingInputViewModel();
            foreach (var item in pump)
            {
                aa = new AssetsAutoMatchingInputViewModel
                {
                    PumpMatchingModels = new List<PumpMatchingViewModel>
                    {
             new PumpMatchingViewModel
                {
        RatedH = item.RatedH, // å‡è®¾item已经定义并且包含了RatedH等属性
        RatedP = item.RatedP,
        RatedQ = item.RatedQ,
        RatedN = item.RatedN,
        ModelType=item.ModelType,
        DbID=item.DbId,
        DbLocked=item.DbLocked
                }
                     }
                };
            }
            foreach (var item in threelinks)
            {
                aa = new AssetsAutoMatchingInputViewModel
                {
                    ThreeLinkMatchingModels = new List<ThreeLinkMatchingViewModel>
                    {
                        new ThreeLinkMatchingViewModel
                        {
                            Caliber=item.Caliber,
                            Material=item.Material,
                            ModelType=item.ModelType,
                            DbLocked=item.DbLocked,
                            ID=item.ID,
                            Code=item.Code,
                            MinorLoss=item.MinorLoss
                        }
                    }
                };
            }
            var dlg = new AssetsAutoMatchingMainDlg(aa);
            dlg.ShowDialog();
        }
@@ -285,6 +327,5 @@
            _parter = allParterList.Find(x => x.Code == obj);
            ShowProperty();
        }
    }
}