| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- /* ==============================================================================
- * 功能描述:VMUploadModeManage
- * 创 建 者:Garrett
- * 创建日期:2018/5/15 9:43:01
- * ==============================================================================*/
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using SAGA.DotNetUtils;
- using SAGA.DotNetUtils.WPF;
- using SAGA.MBI.Calc;
- using SAGA.MBI.FileStream;
- using SAGA.MBI.Model;
- using SAGA.DotNetUtils.Logger;
- using SAGA.DotNetUtils.Others;
- using SAGA.MBI.Common;
- using SAGA.MBI.DataArrange;
- using SAGA.MBI.RequestData;
- using SAGA.MBIAssistData.BLL;
- using SAGA.MBI.Interaction;
- using SAGA.RevitUtils;
- namespace SAGA.MBI.WinView.Upload
- {
- /// <summary>
- /// VMUploadModeManage
- /// </summary>
- public class VMUploadModeManage : BaseViewModelStub
- {
- public VMUploadModeManage()
- {
- IsUploadModify = true;
- UploadFloors = new ObservableCollection<UploadFloor>();
- MTopologyGriphs = new ObservableCollection<MTopologyGriph>();
- }
- private ObservableCollection<UploadFloor> m_UploadFloors;
- /// <summary>
- /// 上传的楼层列表
- /// </summary>
- public ObservableCollection<UploadFloor> UploadFloors
- {
- get { return m_UploadFloors; }
- set
- {
- m_UploadFloors = value;
- NotifyPropertyChanged("UploadFloors");
- foreach (var uploadFloor in UploadFloors)
- {
- uploadFloor.NotifyParentAction += () => { MTopologyGriphs = MTopologyGriphs; };
- }
- }
- }
- private UploadFloor m_UploadFloorCur;
- /// <summary>
- /// 上传的楼层列表
- /// </summary>
- public UploadFloor UploadFloorCur
- {
- get { return m_UploadFloorCur; }
- set
- {
- m_UploadFloorCur = value;
- NotifyPropertyChanged("UploadFloorCur");
- }
- }
- private ObservableCollection<MTopologyGriph> m_MTopologyGriphs;
- /// <summary>
- /// 拓扑图列表
- /// </summary>
- public ObservableCollection<MTopologyGriph> MTopologyGriphs
- {
- get { return m_MTopologyGriphs; }
- set
- {
- m_MTopologyGriphs = value;
- NotifyPropertyChanged("MTopologyGriphs");
- }
- }
- private bool m_IsUpdate;
- /// <summary>
- /// 模型文件修正,还是更新
- /// </summary>
- public bool IsUploadModify
- {
- get { return m_IsUpdate; }
- set
- {
- m_IsUpdate = value;
- NotifyPropertyChanged("IsUploadModify");
- }
- }
- /// <summary>
- /// 上传
- /// </summary>
- /// <param name="param"></param>
- [Command]
- public void Upload(object param)
- {
- try
- {
- Window mainWin = param as Window;
- if (mainWin == null) return;
- if (IsUploadModify)
- {
- WinUploadConfirmModify win = new WinUploadConfirmModify();
- if (win.ShowDialog() == true)
- {
- var upfloors = UploadFloors.Where(t =>
- t.IsUpload && t.MFloor.FloorLock.LockState == MFloorLockState.LockBySelf).ToList();
- int i = 0, count = upfloors.Count();
- List<string> successList = new List<string>();
- List<string> failList = UploadFloors.Select(t => t.FloorName).ToList();
- foreach (var ufloor in upfloors)
- {
- try
- {
- i++;
- CalcContext context = ufloor.CalcContext;
- if (context == null || !context.Upload())
- {
- continue;
- }
- if (FloorFileOperate.UploadFile(ufloor.MFloor.ToString(), ufloor.MFloor.FullPath, count, i))
- {
- //请除Duty和BIMID的关系
- MBIAssistHelper.DeleteFloorRelation(ufloor.MFloor.Id);
- //解锁
- DalLock.UnLockFloor(ufloor.MFloor.Id, false);
- //上传成功后清除日志数据
- ProjectLogManager.ClearFiles(ufloor.MFloor.Id);
- //删除备份文件
- FloorFileOperate.Del000BakFile(ufloor.MFloor.FullPath);
- //上传完日志反馈
- successList.Add(ufloor.FloorName);
- failList.Remove(ufloor.FloorName);
- }
- }
- catch (Exception e)
- {
- MessageShowBase.Show(e);
- }
- }
- #region 上传底图文件
- Log4Net.Debug($"开始楼层底图上传");
- MBIModelInfoUpload.UpdateMbiInfo(upfloors.Select(f => f.CalcContext).ToList());
- Log4Net.Debug($"结束楼层底图上传");
- #endregion
- #region 上传完成添加提示信息
- //添加提示窗口
- UpLoadFileRequest.CloseUploadWindow(failList.Count == 0, false);
- string tip = "";
- if (successList.Count > 0)
- {
- tip = $"楼层{string.Join(",", successList)}上传成功!\r\n";
- }
- if (failList.Count > 0)
- {
- tip += $"楼层{string.Join(",", failList)}上传失败!请重新上传。";
- }
- if (successList.Count > 0 || failList.Count > 0)
- MessageShow.Infomation(tip);
- #endregion
- mainWin.Close();
- }
- }
- else
- {
- MessageShowBase.Infomation("功能正在开发。");
- //WinUploadConfirmReplace win = new WinUploadConfirmReplace();
- //if (win.ShowDialog() == true)
- //{
- //}
- }
- }
- catch (Exception e)
- {
- MessageShow.Show(e);
- }
- }
- public bool CanUpload(object param)
- {
- return UploadFloors != null && UploadFloors.Any(t => t.IsUpload);
- }
- /// <summary>
- /// 显示没有申请到锁,但已更改的楼层列表
- /// </summary>
- /// <param name="param"></param>
- [Command]
- public void ShowUnloadFloors(object param)
- {
- WinUnlockedFloorList win = new WinUnlockedFloorList();
- win.DataContext = this;
- win.ShowDialog();
- }
- public bool CanShowUnloadFloors(object param)
- {
- return true;
- }
- }
- }
|