using DevExpress.Utils;
|
using DevExpress.XtraTreeList;
|
using HStation.WinFrmUI.Xhs;
|
using Timer = System.Threading.Timer;
|
|
namespace HStation.WinFrmUI
|
{
|
public partial class XhsProjectMgrPage : DocumentPage
|
{
|
public XhsProjectMgrPage()
|
{
|
InitializeComponent();
|
this.treeList1.InitialMultiColSettings();
|
this.treeList1.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Default;
|
this.PageTitle.Caption = "项目管理";
|
this.PageTitle.HeaderSvgImage = XhsMainSvgImageHelper.Project;
|
this.PageTitle.SvgImageSize = new Size(24, 24);
|
this.Load += XhsProjectMgrPage_Load;
|
}
|
|
private void XhsProjectMgrPage_Load(object sender, EventArgs e)
|
{
|
repositoryItemImageComboBox1.Items.AddEnum(typeof(eXhsProjectStatus));
|
repositoryItemImageComboBox1.Items[0].ImageIndex = 0;
|
repositoryItemImageComboBox1.Items[1].ImageIndex = 1;
|
repositoryItemImageComboBox1.Items[2].ImageIndex = 2;
|
repositoryItemImageComboBox1.Items[3].ImageIndex = 3;
|
repositoryItemImageComboBox1.Items[4].ImageIndex = 4;
|
repositoryItemImageComboBox1.Items[5].ImageIndex = 5;
|
repositoryItemImageComboBox1.Items[6].ImageIndex = 6;
|
repositoryItemImageComboBox1.Items[7].ImageIndex = 7;
|
repositoryItemImageComboBox1.Items[8].ImageIndex = 8;
|
}
|
|
private List<XhsProjectMgrViewModel> _allBindingList = null;
|
|
private BLL.XhsProjectExtensions _bll = null;
|
|
private event Action ImportProjectCompletedEvent = null;
|
|
/// <summary>
|
/// 初始化数据源
|
/// </summary>
|
public override void InitialDataSource()
|
{
|
base.InitialDataSource();
|
this.barBtnViewBimface.ImageOptions.SvgImage = Yw.WinFrmUI.BimfaceMainSvgImageHelper.Bimface;
|
this.barBtnViewHydro.ImageOptions.SvgImage = Yw.WinFrmUI.HydroMainSvgImageHelper.Hydro;
|
this.barBtnSetMap.ImageOptions.SvgImage = XhsMainSvgImageHelper.Map;
|
InitialData();
|
}
|
|
//初始化数据
|
private async void InitialData()
|
{
|
var overlay = this.ShowOverlay();
|
_allBindingList = new List<XhsProjectMgrViewModel>();
|
var allProjectList = await BLLFactory<HStation.BLL.XhsProjectExtensions>.Instance.GetAll();
|
if (allProjectList != null && allProjectList.Count > 0)
|
{
|
foreach (var project in allProjectList)
|
{
|
var mapInfo = await BLLFactory<Yw.BLL.MapInfo>.Instance
|
.Get(HStation.Xhs.DataType.XhsProject, project.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
|
Yw.Vmo.BimfaceFileVmo bimfaceFile = null;
|
var projectSite = project.SiteList?.FirstOrDefault();
|
if (projectSite != null)
|
{
|
var bimfaceFileRelation = await BLLFactory<Yw.BLL.BimfaceFileRelation>.Instance
|
.GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation); ;
|
if (bimfaceFileRelation != null)
|
{
|
bimfaceFile = await BLLFactory<Yw.BLL.BimfaceFile>.Instance
|
.GetByID(bimfaceFileRelation.BimfaceFileID);
|
}
|
}
|
var vm = new XhsProjectMgrViewModel(project, mapInfo, bimfaceFile);
|
_allBindingList.Add(vm);
|
}
|
}
|
this.xhsProjectMgrViewModelBindingSource.DataSource = _allBindingList;
|
this.xhsProjectMgrViewModelBindingSource.ResetBindings(false);
|
overlay.Close();
|
}
|
|
/// <summary>
|
/// 刷新数据
|
/// </summary>
|
public override void RefreshData()
|
{
|
base.RefreshData();
|
InitialData();
|
}
|
|
#region 当前
|
|
//获取当前
|
private XhsProjectMgrViewModel GetCurrentViewModel()
|
{
|
if (_allBindingList == null)
|
{
|
TipFormHelper.ShowError("数据初始化错误!");
|
return null;
|
}
|
if (_allBindingList.Count < 1)
|
{
|
TipFormHelper.ShowWarn("无数据!");
|
return null;
|
}
|
var vm = this.treeList1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
TipFormHelper.ShowWarn("请选择数据行!");
|
return null;
|
}
|
return vm;
|
}
|
|
#endregion
|
|
#region 基础操作
|
|
//添加
|
private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_allBindingList == null)
|
{
|
TipFormHelper.ShowError("数据初始化失败!");
|
return;
|
}
|
var dlg = new AddXhsProjectDlg();
|
dlg.ReloadDataEvent += (project) =>
|
{
|
var vm = new XhsProjectMgrViewModel(project, null, null);
|
_allBindingList.Add(vm);
|
this.treeList1.RefreshDataSource();
|
};
|
dlg.SetBindingData();
|
dlg.ShowDialog();
|
}
|
|
//编辑
|
private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
var dlg = new EditXhsProjectDlg();
|
dlg.ReloadDataEvent += (project) =>
|
{
|
vm.Reset(project, vm.MapInfo, vm.BimfaceFile);
|
this.treeList1.RefreshNode(this.treeList1.FocusedNode);
|
};
|
dlg.SetBindingData(vm.Project);
|
dlg.ShowDialog();
|
}
|
|
//删除
|
private async void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = this.treeList1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
TipFormHelper.ShowWarn("请选择项目!");
|
return;
|
}
|
var result = XtraMessageBox.Show("是否确认删除此项目?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes;
|
if (!result)
|
{
|
return;
|
}
|
if (vm.Project.SiteList != null && vm.Project.SiteList.Count > 0)
|
{
|
foreach (var projectSite in vm.Project.SiteList)
|
{
|
var allSchemeList = await BLLFactory<HStation.BLL.XhsScheme>.Instance.GetBySiteID(projectSite.ID);
|
if (allSchemeList != null && allSchemeList.Count > 0)
|
{
|
foreach (var scheme in allSchemeList)
|
{
|
var schemeRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
|
.GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsScheme, scheme.ID, HStation.Xhs.Purpose.Simulation);
|
if (schemeRelation != null)
|
{
|
if (!await BLLFactory<Yw.BLL.HydroModelRelation>.Instance.DeleteAllByID(schemeRelation.ID))
|
{
|
TipFormHelper.ShowError("项目方案模型删除失败,请重试!");
|
return;
|
}
|
}
|
if (!await BLLFactory<HStation.BLL.XhsScheme>.Instance.DeleteByID(scheme.ID))
|
{
|
TipFormHelper.ShowError("项目方案删除失败,请重试!");
|
return;
|
}
|
}
|
}
|
var bimfaceFileRelation = await BLLFactory<Yw.BLL.BimfaceFileRelation>.Instance
|
.GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation);
|
if (bimfaceFileRelation != null)
|
{
|
if (!await BLLFactory<Yw.BLL.BimfaceFileRelation>.Instance.DeleteAllByID(bimfaceFileRelation.ID))
|
{
|
TipFormHelper.ShowError("项目三维模型删除失败,请重试!");
|
return;
|
}
|
}
|
var hydroRelation = await BLLFactory<Yw.BLL.HydroModelRelation>.Instance
|
.GetDefaultByObjectTypeAndObjectIDOfPurpose(HStation.Xhs.DataType.XhsProjectSite, projectSite.ID, HStation.Xhs.Purpose.Simulation);
|
if (hydroRelation != null)
|
{
|
if (!await BLLFactory<Yw.BLL.HydroModelRelation>.Instance.DeleteAllByID(hydroRelation.ID))
|
{
|
TipFormHelper.ShowError("项目模型删除失败,请重试!");
|
return;
|
}
|
}
|
if (!await BLLFactory<HStation.BLL.XhsProjectSite>.Instance.DeleteByID(projectSite.ID))
|
{
|
TipFormHelper.ShowError("项目站删除失败,请重试!");
|
return;
|
}
|
}
|
}
|
|
if (vm.MapInfo != null)
|
{
|
if (!await BLLFactory<Yw.BLL.MapInfo>.Instance.DeleteByObjectTypeAndObjectID(HStation.Xhs.DataType.XhsProject, vm.Project.ID))
|
{
|
TipFormHelper.ShowError("项目地图位置删除失败,请重试!");
|
return;
|
}
|
}
|
|
var bol = await BLLFactory<HStation.BLL.XhsProject>.Instance.DeleteByID(vm.Project.ID);
|
if (!bol)
|
{
|
TipFormHelper.ShowError("项目删除失败,请重试!");
|
return;
|
}
|
|
_allBindingList.Remove(vm);
|
this.xhsProjectMgrViewModelBindingSource.ResetBindings(false);
|
TipFormHelper.ShowSucceed("项目删除成功!");
|
}
|
|
//地图
|
private void barBtnSetMap_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
var dlg = new SetXhsProjectMapDlg();
|
dlg.ReloadDataEvent += (project, mapInfo) =>
|
{
|
vm.Reset(project, mapInfo, vm.BimfaceFile);
|
this.treeList1.RefreshNode(this.treeList1.FocusedNode);
|
};
|
dlg.SetBindingData(vm.Project, vm.MapInfo);
|
dlg.ShowDialog();
|
}
|
|
//详细信息
|
private void barBtnInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
var dlg = new ViewXhsProjectDlg();
|
dlg.SetBindingData(vm.Project);
|
dlg.ShowDialog();
|
}
|
|
//导入文件
|
private void BtnAddBimfaceFile_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_allBindingList == null)
|
{
|
TipFormHelper.ShowError("数据初始化失败!");
|
return;
|
}
|
var dlg = new ImportXhsProjectDlg();
|
dlg.SetBindingData();
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
var viewModel = dlg.ViewModel;
|
var project = viewModel.Project;
|
if (project == null)
|
{
|
return;
|
}
|
if (project.ID < 1)
|
{
|
return;
|
}
|
var mapInfo = viewModel.MapInfo;
|
if (mapInfo != null)
|
{
|
if (mapInfo.ID < 1)
|
{
|
mapInfo = null;
|
}
|
}
|
var bimfaceFile = viewModel.BimfaceFile;
|
if (bimfaceFile != null)
|
{
|
if (bimfaceFile.ID < 1)
|
{
|
bimfaceFile = null;
|
}
|
}
|
var vm = new XhsProjectMgrViewModel(project, mapInfo, bimfaceFile);
|
_allBindingList.Add(vm);
|
this.treeList1.RefreshDataSource();
|
}
|
}
|
|
#endregion
|
|
#region 模型
|
|
//查看bimface模型
|
private void barBtnViewBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
if (vm.BimfaceFile == null)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
if (vm.ModelStatus < eXhsProjectStatus.UploadSucceed)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
if (vm.ModelStatus < eXhsProjectStatus.ConvertSucceed)
|
{
|
TipFormHelper.ShowWarn("模型正在轻量化,请稍后重试!");
|
return;
|
}
|
|
var guid = new PageGuid()
|
{
|
Modular = XhsFunctionHelper.Modular,
|
MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab,
|
Function = XhsFunctionHelper.ProjectBimfaceView,
|
TagName = $"{vm.ID}"
|
};
|
|
if (!IsExistPage(guid, true))
|
{
|
var page = new XhsProjectBimfaceViewPage();
|
page.SetBindingData(vm.Project);
|
CreatePage(page, guid);
|
}
|
}
|
|
//查看水力模型
|
private void barBtnViewHydro_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
if (vm.BimfaceFile == null)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
if (vm.ModelStatus < eXhsProjectStatus.UploadSucceed)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
if (vm.ModelStatus < eXhsProjectStatus.ConvertSucceed)
|
{
|
TipFormHelper.ShowWarn("模型正在轻量化,请稍后重试!");
|
return;
|
}
|
|
var guid = new PageGuid()
|
{
|
Modular = XhsFunctionHelper.Modular,
|
MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab,
|
Function = XhsFunctionHelper.ProjectQ3dView,
|
TagName = $"{vm.ID}"
|
};
|
|
if (!IsExistPage(guid, true))
|
{
|
var page = new XhsProjectQ3dViewPage();
|
page.SetBindingData(vm.Project);
|
CreatePage(page, guid);
|
}
|
}
|
|
#endregion
|
|
#region 更多操作
|
|
//全部展开
|
private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.treeList1.ExpandAll();
|
}
|
|
//全部折叠
|
private void barBtnCollpseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.treeList1.CollapseAll();
|
}
|
|
/// <summary>
|
/// 树线
|
/// </summary>
|
private void barCkTreeLine_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.treeList1.OptionsView.ShowTreeLines = this.barCkTreeLine.Checked ? DefaultBoolean.True : DefaultBoolean.False;
|
}
|
|
//查询
|
private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.treeList1.OptionsFind.AlwaysVisible = !this.treeList1.OptionsFind.AlwaysVisible;
|
}
|
|
//刷新
|
private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.RefreshData();
|
}
|
|
#endregion 更多操作
|
|
#region 树事件
|
|
//模拟
|
private void treeList1_RowCellClick(object sender, RowCellClickEventArgs e)
|
{
|
if (e.Column != this.colSimulation)
|
{
|
return;
|
}
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
if (vm.BimfaceFile == null)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
if (vm.ModelStatus < eXhsProjectStatus.UploadSucceed)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
if (vm.ModelStatus < eXhsProjectStatus.ConvertSucceed)
|
{
|
TipFormHelper.ShowWarn("模型正在轻量化,请稍后重试!");
|
return;
|
}
|
var guid = new PageGuid()
|
{
|
Modular = XhsFunctionHelper.Modular,
|
MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab,
|
Function = XhsFunctionHelper.ProjectSimulation,
|
TagName = $"{vm.ID}"
|
};
|
|
if (!IsExistPage(guid, true))
|
{
|
var page = new XhsProjectSimulationMgrPage();
|
page.SetBindingData(vm.Project);
|
CreatePage(page, guid);
|
}
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
}
|