433 lines
14 KiB
C#
Raw Permalink Normal View History

2025-08-15 16:34:31 +08:00
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows;
using Prism.Common;
using Prism.Dialogs;
using SWS.CAD.Services;
using SWS.CAD.ViewModels.myViewModelBase;
using SWS.CAD.Views.CustomControl;
using SWS.CAD.Models;
using Bricscad.EditorInput;
using System.Windows.Input;
using Telerik.Windows.Controls;
using Teigha.DatabaseServices.Filters;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
using System.Web.UI.WebControls;
using Unity;
namespace SWS.CAD.ViewModels
{
public class DialogCableConfigViewModel : DialogBase, IDialogAware
{
#region
private ObservableCollection<CableSetInfo> _CableSetInfos = new ObservableCollection<CableSetInfo>();
/// <summary>
/// 端子排参数信息列表
/// </summary>
public ObservableCollection<CableSetInfo> CableSetInfos
{
get { return _CableSetInfos; }
set
{
_CableSetInfos = value;
RaisePropertyChanged(nameof(CableSetInfos));
}
}
private string _StartCable;
/// <summary>
/// 起始电缆
/// </summary>
public string StartCable
{
get { return _StartCable; }
set { _StartCable = value; RaisePropertyChanged(nameof(StartCable)); }
}
private string _StartChannel;
/// <summary>
/// 起始通道
/// </summary>
public string StartChannel
{
get { return _StartChannel; }
set { _StartChannel = value; RaisePropertyChanged(nameof(StartChannel)); }
}
#region
private List<string> _StartCables = new List<string>();
/// <summary>
/// 起始电缆下拉列表
/// </summary>
public List<string> StartCables
{
get { return _StartCables; }
set { _StartCables = value; RaisePropertyChanged(nameof(StartCables)); }
}
private List<string> _StartChannels = new List<string>();
/// <summary>
/// 起始通道下列列表
/// </summary>
public List<string> StartChannels
{
get { return _StartChannels; }
set { _StartChannels = value; RaisePropertyChanged(nameof(StartChannels)); }
}
#endregion
private bool _IsEnabledDeleteCableProfile;
/// <summary>
/// 是否禁用清除配置按钮
/// </summary>
public bool IsEnabledDeleteCableProfile
{
get { return _IsEnabledDeleteCableProfile; }
set { _IsEnabledDeleteCableProfile = value;
RaisePropertyChanged(nameof(IsEnabledDeleteCableProfile));
}
}
#endregion
IOModuleService _iOModuleService;
public DialogCableConfigViewModel()
{
_iOModuleService = GlobalObject.container.Resolve<IOModuleService>();
}
public DialogCloseListener RequestClose { get; }
public bool CanCloseDialog()
{
return true;
}
public void OnDialogClosed()
{
}
private ec_Cable _ec_Cable;
private ec_PanelStrip _ec_PanelStrip;
public async void OnDialogOpened(IDialogParameters parameters)
{
title = parameters.GetValue<string>(GlobalObject.dialogPar.title.ToString());
//title = "";
//添加起始通道下拉列表数据
_ec_PanelStrip = parameters.GetValue<ec_PanelStrip>(GlobalObject.dialogPar.para2.ToString());
foreach (var Channel in _ec_PanelStrip.Channels)
{
if (Channel.Terms.Where(t => t.Connection != null).Count() == 0)
{
StartChannels.Add(Channel.ChannelName);
}
}
//添加表格数据
_ec_Cable = parameters.GetValue<ec_Cable>(GlobalObject.dialogPar.para1.ToString());
if (_ec_Cable != null)
{
//获取所有电缆对信息
int i = 0;
int index = 0;
foreach (var CableSet in _ec_Cable.Sets)
{
var CableSetInfo = new CableSetInfo();
CableSetInfo.CableID = _ec_Cable.CableID;
CableSetInfo.CableName = _ec_Cable.TagNumber;
CableSetInfo.CableSetID = CableSet.CableSetID;
CableSetInfo.CableSetName = CableSet.CableSetName;
CableSetInfo.UpdateUserID= _ec_Cable.UpdateUserID;
CableSetInfo.OccupancyState = CableSet.ConnectionInfo;
CableSetInfo.IsConned = CableSet.IsConned??false;
if (string.IsNullOrEmpty(CableSet.ConnectionInfo))
{
if (i<StartChannels.Count)
{
CableSetInfo.ChannelNumber = StartChannels[i];
}
i++;
}
else
{
CableSetInfo.ChannelNumber = CableSet.ConnectionInfo.Split('/').ToList().LastOrDefault().Split('').ToList().LastOrDefault().Trim();
}
foreach (var CableSetWire in CableSet.Wires)
{
index++;
CableSetInfo.Indexs.Add(index.ToString());
CableSetInfo.Wire_Tags.Add(CableSetWire);
CableSetInfo.Polaritys.Add(CableSetWire);
}
_CableSetInfos.Add(CableSetInfo);
//判断清除配置按钮是否禁用
foreach (var item in _CableSetInfos)
{
if (item.IsConned)
{
IsEnabledDeleteCableProfile = false;
break;
}
}
//添加起始电缆下拉列表数据
//if (!CableSet.CableSetName.Equals("") && string.IsNullOrEmpty(CableSet.ConnectionInfo))
if (!CableSet.CableSetName.Equals(""))
{
if (CableSet.IsConned!=null&& CableSet.IsConned==false)
{
StartCables.Add(CableSet.CableSetName);
}
}
}
}
StartCable = StartCables.FirstOrDefault();
StartChannel = StartChannels.FirstOrDefault();
}
public override void ExecuteOKCommandAsync(object para)
{
Prism.Dialogs.DialogParameters res = new Prism.Dialogs.DialogParameters();
res.Add(GlobalObject.dialogPar.para1.ToString(), CableSetInfos);
RequestClose.Invoke(res, ButtonResult.Yes);
}
public override void ExecuteCloseCommand(object parameter)
{
if (parameter as string == "ClickNo")
{
RequestClose.Invoke(ButtonResult.No);
}
else
{
RequestClose.Invoke(ButtonResult.Cancel);
}
this.Dispose();
}
#region
public ICommand ConnectButtonCmd => new DelegateCommand(ConnectButton_Click);
/// <summary>
/// 页面连接按钮
/// </summary>
/// <param name="parameter"></param>
public virtual async void ConnectButton_Click(object parameter)
{
//foreach (var CableSetInfo in CableSetInfos)
//{
// if (CableSetInfo.CableSetName.Equals(StartCable))
// {
// CableSetInfo.ChannelNumber = StartChannel;
// }
//}
int index1= CableSetInfos.Select(C => C.CableSetName).ToList().IndexOf(StartCable);
int index2= StartChannels.IndexOf(StartChannel);
List<string> channels = StartChannels.Skip(index2).ToList();
int j = 0;
for (int i = 0; i < CableSetInfos.Count; i++)
{
if (!CableSetInfos[i].IsConned)
{
CableSetInfos[i].ChannelNumber = "";
if (i >= index1)
{
if (j < channels.Count)
{
CableSetInfos[i].ChannelNumber = channels[j];
}
j++;
}
}
}
}
public ICommand DeleteCableProfileCmd => new DelegateCommand(DeleteCableProfileButton_Click);
/// <summary>
/// 清除配置按钮
/// </summary>
/// <param name="parameter"></param>
public virtual async void DeleteCableProfileButton_Click(object parameter)
{
var httpres = await _iOModuleService.DeleteCableProfile(_ec_Cable.CableID);
if (httpres == null)
{
RequestClose.Invoke(ButtonResult.Cancel);
this.Dispose();
}
}
public ICommand EditEndCmd => new DelegateCommand(EditEnd);
/// <summary>
/// 编辑结束事件
/// </summary>
/// <param name="parameter"></param>
public virtual void EditEnd(object parameter)
{
//做个标记表示该项修改过
}
#endregion
}
public class CableSetInfo : DialogBase
{
#region
private ObservableCollection<string> _Indexs = new ObservableCollection<string>();
/// <summary>
/// 序号
/// </summary>
public ObservableCollection<string> Indexs
{
get { return _Indexs; }
set { _Indexs = value;
RaisePropertyChanged(nameof(Indexs));
}
}
private string _CableSetName;
/// <summary>
/// 电缆对
/// </summary>
public string CableSetName
{
get { return _CableSetName; }
set { _CableSetName = value;
RaisePropertyChanged(nameof(CableSetName));
}
}
private ObservableCollection<ec_CableSetWire> _Wire_Tags = new ObservableCollection<ec_CableSetWire>();
/// <summary>
/// 线号
/// </summary>
public ObservableCollection<ec_CableSetWire> Wire_Tags
{
get { return _Wire_Tags; }
set { _Wire_Tags = value;
RaisePropertyChanged(nameof(Wire_Tags));
}
}
private ObservableCollection<ec_CableSetWire> _Polaritys = new ObservableCollection<ec_CableSetWire>();
/// <summary>
/// 极性
/// </summary>
public ObservableCollection<ec_CableSetWire> Polaritys
{
get { return _Polaritys; }
set { _Polaritys = value;
RaisePropertyChanged(nameof(Polaritys));
}
}
private string _ChannelNumber;
/// <summary>
/// 通道号
/// </summary>
public string ChannelNumber
{
get { return _ChannelNumber; }
set { _ChannelNumber = value;
RaisePropertyChanged(nameof(ChannelNumber));
}
}
private string _OccupancyState;
/// <summary>
/// 占用状态
/// </summary>
public string OccupancyState
{
get { return _OccupancyState; }
set { _OccupancyState = value;
RaisePropertyChanged(nameof(OccupancyState));
}
}
#endregion
#region
private string _CableID;
/// <summary>
/// 电缆ID
/// </summary>
public string CableID
{
get { return _CableID; }
set { _CableID = value;
RaisePropertyChanged(nameof(CableID));
}
}
private string _CableName;
/// <summary>
/// 电缆名称,电缆位号
/// </summary>
public string CableName
{
get { return _CableName; }
set { _CableName = value;
RaisePropertyChanged(nameof(CableName));
}
}
private string _CableSetID;
/// <summary>
/// 电缆对ID
/// </summary>
public string CableSetID
{
get { return _CableSetID; }
set { _CableSetID = value;
RaisePropertyChanged(nameof(CableSetID));
}
}
private string _StripName;
/// <summary>
/// 端子排名称
/// </summary>
public string StripName
{
get { return _StripName; }
set { _StripName = value;
RaisePropertyChanged(nameof(StripName));
}
}
private string _UpdateUserID;
/// <summary>
/// 占用人
/// </summary>
public string UpdateUserID
{
get { return _UpdateUserID; }
set { _UpdateUserID = value;
RaisePropertyChanged(nameof(UpdateUserID));
}
}
private bool _IsConned;
/// <summary>
/// 是否被连接
/// </summary>
public bool IsConned
{
get { return _IsConned; }
set { _IsConned = value;
RaisePropertyChanged(nameof(IsConned)); }
}
#endregion
}
}