using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.Windows.Input; using Prism.Services.Dialogs; using SWS.CAD.Base; using SWS.Commons; using SWS.Electrical.Models; using SWS.Model; using SWS.Service; using SWS.WPF.ViewModels; using Teigha.DatabaseServices; using Telerik.Windows.Controls; using Unity; using Visibility = System.Windows.Visibility; namespace SWS.Electrical.ViewModels { public class DialogAutoArrangeLayoutViewModel : DialogBase, IDialogAware { private ObservableCollection _listDrawings; /// /// 布置图列表 /// public ObservableCollection listDrawings { get { return this._listDrawings; } set { if (value != this._listDrawings) { this._listDrawings = value; RaisePropertyChanged(nameof(listDrawings)); } } } private ObservableCollection _listRange; /// /// 范围 /// public ObservableCollection listRange { get { return this._listRange; } set { if (value != this._listRange) { this._listRange = value; RaisePropertyChanged(nameof(listRange)); } } } private KeyValueModel _selectRange; /// /// 选中范围 /// public KeyValueModel selectRange { get { return this._selectRange; } set { if (value != this._selectRange) { this._selectRange = value; RaisePropertyChanged(nameof(selectRange)); } } } private ObservableCollection _listOperator; /// /// 判断 /// public ObservableCollection listOperator { get { return this._listOperator; } set { if (value != this._listOperator) { this._listOperator = value; RaisePropertyChanged(nameof(listOperator)); } } } private KeyValueModel _selectOperator; /// /// 选中判断 /// public KeyValueModel selectOperator { get { return this._selectOperator; } set { if (value != this._selectOperator) { this._selectOperator = value; RaisePropertyChanged(nameof(selectOperator)); } } } private string _inputValue = ""; /// /// 输入值 /// public string inputValue { get { return _inputValue; } set { _inputValue = value; OnPropertyChanged(nameof(inputValue)); } } /// /// 命令事件 /// public ICommand Command_StartDrawing { get; set; } PlotLayoutService _ServicePlotLayout; DrawingServce _ServiceDrawing; public DialogAutoArrangeLayoutViewModel() { Command_StartDrawing = new DelegateCommand(onStartDrawing); title = "布置图自动绘制"; _ServicePlotLayout = GlobalObject.container.Resolve(); _ServiceDrawing = GlobalObject.container.Resolve(); listDrawings = new ObservableCollection(); if (GlobalObj.treeDrawings.Any()) { foreach (var model in GlobalObj.treeDrawings) { if (model.Text == "布置图") { foreach (var item in model.ChildNodes) { if (item.NodeType == "1") { listDrawings.Add(new DtoDrawing() { DrawingFileID = item.ID, DrawingFileName = item.Text }); } } } } } var list = new ObservableCollection(); list.Add(new KeyValueModel { Key = "甲板号", Value = "甲板号" }); list.Add(new KeyValueModel { Key = "区域", Value = "区域" }); list.Add(new KeyValueModel { Key = "系统", Value = "系统" }); listRange = new ObservableCollection(list); selectRange = listRange[0]; listOperator = new ObservableCollection() { new KeyValueModel { Key = "等于", Value = "等于" } }; selectOperator = listOperator[0]; } public string Title => ""; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { Task.Factory.StartNew(() => { int i = 0; while (!listDrawings.Any()) { Thread.Sleep(100); foreach (var model in GlobalObj.treeDrawings) { if (model.Text == "布置图") { foreach (var item in model.ChildNodes) { if (item.NodeType == "1") { listDrawings.Add(new DtoDrawing() { DrawingFileID = item.ID, DrawingFileName = item.Text }); } } } } i++; if(i>500) { break; } } }); } public async void onStartDrawing(object o) { var listSelDwg = listDrawings.Where(a => a.isChecked == true).ToList(); if (!listSelDwg.Any()) { MessageBox.Show("请先选择布置图!"); } foreach (var item in listSelDwg) { var list = await _ServicePlotLayout.GetBasePointByDwg(selectRange.Value, selectOperator.Value, inputValue, item.DrawingFileID); } } } }