Browse Source

ELK需求161:1.增加DeviceModelPM可序列化对象,序列化类
2.LP模块修改成从DeviceModelPM中读取

huangping 1 month ago
parent
commit
68dd3160f7

+ 2 - 0
FrameworkLocal/Common/Common.csproj

@@ -277,6 +277,8 @@
     <Compile Include="Communications\IConnection.cs" />
     <Compile Include="Communications\Message.cs" />
     <Compile Include="Communications\NotifiableConnectionItem.cs" />
+    <Compile Include="Config\PMDeviceConfig.cs" />
+    <Compile Include="Config\XmlSerializer.cs" />
     <Compile Include="ControlDataContext\ChartDataLine.cs" />
     <Compile Include="DataCenter\DiskManager.cs" />
     <Compile Include="DataCenter\ScheduleMaintenanceDataManager.cs" />

File diff suppressed because it is too large
+ 2252 - 0
FrameworkLocal/Common/Config/PMDeviceConfig.cs


+ 53 - 0
FrameworkLocal/Common/Config/XmlSerializer.cs

@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+using System.Xml;
+using System.Xml.Linq;
+
+namespace MECF.Framework.Common.Config
+{
+    public static  class XmlSerializerExtension
+    {
+        public static T Read<T>(string fileName, out string reason) where T : class
+        {
+            try
+            {
+                reason = string.Empty;
+                if (!File.Exists(fileName))
+                {
+                    reason = $"{fileName}文件名不存在";
+                    return null;
+                }
+                using (StreamReader fs = new StreamReader(fileName))
+                {
+                    XmlSerializer serializer = new XmlSerializer(typeof(T));
+                    return (serializer.Deserialize(fs) as T);
+                }
+            }
+            catch (Exception ex)
+            {
+                reason = $"Failed to XmlHelper.Read({fileName})\r\n{ex.Message}\r\n{ex.StackTrace}";
+                return null;
+            }
+        }
+        public static T Read<T>(string fileContent) where T : class
+        {
+            try
+            {
+                using (var reader = new StringReader(fileContent))
+                {
+                    XmlSerializer serializer = new XmlSerializer(typeof(T));
+                    return (serializer.Deserialize(reader) as T);
+                }
+            }
+            catch (Exception ex)
+            {
+                return null;
+            }
+        }
+    }
+}

+ 120 - 5
Furnace/FurnaceUI/Views/Maintenances/IOListEditView.xaml

@@ -18,7 +18,7 @@
     mc:Ignorable="d">
     <UserControl.Resources>
         <local:DisplayNameConvert x:Key="DisplayNameConvert" />
-        <DataTemplate x:Key="LoadPort1Template">
+        <!--<DataTemplate x:Key="LoadPort1Template">
             <Grid Margin="10">
                 <Grid.ColumnDefinitions>
                     <ColumnDefinition />
@@ -246,7 +246,7 @@
                     </ItemsControl>
                 </GroupBox>
             </Grid>
-        </DataTemplate>
+        </DataTemplate>-->
         <DataTemplate x:Key="Fims1Template">
             <Grid Margin="10">
                 <Grid.ColumnDefinitions>
@@ -848,6 +848,122 @@
                 </Grid>
             </Grid>
         </DataTemplate>
+        
+        <DataTemplate x:Key="LoadPortTemplate">
+            <Grid Margin="10">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition />
+                    <ColumnDefinition Width="0.7*" />
+                    <ColumnDefinition Width="*" />
+                </Grid.ColumnDefinitions>
+                <GroupBox VerticalAlignment="Top">
+                    <GroupBox.Header>
+                        <TextBlock Foreground="Black" Text="IN" />
+                    </GroupBox.Header>
+                    <ItemsControl Foreground="Black" ItemsSource="{Binding DataContext.INViewSource, RelativeSource={RelativeSource AncestorType=UserControl}}">
+                        <ItemsControl.ItemTemplate>
+                            <DataTemplate>
+                                <Grid Height="40">
+                                    <Grid.ColumnDefinitions>
+                                        <ColumnDefinition Width="*" />
+                                        <ColumnDefinition Width="45" />
+                                    </Grid.ColumnDefinitions>
+                                    <Border
+                                Grid.Column="0"
+                                Padding="5,1"
+                                BorderBrush="{DynamicResource DataGrid_Cell_BD}"
+                                BorderThickness="1,1,1,1">
+                                        <TextBlock
+                                    HorizontalAlignment="Left"
+                                    VerticalAlignment="Center"
+                                    Text="{Binding Path=DisplayName}"
+                                    ToolTip="{Binding Path=DisplayName}" />
+                                    </Border>
+                                    <Border
+                                Grid.Column="1"
+                                Padding="5,1"
+                                BorderBrush="{DynamicResource DataGrid_Cell_BD}"
+                                BorderThickness="0,1,1,1">
+                                        <controls1:SwitchButton
+                                    HorizontalAlignment="Center"
+                                    ON="{Binding Value}"
+                                    Style="{StaticResource Lamp-Button}" />
+                                    </Border>
+                                </Grid>
+                            </DataTemplate>
+                        </ItemsControl.ItemTemplate>
+                    </ItemsControl>
+                </GroupBox>
+                <Viewbox Grid.Column="1" Stretch="Uniform">
+                    <Grid>
+                        <Image Width="81" Source="/FurnaceUI;component/Resources/Images/Controls3/bt1.png" />
+                        <TextBlock
+                    Margin="28,18,0,0"
+                    FontFamily="Arial"
+                    FontSize="13"
+                    Foreground="Black"
+                    Text="{Binding DataContext.DisplayID,RelativeSource={RelativeSource AncestorType=UserControl}}" />
+                    </Grid>
+
+                </Viewbox>
+                <GroupBox Grid.Column="2" VerticalAlignment="Top">
+                    <GroupBox.Header>
+                        <TextBlock Foreground="Black" Text="OUT" />
+                    </GroupBox.Header>
+                    <ItemsControl Foreground="Black" ItemsSource="{Binding DataContext.OutViewSource, RelativeSource={RelativeSource AncestorType=UserControl}}">
+                        <ItemsControl.ItemTemplate>
+                            <DataTemplate>
+                                <Grid Height="40">
+                                    <Grid.ColumnDefinitions>
+                                        <ColumnDefinition Width="*" />
+                                        <ColumnDefinition Width="45" />
+                                        <ColumnDefinition Width="45" />
+                                    </Grid.ColumnDefinitions>
+                                    <Border
+                                Padding="5,1"
+                                BorderBrush="{DynamicResource DataGrid_Cell_BD}"
+                                BorderThickness="1,1,1,1">
+                                        <TextBlock
+                                    HorizontalAlignment="Left"
+                                    VerticalAlignment="Center"
+                                    Text="{Binding Path=DisplayName}"
+                                    ToolTip="{Binding Path=DisplayName}" />
+                                    </Border>
+                                    <Border
+                                Grid.Column="1"
+                                Padding="5,1"
+                                BorderBrush="{DynamicResource DataGrid_Cell_BD}"
+                                BorderThickness="0,1,1,1">
+                                        <controls1:SwitchButton
+                                    HorizontalAlignment="Center"
+                                    ON="{Binding Value}"
+                                    Style="{StaticResource Lamp-Button}" />
+                                    </Border>
+                                    <Border
+                                Grid.Column="2"
+                                Padding="5,1"
+                                BorderBrush="{DynamicResource DataGrid_Cell_BD}"
+                                BorderThickness="0,1,1,1">
+                                        <controls1:SwitchButton
+                                    HorizontalAlignment="Center"
+                                    ON="{Binding Value}"
+                                    Style="{StaticResource OperationButton}">
+                                            <i:Interaction.Triggers>
+                                                <i:EventTrigger EventName="Click">
+                                                    <cal:ActionMessage MethodName="SetDO">
+                                                        <cal:Parameter Value="{Binding}" />
+                                                    </cal:ActionMessage>
+                                                </i:EventTrigger>
+                                            </i:Interaction.Triggers>
+                                        </controls1:SwitchButton>
+                                    </Border>
+                                </Grid>
+                            </DataTemplate>
+                        </ItemsControl.ItemTemplate>
+                    </ItemsControl>
+                </GroupBox>
+            </Grid>
+        </DataTemplate>
     </UserControl.Resources>
     <Border Background="{StaticResource Color_BG_Dialog_Inner}">
         <ContentControl Grid.Column="1" Content="{Binding DisplayName}" IsEnabled="{Binding IsPermission}">
@@ -857,9 +973,8 @@
                     BufferTemplate="{StaticResource BufferTemplate}"
                     CarrierLoaderTemplate="{StaticResource CarrierLoaderTemplate}"
                     Fims1Template="{StaticResource Fims1Template}"
-                    Fims2Template="{StaticResource Fims2Template}"
-                    LoadPort1Template="{StaticResource LoadPort1Template}"
-                    LoadPort2Template="{StaticResource LoadPort2Template}"
+                    Fims2Template="{StaticResource Fims2Template}"         
+                    LoadPortTemplate="{StaticResource LoadPortTemplate}"
                     WaferRobotTemplate="{StaticResource WaferRobotTemplate}" />
             </ContentControl.ContentTemplateSelector>
         </ContentControl>

+ 81 - 20
Furnace/FurnaceUI/Views/Maintenances/IOListEditViewModel.cs

@@ -1,4 +1,7 @@
 using Aitex.Core.RT.IOCore;
+using Aitex.Core.RT.SCCore;
+using DocumentFormat.OpenXml.Office2010.Excel;
+using MECF.Framework.Common.Config;
 using MECF.Framework.Common.DataCenter;
 using MECF.Framework.Common.IOCore;
 using MECF.Framework.Common.OperationCenter;
@@ -25,7 +28,7 @@ namespace FurnaceUI.Views.Maintenances
     {
         public ObservableCollection<IOItem<bool>> DIs { get; private set; }
         public ObservableCollection<IOItem<bool>> DOs { get; private set; }
-
+        private PMDeviceConfig _deviceConfig;
         private string _diKey;
         private string _doKey;
         #region 构造函数
@@ -34,7 +37,7 @@ namespace FurnaceUI.Views.Maintenances
         /// </summary>
         public IOListEditViewModel()
         {
-
+            
         }
         #endregion
 
@@ -53,6 +56,24 @@ namespace FurnaceUI.Views.Maintenances
 
         public ListCollectionView BufferViewSource { get; set; }
         public bool IsPermission { get => this.Permission == 3; }
+        private string _id;
+
+        private string _displayId;
+
+        public string DisplayID
+        {
+            get { return _displayId; }
+            set
+            {
+                if (_displayId != value)
+                {
+                    _displayId = value;
+                    NotifyOfPropertyChange("DisplayID");
+                }
+            }
+        }
+
+
 
         #endregion
 
@@ -71,6 +92,17 @@ namespace FurnaceUI.Views.Maintenances
             _doKey = $"{SystemName}.DOList";
             Subscribe(_diKey);
             Subscribe(_doKey);
+            var type = QueryDataClient.Instance.Service.GetConfig("System.SetUp.ToolType");
+            if (type != null)
+            {
+                var xmlContent = QueryDataClient.Instance.Service.GetFileContent($"Config\\IO\\{type}\\DeviceModelPM.xml");
+                _deviceConfig = XmlSerializerExtension.Read<PMDeviceConfig>(xmlContent);
+            }
+            if (DisplayName.StartsWith("Load Port")) 
+            {
+                _id = "LP" + DisplayName.Substring(10);
+                DisplayID = "LP " + DisplayName.Substring(10); 
+            }
         }
         #endregion
 
@@ -167,15 +199,26 @@ namespace FurnaceUI.Views.Maintenances
                     switch (DisplayName)
                     {
                         case "Load Port 1":
-                            if (item.Index <= 1863 && item.Index >= 1856)
-                            {
-                                isfilter = true;
-                            }
-                            break;
+                            //if (item.Index <= 1863 && item.Index >= 1856)
+                            //{
+                            //    isfilter = true;
+                            //}
+                            //break;
                         case "Load Port 2":
-                            if (item.Index <= 1879 && item.Index >= 1872)
+                            //if (item.Index <= 1879 && item.Index >= 1872)
+                            //{
+                            //    isfilter = true;
+                            //}
+                            //break;
+                        case "Load Port 3":                     
+                        case "Load Port 4":
+                            if (_deviceConfig != null)
                             {
-                                isfilter = true;
+                                var lp = _deviceConfig.IoLPs.IoLP.Find(r => r.SchematicId == _id);
+                                var name = item.Name.Replace("PM1.", "");
+                                if (lp.DiDetect== name || lp.DiInPosition2== name || lp.DiInPosition1== name || lp.DiInPosition3 == name
+                                || lp.DiLeftClamp== name || lp.DiLeftRelease== name || lp.DiRightClamp== name || lp.DiRightRelease== name)
+                                    isfilter = true;
                             }
                             break;
                         case "Fims 1":
@@ -246,15 +289,26 @@ namespace FurnaceUI.Views.Maintenances
                     switch (DisplayName)
                     {
                         case "Load Port 1":
-                            if ((item.Index <= 215 && item.Index >= 214) || (item.Index <= 224 && item.Index >= 220))
-                            {
-                                isfilter = true;
-                            }
-                            break;
+                            //if ((item.Index <= 215 && item.Index >= 214) || (item.Index <= 224 && item.Index >= 220))
+                            //{
+                            //    isfilter = true;
+                            //}
+                            //break;
                         case "Load Port 2":
-                            if (item.Index <= 234 && item.Index >= 228)
+                            //if (item.Index <= 234 && item.Index >= 228)
+                            //{
+                            //    isfilter = true;
+                            //}
+                            //break;
+                        case "Load Port 3":
+                        case "Load Port 4":
+                            if (_deviceConfig != null)
                             {
-                                isfilter = true;
+                                var lp = _deviceConfig.IoLPs.IoLP.Find(r => r.SchematicId == _id);
+                                var name = item.Name.Replace("PM1.","");
+                                if (lp.DoManual == name || lp.DoLoad == name || lp.DoPresence == name || lp.DoClamp == name
+                                || lp.DoUnload == name || lp.DoPlacement == name || lp.DoRelease == name)
+                                    isfilter = true;
                             }
                             break;
                         case "Fims 1":
@@ -384,6 +438,7 @@ namespace FurnaceUI.Views.Maintenances
     {
         public DataTemplate LoadPort1Template { get; set; }
         public DataTemplate LoadPort2Template { get; set; }
+        public DataTemplate LoadPortTemplate { get; set; }
         public DataTemplate Fims1Template { get; set; }
         public DataTemplate Fims2Template { get; set; }
 
@@ -401,11 +456,17 @@ namespace FurnaceUI.Views.Maintenances
             {
                 switch (displayName)
                 {
-                    case "Load Port 1":
-                        dataTemplate = LoadPort1Template;
-                        break;
+                    case "Load Port 1":                       
+                        //dataTemplate = LoadPort1Template;
+                        //break;
                     case "Load Port 2":
-                        dataTemplate = LoadPort2Template;
+                        //dataTemplate = LoadPort2Template;
+                        //break;
+                    case "Load Port 3":
+                        //dataTemplate = LoadPortTemplate;
+                        //break;
+                    case "Load Port 4":
+                        dataTemplate = LoadPortTemplate;
                         break;
                     case "Fims 1":
                         dataTemplate = Fims1Template;

+ 32 - 2
Furnace/FurnaceUI/Views/Maintenances/IOListView.xaml

@@ -14,6 +14,8 @@
             <RowDefinition />
             <RowDefinition Height="10" />
             <RowDefinition />
+            <RowDefinition Height="10"/>
+            <RowDefinition />
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
             <ColumnDefinition />
@@ -50,7 +52,34 @@
             </i:Interaction.Triggers>
         </Button>
         <Button
-            Grid.Column="4"
+     Grid.Column="4"
+     Content="Load Port 3"
+     FontFamily="Segoe"
+     FontSize="40">
+            <i:Interaction.Triggers>
+                <i:EventTrigger EventName="Click">
+                    <cal:ActionMessage MethodName="BtnEdit">
+                        <cal:Parameter Value="Load Port 3" />
+                    </cal:ActionMessage>
+                </i:EventTrigger>
+            </i:Interaction.Triggers>
+        </Button>
+        <Button
+     Grid.Column="6"
+     Content="Load Port 4"
+     FontFamily="Segoe"
+     FontSize="40">
+            <i:Interaction.Triggers>
+                <i:EventTrigger EventName="Click">
+                    <cal:ActionMessage MethodName="BtnEdit">
+                        <cal:Parameter Value="Load Port 4" />
+                    </cal:ActionMessage>
+                </i:EventTrigger>
+            </i:Interaction.Triggers>
+        </Button>
+        <Button
+            Grid.Column="0"
+            Grid.Row="4"
             Content="Fims 1"
             FontFamily="Segoe"
             FontSize="40">
@@ -63,7 +92,8 @@
             </i:Interaction.Triggers>
         </Button>
         <Button
-            Grid.Column="6"
+            Grid.Column="2"
+            Grid.Row="6"
             Content="Fims 2"
             FontFamily="Segoe"
             FontSize="40">

+ 2 - 3
Furnace/FurnaceUI/Views/Maintenances/IOListViewModel.cs

@@ -39,9 +39,8 @@ namespace FurnaceUI.Views.Maintenances
                 var windowManager = IoC.Get<IWindowManager>();
                 IOListEditViewModel editViewModel = new IOListEditViewModel();
                 editViewModel.SystemName = SystemName;
-                editViewModel.DisplayName = tempStr;
-                editViewModel.Permission=this.Permission;
-                (windowManager as WindowManager)?.ShowDialogWithTitle(editViewModel, null, tempStr);
+                editViewModel.DisplayName = tempStr;      
+                (windowManager as WindowManager)?.ShowDialogWithTitle(editViewModel,this, null, tempStr);
             }
         }
         #endregion