using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AppData
{
///
/// Classe con metodi di supporto per PROD
///
public class ProdLib
{
#region definizione classi impiegate
///
/// Stati degli oggetti TAKT e Stack
///
public enum CStatus
{
///
/// Programmato
///
Programmed = 0,
///
/// In corso
///
Running,
///
/// Completato
///
Done
}
///
/// Stati degli oggetti PANEL/SHEET
///
public enum PStatus
{
///
/// Programmato
///
Programmed = 0,
///
/// Presente / letto su PROD e pronto su scissor lift
///
Present,
///
/// Stampa in corso
///
Printing,
///
/// Stampa completata
///
Printed,
///
/// Lavorazione in corso
///
Machining,
///
/// Lavorazione completata
///
Machined,
///
/// Completato / scaricato da macchina (anche su tavola di scarico)
///
Out
}
///
/// dati del materiale
///
public class MaterialData
{
///
/// Identificativo univoco del materiale (DA ANAGRAFICA db)
///
public int MaterialId { get; set; }
///
/// Codice P/N del materiale (cliente)
///
public string MaterialPN { get; set; }
///
/// Codice P/N del materiale (cliente)
///
public string MaterialDescription { get; set; }
}
///
/// Dati delal lavorazione
///
public class WorkData
{
///
/// Percorso del programma da eseguire
///
public string ProgramPath { get; set; }
///
/// Data inizio processing
///
public DateTime DtStart { get; set; }
///
/// Data fine processing
///
public DateTime DtEnd { get; set; }
///
/// Tempo di lavorazione in minuti decimali
///
public double WorkTimeMin
{
get
{
double answ = 0;
if (DtStart != null && DtEnd != null)
{
try
{
answ = DtEnd.Subtract(DtStart).TotalMinutes;
}
catch
{ }
}
return answ;
}
}
}
///
/// Singolo Pannello da lavorare
///
public class Panel
{
///
/// Identificativo univoco pannello
///
public int PanelId { get; set; }
///
/// Materiale
///
public MaterialData Material { get; set; }
///
/// Stato del pannello
///
public PStatus Status { get; set; }
///
/// Tempi processo x fase printing
///
public WorkData Printing { get; set; }
///
/// Tempi processo x fase CNC
///
public WorkData Machining { get; set; }
///
/// Tempi processo x scarico
///
public WorkData Unloading { get; set; }
}
///
/// Classe che rappresenta gli stack da lavorare
///
public class WStack
{
///
/// Identificativo univoco stack
///
public int StackId { get; set; }
///
/// Stato dello Stack di pannelli
///
public CStatus Status { get; set; }
///
/// Codice dataMAtrix dello stack
///
public string DataMatrix { get; set; }
///
/// Data inizio processing dello Stack
///
public DateTime DtStart { get; set; }
///
/// Data inizio processing dello Stack
///
public DateTime DtEnd { get; set; }
///
/// Elenco dei pannelli(sheets) dello Stack
///
public List PanelsList { get; set; }
///
/// Numero di Panels da lavorare
///
public int NumPanels
{
get
{
int answ = 0;
try
{
answ = PanelsList.Count;
}
catch
{ }
return answ;
}
}
}
///
/// Oggetto globale TAKT
///
public class Takt
{
///
/// Codice univoco oggetto TAKT (data.num)
///
public string TaktId { get; set; }
///
/// Stato del TAKT
///
public CStatus Status { get; set; }
///
/// Elenco degli Stack da lavorare
///
public List StackList { get; set; }
///
/// Numero di Stack da lavorare
///
public int NumStack
{
get
{
int answ = 0;
try
{
answ = StackList.Count;
}
catch
{ }
return answ;
}
}
}
///
/// Helper x serializzare l'oggetto
///
///
///
public static string serializeTakt(Takt currData)
{
string answ = JsonConvert.SerializeObject(currData);
return answ;
}
///
/// Helper x deserializzare l'oggetto
///
///
///
public static Takt deserializeTakt(string rawData)
{
Takt answ = JsonConvert.DeserializeObject(rawData);
return answ;
}
#endregion
///
/// Fornisce il prossimo TAKT da elaborare oppure null se non ce ne fossero altri da elaborare per la data CORRENTE
///
///
public int getNextTakt()
{
return 0;
}
}
}