lixiaojun
2024-10-29 c2bb91cc8706cdeb18b0835a36a4266891daccf3
WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs
@@ -1,6 +1,4 @@
using HStation.Vmo;
using HStation.WinFrmUI.Xhs.PumpProduct;
using NetTaste;
using HStation.WinFrmUI.Xhs.PumpProduct;
namespace HStation.WinFrmUI
{
@@ -14,20 +12,28 @@
            this.pumpProductListBox1.MouseUp += PumpProductListBox1_MouseUp;
        }
        private BLL.AssetsPumpPartMain _bll = null;
        private List<PropGroupChoiceViewModel> _proplist = null;
        #region Private
        private BLL.AssetsPumpPartMain _bll;
        private List<PropGroupChoiceViewModel> _propList;
        private List<CurrentPartMainViewModel> _allBindingList = new List<CurrentPartMainViewModel>();
        private Vmo.AssetsPumpMainAndPartMapVmo _partmap = null;
        private Vmo.AssetsPumpMainAndPartMapVmo _partMapping;
        private Vmo.AssetsPumpPartMainVmo _pumpPart = null;
        private Vmo.AssetsPumpMainVmo _pumpMain;
        private Vmo.AssetsPumpPartMainVmo _pumpPart;
        private long _catalogID;  //分类ID
        private long _seriesID;  //系列ID
        private Vmo.AssetsPumpSeriesVmo _series;  //系列ID
        private List<Vmo.AssetsPumpPropContentVmo> _allPropList = null;
        private List<Vmo.AssetsPumpPropContentVmo> _allPropList;
        private Yw.BLL.SysPropMapping _sysPropMapping;
        #endregion Private
        //回调事件
        public event Func<Vmo.AssetsPumpPartMainVmo, List<Vmo.AssetsPumpPropContentVmo>, Vmo.AssetsPumpMainAndPartMapVmo, Task<bool>> ReloadEvent;
@@ -36,6 +42,7 @@
        public async void SetBindingData(Vmo.AssetsPumpMainVmo AssetsPumpMain)
        {
            this.pumpProductListBox1.SetBindingData(AssetsPumpMain);
            _pumpMain = AssetsPumpMain;
            this.pumpProductListBox1.SelectReloadEvent += () =>
            {
                ListBoxPart_SelectedIndexChanged();
@@ -48,16 +55,14 @@
            var allpartlist = await _bll.GetByPumpMainID(AssetsPumpMain.ID);   //获取所有产品
            var series = await new BLL.AssetsPumpSeries().GetByID(AssetsPumpMain.PumpSeriesID);  //获取系列
            _pumpPart = new Vmo.AssetsPumpPartMainVmo();
            _seriesID = series.ID;
            _pumpPart.SeriesID = _seriesID;
            _series = series;
            _pumpPart.SeriesID = _series.ID;
            _catalogID = series.CatalogID;
            _proplist = new List<PropGroupChoiceViewModel>();
            _partmap = new Vmo.AssetsPumpMainAndPartMapVmo();
            _partmap.PumpID = AssetsPumpMain.ID;
            _partmap.SeriesID = _seriesID;
            //  this.ListBoxPart.DataSource = _allBindingList;
            // this.ListBoxPart.Refresh();
            this.propGroupChoiceViewModelBindingSource.DataSource = _proplist;
            _propList = new List<PropGroupChoiceViewModel>();
            _partMapping = new Vmo.AssetsPumpMainAndPartMapVmo();
            _partMapping.PumpID = AssetsPumpMain.ID;
            _partMapping.SeriesID = _series.ID;
            this.propGroupChoiceViewModelBindingSource.DataSource = _propList;
            this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
        }
@@ -70,7 +75,7 @@
            this.TextEditNo.Text = partmain.NO.Trim();
            this.TextEditProductCode.Text = partmain.Code.Trim();
            this.TextEditProductName.Text = partmain.Name.Trim();
            _proplist.Clear();
            _propList.Clear();
            var bll = new Yw.BLL.SysPropStruct();
            var catlog = await bll.GetByCatalogID(_catalogID);
            if (catlog == null)
@@ -78,12 +83,16 @@
                this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
                return;
            }
            _proplist.Clear();
            _propList.Clear();
            _propList.Add(new PropGroupChoiceViewModel() { PropGroupName = "铭牌参数", PropName = "流量", Value = _pumpMain.RatedFlow.ToString(), KeyWorldType = "Basic_Flow" });
            _propList.Add(new PropGroupChoiceViewModel() { PropGroupName = "铭牌参数", PropName = "扬程", Value = _pumpMain.RatedHead.ToString(), KeyWorldType = "Basic_Head" });
            _propList.Add(new PropGroupChoiceViewModel() { PropGroupName = "铭牌参数", PropName = "功率", Value = _pumpMain.RatedPower.ToString(), KeyWorldType = "Basic_Power" });
            _propList.Add(new PropGroupChoiceViewModel() { PropGroupName = "铭牌参数", PropName = "转速", Value = _pumpMain.RatedSpeed.ToString(), KeyWorldType = "Basic_Speed" });
            foreach (var item in catlog)
            {
                foreach (var prop in item.PropList)
                {
                    _proplist.Add(new PropGroupChoiceViewModel() { PropGroupName = item.Name, PropName = prop.Name, ID = prop.ID });
                    _propList.Add(new PropGroupChoiceViewModel() { PropGroupName = item.Name, PropName = prop.Name, ID = prop.ID, KeyWorldType = "Prop" });
                }
            }
            var propbll = new BLL.PumpPartPropContent();
@@ -91,7 +100,7 @@
            _allPropList = alllist;
            foreach (var item in alllist)
            {
                var selectProp = _proplist.Find(x => x.ID == item.PropID);
                var selectProp = _propList.Find(x => x.ID == item.PropID);
                if (selectProp != null)
                {
                    selectProp.Value = item.PropValue;
@@ -121,9 +130,9 @@
            updatepart.Name = TextEditProductName.Text;
            updatepart.NO = TextEditNo.Text;
            updatepart.Code = TextEditProductCode.Text;
            updatepart.SeriesID = _seriesID;
            var updateproplist = new List<UpdateAssetsPumpPropContentInput>();
            foreach (var item in _proplist)
            updatepart.SeriesID = _series.ID;
            var propList = _propList.Where(x => x.KeyWorldType == "Prop").ToList(); //找到所有的额外属性
            foreach (var item in propList)
            {
                if (_allPropList != null)
                {
@@ -140,6 +149,28 @@
                    }
                }
            }
            var basicFlow = _propList.Find(x => x.KeyWorldType == "Basic_Flow");
            var basicHead = _propList.Find(x => x.KeyWorldType == "Basic_Head");
            var basicSpeed = _propList.Find(x => x.KeyWorldType == "Basic_Speed");
            var basicPower = _propList.Find(x => x.KeyWorldType == "Basic_Power");
            if (double.TryParse(basicFlow.Value, out double flow))
            {
                _pumpMain.RatedFlow = flow;
            }
            if (double.TryParse(basicHead.Value, out double head))
            {
                _pumpMain.RatedHead = head;
            }
            if (double.TryParse(basicSpeed.Value, out double speed))
            {
                _pumpMain.RatedSpeed = speed;
            }
            if (double.TryParse(basicPower.Value, out double power))
            {
                _pumpMain.RatedPower = power;
            }
            var pumpMainBll = new BLL.AssetsPumpMain();
            await pumpMainBll.Update(_pumpMain);
            if (await _bll.UpdateEx(updatepart, _allPropList))
            {
                vm.Reset(updatepart);
@@ -184,11 +215,11 @@
            _pumpPart.NO = TextEditNo.Text;
            _pumpPart.Code = TextEditProductCode.Text;
            var AssetsPumpPropContent = new List<Vmo.AssetsPumpPropContentVmo>();
            foreach (var item in _proplist)
            foreach (var item in _propList)
            {
                AssetsPumpPropContent.Add(new Vmo.AssetsPumpPropContentVmo { PropID = item.ID, PropValue = item.Value, SeriesID = _pumpPart.SeriesID });
            }
            var id = await _bll.InsertEx(_pumpPart, AssetsPumpPropContent, _partmap);
            var id = await _bll.InsertEx(_pumpPart, AssetsPumpPropContent, _partMapping);
            if (id > 0)
            {
                var pumppart = await _bll.GetByID(id);
@@ -222,12 +253,12 @@
                    this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
                    return;
                }
                _proplist.Clear();
                _propList.Clear();
                foreach (var item in catlog)
                {
                    foreach (var prop in item.PropList)
                    {
                        _proplist.Add(new PropGroupChoiceViewModel() { PropGroupName = item.Name, PropName = prop.Name, ID = prop.ID, Value = prop.DefaultValue });
                        _propList.Add(new PropGroupChoiceViewModel() { PropGroupName = item.Name, PropName = prop.Name, ID = prop.ID, Value = prop.DefaultValue });
                    }
                }
                this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
@@ -266,5 +297,49 @@
        }
        #endregion 菜单功能
        //增加属性
        private void simpleLabelItemAddProp_Click(object sender, EventArgs e)
        {
            var dlg = new AddPumpPropDlg();
            dlg.SetBindingData(_series.CatalogID);
            dlg.ReloadDataEvent += async (rhs, groupName, propValue) =>
            {
                var bll = new Yw.BLL.SysProp();
                var id = await bll.Insert(rhs);
                if (id > 0)
                {
                    _sysPropMapping = new Yw.BLL.SysPropMapping();
                    var allList = await _sysPropMapping.GetHaveListByCatalogID(_series.CatalogID);
                    var list = new List<Yw.Vmo.SysPropMappingSetterVmo>();
                    foreach (var item in allList)
                    {
                        foreach (var prop in item.PropList)
                        {
                            if (prop.Have)
                            {
                                list.Add(new Yw.Vmo.SysPropMappingSetterVmo
                                {
                                    PropID = prop.ID,
                                    UnitName = prop.UnitName,
                                    IsNull = prop.IsNull,
                                    DefaultValue = prop.DefaultValue,
                                    ChoiceIds = prop.ChoiceList.Select(x => x.ID).ToList(),
                                });
                            }
                        }
                    }
                    list.Add(new Yw.Vmo.SysPropMappingSetterVmo { PropID = id, UnitName = rhs.UnitName, IsNull = rhs.IsNull });
                    await _sysPropMapping.SetByCatalogID(_series.CatalogID, list);
                    var model = await bll.GetByID(id);
                    var partMain = new PropGroupChoiceViewModel() { PropGroupName = groupName, PropName = model.Name, ID = model.ID, Value = propValue, KeyWorldType = "Prop" };
                    _propList.Add(partMain);
                    this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
                    return true;
                }
                return false;
            };
            dlg.ShowDialog();
        }
    }
}