Files
NKC/NKC_SDK/Objects.cs
T
2019-11-29 12:09:30 +01:00

532 lines
13 KiB
C#

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
namespace NKC_SDK
{
#region classi per NESTING
/// <summary>
/// Classe che rappresenta la richiesta di AZIONI al NESTING
/// </summary>
public class commandRequest
{
/// <summary>
/// ID del processo richiesto (generato in fase di import)
/// </summary>
public int BatchID { get; set; }
/// <summary>
/// Richiesta per il nesting: DoNesting / HaltNesting
/// </summary>
public string ActionRequested { get; set; }
}
/// <summary>
/// Classe che rappresenta la richiesta di processing di NESTING da inserire in REDIS
/// </summary>
public class batchRequest
{
/// <summary>
/// ID del processo richiesto (generato in fase di import)
/// </summary>
public int BatchId { get; set; }
/// <summary>
/// ID univoco dell'invio del TASK
/// </summary>
public string EnvNum { get; set; } = "";
/// <summary>
/// tempo amssimo eprmesso x nesting (minuti)
/// </summary>
public int MaxTime { get; set; }
/// <summary>
/// Tipo di processing richiesto
/// 1 = stima
/// 2 = nesting
/// </summary>
public int ProcType { get; set; }
/// <summary>
/// Codice della amcchina x cui si effettua richeista
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public mType MachineType { get; set; }
/// <summary>
/// Tipo di ordine richiesto
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public oType OrderType { get; set; }
/// <summary>
/// Elenco ordini richeisti da processare / nestare
/// </summary>
public List<Order> OrderList { get; set; }
}
/// <summary>
/// Struttura Ordine passata a NESTING
/// </summary>
public class Order
{
/// <summary>
/// ID Ordine (da DB)
/// </summary>
public int OrderId { get; set; } = 0;
/// <summary>
/// Cod ordine di NKC
/// </summary>
public string OrderCod { get; set; }
/// <summary>
/// Codice ordine esterno da cliente (HFA)
/// </summary>
public string OrderExtCode { get; set; }
/// <summary>
/// Plant di destinazione
/// </summary>
public string DestPlant { get; set; }
/// <summary>
/// Elenco dei KIT dell'ordine
/// </summary>
public List<Kit> KitList { get; set; }
}
/// <summary>
/// Oggetto KIT
/// </summary>
public class Kit
{
/// <summary>
/// ID KIT (da DB)
/// </summary>
public int KitId { get; set; } = 0;
/// <summary>
/// Codice KIT da cod ordine ext
/// </summary>
public string KitExtCode { get; set; } = "";
/// <summary>
/// Elenco Items da produrre x KIT
/// </summary>
public List<Part> PartList { get; set; }
}
/// <summary>
/// Struttura Item passata a NESTING
/// </summary>
public class Part
{
/// <summary>
/// Cod ITEM di NKC
/// </summary>
public int PartId { get; set; } = 0;
/// <summary>
/// Codice ITEM esterno da cliente (HFA)
/// </summary>
public string PartExtCode { get; set; }
/// <summary>
/// Quantità di Item per SINGOLO ordine
/// </summary>
public int PartQty { get; set; }
/// <summary>
/// ID del materiale dell'item
/// </summary>
public int MatId { get; set; }
/// <summary>
/// Path del disegno CAD dell'item da produrre x NESTING
/// </summary>
public string CadFilePath { get; set; }
/// <summary>
/// Parametri opzionali (es x risposta NESTING)
/// </summary>
public Dictionary<string, string> OptParameters { get; set; } = null;
}
/// <summary>
/// Classe Sheet x Nesting
/// </summary>
public class NestSheet
{
/// <summary>
/// Identificativo univoco Sheet
/// </summary>
public String SheetId { get; set; } = "";
/// <summary>
/// Indice dello sheet
/// </summary>
public int SheetIndex { get; set; } = 0;
/// <summary>
/// Materiale
/// </summary>
public int MatId { get; set; }
/// <summary>
/// Tempo STIMATO di taglio calcolato dal Nesting espresso in Secondi
/// </summary>
public double EstimatedWorktime { get; set; } = 0;
/// <summary>
/// Programma x printing
/// </summary>
public string PrintProgram { get; set; } = "";
/// <summary>
/// Programma x Machining
/// </summary>
public string MachiningProgram { get; set; } = "";
/// <summary>
/// SVG del lavoro previsto
/// </summary>
public string Drawing { get; set; } = "";
/// <summary>
/// Elenco Part da produrre x ordine
/// </summary>
public List<Part> PartList { get; set; } = null;
}
/// <summary>
/// Struttura stack
/// </summary>
public class NestBunk
{
/// <summary>
/// Identificativo univoco stack
/// </summary>
public String BunkId { get; set; } = "";
/// <summary>
/// Indice del Bunk
/// </summary>
public int BunkIndex { get; set; } = 0;
/// <summary>
/// Num di fogli nello stack
/// </summary>
public int NumSheet
{
get
{
int answ = 0;
if (SheetList != null)
{
answ = SheetList.Count;
}
return answ;
}
}
/// <summary>
/// Elenco Sheet previsti
/// </summary>
public List<NestSheet> SheetList { get; set; }
}
/// <summary>
/// Definizione classe x materiali
/// </summary>
public class Material
{
public int MatId { get; set; } = 0;
public int MatExtCode { get; set; } = 0;
public string MatDesc { get; set; } = "";
public DateTime ApprovDate { get; set; } = DateTime.Now;
public string ApprovUser { get; set; } = "";
public decimal L_mm { get; set; } = 0;
public decimal W_mm { get; set; } = 0;
public decimal T_mm { get; set; } = 0;
public string MatDtmx { get; set; } = "";
}
/// <summary>
/// Classe che rappresenta stato ordine ricevuto via REDIS da NESTING
/// </summary>
public class baseNestAnsw
{
/// <summary>
/// ID univoco invio del TASK
/// </summary>
public string EnvNum { get; set; } = "";
/// <summary>
/// Tipo di processing richiesto
/// 1 = stima
/// 2 = nesting
/// </summary>
public int ProcType { get; set; } = 0;
/// <summary>
/// Codice della amcchina x cui si effettua richiesta
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public mType MachineType { get; set; } = mType.Multiax;
/// <summary>
/// Tipo di ordine richiesto
/// </summary>
[JsonConverter(typeof(StringEnumConverter))]
public oType OrderType { get; set; } = oType.BatchRequest;
/// <summary>
/// Status del processo di nesting
/// </summary>
public procStatus ProcessStatus { get; set; } = procStatus.waiting;
/// <summary>
/// Note libere del nesting
/// </summary>
public string ProcessNotes { get; set; } = "";
/// <summary>
/// Tempo di processing del Nesting espresso in Secondi
/// </summary>
public double ProcessingRuntime { get; set; } = 0;
/// <summary>
/// Tempo STIMATO di taglio calcolato dal Nesting espresso in Secondi
/// </summary>
public double EstimatedWorktime { get; set; } = 0;
}
/// <summary>
/// Risposta NESTING x la STIMA iniziale
/// </summary>
public class nestReplyBatchInitial : orderStatus
{
/// <summary>
/// Elenco Items da produrre x ordine
/// </summary>
public List<Part> PartList { get; set; }
}
/// <summary>
/// Risposta NESTING x la STIMA iniziale
/// </summary>
public class nestReplyBatchFinal : orderStatus
{
/// <summary>
/// Elenco Stack previsti
/// </summary>
public List<NestBunk> BunkList { get; set; }
public List<NestCart> CartList { get; set; }
public List<NestBin> BinList { get; set; }
}
/// <summary>
/// Dati di un Cart post nesting
/// </summary>
public class NestCart
{
/// <summary>
/// Indice del CART nel TAKC / giorno
/// </summary>
public int CartIndex { get; set; } = 0;
/// <summary>
/// Elenco dei KIT dell'ordine
/// </summary>
public List<Kit> KitList { get; set; }
}
/// <summary>
/// Dati di un Cart post nesting
/// </summary>
public class NestBin
{
/// <summary>
/// Indice del BIN nel TAKC / giorno
/// </summary>
public int BinIndex { get; set; } = 0;
/// <summary>
/// Elenco dei PART/ITEM dell'Ordine
/// </summary>
public List<Part> PartList { get; set; }
}
/// <summary>
/// Classe che rappresenta stato ordine ricevuto via REDIS da NESTING
/// </summary>
public class orderStatus : baseNestAnsw
{
/// <summary>
/// ID del processo di Nesting in corso (generato in fase di import)
/// </summary>
public int BatchID { get; set; }
}
public class nestReplyOffOrd : orderStatus
{
/// <summary>
/// ID dell'ordine offlien da processare
/// </summary>
public string OffOrderID { get; set; } = "";
/// <summary>
/// Num di fogli nello stack
/// </summary>
public int NumSheet
{
get
{
int answ = 0;
if (SheetList != null)
{
answ = SheetList.Count;
}
return answ;
}
}
/// <summary>
/// Elenco Sheet previsti
/// </summary>
public List<NestSheet> SheetList { get; set; }
}
#endregion
#region classi per PROD
/// <summary>
/// dati del materiale
/// </summary>
public class MaterialData
{
/// <summary>
/// Identificativo univoco del materiale (DA ANAGRAFICA db)
/// </summary>
public int MaterialId { get; set; }
/// <summary>
/// Codice P/N del materiale (cliente)
/// </summary>
public string MaterialPN { get; set; }
/// <summary>
/// Codice P/N del materiale (cliente)
/// </summary>
public string MaterialDescription { get; set; }
}
/// <summary>
/// Dati delal lavorazione
/// </summary>
public class WorkData
{
/// <summary>
/// Percorso del programma da eseguire
/// </summary>
public string ProgramPath { get; set; }
/// <summary>
/// Data inizio processing
/// </summary>
public DateTime? DtStart { get; set; }
/// <summary>
/// Data fine processing
/// </summary>
public DateTime? DtEnd { get; set; }
/// <summary>
/// Tempo di lavorazione in minuti decimali
/// </summary>
public double WorkTimeMin
{
get
{
double answ = 0;
if (DtStart != null && DtEnd != null)
{
try
{
answ = ((DateTime)DtEnd).Subtract((DateTime)DtStart).TotalMinutes;
}
catch
{ }
}
return answ;
}
}
}
/// <summary>
/// Singolo Pannello IN LAVORAZIONE
/// </summary>
public class ProdSheet
{
/// <summary>
/// Identificativo univoco pannello
/// </summary>
public int SheetId { get; set; }
/// <summary>
/// Materiale
/// </summary>
public MaterialData Material { get; set; }
/// <summary>
/// Stato del pannello
/// </summary>
public PStatus Status { get; set; }
/// <summary>
/// Tempi processo x fase printing
/// </summary>
public WorkData Printing { get; set; }
/// <summary>
/// Tempi processo x fase CNC
/// </summary>
public WorkData Machining { get; set; }
/// <summary>
/// Tempi processo x scarico
/// </summary>
public WorkData Unloading { get; set; }
}
/// <summary>
/// Classe che rappresenta i BUNK da lavorare
/// </summary>
public class ProdBunk
{
/// <summary>
/// Identificativo univoco stack
/// </summary>
public int BunkId { get; set; }
/// <summary>
/// Stato dello Stack di pannelli
/// </summary>
public CStatus Status { get; set; }
/// <summary>
/// Codice dataMAtrix dello stack
/// </summary>
public string DataMatrix { get; set; }
/// <summary>
/// Data inizio processing dello Stack
/// </summary>
public DateTime DtStart { get; set; }
/// <summary>
/// Data inizio processing dello Stack
/// </summary>
public DateTime DtEnd { get; set; }
/// <summary>
/// Elenco dei pannelli(sheets) dello Stack
/// </summary>
public List<ProdSheet> SheetList { get; set; }
/// <summary>
/// Numero di Sheets da lavorare
/// </summary>
public int NumSheets
{
get
{
int answ = 0;
try
{
answ = SheetList.Count;
}
catch
{ }
return answ;
}
}
}
/// <summary>
/// Valori decodificati
/// </summary>
public class decodedData
{
/// <summary>
/// Tipo codice decodificato
/// </summary>
public codeType codeType { get; set; } = codeType.UNK;
/// <summary>
/// Codice decodificato
/// </summary>
public string code { get; set; } = "";
/// <summary>
/// Codice decodificato in formato INT
/// </summary>
public int codeInt { get; set; } = 0;
/// <summary>
/// Descrizione associata
/// </summary>
public string description { get; set; } = "";
/// <summary>
/// Dato letto RAW
/// </summary>
public string rawData { get; set; } = "";
}
#endregion
}