namespace HStation.WinFrmUI
|
{
|
public partial class EditPackagePartPropDlg : DevExpress.XtraEditors.XtraForm
|
{
|
public EditPackagePartPropDlg()
|
{
|
InitializeComponent();
|
this.gridView1.Columns["PropGroupName"].Group();
|
this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon;
|
this.packageProductListBox1.MouseUp += packageProductListBox1_MouseUp;
|
}
|
|
#region Private
|
|
private BLL.AssetsPackagePartMain _bll;
|
private List<PackagePropGroupChoiceViewModel> _propList;
|
|
private List<CurrentPartMainViewModel> _allBindingList = new List<CurrentPartMainViewModel>();
|
|
private Vmo.AssetsPackageMainAndPartMappingVmo _partMapping;
|
|
private Vmo.AssetsPackageMainVmo _PackageMain;
|
|
private Vmo.AssetsPackagePartMainVmo _PackagePart;
|
|
private long _catalogID; //分类ID
|
|
private Vmo.AssetsPackageSeriesVmo _series; //系列ID
|
|
private List<Vmo.AssetsPackagePropContentVmo> _allPropList;
|
|
private Yw.BLL.SysPropMapping _sysPropMapping;
|
|
#endregion Private
|
|
//回调事件
|
public event Func<Vmo.AssetsPackagePartMainVmo, List<Vmo.AssetsPackagePropContentVmo>, Vmo.AssetsPackageMainAndPartMappingVmo, Task<bool>> ReloadEvent;
|
|
//数据绑定
|
public async void SetBindingData(Vmo.AssetsPackageMainVmo AssetsPackageMain)
|
{
|
this.packageProductListBox1.SetBindingData(AssetsPackageMain);
|
_PackageMain = AssetsPackageMain;
|
this.packageProductListBox1.SelectReloadEvent += () =>
|
{
|
ListBoxPart_SelectedIndexChanged();
|
};
|
this.packageProductListBox1.AddReloadEvent += () =>
|
{
|
BarBtnAddPackagePart_ItemClick();
|
};
|
_bll = new BLL.AssetsPackagePartMain();
|
var allpartlist = await _bll.GetByPackageMainID(AssetsPackageMain.ID); //获取所有产品
|
var series = await new BLL.AssetsPackageSeries().GetByID(AssetsPackageMain.SeriesID); //获取系列
|
_PackagePart = new Vmo.AssetsPackagePartMainVmo();
|
_series = series;
|
_PackagePart.SeriesID = _series.ID;
|
_catalogID = series.CatalogID;
|
_propList = new List<PackagePropGroupChoiceViewModel>();
|
_partMapping = new Vmo.AssetsPackageMainAndPartMappingVmo();
|
_partMapping.MainID = AssetsPackageMain.ID;
|
_partMapping.SeriesID = _series.ID;
|
this.propGroupChoiceViewModelBindingSource.DataSource = _propList;
|
this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
|
}
|
|
//分类选择变换
|
private async void SetPropSelectedValue(CurrentPackagePartMainViewModel 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 PackagePropGroupChoiceViewModel() { PropGroupName = item.Name, PropName = prop.Name, ID = prop.ID, KeyWorldType = "Prop" });
|
}
|
}
|
var propbll = new BLL.AssetsPackagePropContent();
|
var alllist = await propbll.GetByPackagePartID(model.ID);
|
_allPropList = alllist;
|
foreach (var item in alllist)
|
{
|
var selectProp = _propList.Find(x => x.ID == item.PropID);
|
if (selectProp != null)
|
{
|
selectProp.Value = item.PropValue;
|
}
|
}
|
this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
|
this.gridView1.ExpandAllGroups();
|
}
|
|
//产品列表聚焦改变
|
private void ListBoxPart_SelectedIndexChanged()
|
{
|
var vm = this.packageProductListBox1.GetCurrentVm();
|
if (vm == null)
|
return;
|
SetPropSelectedValue(vm);
|
}
|
|
//确认编辑
|
private async void BtnOk_Click(object sender, EventArgs e)
|
{
|
var vm = this.packageProductListBox1.GetCurrentVm();
|
if (vm == null)
|
return;
|
var updatepart = new Vmo.AssetsPackagePartMainVmo();
|
updatepart.ID = vm.ID;
|
updatepart.Name = TextEditProductName.Text;
|
updatepart.NO = TextEditNo.Text;
|
updatepart.Code = TextEditProductCode.Text;
|
updatepart.SeriesID = _series.ID;
|
var propList = _propList.Where(x => x.KeyWorldType == "Prop").ToList(); //找到所有的额外属性
|
foreach (var item in propList)
|
{
|
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.AssetsPackagePropContentVmo() { SeriesID = _allPropList.First().SeriesID, PartID = _allPropList.First().PartID, PropID = item.ID, PropValue = item.Value });
|
}
|
}
|
}
|
var PackageMainBll = new BLL.AssetsPackageMain();
|
await PackageMainBll.Update(_PackageMain);
|
if (await _bll.UpdateEx(updatepart, _allPropList))
|
{
|
vm.Reset(updatepart);
|
this.packageProductListBox1.Refresh();
|
TipFormHelper.ShowSucceed("修改成功!");
|
}
|
else
|
{
|
TipFormHelper.ShowError("修改失败!");
|
}
|
this.DialogResult = DialogResult.OK;
|
this.Close();
|
}
|
|
//左侧树右击菜单事件
|
private void packageProductListBox1_MouseUp(object sender, MouseEventArgs e)
|
{
|
if (e.Button == MouseButtons.Right)
|
{
|
Point screenPoint = Cursor.Position;
|
popupPackagePartMenu.ShowPopup(screenPoint);
|
}
|
}
|
|
private bool Vaild()
|
{
|
this.dxErrorProvider1.ClearErrors();
|
if (TextEditProductName.Text == null)
|
{
|
this.dxErrorProvider1.SetError(TextEditProductName, "必填项");
|
return false;
|
}
|
return true;
|
}
|
|
//添加产品
|
private async void BtnAddPackagePart_Click(object sender, EventArgs e)
|
{
|
if (!Vaild())
|
return;
|
_PackagePart.Name = TextEditProductName.Text;
|
_PackagePart.NO = TextEditNo.Text;
|
_PackagePart.Code = TextEditProductCode.Text;
|
var AssetsPackagePropContent = new List<Vmo.AssetsPackagePropContentVmo>();
|
foreach (var item in _propList)
|
{
|
AssetsPackagePropContent.Add(new Vmo.AssetsPackagePropContentVmo { PropID = item.ID, PropValue = item.Value, SeriesID = _PackagePart.SeriesID });
|
}
|
var id = await _bll.InsertEx(_PackagePart, AssetsPackagePropContent, _partMapping);
|
if (id > 0)
|
{
|
var Packagepart = await _bll.GetByID(id);
|
this.packageProductListBox1._allBindingList.Add(new CurrentPackagePartMainViewModel(Packagepart));
|
this.packageProductListBox1.Refresh();
|
TipFormHelper.ShowSucceed("添加成功!");
|
}
|
else
|
{
|
TipFormHelper.ShowError("添加失败!");
|
}
|
this.DialogResult = DialogResult.OK;
|
this.Close();
|
}
|
|
#region 菜单功能
|
|
//添加产品
|
private async void BarBtnAddPackagePart_ItemClick()
|
{
|
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();
|
try
|
{
|
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 PackagePropGroupChoiceViewModel() { PropGroupName = item.Name, PropName = prop.Name, ID = prop.ID, Value = prop.DefaultValue });
|
}
|
}
|
this.propGroupChoiceViewModelBindingSource.ResetBindings(false);
|
}
|
catch
|
{
|
}
|
this.TextEditProductName.Properties.NullText = "在此输入产品名称";
|
// 尝试改变焦点以触发控件更新
|
this.TextEditProductName.Focus();
|
// this.TextEditProductName.SelectAll();
|
|
this.TextEditNo.Properties.NullText = "在此输入产品编号";
|
this.TextEditProductCode.Properties.NullText = "在此输入产品图号";
|
}
|
|
// 删除产品
|
private async void BarBtnDeletePart_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = this.packageProductListBox1.GetCurrentVm();
|
if (vm == null)
|
return;
|
if (!MessageBoxHelper.IsClickOk("确定删除数据行"))
|
{
|
if (await _bll.DeleteEx(vm.ID))
|
{
|
this.packageProductListBox1._allBindingList.Remove(vm);
|
this.packageProductListBox1.Refresh();
|
MessageBoxHelper.ShowSuccess("删除成功!");
|
}
|
else
|
{
|
MessageBoxHelper.ShowError("删除失败!");
|
}
|
}
|
}
|
|
#endregion 菜单功能
|
|
//增加属性
|
private void simpleLabelItemAddProp_Click(object sender, EventArgs e)
|
{
|
/* var dlg = new AddPackagePropDlg();
|
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 ExchangerPropChoiceViewModel() { 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();*/
|
}
|
}
|
}
|