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); this.gridView1.Columns["RegionID"].GroupIndex = 0; this.gridView1.GroupFormat = "{1}"; behaviorManager1.Detach(gridView1); } private List _allBindingList; private BLL.Place _placeBll = new(); public override void InitialDataSource() { SetBindingData(); } private async void SetBindingData() { _allBindingList = new List(); var allList = await _placeBll.GetAll(); if (allList != null) { foreach (var item in allList) { var mapInfo = await BLLFactory.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.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(this.gridView1); } else { behaviorManager1.Detach(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(); 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(); 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(); 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.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(); } } }