lixiaojun
2025-01-22 46f64905a3c309a50c0f245b3350cdeb8dd699c6
WinFrmUI/Yw.WinFrmUI.Hydro.Core/05-property/HydroVisualPropertyCtrl.cs
@@ -1,11 +1,9 @@
using DevExpress.Utils.MVVM;
using DevExpress.XtraBars;
using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraLayout.Utils;
using DevExpress.XtraVerticalGrid.Events;
using Yw.Model;
namespace Yw.WinFrmUI
{
@@ -43,10 +41,8 @@
        /// 分级属性值改变事件
        /// </summary>
        public event Action<HydroVisualViewModel> GradingPropertyValueChangedEvent;
        /// <summary>
        /// 水流动画属性值改变事件
        /// </summary>
        public event Action<HydroVisualViewModel> FlowEffectPropertyValueChangedEvent;
        /// <summary>
        /// 强调连接节点事件
        /// 第一个参数为本身Code
@@ -58,6 +54,21 @@
        /// </summary>
        public event Action<HydroVisualViewModel> HydroViewEvent;
        private HydroChangeHelper _changeHelper = null;//改变辅助类
        private HydroPropStatusHelper _propStatusHelper = null;//属性状态辅助类
        /// <summary>
        /// 初始化数据
        /// </summary>
        public void InitialData
            (
                HydroChangeHelper changeHelper,
                HydroPropStatusHelper propStatusHelper
            )
        {
            _changeHelper = changeHelper;
            _propStatusHelper = propStatusHelper;
        }
        /// <summary>
        /// 允许修改
@@ -191,11 +202,11 @@
            var vm = GetPropertyViewModel(e.Row);
            if (vm != null)
            {
                //var propStatus = vm.GetPropStatus(realFieldName);
                //if (propStatus != null)
                //{
                //    e.Appearance.ForeColor = HydroPropStatusHelper.GetColor(propStatus.PropStatus);
                //}
                var propStatusInfo = _propStatusHelper?.GetPropStatusInfo(vm.Code, realFieldName);
                if (propStatusInfo != null)
                {
                    e.Appearance.ForeColor = HydroPropStatusColorHelper.GetColor(propStatusInfo.PropStatus);
                }
            }
        }
@@ -215,8 +226,15 @@
            {
                e.CellText = ((DateTime)e.Properties.Value).ToString("yyyy-MM-dd HH:mm:ss");
            }
            else if (fullTypeName == typeof(string[]).FullName)
            {
                var stringValue = (string[])e.Properties.Value;
                e.CellText = stringValue?.Length.ToString();
            }
            else
            {
                var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row);
                if (descriptor != null)
                {
@@ -460,10 +478,6 @@
            if (vm is HydroValveViewModel valve)
            {
                if (fieldName == nameof(HydroValveViewModel.ValveSetting))
                {
                    e.Row.Visible = false;
                }
                switch (valve.Vmo.ValveType)
                {
                    case Yw.Hydro.ValveType.PSV:
@@ -476,11 +490,7 @@
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                            {
                                e.Row.Visible = false;
                            }
@@ -496,11 +506,7 @@
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                            {
                                e.Row.Visible = false;
                            }
@@ -516,11 +522,7 @@
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                            {
                                e.Row.Visible = false;
                            }
@@ -536,11 +538,7 @@
                            {
                                e.Row.Visible = true;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                            {
                                e.Row.Visible = false;
                            }
@@ -556,11 +554,7 @@
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
                            {
                                e.Row.Visible = true;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                            {
                                e.Row.Visible = false;
                            }
@@ -576,13 +570,9 @@
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
                            {
                                e.Row.Visible = true;
                            }
                        }
                        break;
@@ -596,13 +586,9 @@
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveOL))
                            if (fieldName == nameof(HydroValveViewModel.ValveLength))
                            {
                                e.Row.Visible = false;
                            }
                            if (fieldName == nameof(HydroValveViewModel.ValveQL))
                            {
                                e.Row.Visible = false;
                                e.Row.Visible = true;
                            }
                        }
                        break;
@@ -631,9 +617,18 @@
            }
            vm.UpdateVmoProperty();
            this.PropertyValueChangedEvent?.Invoke(vm);
            var realFieldName = fieldName;
            var descriptor = this.propertyGridControl1.GetPropertyDescriptor(e.Row);
            if (descriptor != null)
            {
                //真实属性名称
                var realPropAttri = (HydroRealProAttribute)descriptor.Attributes[typeof(HydroRealProAttribute)];
                if (realPropAttri != null)
                {
                    realFieldName = realPropAttri.RealPropName;
                }
                var hydroMarkPropAttri = descriptor.Attributes[typeof(HydroMarkProAttribute)];
                if (hydroMarkPropAttri != null)
                {
@@ -646,13 +641,10 @@
                    this.GradingPropertyValueChangedEvent?.Invoke(vm);
                }
                var hydroFlowDirectionPropAttri = descriptor.Attributes[typeof(HydroFlowDirectionProAttribute)];
                if (hydroFlowDirectionPropAttri != null)
                {
                    this.FlowEffectPropertyValueChangedEvent?.Invoke(vm);
                }
                this.propertyGridControl1.UpdateRows();
            }
            _changeHelper?.Append(vm.Vmo, eChangeType.Update);
            _propStatusHelper?.UpdatePropStatus(vm.Code, realFieldName, Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}通过属性控件修改");
        }
        //Db匹配
@@ -682,6 +674,9 @@
                link.EndCode = tempCode;
                link.UpdateVmoProperty();
                _propStatusHelper?.UpdatePropStatus(link.Code, nameof(link.Vmo.StartCode), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}调整上下游");
                _propStatusHelper?.UpdatePropStatus(link.Code, nameof(link.Vmo.EndCode), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}调整上下游");
                var translation = this.SelectedObject as HydroTranslationViewModel;
                if (translation != null)
                {
@@ -689,6 +684,8 @@
                    translation.StartDiameter = translation.EndDiameter;
                    translation.EndDiameter = tempDiameter;
                    translation.UpdateVmoProperty();
                    _propStatusHelper?.UpdatePropStatus(translation.Code, nameof(translation.Vmo.StartDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}调整上下游");
                    _propStatusHelper?.UpdatePropStatus(translation.Code, nameof(translation.Vmo.EndDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}调整上下游");
                }
                var pump = this.SelectedObject as HydroPumpViewModel;
@@ -698,7 +695,11 @@
                    pump.InletDiameter = pump.OutletDiameter;
                    pump.OutletDiameter = tempDiameter;
                    pump.UpdateVmoProperty();
                    _propStatusHelper?.UpdatePropStatus(pump.Code, nameof(pump.Vmo.InletDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}调整上下游");
                    _propStatusHelper?.UpdatePropStatus(pump.Code, nameof(pump.Vmo.OutletDiameter), Yw.Hydro.ePropStatus.Normal, $"{DateTime.Now.ToStandardString()}调整上下游");
                }
                _changeHelper?.Append(link.Vmo, eChangeType.Update);
                this.propertyGridControl1.UpdateRows();
            }
@@ -755,7 +756,7 @@
            string caption = string.Empty;
            string descrition = string.Empty;
            string realFieldName = fieldName;
            //属性描述器
@@ -775,10 +776,17 @@
                {
                    descrition = descritionAttri.Description;
                }
                //真实属性名称
                var realPropAttri = (HydroRealProAttribute)descriptor.Attributes[typeof(HydroRealProAttribute)];
                if (realPropAttri != null)
                {
                    realFieldName = realPropAttri.RealPropName;
                }
            }
            //var propStatus = vm.GetPropStatus(fieldName);
            //this.hydroVisualPropertyDescriptionCtrl1.SetBindingData(caption, descrition, propStatus);
            var propStatusInfo = _propStatusHelper?.GetPropStatusInfo(vm.Code, realFieldName);
            this.hydroVisualPropertyDescriptionCtrl1.SetBindingData(caption, descrition, propStatusInfo);
        }
@@ -820,12 +828,14 @@
            var dlg = new HydroCurveEditDlg();
            dlg.ReloadDataEvent += (rhs) =>
            {
                _changeHelper?.Append(rhs, eChangeType.Update);
            };
            dlg.SetBindingData(curve);
            dlg.ShowDialog();
        }
    }
}