using System.Text; namespace EDAViewer.Singleton.Helper; [Serializable] public class Common { public string? ConfigurationProductiveState { get; set; } public string? ConfigurationState { get; set; } public string? ContainerName { get; set; } public ModuleInstanceTypeName? ObjectType { get; set; } public string? UnitName { get; set; } // public string Filename { get; set; } public string StartTimeFormat { get; set; } public string[] StoragePaths { get; set; } // public List GeneralTriggers { get; set; } public List LogisticsAttributes { get; set; } public List LogisticsColumns { get; set; } public string LogisticsEquipmentAlias { get; set; } public List LogisticsTriggers { get; set; } public Dictionary> LogisticsTriggersCallDefinitionAttributes { get; set; } public Dictionary LogisticsTriggersKeysKeyMapping { get; set; } public List Parameters { get; set; } public string ParametersAsCsv { get; set; } public string Source { get; set; } public List StartTriggersDCP { get; set; } public List StopTriggersDCP { get; set; } [Obsolete("Only for DeserializeObject")] public Common() { ObjectType = null; Parameters = new(); Source = string.Empty; Filename = string.Empty; GeneralTriggers = new(); StopTriggersDCP = new(); UnitName = string.Empty; LogisticsColumns = new(); StartTriggersDCP = new(); LogisticsTriggers = new(); LogisticsAttributes = new(); ContainerName = string.Empty; ParametersAsCsv = string.Empty; StartTimeFormat = string.Empty; ConfigurationState = string.Empty; StoragePaths = Array.Empty(); LogisticsEquipmentAlias = string.Empty; ConfigurationProductiveState = string.Empty; LogisticsTriggersKeysKeyMapping = new Dictionary(); LogisticsTriggersCallDefinitionAttributes = new Dictionary>(); } public Common(ModuleInstanceTypeName objectType, object unitName, object containerName, object configurationState, object configurationProductiveState) { Parameters = new(); Source = string.Empty; Filename = string.Empty; GeneralTriggers = new(); ObjectType = objectType; StopTriggersDCP = new(); LogisticsColumns = new(); StartTriggersDCP = new(); LogisticsTriggers = new(); LogisticsAttributes = new(); ParametersAsCsv = string.Empty; StartTimeFormat = string.Empty; UnitName = unitName.ToString(); StoragePaths = Array.Empty(); LogisticsEquipmentAlias = string.Empty; ContainerName = containerName.ToString(); ConfigurationState = configurationState.ToString(); LogisticsTriggersKeysKeyMapping = new Dictionary(); ConfigurationProductiveState = configurationProductiveState.ToString(); LogisticsTriggersCallDefinitionAttributes = new Dictionary>(); } public void Update(PDSFConfiguration configuration) { StoragePaths = configuration.Settings.StoragePaths; StartTimeFormat = configuration.Settings.StartTimeFormat; Filename = configuration.Settings.Filename; // Source = configuration.DataCollection.Source; LogisticsEquipmentAlias = configuration.DataCollection.Logistics.EquipmentAlias; //if (LogisticsEquipmentAlias == "R47-PLC") //{ } foreach (PDSFConfigurationDataCollectionLogisticsAttribute item in from l in configuration.DataCollection.Logistics.Attributes orderby l.Use descending, l.Order select l) LogisticsAttributes.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.Key, item.Placeholder }); foreach (PDSFConfigurationDataCollectionLogisticsColumn item in configuration.DataCollection.Logistics.Columns) LogisticsColumns.Add(new string[] { item.ID.ToString(), item.Prefix }); foreach (PDSFConfigurationDataCollectionParameter1 item in from l in configuration.DataCollection.VirtualParameters orderby l.Use descending, l.Order select l) { if (string.IsNullOrEmpty(item.Alias) && !string.IsNullOrEmpty(item.Conditions.ConditionModel.Name)) { if (item.Use) Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Conditions.ConditionModel.Name, item.HardWareId, item.Description, item.Conditions.ConditionModel.Formula, true.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); else Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Conditions.ConditionModel.Name, item.HardWareId, item.Description, string.Empty, true.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); } else { if (item.Use) Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Alias, item.HardWareId, item.Description, item.Conditions.ConditionModel.Formula, true.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); else Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Alias, item.HardWareId, item.Description, string.Empty, true.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); } } foreach (PDSFConfigurationDataCollectionParameter item in from l in configuration.DataCollection.Parameters orderby l.Use descending, l.Order select l) { if (string.IsNullOrEmpty(item?.Alias) && !string.IsNullOrEmpty(item?.Conditions?.ConditionModel?.Name)) { if (item.Use) Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Conditions.ConditionModel.Name, item.HardWareId, item.Description, item.Conditions.ConditionModel.Formula, false.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); else Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Conditions.ConditionModel.Name, item.HardWareId, item.Description, string.Empty, false.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); } else { if (item is null) continue; if (item.Use) Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Alias, item.HardWareId, item.Description, item.Conditions.ConditionModel.Formula, false.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); else Parameters.Add(new string[] { item.Use.ToString(), item.Order.ToString("000"), item.FullName, item.Alias, item.HardWareId, item.Description, string.Empty, false.ToString(), (configuration.DataCollection.Logistics.Columns.Length + 1 + item.Order).ToString("000") }); } } Parameters = (from l in Parameters orderby l[0] descending, l[1] select l).ToList(); StringBuilder text = new(); //text.AppendLine("\"AliasName\";\"Condition\";\"EventId\";\"ExceptionId\";\"Formula\";\"HardwareId\";\"OrderId\";\"ParameterName\";\"Remark\";\"ReportName\";\"SourceId\";\"Use\""); //"Test";"";"";"";"";"";"1";"MICROSCOPE01/MET08MESMICROSCOPE/Test";"";"MICROSCOPE01/MET08MESMICROSCOPE/FileRead";"";"True"" _ = text.AppendLine("\"Use\";\"OrderId\";\"ReportName\";\"ParameterName\";\"AliasName\";\"HardwareId\";\"Remark\";\"Formula\""); foreach (string[] item in Parameters) { for (int i = 0; i < 7; i++) _ = text.Append('"').Append(item[i]).Append("\";"); _ = text.Remove(text.Length - 1, 1); _ = text.AppendLine(); } ParametersAsCsv = text.ToString(); foreach (PDSFConfigurationDataCollectionGeneralTriggers item in configuration.DataCollection.GeneralTriggers) { foreach (PDSFConfigurationDataCollectionGeneralTriggersVariableModel gv in item.GlobalVariables) GeneralTriggers.Add(new string[] { item.Name, gv.Name, gv.ParameterName, gv.Formula }); } { PDSFConfigurationDataCollectionStartTriggersDCP item = configuration.DataCollection.StartTriggers.DCP; if (item is not null) StartTriggersDCP.Add(new string[] { item.Name, item.Rule, item.ResolveGlobalVariableBeforeTrigger.ToString() }); } if (configuration.DataCollection.Logistics.Triggers.UpdateTrigger is not null) { foreach (PDSFConfigurationDataCollectionLogisticsTriggersUpdateTriggerLogisticRequest item in configuration.DataCollection.Logistics.Triggers.UpdateTrigger.LogisticRequest) { LogisticsTriggers.Add(new string?[] { item.Name.ToString(), item.LogisticsColumn.Fixed.ToString(), item.Rule, item.Keys.Scenario, item.Keys.DefaultJobIndex.ToString(), item.Keys.DefaultCarrierIndex.ToString(), item.Keys.DefaultSlotIndex.ToString(), item.DataPool.ToString() }); if (item.Keys.KeyMapping is not null) LogisticsTriggersKeysKeyMapping.Add(item.Name, new string[] { item.Keys.KeyMapping.KeyName, item.Keys.KeyMapping.ParameterName, item.Keys.KeyMapping.Formula }); LogisticsTriggersCallDefinitionAttributes.Add(item.Name, new()); foreach (PDSFConfigurationDataCollectionLogisticsTriggersUpdateTriggerLogisticRequestCallDefinitionLogisticCallDefinitionAttribute att in item.CallDefinition.Attributes) LogisticsTriggersCallDefinitionAttributes[item.Name].Add(new string[] { att.LogisticsKey, att.Source, att.MappedParameterName, att.Formula }); } } { PDSFConfigurationDataCollectionStopTriggersDCP item = configuration.DataCollection.StopTriggers.DCP; if (item is not null) StopTriggersDCP.Add(new string[] { item.Name, item.Rule, item.ResolveGlobalVariableBeforeTrigger.ToString(), item.ResetGlobalVariablesAfterTrigger.ToString() }); } } }