using DevExpress.XtraEditors; using HStation.WinFrmUI.Xhs.PumpProduct; using Mapster; namespace HStation.WinFrmUI { public partial class EditPumpPartDlg : DevExpress.XtraEditors.XtraForm { public EditPumpPartDlg() { InitializeComponent(); this.gridView1.Columns["PropGroupName"].Group(); ListBoxPart.DisplayMember = "Name"; ListBoxPart.ValueMember = "ID"; } private BLL.PumpPartMain _bll = null; private List _proplist = null; private List _allBindingList = new List(); private AddPumpMainAndPartMapDto _partmap = null; private AddPumpPartMainDto _pumpPart = null; private long _catalogID; //分类ID private long _seriesID; //系列ID private List _allPropList = null; //回调事件 public event Func, AddPumpMainAndPartMapDto, Task> ReloadEvent; //数据绑定 public async void SetBindingData(PumpMainDto pumpMain) { _bll = new BLL.PumpPartMain(); var allpartlist = await _bll.GetByPumpMainID(pumpMain.ID); //获取所有产品 var series = await new BLL.PumpSeries().GetByID(pumpMain.PumpSeriesID); //获取系列 _pumpPart = new AddPumpPartMainDto(); _seriesID = series.ID; _pumpPart.SeriesID = _seriesID; if (allpartlist != null) { foreach (var item in allpartlist) { var model = new CurrentPartMainViewModel(item); _allBindingList.Add(model); } } _catalogID = series.CatalogID; _proplist = new List(); _partmap = new AddPumpMainAndPartMapDto(); _partmap.PumpID = pumpMain.ID; _partmap.SeriesID = _seriesID; this.ListBoxPart.DataSource = _allBindingList; this.ListBoxPart.Refresh(); this.propGroupChoiceViewModelBindingSource.DataSource = _proplist; this.propGroupChoiceViewModelBindingSource.ResetBindings(false); } //分类选择变换 private async void SetPropSelectedValue(CurrentPartMainViewModel partmain) { layoutControAddPart.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; var model = await _bll.GetByID(partmain.ID); if (model == null) return; this.TextEditNo.Text = partmain.NO.Trim(); this.TextEditProductCode.Text = partmain.Code.Trim(); this.TextEditProductName.Text = partmain.Name.Trim(); _proplist.Clear(); var bll = new Yw.BLL.SysPropStruct(); var catlog = await bll.GetByCatalogID(_catalogID); if (catlog == null) { this.propGroupChoiceViewModelBindingSource.ResetBindings(false); return; } _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 }); } } var propbll = new BLL.PumpPartPropContent(); var alllist = await propbll.GetByPumpPartID(model.ID); _allPropList = alllist; foreach (var item in alllist) { _proplist.Find(x => x.ID == item.PropID).Value = item.PropValue; } this.propGroupChoiceViewModelBindingSource.ResetBindings(false); } //产品列表聚焦改变 private void ListBoxPart_SelectedIndexChanged(object sender, EventArgs e) { var vm = this.ListBoxPart.GetCurrentViewModel(_allBindingList); if (vm == null) return; SetPropSelectedValue(vm); } //确认编辑 private async void BtnOk_Click(object sender, EventArgs e) { var vm = this.ListBoxPart.GetCurrentViewModel(_allBindingList); if (vm == null) return; var updatepart = new UpdatePumpPartMainDto(); updatepart.ID = vm.ID; updatepart.Name = TextEditProductName.Text; updatepart.NO = TextEditNo.Text; updatepart.Code = TextEditProductCode.Text; updatepart.SeriesID = _seriesID; var updateproplist = new List(); var update = _allPropList.Select(x => x.Adapt()).ToList(); foreach (var item in _proplist) { update.Find(x => x.PropID == item.ID).PropValue = item.Value; } if (await _bll.UpdateEx(updatepart, update)) { vm.Reset(updatepart); this.ListBoxPart.Refresh(); MessageBoxHelper.ShowSuccess("修改成功!"); } else { MessageBoxHelper.ShowError("修改失败!"); } } //左侧树右击菜单事件 private void ListBoxPart_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { Point screenPoint = Cursor.Position; popupPumpPartMenu.ShowPopup(screenPoint); } } //添加产品 private async void BtnAddPumpPart_Click(object sender, EventArgs e) { _pumpPart.Name = TextEditProductName.Text; _pumpPart.NO = TextEditNo.Text; _pumpPart.Code = TextEditProductCode.Text; var PumpPropContent = new List(); foreach (var item in _proplist) { PumpPropContent.Add(new AddPumpPropContentDto { PropID = item.ID, PropValue = item.Value, SeriesID = _pumpPart.SeriesID, MainID = _partmap.PumpID }); } var id = await _bll.InsertEx(_pumpPart, PumpPropContent, _partmap); if (id > 0) { var pumppart = await _bll.GetByID(id); _allBindingList.Add(new CurrentPartMainViewModel(pumppart)); this.ListBoxPart.Refresh(); MessageBoxHelper.ShowSuccess("添加成功!"); } else { MessageBoxHelper.ShowError("添加失败!"); } } #region 菜单功能 //添加产品 private async void BarBtnAddPumpPart_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { layoutControAddPart.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always; TextEditProductName.Text = string.Empty; TextEditNo.Text = string.Empty; TextEditProductCode.Text = string.Empty; var bll = new Yw.BLL.SysPropStruct(); var catlog = await bll.GetByCatalogID(_catalogID); if (catlog == null) { this.propGroupChoiceViewModelBindingSource.ResetBindings(false); return; } _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 }); } } this.propGroupChoiceViewModelBindingSource.ResetBindings(false); } // 删除产品 private async void BarBtnDeletePart_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = this.ListBoxPart.GetCurrentViewModel(_allBindingList); if (vm == null) return; if (!MessageBoxHelper.IsClickOk("确定删除数据行")) { if (await _bll.DeleteEx(vm.ID)) { _allBindingList.Remove(vm); this.ListBoxPart.Refresh(); MessageBoxHelper.ShowSuccess("删除成功!"); } else { MessageBoxHelper.ShowError("删除失败!"); } } } #endregion 菜单功能 } }