Files
Mapo-IOB-WIN/IOB-WIN-WS/DTO/EmmegiDTO.cs
T
2025-07-10 13:00:15 +02:00

105 lines
2.7 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace IOB_WIN_WS.DTO
{
public class EmmegiDTO
{
/// <summary>
/// Converte valore raw stato impianto nel formato specifico
/// </summary>
/// <returns></returns>
public static StatusDTO GetStatus(string xmlRaw)
{
StatusDTO answ = new StatusDTO();
// deserializzo
var serializer = new XmlSerializer(typeof(StatusDTO));
using (var reader = new StringReader(xmlRaw))
{
answ = (StatusDTO)serializer.Deserialize(reader);
}
return answ;
}
public enum MachineStatus
{
// manuale
ON,
// attrezzaggio = zero assi
SETUP,
// pronta, in automatico, in attesa carico pezzi
READY,
// posizionamento (teste morse o cambio utensili)
POSITIONING,
// attesa (carico/scarico barra, operazioni utente)
WAIT,
// in lavorazione effettiva
WORKING,
// emergenza
EMERGENCY,
// in allarme
ALARM,
// offline (poweroff?)
OFF_LINE,
OFF,
ERROR
}
[XmlRoot("result_workstation_status")]
public class StatusDTO
{
[XmlElement("workstation")]
public Workstation Workstation { get; set; }
}
/// <summary>
/// Obj workstation
/// </summary>
public class Workstation
{
[XmlElement("id")]
public WorkstationId Id { get; set; }
[XmlElement("status")]
public MachineStatus Status { get; set; }
[XmlElement("status_timestamp")]
public string StatusTimestampRaw { get; set; }
[XmlIgnore]
public DateTime StatusTimestamp
{
get => DateTime.ParseExact(StatusTimestampRaw, "yyyy-MM-dd HH:mm:ss", null);
}
[XmlElement("operator")]
public string Operator { get; set; }
[XmlElement("job_id")]
public string JobId { get; set; }
[XmlElement("operations")]
public int Operations { get; set; }
[XmlElement("tot_operations")]
public int TotalOperations { get; set; }
}
/// <summary>
/// Obj WorkstationId
/// </summary>
public class WorkstationId
{
[XmlAttribute("id")]
public string IdValue { get; set; }
}
}
}