From d5a2d7e66f9c8046bd88b8269e61aac5a2a265e2 Mon Sep 17 00:00:00 2001
From: duheng <2286773002@qq.com>
Date: 星期五, 28 三月 2025 10:49:55 +0800
Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0

---
 WinFrmUI/PBS.WinFrmUI/01-place/PlaceMgrPage.cs |  420 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 417 insertions(+), 3 deletions(-)

diff --git a/WinFrmUI/PBS.WinFrmUI/01-place/PlaceMgrPage.cs b/WinFrmUI/PBS.WinFrmUI/01-place/PlaceMgrPage.cs
index d86414c..ef9c567 100644
--- a/WinFrmUI/PBS.WinFrmUI/01-place/PlaceMgrPage.cs
+++ b/WinFrmUI/PBS.WinFrmUI/01-place/PlaceMgrPage.cs
@@ -1,15 +1,429 @@
-锘縰sing Yw.WinFrmUI;
+锘縰sing DevExpress.DataProcessing.InMemoryDataProcessor;
+using DevExpress.Utils.DragDrop;
+using DevExpress.XtraEditors;
+using HStation.WinFrmUI;
+using Yw;
+using Yw.WinFrmUI;
 
-namespace HStation.WinFrmUI.PBS
+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;
+                    _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 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();
+        }
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3