diff options
| author | Roy Ben Shabat <roy.mail.net@gmail.com> | 2025-09-29 05:46:38 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <roy.mail.net@gmail.com> | 2025-09-29 05:46:38 +0300 |
| commit | 9c858b7b51be2eb5b2f515912d436224d7e6483c (patch) | |
| tree | 46f854bfd37026967ef2dfa8f28a70cd8c8f7727 /Software/Visual_Studio/Tango.BL | |
| parent | 103bd3c1c825e4ecbb1c714e293a5c9d97a09c8c (diff) | |
| download | Tango-9c858b7b51be2eb5b2f515912d436224d7e6483c.tar.gz Tango-9c858b7b51be2eb5b2f515912d436224d7e6483c.zip | |
Process Parameters Visual Representation.
Filter RML by machine type on Research module.
Diffstat (limited to 'Software/Visual_Studio/Tango.BL')
3 files changed, 288 insertions, 2 deletions
diff --git a/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs b/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs index 1dadd61c8..83a079700 100644 --- a/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs +++ b/Software/Visual_Studio/Tango.BL/Entities/ProcessParametersTable.cs @@ -1,18 +1,25 @@ +using LiteDB; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; +using System.Xml.Serialization; using Tango.BL.Enumerations; +using Tango.Core; using Tango.Core.ExtensionMethods; +using Tango.Core.Helpers; +using Tango.CSV; namespace Tango.BL.Entities { public partial class ProcessParametersTable : ProcessParametersTableBase { public event EventHandler DyeingSpeedMinInkUptakeChanged; + private static List<ProcessParameterCsvModel> _csvModels; [NotMapped] [JsonIgnore] @@ -82,12 +89,220 @@ namespace Tango.BL.Entities return heaters.Average(); } - + public PMR.Printing.ProcessParameters ToProcessParametersPMR() { PMR.Printing.ProcessParameters p = new PMR.Printing.ProcessParameters(); this.MapPrimitivesTo(p); return p; } + + #region Visual Representation + + public class ProcessParameterCsvModel + { + public String Name { get; set; } + public String Description { get; set; } + public List<MachineTypes> MachineTypes { get; set; } + public String Group { get; set; } + public int Index { get; set; } + public String StringFormat { get; set; } + + public ProcessParameterCsvModel() + { + MachineTypes = new List<MachineTypes>(); + } + } + + public class ProcessParameter : ExtendedObject + { + private ParameterItem _parameterItem; + private ProcessParametersTable _table; + + public String Name { get; set; } + public List<MachineTypes> MachineTypes { get; set; } + public String Group { get; set; } + public int Index { get; set; } + public String StringFormat { get; set; } + + public bool HasDiff + { + get + { + if (_table == null) return false; + if (_table.ProcessParametersTablesGroup == null) return false; + + foreach (var otherTable in _table.ProcessParametersTablesGroup.ProcessParametersTables.Where(x => x != _table).ToList()) + { + var otherValue = otherTable.VisualParameters.FirstOrDefault(x => x.Name == Name); + if (otherValue != null) + { + if (otherValue.Value != Value) return true; + } + } + + return false; + } + } + + public double Value + { + get { return (double)_parameterItem.Value; } + set + { + _parameterItem.Value = value; + RaisePropertyChangedAuto(); + RaisePropertyChanged(nameof(HasDiff)); + + if (_table == null) return; + if (_table.ProcessParametersTablesGroup == null) return; + + foreach (var otherTable in _table.ProcessParametersTablesGroup.ProcessParametersTables.Where(x => x != _table).ToList()) + { + var otherValue = otherTable.VisualParameters.FirstOrDefault(x => x.Name == Name); + if (otherValue != null) + { + otherValue.Invalidate(); + } + } + } + } + + public ProcessParameter(ParameterItem parameterItem, ProcessParametersTable table) + { + MachineTypes = new List<MachineTypes>(); + _parameterItem = parameterItem; + _table = table; + } + + public void Invalidate() + { + RaisePropertyChanged(nameof(HasDiff)); + } + } + + public class ProcessParameterGroup + { + public String Name { get; set; } + + public List<ProcessParameter> Parameters { get; set; } + + public ProcessParameterGroup() + { + Parameters = new List<ProcessParameter>(); + } + } + + [NotMapped] + [XmlIgnore] + [BsonIgnore] + [JsonIgnore] + [ParameterIgnore] + public List<ProcessParameterGroup> ParametersGroups + { + get + { + List<ProcessParameterGroup> groups = new List<ProcessParameterGroup>(); + + foreach (var g in VisualParameters.GroupBy(x => x.Group)) + { + ProcessParameterGroup group = new ProcessParameterGroup(); + group.Name = g.First().Group; + group.Parameters.AddRange(g); + groups.Add(group); + } + + return groups; + } + } + + private List<ProcessParameter> _visualParameters; + [NotMapped] + [XmlIgnore] + [BsonIgnore] + [JsonIgnore] + [ParameterIgnore] + public List<ProcessParameter> VisualParameters + { + get + { + if (_visualParameters != null) + { + return _visualParameters; + } + + if (_csvModels == null) + { + var csv = EmbeddedResourceHelper.GetEmbeddedResourceText("Tango.BL.ProcessParameters.csv"); + CsvDynamicReader reader = CsvDynamicReader.FromString(csv); + + _csvModels = new List<ProcessParameterCsvModel>(); + + foreach (var row in reader.Rows) + { + ProcessParameterCsvModel csvModel = new ProcessParameterCsvModel(); + + csvModel.Name = row.Read("Name", "N/A"); + csvModel.Description = row.Read("Description", "N/A"); + csvModel.Group = row.Read("Group", "N/A"); + csvModel.Index = row.Read("Index", 0); + csvModel.StringFormat = row.Read("StringFormat", "0.0"); + + String machineType = row.Read("MachineType", "ALL"); + + switch (machineType) + { + case "ALL": + csvModel.MachineTypes.AddRange(Enum.GetValues(typeof(MachineTypes)).Cast<MachineTypes>()); + break; + case "TS-1800": + csvModel.MachineTypes.Add(MachineTypes.TS1800); + break; + case "X1": + csvModel.MachineTypes.Add(MachineTypes.X1); + break; + case "X4": + csvModel.MachineTypes.Add(MachineTypes.Eureka); + break; + case "X": + csvModel.MachineTypes.Add(MachineTypes.X1); + csvModel.MachineTypes.Add(MachineTypes.Eureka); + break; + } + + _csvModels.Add(csvModel); + } + } + + var parameters = this.Parameters.Where(x => x.Type == typeof(Double)).ToList(); + + _visualParameters = new List<ProcessParameter>(); + + foreach (var p in parameters) + { + var csvModel = _csvModels.SingleOrDefault(x => x.Name.Replace("_", "").ToLower() == p.Name.Replace(" ", "").ToLower()); + + if (csvModel.MachineTypes.Count > 0) + { + ProcessParameter parameter = new ProcessParameter(p, this); + parameter.Name = csvModel.Description; + parameter.MachineTypes = csvModel.MachineTypes; + parameter.Group = csvModel.Group; + parameter.Index = csvModel.Index; + parameter.StringFormat = csvModel.StringFormat; + + _visualParameters.Add(parameter); + } + } + + _visualParameters = _visualParameters.OrderBy(x => x.Index).ToList(); + + _visualParameters.ForEach(x => x.Invalidate()); + + return _visualParameters; + } + } + + #endregion } } diff --git a/Software/Visual_Studio/Tango.BL/ProcessParameters.csv b/Software/Visual_Studio/Tango.BL/ProcessParameters.csv new file mode 100644 index 000000000..864d3ac9c --- /dev/null +++ b/Software/Visual_Studio/Tango.BL/ProcessParameters.csv @@ -0,0 +1,70 @@ +Name,Description,MachineType,Group,Index,StringFormat +DYEING_SPEED,Dyeing Speed [m/sec],ALL,GENERAL,1,0.0 +MIN_INK_UPTAKE,Min Ink Uptake [nl/cm],ALL,GENERAL,2,0.0 +MAX_INK_UPTAKE,Max Ink Uptake [nl/cm],ALL,GENERAL,3,0.0 +DRYER_BUFFER_LENGTH,Dryer Buffer Length [m],ALL,GENERAL,4,0.0 +E_WASTE_PREPARE_TIME,E Waste Prepare Time [sec],X,GENERAL,5,0.0 +DRYER_AIR_FLOW,Dryer Air Flow,TS-1800,AIR FLOW,7,0.0 +R_BLOWER_FLOW,Right Blower Flow,TS-1800,AIR FLOW,8,0.0 +L_BLOWER_FLOW,Left Blower Flow,TS-1800,AIR FLOW,9,0.0 +PRESSURE_BUILD_UP,Pressure Build Up,TS-1800,AIR FLOW,10,0.0 +E_TUNNEL_INCOMING_AIR_FLOW,Tunnel Incoming Air Flow [m^3/hr],X,AIR FLOW,11,0.0 +E_TUNNEL_OUTGOING_AIR_FLOW,Tunnel Outgoing Air Flow [m^3/hr],X,AIR FLOW,12,0.0 +E_DRYER_INCOMING_AIR_FLOW,Dryer Incoming Air Flow [m^3/hr],X,AIR FLOW,13,0.0 +E_DRYER_OUTGOING_AIR_FLOW,Dryer Outgoing Air Flow [m^3/hr],X,AIR FLOW,14,0.0 +DRYER_ZONE1_TEMP,Dryer Zone 1 Temp.,TS-1800,TEMPERATURE,15,0.0 +MIXER_TEMP,Mixer Temp.,TS-1800,TEMPERATURE,16,0.0 +HEAD_ZONE1_TEMP,Head Zone 1 Temp.,TS-1800,TEMPERATURE,17,0.0 +HEAD_ZONE2_TEMP,Head Zone 2 Temp.,TS-1800,TEMPERATURE,18,0.0 +HEAD_ZONE4_TEMP,Lubricant Temp.,TS-1800,TEMPERATURE,19,0.0 +R_BLOWER_TEMP,Right Blower Temp.,TS-1800,TEMPERATURE,20,0.0 +L_BLOWER_TEMP,Left Blower Temp.,TS-1800,TEMPERATURE,21,0.0 +E_MIXER_TEMP,Mixer Temp. [˚C],X,TEMPERATURE,22,0.0 +E_HEAD_ZONE1_TEMP,Head Zone 1 Temp.,NONE,TEMPERATURE,23,0.0 +E_HEAD_ZONE2_TEMP,Head Zone 2 Temp. [˚C],X,TEMPERATURE,24,0.0 +E_HEAD_ZONE3_TEMP,Head Zone 3 Temp.,NONE,TEMPERATURE,25,0.0 +E_TUNNEL_TEMP,Tunnel Temp. [˚C],X,TEMPERATURE,26,0.0 +E_DRYER_ZONE1_TEMP,Dryer Zone 1 Temp. [˚C],X,TEMPERATURE,27,0.0 +E_DRYER_ZONE2_TEMP,Dryer Zone 2 Temp. [˚C],X,TEMPERATURE,28,0.0 +E_DRYER_ZONE3_TEMP,Dryer Zone 3 Temp. [˚C],X,TEMPERATURE,29,0.0 +E_SPARE1,Dryer Average Temp. [˚C],X,TEMPERATURE,30,0.0 +E_LUBRICANT_TEMP,Lubricant Temp. [˚C],X,TEMPERATURE,31,0.0 +BTSR_FEEDING_TENSION,Btsr Feeding Tension,TS-1800,TENSION,32,0.0 +EXIT_TENSION,Dancer Tension,TS-1800,TENSION,33,0.0 +E_BTSR1_FEEDING_TENSION,Feeder BTSR 1 [gr],X,TENSION,34,0.0 +E_BTSR2_FEEDING_TENSION,Feeder BTSR 2 [gr],X4,TENSION,35,0.0 +E_BTSR3_FEEDING_TENSION,Feeder BTSR 3 [gr],X4,TENSION,36,0.0 +E_BTSR4_FEEDING_TENSION,Feeder BTSR 4 [gr],X4,TENSION,37,0.0 +E_WINDER1_TENSION,Dancer1 Tension [steps],X,TENSION,38,0.0 +E_WINDER2_TENSION,Dancer2 Tension [steps],X4,TENSION,39,0.0 +E_WINDER3_TENSION,Dancer3 Tension [steps],X4,TENSION,40,0.0 +E_WINDER4_TENSION,Dancer4 Tension [steps],X4,TENSION,41,0.0 +E_BTSR5_FEEDING_TENSION,Btsr1 Winder Tension [gr],X,TENSION,42,0.0 +E_BTSR6_FEEDING_TENSION,Btsr2 Winder Tension [gr],X4,TENSION,43,0.0 +E_BTSR7_FEEDING_TENSION,Btsr3 Winder Tension [gr],X4,TENSION,44,0.0 +E_BTSR8_FEEDING_TENSION,Btsr4 Winder Tension [gr],X4,TENSION,45,0.0 +HEAD_ZONE3_TEMP,Head Zone 3 Temp.,NONE,TEMPERATURE,46,0.0 +HEAD_ZONE5_TEMP,Head Zone 5 Temp.,NONE,TEMPERATURE,47,0.0 +HEAD_ZONE6_TEMP,Head Zone 6 Temp.,NONE,TEMPERATURE,48,0.0 +HEAD_AIR_FLOW,Head Air Flow,NONE,AIR FLOW,49,0.0 +PROCESS_PARAMETERS_TABLES_GROUP_GUID,Process Param. Tables Group,NONE,GENERAL,50,0.0 +TABLE_INDEX,Table Index,NONE,GENERAL,51,0.0 +HEAD_ZONE7_TEMP,Head Zone 7 Temp.,NONE,TEMPERATURE,52,0.0 +HEAD_ZONE8_TEMP,Head Zone 8 Temp.,NONE,TEMPERATURE,53,0.0 +HEAD_ZONE9_TEMP,Head Zone 9 Temp.,NONE,TEMPERATURE,54,0.0 +HEAD_ZONE10_TEMP,Head Zone 10 Temp.,NONE,TEMPERATURE,55,0.0 +HEAD_ZONE11_TEMP,Head Zone 11 Temp.,NONE,TEMPERATURE,56,0.0 +HEAD_ZONE12_TEMP,Head Zone 12 Temp.,NONE,TEMPERATURE,57,0.0 +BTSR_THREAD_LENGTH_OFFSET,Btsr Thread Length Offset,NONE,GENERAL,58,0.0 +E_WASTE_AIR_FLOW,E Waste Air Flow,NONE,AIR FLOW,59,0.0 +E_PUMP_TEMP,E Pump Temp.,NONE,TEMPERATURE,60,0.0 +E_PRESSURE_BUILD_UP,E Pressure Build Up,NONE,GENERAL,61,0.0 +E_SPARE2,E Spare2,NONE,GENERAL,62,0.0 +E_SPARE3,E Spare3,NONE,GENERAL,63,0.0 +E_SPARE4,E Spare4,NONE,GENERAL,64,0.0 +E_SPARE5,E Spare5,NONE,GENERAL,65,0.0 +DRYER_ZONE2_TEMP,Dryer Zone 2 Temp.,NONE,TEMPERATURE,66,0.0 +DRYER_ZONE3_TEMP,Dryer Zone 3 Temp.,NONE,TEMPERATURE,67,0.0 +FEEDER_TENSION,Feeder Tension,NONE,TENSION,68,0.0 +PULLER_TENSION,Puller Tension,NONE,TENSION,69,0.0 +WINDER_TENSION,Winder Tension,NONE,TENSION,70,0.0 diff --git a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj index 042105f11..04801741a 100644 --- a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj +++ b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj @@ -776,6 +776,7 @@ <None Include="packages.config"> <SubType>Designer</SubType> </None> + <EmbeddedResource Include="ProcessParameters.csv" /> <None Include="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> @@ -838,7 +839,7 @@ </Target> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> + <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file |
