using Mapster;
|
|
namespace Yw.WinFrmUI
|
{
|
public partial class BimfaceFileMgrPage : DocumentPage
|
{
|
public BimfaceFileMgrPage()
|
{
|
InitializeComponent();
|
this.gridView1.SetNormalView();
|
this.gridView1.RegistCustomDrawRowIndicator();
|
|
this.PageTitle.Caption = "模型文件管理";
|
}
|
|
|
private List<BimfaceFileViewModel> _allBindingList = null;
|
private Lazy<Yw.BLL.BimfaceFile> _bllBimfaceFile = new(() => new Yw.BLL.BimfaceFile());
|
private Lazy<Yw.BLL.BimfaceFileRelation> _bllBimfaceFileRelation = new(() => new BLL.BimfaceFileRelation());
|
|
|
//加载数据
|
private async Task LoadData()
|
{
|
var allBimfaceFileList = await _bllBimfaceFile.Value.GetAll();
|
var allBimfaceFileRelationList = await _bllBimfaceFileRelation.Value.GetAll();
|
_allBindingList = new List<BimfaceFileViewModel>();
|
if (allBimfaceFileList != null && allBimfaceFileList.Count > 0)
|
{
|
foreach (var bimfaceFile in allBimfaceFileList)
|
{
|
var hasReason = allBimfaceFileRelationList == null ? false : allBimfaceFileRelationList.Exists(x => x.BimfaceFileID == bimfaceFile.ID);
|
var vm = new BimfaceFileViewModel(bimfaceFile, hasReason);
|
_allBindingList.Add(vm);
|
}
|
}
|
this.bimfaceFileViewModelBindingSource.DataSource = _allBindingList;
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
}
|
|
//获取当前对象
|
private BimfaceFileViewModel GetCurrentModel()
|
{
|
if (_allBindingList == null)
|
{
|
return null;
|
}
|
if (_allBindingList.Count < 1)
|
{
|
XtraMessageBox.Show("无数据");
|
return null;
|
}
|
var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
|
if (vm == null)
|
{
|
XtraMessageBox.Show("请选择数据行!");
|
return null;
|
}
|
return vm;
|
}
|
|
/// <summary>
|
///初始化数据
|
/// </summary>
|
public override async void InitialDataSource()
|
{
|
base.InitialDataSource();
|
await LoadData();
|
}
|
|
/// <summary>
|
/// 刷新数据
|
/// </summary>
|
public override async void RefreshData()
|
{
|
base.RefreshData();
|
await LoadData();
|
}
|
|
/// <summary>
|
/// 注册事件
|
/// </summary>
|
public override void RegistEvents()
|
{
|
base.RegistEvents();
|
//PageDataSync<Model.BimFile4Get>.DataOperationEvent += SyncBimFileData;
|
//PageDataSync<Model.BimFileMapper4Get>.DataOperationEvent += SyncBimFileMapperData;
|
}
|
|
/// <summary>
|
/// 取消注册事件
|
/// </summary>
|
public override void UnRegistEvents()
|
{
|
base.UnRegistEvents();
|
//PageDataSync<Model.BimFile4Get>.DataOperationEvent -= SyncBimFileData;
|
// PageDataSync<Model.BimFileMapper4Get>.DataOperationEvent -= SyncBimFileMapperData;
|
}
|
|
//同步模型文件数据
|
//private void SyncBimFileData(DocumentPage page, ePageDataOperation operation, Model.BimFile4Get model)
|
//{
|
// if (_allGetModels == null)
|
// return;
|
// if (page == this)
|
// return;
|
// switch (operation)
|
// {
|
// case ePageDataOperation.Insert:
|
// {
|
// _allGetModels.Add(model);
|
// this.bimFile4GetBindingSource.ResetBindings(false);
|
// }
|
// break;
|
// case ePageDataOperation.Update:
|
// {
|
// var rhs = _allGetModels.Find(x => x.ID == model.ID);
|
// var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Model.BimFile4Get, Model.BimFile4Get>()).CreateMapper();
|
// mapper.Map(model, rhs);
|
// this.bimFile4GetBindingSource.ResetBindings(false);
|
// }
|
// break;
|
// case ePageDataOperation.Delete:
|
// {
|
// _allGetModels.RemoveAll(x => x.ID == model.ID);
|
// this.bimFile4GetBindingSource.ResetBindings(false);
|
// }
|
// break;
|
// default: break;
|
// }
|
//}
|
|
//同步模型文件映射数据
|
//private void SyncBimFileMapperData(DocumentPage page, ePageDataOperation operation, Model.BimFileMapper4Get model)
|
//{
|
// if (_allGetMappers == null)
|
// return;
|
// if (page == this)
|
// return;
|
// switch (operation)
|
// {
|
// case ePageDataOperation.Insert:
|
// {
|
// _allGetMappers.Add(model);
|
// }
|
// break;
|
// case ePageDataOperation.Update:
|
// {
|
// var index = _allGetMappers.FindIndex(x => x.ID == model.ID);
|
// if (index >= 0)
|
// _allGetMappers.RemoveAt(index);
|
// _allGetMappers.Add(model);
|
// }
|
// break;
|
// case ePageDataOperation.Delete:
|
// {
|
// _allGetMappers.RemoveAll(x => x.ID == model.ID);
|
// }
|
// break;
|
// default: break;
|
// }
|
//}
|
|
|
|
//添加
|
private void Add()
|
{
|
if (_allBindingList == null)
|
{
|
return;
|
}
|
var dlg = new AddBimfaceFileDlg();
|
dlg.SetBindingData();
|
dlg.ReloadDataEvent += async (bimfaceFileId) =>
|
{
|
var bimfaceFile = await _bllBimfaceFile.Value.GetByID(bimfaceFileId);
|
var hasReason = await _bllBimfaceFileRelation.Value.IsExistByBimfaceFileID(bimfaceFileId);
|
var vm = new BimfaceFileViewModel(bimfaceFile, hasReason);
|
_allBindingList.Add(vm);
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
XtraMessageBox.Show("添加成功!");
|
};
|
dlg.ShowDialog();
|
}
|
|
//上传
|
private void Upload()
|
{
|
if (_allBindingList == null)
|
{
|
return;
|
}
|
var dlg = new UploadBimfaceFileDlg();
|
dlg.SetBindingData();
|
dlg.ReloadDataEvent += async (rhs) =>
|
{
|
var vm = new BimfaceFileViewModel();
|
vm.BimfaceId = string.Empty;
|
vm.Name = rhs.FileName;
|
vm.ModelType = eModelType.File;
|
vm.FileStatus = eFileStatus.Uploading;
|
vm.FormatType = rhs.FormatType;
|
var fileInfo = new System.IO.FileInfo(rhs.FilePath);
|
vm.FileSuffix = fileInfo.Extension;
|
vm.FileSize = string.Format("{0}MB", System.Math.Ceiling(fileInfo.Length / 1024.0 / 1024.0));
|
|
_allBindingList.Add(vm);
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
var bimfaceClient = Yw.BIMFaceClient.Instance(Settings.BimfaceParasHelper.Bimface.AppKey, Settings.BimfaceParasHelper.Bimface.AppSecret);
|
var uploadTask = Task.Run(() => bimfaceClient.UploadFileExByPolicy(rhs.FilePath, rhs.FileName));
|
await uploadTask;
|
|
if (uploadTask.Result < 1)
|
{
|
_allBindingList.Remove(vm);
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
this.FindForm().ShowAlertInfo("模型文件上传提示", $"{rhs.FileName} 上传失败!");
|
return;
|
}
|
|
vm.BimfaceId = uploadTask.Result.ToString();
|
vm.FileStatus = eFileStatus.UploadSucceed;
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
|
var addModel = vm.Adapt<BimfaceFileViewModel, Yw.Dto.AddBimfaceFileInput>();
|
vm.ID = await _bllBimfaceFile.Value.Insert(addModel);
|
if (vm.ID < 1)
|
{
|
_allBindingList.Remove(vm);
|
this.FindForm().ShowAlertInfo("模型文件上传提示", $"{rhs.FileName} 保存失败!");
|
}
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
};
|
dlg.ShowDialog();
|
}
|
|
//转换BIM
|
private async void TranslateBim()
|
{
|
if (_allBindingList == null)
|
{
|
return;
|
}
|
var vm = GetCurrentModel();
|
if (vm == null)
|
{
|
return;
|
}
|
if (vm.FileStatus != eFileStatus.UploadSucceed)
|
{
|
XtraMessageBox.Show("此功能仅适用于上传成功的模型文件!");
|
return;
|
}
|
if (vm.FormatType != eFormatType._3D)
|
{
|
XtraMessageBox.Show("此功能仅适用于3D模型文件!");
|
return;
|
}
|
if (vm.FileSuffix.ToLower() != ".rvt")
|
{
|
XtraMessageBox.Show("此功能仅适用于rvt模型文件!");
|
return;
|
}
|
var bimfaceClient = Yw.BIMFaceClient.Instance(Settings.BimfaceParasHelper.Bimface.AppKey, Settings.BimfaceParasHelper.Bimface.AppSecret);
|
var task = Task.Run(() => bimfaceClient.TranslateRvtFileReturnStatus(vm.BimfaceId, eRvtTranslateStyle.Real));
|
await task;
|
|
if (task.Result == eTranslateStatus.Processing)
|
{
|
vm.FileStatus = eFileStatus.Converting;
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
if (!await _bllBimfaceFile.Value.UpdateFileStatus(vm.ID, (int)vm.FileStatus))
|
{
|
this.FindForm().ShowAlertInfo("模型文件转换", $"{vm.Name}:更新失败");
|
}
|
this.FindForm().ShowAlertInfo("模型文件转换提示", "模型文件转换耗时较长,请耐心等待...");
|
|
var statusTask = Task.Run(async () =>
|
{
|
while (vm.FileStatus == eFileStatus.Converting)
|
{
|
Thread.Sleep(3000);
|
var result = await bimfaceClient.GetFileTranslateStatusReturnStatus(vm.BimfaceId);
|
if (result == eTranslateStatus.Processing)
|
{
|
vm.FileStatus = eFileStatus.ConvertSucceed;
|
}
|
}
|
});
|
await statusTask;
|
}
|
vm.FileStatus = eFileStatus.ConvertSucceed;
|
this.bimfaceFileViewModelBindingSource.ResetBindings(false);
|
if (!await _bllBimfaceFile.Value.UpdateFileStatus(vm.ID, (int)vm.FileStatus))
|
{
|
this.FindForm().ShowAlertInfo("模型文件转换", $"{vm.Name}:更新失败");
|
}
|
}
|
|
//编辑
|
private void EidtBim()
|
{
|
//if (_allGetModels == null)
|
// return;
|
//var getModel = GetCurrentModel();
|
//if (getModel.FileStatus == eFileStatus.上传中)
|
//{
|
// XtraMessageBox.Show(eFileStatus.上传中.ToString());
|
// return;
|
//}
|
//var mapper = new MapperConfiguration(cfg => cfg.CreateMap<Model.BimFile4Get, Model.BimFile4Update>()).CreateMapper();
|
//var updateModel = mapper.Map<Model.BimFile4Get, Model.BimFile4Update>(getModel);
|
//var dlg = new EditBimFileBaseInfoDlg();
|
//dlg.SetBindingData(updateModel);
|
//dlg.ReloadDataEvent += (rhs) =>
|
//{
|
// mapper = new MapperConfiguration(cfg => cfg.CreateMap<Model.BimFile4Update, Model.BimFile4Get>()).CreateMapper();
|
// getModel = mapper.Map<Model.BimFile4Update, Model.BimFile4Get>(rhs, getModel);
|
// this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle);
|
// XtraMessageBox.Show("更新成功!");
|
// PageDataSync<Model.BimFile4Get>.Commit(this, ePageDataOperation.Update, getModel);
|
//};
|
//dlg.ShowDialog();
|
}
|
|
//删除
|
private void DeleteBim()
|
{
|
//if (_allGetModels == null)
|
// return;
|
//var getModel = GetCurrentModel();
|
//if (getModel.FileStatus == eFileStatus.上传中 || getModel.FileStatus == eFileStatus.转换中)
|
//{
|
// XtraMessageBox.Show(getModel.FileStatus.ToString());
|
// return;
|
//}
|
//if (DevExpress.XtraEditors.XtraMessageBox.Show("是否要删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
|
//{
|
// if (!GlobelParas.BimfaceClient.DeleteFile(getModel.BimfaceID))
|
// {
|
// XtraMessageBox.Show("删除失败!");
|
// return;
|
// }
|
// if (!BLLFactory<BLL.BimFile>.Instance.DeleteByID(getModel.ID))
|
// {
|
// XtraMessageBox.Show("删除失败!");
|
// return;
|
// }
|
// _allGetModels.Remove(getModel);
|
// this.bimFile4GetBindingSource.ResetBindings(false);
|
// XtraMessageBox.Show("删除成功!");
|
// PageDataSync<Model.BimFile4Get>.Commit(this, ePageDataOperation.Delete, getModel);
|
//}
|
}
|
|
//显示详细信息
|
private void ShowDetail()
|
{
|
XtraMessageBox.Show("开发中...");
|
}
|
|
//本地浏览
|
private void ShowLocalView()
|
{
|
//if (_allGetModels == null)
|
// return;
|
//var getModel = GetCurrentModel();
|
//if (getModel == null)
|
// return;
|
//new BimfaceViewHelper().ShowBimfaceLocalView(getModel, IsExistPage, CreatePage);
|
}
|
|
//网页浏览
|
private void ShowWebView()
|
{
|
//if (_allGetModels == null)
|
// return;
|
//var getModel = GetCurrentModel();
|
//if (getModel == null)
|
// return;
|
//new BimfaceViewHelper().ShowBimfaceWebView(getModel);
|
}
|
|
//手机浏览
|
private void ShowPhoneView()
|
{
|
//if (_allGetModels == null)
|
// return;
|
//var getModel = GetCurrentModel();
|
//if (getModel == null)
|
// return;
|
//new BimfaceViewHelper().ShowBimfacePhoneView(getModel);
|
}
|
|
//显示模型文件设置界面
|
private void ShowBimFileSettings()
|
{
|
//if (_allGetModels == null)
|
// return;
|
//var getModel = GetCurrentModel();
|
//if (getModel == null)
|
// return;
|
//new BimfaceViewHelper().ShowBimFileSettings(getModel, IsExistPage, CreatePage);
|
}
|
|
|
//自定义显示名称
|
private void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
|
{
|
|
}
|
|
private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
|
{
|
//var row = this.gridView1.GetRow(e.FocusedRowHandle) as BimFile4Get;
|
//var enable = row == null ? false : true;
|
//this.barBtnTranslate.Enabled = enable;
|
//this.barBtnEdit.Enabled = enable;
|
//this.barBtnDelete.Enabled = enable;
|
//this.barBtnDetail.Enabled = enable;
|
//this.barBtnLocal.Enabled = enable;
|
//this.barBtnWeb.Enabled = enable;
|
//this.barBtnPhone.Enabled = enable;
|
}
|
|
private void gridView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
|
{
|
//if (e.Column == this.colSet && e.IsGetData)
|
//{
|
// var row = e.Row as BimFile4Get;
|
// if (_allGetMappers != null)
|
// {
|
// var mapping = _allGetMappers.Find(x => x.BimFileID == row.ID);
|
// if (mapping == null)
|
// e.Value = "否";
|
// else
|
// e.Value = "是";
|
// }
|
// else
|
// e.Value = "否";
|
//}
|
}
|
|
private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
|
{
|
if (e.Column == this.colDetail)
|
{
|
ShowDetail();
|
}
|
}
|
|
|
#region Ribbon
|
private void barBtnAdminAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
Add();
|
}
|
|
private void barBtnUpload_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
Upload();
|
}
|
|
private void barBtnTranslate_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
TranslateBim();
|
}
|
|
private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
EidtBim();
|
}
|
|
private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
DeleteBim();
|
}
|
|
private void barBtnDetail_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
ShowDetail();
|
}
|
|
private void barBtnLocal_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
ShowLocalView();
|
}
|
|
private void barBtnWeb_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
ShowWebView();
|
}
|
|
private void barBtnPhone_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
ShowPhoneView();
|
}
|
|
//模型设置
|
private void barBtnSetBim_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
ShowBimFileSettings();
|
}
|
|
private void barBtnReloadData_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
RefreshData();
|
}
|
|
private void gridControl1_Click(object sender, EventArgs e)
|
{
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
}
|
}
|