using DevExpress.CodeParser;
|
using DevExpress.Utils;
|
using DevExpress.XtraTreeList;
|
using HStation.WinFrmUI.Xhs;
|
using NetTaste;
|
using System;
|
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 = this.svgImg32[0];
|
this.PageTitle.SvgImageSize = new Size(24, 24);
|
this.Load += XhsProjectMgrPage_Load;
|
}
|
|
private void XhsProjectMgrPage_Load(object sender, EventArgs e)
|
{
|
repositoryItemImageComboBox1.Items.AddEnum(typeof(XhsProjectMgrViewModel.eFileStatus));
|
var a = typeof(XhsProjectMgrViewModel.eFileStatus);
|
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> _allProjectList = null;
|
|
private BLL.XhsProjectExtensions _bll = null;
|
|
private event Action ImportProjectCompletedEvent = null;
|
|
/// <summary>
|
/// 初始化数据源
|
/// </summary>
|
public override async void InitialDataSource()
|
{
|
base.InitialDataSource();
|
this.SetBindingData();
|
}
|
|
private async void SetBindingData()
|
{
|
_bll = new BLL.XhsProjectExtensions();
|
var allProjectList = await _bll.GetAll();
|
_allProjectList = new List<XhsProjectMgrViewModel>();
|
if (allProjectList != null && allProjectList.Count > 0)
|
{
|
foreach (var project in allProjectList)
|
{
|
var mapinfo = await new Yw.BLL.MapInfo().Get(HStation.Xhs.DataType.XhsProject, project.ID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
|
var bimFile = await BimfaceFileStateHelper.IsHaveBimFace(project.ID);
|
if (bimFile != null)
|
{
|
//如果文件状态为上传中则进行定时请求刷新状态
|
if (bimFile.FileStatus == 0)
|
{
|
Task.Factory.StartNew(() =>
|
{
|
StartTimer(300, bimFile.ID);
|
});
|
}
|
var vm = new XhsProjectMgrViewModel(project, true, bimFile.FileStatus, mapinfo);
|
_allProjectList.Add(vm);
|
}
|
else
|
{
|
var vm = new XhsProjectMgrViewModel(project, false, 8, mapinfo);
|
_allProjectList.Add(vm);
|
}
|
}
|
}
|
this.xhsProjectMgrViewModelBindingSource.DataSource = _allProjectList;
|
}
|
|
//计时器(刷新上传状态)
|
public void StartTimer(int intervalMilliseconds, long ID)
|
{
|
// 创建一个 Timer,它将在给定的时间间隔后触发回调方法
|
var timer = new System.Threading.Timer(TimerCallback, ID, Timeout.Infinite, intervalMilliseconds);
|
// 启动 Timer
|
timer.Change(intervalMilliseconds, intervalMilliseconds);
|
}
|
|
private async void TimerCallback(object state)
|
{
|
var tupleState = (Tuple<long, Timer>)state;
|
long iD = tupleState.Item1;
|
Timer timer = tupleState.Item2;
|
try
|
{
|
var stateResult = await BimfaceHelper.GetFileTranslateStatus(iD);
|
if (stateResult == 0)
|
{
|
this.SetBindingData();
|
}
|
else
|
{
|
timer.Dispose();
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
|
#region 当前
|
|
//获取当前
|
private XhsProjectMgrViewModel GetCurrentViewModel()
|
{
|
if (_allProjectList == null)
|
{
|
Yw.WinFrmUI.MessageBoxHelper.ShowError("数据初始化错误!");
|
return null;
|
}
|
if (_allProjectList == null)
|
{
|
Yw.WinFrmUI.MessageBoxHelper.ShowInfo("无数据");
|
return null;
|
}
|
var vm = this.treeList1.GetCurrentViewModel(_allProjectList);
|
if (vm == null)
|
{
|
Yw.WinFrmUI.MessageBoxHelper.ShowInfo("请选择数据行!");
|
return null;
|
}
|
return vm;
|
}
|
|
#endregion 当前
|
|
#region 基础操作
|
|
//添加
|
private async void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
/* var dlg = new AddProjectDlg();
|
dlg.ReloadDataEvent += async (rhs, mapinfo) =>
|
{
|
var bll = new BLL.XhsProjectExtensions();
|
var id = await bll.Insert(rhs);
|
if (id > 0)
|
{
|
rhs.ID = id;
|
var vmo = await _bll.GetByID(id);
|
_allProjectList.Add(new XhsProjectMgrViewModel(vmo, false));
|
this.xhsProjectMgrViewModelBindingSource.ResetBindings(false);
|
if (mapinfo != null)
|
{
|
mapinfo.ObjectID = id;
|
mapinfo.ObjectName = rhs.Name;
|
var mapinfoid = await new Yw.BLL.MapInfo().Insert(mapinfo);
|
if (mapinfoid < 0)
|
{
|
TipFormHelper.ShowError("地图信息添加错误");
|
}
|
}
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
*/
|
var dlg = new ImportXhsProjectDlg();
|
dlg.SetBindingData();
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
var prj = dlg.ViewModel;
|
if (prj.ProjectID == null)
|
return;
|
var vmo = await _bll.GetByID((long)prj.ProjectID);
|
if (vmo == null)
|
{
|
TipFormHelper.ShowError("导入失败!");
|
return;
|
}
|
else
|
{
|
TipFormHelper.ShowSucceed("导入成功!");
|
var mapinfo = await new Yw.BLL.MapInfo().Get(HStation.Xhs.DataType.XhsProject, (long)prj.ProjectID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
|
var bimFile = await BimfaceFileStateHelper.IsHaveBimFace((long)prj.ProjectID);
|
if (bimFile != null)
|
{
|
_allProjectList.Add(new XhsProjectMgrViewModel(vmo, true, bimFile.FileStatus, mapinfo));
|
}
|
else
|
{
|
_allProjectList.Add(new XhsProjectMgrViewModel(vmo, false, 8, mapinfo));
|
}
|
this.xhsProjectMgrViewModelBindingSource.ResetBindings(false);
|
}
|
}
|
}
|
|
//编辑
|
private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var currentVm = this.GetCurrentViewModel();
|
if (currentVm == null)
|
{
|
MessageBoxHelper.ShowWarning("请选择数据行!");
|
return;
|
}
|
var dlg = new EditProjectDlg();
|
dlg.SetBindingData(currentVm.ID);
|
dlg.ReloadDataEvent += async (rhs, mapinfo) =>
|
{
|
if (await _bll.Update(rhs))
|
{
|
currentVm.Reset(rhs);
|
this.xhsProjectMgrViewModelBindingSource.ResetBindings(false);
|
if (mapinfo != null)
|
{
|
// mapinfo.ObjectID = id;
|
mapinfo.ObjectName = rhs.Name;
|
var bol = await new Yw.BLL.MapInfo().Update(mapinfo);
|
if (!bol)
|
{
|
TipFormHelper.ShowError("地图信息编辑错误");
|
}
|
}
|
return true;
|
}
|
return false;
|
};
|
dlg.ShowDialog();
|
}
|
|
//删除
|
private async void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var currentVm = GetCurrentViewModel();
|
if (currentVm == null)
|
{
|
MessageBoxHelper.ShowWarning("请选择数据行!");
|
return;
|
}
|
if (MessageBoxHelper.IsClickOk($"确认删除数据行?", "提示"))
|
return;
|
var groupresult = await _bll.DeleteByID(currentVm.ID);
|
if (groupresult)
|
{
|
_allProjectList.Remove(currentVm);
|
this.xhsProjectMgrViewModelBindingSource.ResetBindings(false);
|
TipFormHelper.ShowSucceed("删除成功!");
|
}
|
else
|
{
|
TipFormHelper.ShowSucceed("删除失败!");
|
return;
|
}
|
}
|
|
//详细信息
|
private void barBtnInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
}
|
|
#endregion 基础操作
|
|
private void treeList1_CustomDrawRow(object sender, DevExpress.XtraTreeList.CustomDrawRowEventArgs e)
|
{
|
var a = repositoryItemButtonEdit1.ReadOnly = true;
|
}
|
|
private async void treeList1_RowCellClick(object sender, RowCellClickEventArgs e)
|
{
|
if (_allProjectList == null || _allProjectList.Count < 1)
|
return;
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
if (e.Column != this.ColViewBimface)
|
return;
|
if (!vm.IsHaveBimface)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
var guid = new PageGuid()
|
{
|
Modular = Yw.WinFrmUI.PageModular.Bimface,
|
MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab,
|
Function = Yw.WinFrmUI.PageFunction.ViewSchemeMgr,
|
TagName = $"{vm.ID}"
|
};
|
|
if (!IsExistPage(guid, true))
|
{
|
var page = new XhsSchemeMultiMgrPage();
|
await page.SetBindingData(vm.ID);
|
CreatePage(page, guid);
|
}
|
}
|
|
#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.SetBindingData();
|
}
|
|
#endregion 更多操作
|
|
//查看bimface模型
|
private async void barBtnViewBimface_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
if (!vm.IsHaveBimface)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
var guid = new PageGuid()
|
{
|
Modular = Yw.WinFrmUI.PageModular.Bimface,
|
MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab,
|
Function = Yw.WinFrmUI.PageFunction.ViewBimface3d,
|
TagName = $"{vm.ID}"
|
};
|
|
if (!IsExistPage(guid, true))
|
{
|
var page = new ViewXhsProjectBimfacePage();
|
await page.SetBindingData(vm.ID);
|
CreatePage(page, guid);
|
}
|
}
|
|
//查看水力模型
|
private void barBtnViewHydro_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_allProjectList == null || _allProjectList.Count < 1)
|
return;
|
var vm = GetCurrentViewModel();
|
if (vm == null)
|
{
|
return;
|
}
|
if (!vm.IsHaveBimface)
|
{
|
TipFormHelper.ShowWarn("请先上传文件再进行操作!");
|
return;
|
}
|
var guid = new PageGuid()
|
{
|
Modular = "Hydro",
|
MoudingType = Yw.WinFrmUI.Page.eMoudingType.Tab,
|
Function = "ViewModel",
|
};
|
if (!IsExistPage(guid, true))
|
{
|
var page = new HydroQ3dViewPage();
|
page.SetBindingData(vm.ID);
|
CreatePage(page, guid);
|
}
|
}
|
|
//导入文件
|
private async void BtnAddBimfaceFile_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
var currentVm = this.GetCurrentViewModel();
|
if (currentVm == null)
|
{
|
MessageBoxHelper.ShowWarning("请选择数据行!");
|
return;
|
}
|
if (currentVm.ModelState != XhsProjectMgrViewModel.eFileStatus.Noupload)
|
{
|
MessageBoxHelper.ShowWarning("已经存在模型文件!");
|
return;
|
}
|
var dlg = new ImportXhsProjectFileDlg();
|
dlg.SetBindingData(currentVm.ID);
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
var prj = dlg.ViewModel;
|
if (prj.ProjectID == null)
|
return;
|
var mapinfo = await new Yw.BLL.MapInfo().Get(HStation.Xhs.DataType.XhsProject, (long)prj.ProjectID, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
|
var bimFile = await BimfaceFileStateHelper.IsHaveBimFace((long)prj.ProjectID);
|
if (bimFile != null)
|
{
|
currentVm.Reset(currentVm, bimFile.FileStatus);
|
this.xhsProjectMgrViewModelBindingSource.ResetBindings(false);
|
}
|
}
|
}
|
}
|
}
|