using DevExpress.DataProcessing.InMemoryDataProcessor;
|
using DevExpress.Utils.DragDrop;
|
using DevExpress.XtraEditors;
|
using HStation.WinFrmUI;
|
using Yw;
|
using Yw.WinFrmUI;
|
|
namespace PBS.WinFrmUI
|
{
|
public partial class PlaceMgrPage : DocumentPage
|
{
|
public PlaceMgrPage()
|
{
|
InitializeComponent();
|
this.gridView1.SetNormalView(30);
|
behaviorManager1.Detach<DragDropBehavior>(gridView1);
|
}
|
|
private List<PlaceViewModel> _allBindingList;
|
|
private BLL.Place _placeBll = new();
|
|
public override void InitialDataSource()
|
{
|
SetBindingData();
|
}
|
|
private async void SetBindingData()
|
{
|
_allBindingList = new List<PlaceViewModel>();
|
var allList = await _placeBll.GetAll();
|
if (allList != null)
|
{
|
foreach (var item in allList)
|
{
|
var mapInfo = await BLLFactory<Yw.BLL.MapInfo>.Instance
|
.Get(PBS.DataType.PBSPlace, item.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
|
|
_allBindingList.Add(new PlaceViewModel(item, mapInfo));
|
}
|
}
|
this.placeViewModelBindingSource.DataSource = _allBindingList;
|
this.placeViewModelBindingSource.ResetBindings(false);
|
var allRegion = await new Yw.BLL.Division().GetAll();
|
this.repositoryItemTreeListLookUpEdit1.DataSource = allRegion;
|
}
|
|
//新增小区
|
private void btnAddBuilding_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var dlg = new AddPlaceDlg();
|
dlg.SetBindingData(PBS.ePlaceType.Build);
|
dlg.ReloadDataEvent += async (vmo, mapInfo) =>
|
{
|
var id = await _placeBll.Insert(vmo);
|
if (id > 0)
|
{
|
vmo.ID = id;
|
mapInfo.ObjectID = id;
|
var mapId= await new Yw.BLL.MapInfo().Insert(mapInfo);
|
mapInfo.ID = mapId;
|
_allBindingList.Add(new PlaceViewModel(vmo, mapInfo));
|
this.placeViewModelBindingSource.ResetBindings(false);
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
}
|
|
//新增学校
|
private void btnAddschool_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var dlg = new AddPlaceDlg();
|
dlg.SetBindingData(PBS.ePlaceType.School);
|
dlg.ReloadDataEvent += async (Vmo, mapInfo) =>
|
{
|
var id = await _placeBll.Insert(Vmo);
|
if (id > 0)
|
{
|
Vmo.ID = id;
|
_allBindingList.Add(new PlaceViewModel(Vmo, mapInfo));
|
this.placeViewModelBindingSource.ResetBindings(false);
|
mapInfo.ObjectID = id;
|
await new Yw.BLL.MapInfo().Insert(mapInfo);
|
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
}
|
|
//新增医院
|
private void btnAddHospital_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var dlg = new AddPlaceDlg();
|
dlg.SetBindingData(PBS.ePlaceType.Hospital);
|
dlg.ReloadDataEvent += async (Vmo, mapInfo) =>
|
{
|
var id = await _placeBll.Insert(Vmo);
|
if (id > 0)
|
{
|
Vmo.ID = id;
|
_allBindingList.Add(new PlaceViewModel(Vmo, mapInfo));
|
this.placeViewModelBindingSource.ResetBindings(false);
|
mapInfo.ObjectID = id;
|
await new Yw.BLL.MapInfo().Insert(mapInfo);
|
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
}
|
|
//新增商铺
|
private void btnAddShop_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var dlg = new AddPlaceDlg();
|
dlg.SetBindingData(PBS.ePlaceType.Shop);
|
dlg.ReloadDataEvent += async (Vmo, mapInfo) =>
|
{
|
var id = await _placeBll.Insert(Vmo);
|
if (id > 0)
|
{
|
Vmo.ID = id;
|
_allBindingList.Add(new PlaceViewModel(Vmo, mapInfo));
|
this.placeViewModelBindingSource.ResetBindings(false);
|
mapInfo.ObjectID = id;
|
await new Yw.BLL.MapInfo().Insert(mapInfo);
|
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
}
|
|
//修改
|
private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
TipFormHelper.ShowWarn("请选择数据行");
|
}
|
var dlg = new EditPlaceDlg();
|
dlg.SetBindingData(vm.Vmo, vm.MapInfo);
|
dlg.ReloadDataEvent += async (vmo, map) =>
|
{
|
var bol = await _placeBll.Update(vmo);
|
if (bol)
|
{
|
if (map.ID > 0)
|
{
|
await new Yw.BLL.MapInfo().Update(map);
|
}
|
else
|
{
|
await new Yw.BLL.MapInfo().Insert(map);
|
}
|
vm.Resert(vmo, map);
|
this.placeViewModelBindingSource.ResetBindings(false);
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
}
|
|
//删除
|
private async void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
return;
|
}
|
var result = XtraMessageBox.Show("请问确认删除当前数据吗?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes;
|
if (!result)
|
{
|
return;
|
}
|
if (vm.MapInfo != null)
|
{
|
if (!await BLLFactory<Yw.BLL.MapInfo>.Instance.DeleteByObjectTypeAndObjectID(PBS.DataType.PBSPlace, vm.ID))
|
{
|
TipFormHelper.ShowError("项目地图位置删除失败,请重试!");
|
return;
|
}
|
}
|
var bol = await _placeBll.DeleteByID(vm.ID);
|
if (!bol)
|
{
|
TipFormHelper.ShowError("删除失败!");
|
return;
|
}
|
_allBindingList.Remove(vm);
|
this.placeViewModelBindingSource.ResetBindings(false);
|
TipFormHelper.ShowSucceed("删除成功!");
|
}
|
|
//刷新
|
private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
SetBindingData();
|
}
|
|
//查询
|
private void barCekSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.gridView1.OptionsFind.AlwaysVisible = !this.gridView1.OptionsFind.AlwaysVisible;
|
}
|
|
private void barCkDrag_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (barCkDrag.Checked)
|
{
|
behaviorManager1.Attach<DragDropBehavior>(this.gridView1);
|
}
|
else
|
{
|
behaviorManager1.Detach<DragDropBehavior>(gridView1);
|
}
|
}
|
|
private async void dragDropEvents1_DragDrop(object sender, DevExpress.Utils.DragDrop.DragDropEventArgs e)
|
{
|
var indexs = e.Data as int[];
|
if (indexs == null || indexs.Length < 1)
|
{
|
e.Handled = true;
|
return;
|
}
|
var sourceIndex = indexs[0];
|
var sourceObj = this.gridView1.GetRow(sourceIndex) as PlaceViewModel;
|
if (sourceObj == null)
|
{
|
e.Handled = true;
|
return;
|
}
|
|
var destIndex = this.gridView1.GetRowHandleByCP(e.Location);
|
if (destIndex < 0)
|
{
|
e.Handled = true;
|
return;
|
}
|
|
var destObj = this.gridView1.GetRow(destIndex) as PlaceViewModel;
|
if (destObj == null)
|
{
|
e.Handled = true;
|
return;
|
}
|
|
var sorters = new List<Yw.Vmo.Sorter>();
|
|
if (e.InsertType == InsertType.Before)
|
{
|
sorters.Add(new Yw.Vmo.Sorter() { ID = sourceObj.ID, SortCode = destObj.SortCode });
|
_allBindingList.ForEach(x =>
|
{
|
if (x.SortCode >= destObj.SortCode)
|
{
|
if (x != sourceObj)
|
{
|
sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 });
|
}
|
}
|
});
|
}
|
else if (e.InsertType == InsertType.After)
|
{
|
sorters.Add(new Yw.Vmo.Sorter() { ID = sourceObj.ID, SortCode = destObj.SortCode + 1 });
|
_allBindingList.ForEach(x =>
|
{
|
if (x.SortCode > destObj.SortCode)
|
{
|
if (x != sourceObj)
|
{
|
sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 });
|
}
|
}
|
});
|
}
|
else
|
{
|
e.Handled = true;
|
return;
|
}
|
|
var bol = await _placeBll.UpdateSorter(sorters);
|
if (!bol)
|
{
|
e.Handled = true;
|
return;
|
}
|
|
_allBindingList.ForEach(x =>
|
{
|
var sorter = sorters.Find(t => t.ID == x.ID);
|
if (sorter != null)
|
{
|
x.SortCode = sorter.SortCode;
|
}
|
});
|
}
|
|
private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
Up();
|
}
|
|
//上移
|
private async void Up()
|
{
|
var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
return;
|
}
|
var rowHandle = this.gridView1.FocusedRowHandle;
|
if (rowHandle == 0)
|
{
|
TipFormHelper.ShowWarn("上移失败!");
|
return;
|
}
|
var current = this.gridView1.GetRow(rowHandle) as PlaceViewModel;
|
if (current == null)
|
{
|
return;
|
}
|
var prevHandle = rowHandle - 1;
|
var prev = this.gridView1.GetRow(prevHandle) as PlaceViewModel;
|
if (prev == null)
|
{
|
return;
|
}
|
var sorters = new List<Yw.Vmo.Sorter>();
|
sorters.Add(new Yw.Vmo.Sorter() { ID = current.ID, SortCode = prev.SortCode });
|
sorters.Add(new Yw.Vmo.Sorter() { ID = prev.ID, SortCode = current.SortCode });
|
var bol = await _placeBll.UpdateSorter(sorters);
|
if (!bol)
|
{
|
TipFormHelper.ShowError("上移失败!");
|
return;
|
}
|
var sortCode = current.SortCode;
|
current.SortCode = prev.SortCode;
|
prev.SortCode = sortCode;
|
_allBindingList = _allBindingList.OrderBy(x => x.SortCode).ToList();
|
this.placeViewModelBindingSource.DataSource = _allBindingList;
|
this.placeViewModelBindingSource.ResetBindings(false);
|
this.gridView1.FocusedRowHandle = prevHandle;
|
}
|
|
private void barBtnDown_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
Down();
|
}
|
|
//下移
|
private async void Down()
|
{
|
var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
return;
|
}
|
var rowHandle = this.gridView1.FocusedRowHandle;
|
if (rowHandle == _allBindingList.Count - 1)
|
{
|
TipFormHelper.ShowWarn("下移失败!");
|
return;
|
}
|
var current = this.gridView1.GetRow(rowHandle) as PlaceViewModel;
|
if (current == null)
|
{
|
return;
|
}
|
var nextHandle = rowHandle + 1;
|
var next = this.gridView1.GetRow(nextHandle) as PlaceViewModel;
|
if (next == null)
|
{
|
return;
|
}
|
var sorters = new List<Yw.Vmo.Sorter>();
|
sorters.Add(new Yw.Vmo.Sorter() { ID = current.ID, SortCode = next.SortCode });
|
sorters.Add(new Yw.Vmo.Sorter() { ID = next.ID, SortCode = current.SortCode });
|
var bol = await _placeBll.UpdateSorter(sorters);
|
if (!bol)
|
{
|
TipFormHelper.ShowError("下移失败!");
|
return;
|
}
|
var sortCode = current.SortCode;
|
current.SortCode = next.SortCode;
|
next.SortCode = sortCode;
|
_allBindingList = _allBindingList.OrderBy(x => x.SortCode).ToList();
|
this.placeViewModelBindingSource.DataSource = _allBindingList;
|
this.placeViewModelBindingSource.ResetBindings(false);
|
this.gridView1.FocusedRowHandle = nextHandle;
|
}
|
|
private void barBtnUpdateUseStatus_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
return;
|
}
|
var dlg = new SetUseStatusDlg();
|
dlg.SetBindingData((Yw.Model.eUseStatus)vm.UseStatus);
|
dlg.ReloadDataEvent += async (status) =>
|
{
|
var bol = await BLLFactory<PBS.BLL.Place>.Instance.UpdateUseStatus(vm.ID, status);
|
if (bol)
|
{
|
vm.UseStatus = (Yw.Vmo.eUseStatus)(int)status;
|
this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle);
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
}
|
}
|
}
|