lixiaojun
2024-10-29 c2bb91cc8706cdeb18b0835a36a4266891daccf3
WinFrmUI/HStation.WinFrmUI.Assets.Core/01-pump/01-EditPumpPartProp/EditPumpPartPropDlg.cs
@@ -9,30 +9,40 @@
            InitializeComponent();
            this.gridView1.Columns["PropGroupName"].Group();
            this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
            this.pumpProductListBox1.MouseUp += PumpProductListBox1_MouseUp;
        }
        private BLL.PumpPartMain _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.PumpMainAndPartMapVmo _partmap = null;
        private Vmo.AssetsPumpMainAndPartMapVmo _partMapping;
        private Vmo.PumpPartMainVmo _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.PumpPropContentVmo> _allPropList = null;
        private List<Vmo.AssetsPumpPropContentVmo> _allPropList;
        private Yw.BLL.SysPropMapping _sysPropMapping;
        #endregion Private
        //回调事件
        public event Func<Vmo.PumpPartMainVmo, List<Vmo.PumpPropContentVmo>, Vmo.PumpMainAndPartMapVmo, Task<bool>> ReloadEvent;
        public event Func<Vmo.AssetsPumpPartMainVmo, List<Vmo.AssetsPumpPropContentVmo>, Vmo.AssetsPumpMainAndPartMapVmo, Task<bool>> ReloadEvent;
        //数据绑定
        public async void SetBindingData(Vmo.PumpMainVmo pumpMain)
        public async void SetBindingData(Vmo.AssetsPumpMainVmo AssetsPumpMain)
        {
            this.pumpProductListBox1.SetBindingData(pumpMain);
            this.pumpProductListBox1.SetBindingData(AssetsPumpMain);
            _pumpMain = AssetsPumpMain;
            this.pumpProductListBox1.SelectReloadEvent += () =>
            {
                ListBoxPart_SelectedIndexChanged();
@@ -41,21 +51,18 @@
            {
                BarBtnAddPumpPart_ItemClick();
            };
            _bll = new BLL.PumpPartMain();
            var allpartlist = await _bll.GetByPumpMainID(pumpMain.ID);   //获取所有产品
            var series = await new BLL.PumpSeries().GetByID(pumpMain.PumpSeriesID);  //获取系列
            _pumpPart = new Vmo.PumpPartMainVmo();
            _seriesID = series.ID;
            _pumpPart.SeriesID = _seriesID;
            _bll = new BLL.AssetsPumpPartMain();
            var allpartlist = await _bll.GetByPumpMainID(AssetsPumpMain.ID);   //获取所有产品
            var series = await new BLL.AssetsPumpSeries().GetByID(AssetsPumpMain.PumpSeriesID);  //获取系列
            _pumpPart = new Vmo.AssetsPumpPartMainVmo();
            _series = series;
            _pumpPart.SeriesID = _series.ID;
            _catalogID = series.CatalogID;
            _proplist = new List<PropGroupChoiceViewModel>();
            _partmap = new Vmo.PumpMainAndPartMapVmo();
            _partmap.PumpID = pumpMain.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);
        }
@@ -68,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)
@@ -76,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();
@@ -89,7 +100,11 @@
            _allPropList = alllist;
            foreach (var item in alllist)
            {
                _proplist.Find(x => x.ID == item.PropID).Value = item.PropValue;
                var selectProp = _propList.Find(x => x.ID == item.PropID);
                if (selectProp != null)
                {
                    selectProp.Value = item.PropValue;
                }
            }
            this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
            this.gridView1.ExpandAllGroups();
@@ -110,32 +125,68 @@
            var vm = this.pumpProductListBox1.GetCurrentVm();
            if (vm == null)
                return;
            var updatepart = new Vmo.PumpPartMainVmo();
            var updatepart = new Vmo.AssetsPumpPartMainVmo();
            updatepart.ID = vm.ID;
            updatepart.Name = TextEditProductName.Text;
            updatepart.NO = TextEditNo.Text;
            updatepart.Code = TextEditProductCode.Text;
            updatepart.SeriesID = _seriesID;
            var updateproplist = new List<UpdatePumpPropContentInput>();
            //      var update = _allPropList.Select(x => x.Adapt<PumpPropContentDto, UpdatePumpPropContentInput>()).ToList();
            foreach (var item in _proplist)
            updatepart.SeriesID = _series.ID;
            var propList = _propList.Where(x => x.KeyWorldType == "Prop").ToList(); //找到所有的额外属性
            foreach (var item in propList)
            {
                _allPropList.Find(x => x.PropID == item.ID).PropValue = item.Value;
                if (_allPropList != null)
                {
                    // 查找 _allPropList 中是否存在与 item.ID 匹配的项
                    var prop = _allPropList.FirstOrDefault(x => x.PropID == item.ID);
                    // 如果找到匹配的项,则更新其 PropValue
                    if (prop != null)
                    {
                        prop.PropValue = item.Value;
                    }
                    else
                    {
                        _allPropList.Add(new Vmo.AssetsPumpPropContentVmo() { SeriesID = _allPropList.First().SeriesID, PartID = _allPropList.First().PartID, PropID = item.ID, PropValue = item.Value });
                    }
                }
            }
            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);
                this.pumpProductListBox1.Refresh();
                MessageBoxHelper.ShowSuccess("修改成功!");
                TipFormHelper.ShowSucceed("修改成功!");
            }
            else
            {
                MessageBoxHelper.ShowError("修改失败!");
                TipFormHelper.ShowError("修改失败!");
            }
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
        //左侧树右击菜单事件
        private void ListBoxPart_MouseUp(object sender, MouseEventArgs e)
        private void PumpProductListBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
@@ -144,29 +195,44 @@
            }
        }
        private bool Vaild()
        {
            this.dxErrorProvider1.ClearErrors();
            if (TextEditProductName.Text == null)
            {
                this.dxErrorProvider1.SetError(TextEditProductName, "必填项");
                return false;
            }
            return true;
        }
        //添加产品
        private async void BtnAddPumpPart_Click(object sender, EventArgs e)
        {
            if (!Vaild())
                return;
            _pumpPart.Name = TextEditProductName.Text;
            _pumpPart.NO = TextEditNo.Text;
            _pumpPart.Code = TextEditProductCode.Text;
            var PumpPropContent = new List<Vmo.PumpPropContentVmo>();
            foreach (var item in _proplist)
            var AssetsPumpPropContent = new List<Vmo.AssetsPumpPropContentVmo>();
            foreach (var item in _propList)
            {
                PumpPropContent.Add(new Vmo.PumpPropContentVmo { PropID = item.ID, PropValue = item.Value, SeriesID = _pumpPart.SeriesID, MainID = _partmap.PumpID });
                AssetsPumpPropContent.Add(new Vmo.AssetsPumpPropContentVmo { PropID = item.ID, PropValue = item.Value, SeriesID = _pumpPart.SeriesID });
            }
            var id = await _bll.InsertEx(_pumpPart, PumpPropContent, _partmap);
            var id = await _bll.InsertEx(_pumpPart, AssetsPumpPropContent, _partMapping);
            if (id > 0)
            {
                var pumppart = await _bll.GetByID(id);
                this.pumpProductListBox1._allBindingList.Add(new CurrentPartMainViewModel(pumppart));
                this.pumpProductListBox1.Refresh();
                MessageBoxHelper.ShowSuccess("添加成功!");
                TipFormHelper.ShowSucceed("添加成功!");
            }
            else
            {
                MessageBoxHelper.ShowError("添加失败!");
                TipFormHelper.ShowError("添加失败!");
            }
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
        #region 菜单功能
@@ -187,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);
@@ -231,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();
        }
    }
}