using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using SWS.CAD.ViewModels.myViewModelBase; using System.Windows.Input; using Telerik.Windows.Controls; using Prism.Ioc; using SWS.CAD.Views.Dialog; using Prism.Services.Dialogs; using SWS.Commons; using SWS.Model; using System.Windows; using SWS.Service; using Unity; namespace SWS.CAD.ViewModels { public class DialogCablePreAssignPreviewViewModel : DialogBase, IDialogAware { #region 字段 private ObservableCollection _PreAssignCables = new ObservableCollection(); /// /// 端子排参数信息列表 /// public ObservableCollection PreAssignCables { get { return _PreAssignCables; } set { _PreAssignCables = value; RaisePropertyChanged(nameof(PreAssignCables)); } } #endregion IOModuleService _iOModuleService; public DialogCablePreAssignPreviewViewModel() { _iOModuleService = GlobalObject.container.Resolve(); } public string Title => ""; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } private List CablePreAssigns; public async void OnDialogOpened(IDialogParameters parameters) { //title = parameters.GetValue(GlobalObject.dialogPar.title.ToString()); title = "待分配的信号预览和统计"; _PreAssignCables = parameters.GetValue>(GlobalObject.dialogPar.para1.ToString()); } public override async void ExecuteOKCommandAsync(object parameter) { bool isShowDialog = false; List cableids = new List(); foreach (var preAssignCable in PreAssignCables) { if (preAssignCable.IsChecked) { cableids.Add(preAssignCable.CableId); } } if (cableids != null && cableids.Count() > 0) { bool AcceptNearbyPanel; MessageBoxResult result = System.Windows.MessageBox.Show($"遇到I/O类型不合适的采集箱,是否需要自动更换就近的采集箱", "KunHengCAD", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { AcceptNearbyPanel = true; } else { AcceptNearbyPanel = false; } var ResHttp = await _iOModuleService.AutoAssignCable2channel_step1(cableids, AcceptNearbyPanel) as learunHttpRes; if (ResHttp.code == 200) { isShowDialog = true; } else { if (AcceptNearbyPanel) { result = System.Windows.MessageBox.Show($"{ResHttp.info}", "KunHengCAD", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { return; } else { isShowDialog = true; } } else { var info = ResHttp.info; // 找到第一个句号的位置 int firstPeriodIndex = info.IndexOf('。'); if (firstPeriodIndex >= 0) { // 从第一个句号后开始找第二个句号 int secondPeriodIndex = info.IndexOf('。', firstPeriodIndex + 1); if (secondPeriodIndex >= 0) { // 截取到第二个句号(包括句号) info = info.Substring(0, secondPeriodIndex + 1); } } System.Windows.MessageBox.Show($"{info}", "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; } } if (isShowDialog) { //打开窗体 IDialogParameters para = new Prism.Services.Dialogs.DialogParameters(); para.Add(GlobalObject.dialogPar.para1.ToString(), PreAssignCables); var _dialogService = GlobalObject._prismContainer.Resolve(); _dialogService.ShowDialog(nameof(DialogCablePreAssignResult), para, async (RES) => { if (RES.Result == ButtonResult.Yes) { } else if (RES.Result == ButtonResult.No) { } }); } } else { System.Windows.MessageBox.Show("未勾选预分配电缆", "KunHengCAD", MessageBoxButton.OK, MessageBoxImage.Warning); return; } //返回的结果 //IDialogParameters res = new Prism.Services.Dialogs.DialogParameters(); //res.Add(GlobalObject.dialogPar.para1.ToString(), SelectedStripParametersInfo); //RequestClose.Invoke(new DialogResult(ButtonResult.Yes, res)); } public override void ExecuteCloseCommand(object parameter) { if (parameter as string == "ClickNo") { DialogResult res = new DialogResult(ButtonResult.No); RequestClose.Invoke(res); } else { RequestClose.Invoke(new DialogResult(ButtonResult.Cancel)); } this.Dispose(); } #region 方法 public ICommand EditEndCmd => new DelegateCommand(EditEnd); /// /// 编辑结束事件 /// /// public virtual void EditEnd(object parameter) { //做个标记表示该项修改过 } #region 按钮 public ICommand ButtonCommand => new DelegateCommand(Button_Click); /// /// 页面左侧按钮 /// /// public virtual async void Button_Click(object parameter) { if (parameter.ToString().Equals("全选")) { foreach (var item in PreAssignCables) { item.IsChecked = true; } return; } if (parameter.ToString().Equals("清空")) { foreach (var item in PreAssignCables) { item.IsChecked = false; } return; } } #endregion #endregion } public class PreAssignCable : DialogBase { #region 页面渲染字段 private string _CableId; public string CableId { get { return _CableId; } set { _CableId = value; } } private int _Index; /// /// 序号 /// public int Index { get { return _Index; } set { _Index = value; } } private bool _IsChecked; /// /// 选择 /// public bool IsChecked { get { return _IsChecked; } set { _IsChecked = value; RaisePropertyChanged(nameof(IsChecked)); } } private string _TagNumber; /// /// 电缆位号 /// public string TagNumber { get { return _TagNumber; } set { _TagNumber = value; } } private string _PreAssignIOType; /// /// 预分配的信号类型 /// public string PreAssignIOType { get { return _PreAssignIOType; } set { _PreAssignIOType = value; } } private string _CableClass; /// /// 是否为母线 /// public string CableClass { get { return _CableClass; } set { _CableClass = value; } } private string _ToPanel_TagNumber; /// /// 预分配的系统柜 /// public string ToPanel_TagNumber { get { return _ToPanel_TagNumber; } set { _ToPanel_TagNumber = value; } } public PreAssignCable() { } public PreAssignCable(ec_Cable ec_Cable) { CableId = ec_Cable.CableID; TagNumber = ec_Cable.TagNumber; PreAssignIOType = ec_Cable.PreAssignIOType; CableClass = ec_Cable.CableClass.Equals("homerun") ? "是" : "否"; ToPanel_TagNumber = ec_Cable.ToPanel != null ? ec_Cable.ToPanel.TagNumber : null; } #endregion } }