Esempio n. 1
0
        public bool Invio(DatiPerInvioTest valori)
        {
            try
            {
                log.Info($"Invio esito prova (id {valori.guid}\n\tarchivio:\t{valori.nomeccsv}");
                var NGtestResult = new NG_TestResultParameter
                {
                    TensioneIsolamento   = decimal.Parse(valori.tensioneisolamento),
                    ResistenzaIsolamento = decimal.Parse(valori.restistenzaisolamento),
                    TensioneRigidita     = decimal.Parse(valori.tensionerigidità),
                    CorrenteRigidita     = decimal.Parse(valori.correnterigidità),

                    DescrizioneEsito = valori.descrizioneesito,
                    Esito            = valori.esito,

                    SerialNumber = valori.serialnumber,
                    //IdProgramma = valori.idprogramma,
                    NomeProgramma            = valori.nomeprogramma,
                    CorrenteDiTerra          = null,
                    ResistenzaDiTerra        = null,
                    ID_Macchina              = null,
                    NG_ReleaseSoftwareNfc    = null,
                    NG_FotoCurvaAssorbimento = null,
                    NG_FotoLed1              = null,
                    NG_FotoLed2              = null,

                    Assorbimenti = new List <AbsorptionResultParameter>()
                    {
                        new AbsorptionResultParameter
                        {
                            Nome               = "AssorbimentoMonofase",
                            AmpereFase1        = null,
                            AmpereFase2        = null,
                            AmpereFase3        = null,
                            TensioneFase1      = null,
                            TensioneFase2      = null,
                            TensioneFase3      = null,
                            PotenzaFase1       = null,
                            PotenzaFase2       = null,
                            PotenzaFase3       = null,
                            FattoreDiPotenza   = null,
                            Portata            = null,
                            Watt               = null,
                            Pressione          = null,
                            SquilibrioCorrenti = null,
                            TensioneProva      = null,
                            Velocita           = null,
                            Pwm = null
                        }
                    }
                };
                try
                {
                    //log.Debug("inizio invio");
                    var finalMaterial = valori.finalmaterial;
                    log.Debug($"Dati:FinalMaterial: {finalMaterial} - SerialNumber: {valori.serialnumber} - NomeProgramma: {valori.nomeprogramma} - DescrizioneEsito: {valori.descrizioneesito} - Esito: {valori.esito} - TensioneIsolamento: {valori.tensioneisolamento} - ResistenzaIsolamento: {valori.restistenzaisolamento} - TensioneRigidita: {valori.tensionerigidità} - CorrenteRigidita: {valori.correnterigidità}");
                    var response = Engineering.UAFClientConnectorLibrary.UAFConnector.StaticNG_SendTestResult(NGtestResult, finalMaterial);
                    //Console.WriteLine("Command NG_SendTestResult\n");
                    //Console.WriteLine($"Succeeded: {response.Succeeded}");
                    if (!response.Succeeded)
                    {
                        log.Warn("Invio fallito");
                        log.Debug($"Error {response.Error.ErrorCode}: {response.Error.ErrorMessage}");
                        return(false);
                    }
                }
                catch (Exception ex)   //errore nella chiamata della libreria - si considera il sistama offline e non vanno segnati i record del db come da evitare
                {
                    log.Debug("InvioTest - errore servizio");
                    log.Debug(ex);
                    return(false);
                }
            }
            catch (Exception ex)  //questa eccezzione deve fare il bubbleling al chiamante per discriminare tra un errore dei parametri ed uno della libreria
            {
                log.Error("InvioTest - errore codifica parametri");
                log.Debug(ex);
                throw new Exception();
            }
            return(true);
        }
Esempio n. 2
0
        bool InviaPrimoTestDisponible()
        {
            Globali.InvioInCorso = true;
            //cerca un test non inviato
            var count = db.Tests.Where(o => (o.trasferito != true & o.errore != true & o.datiordine1 != "" & o.datiordine2 != "")).Select(o => o.GuidProva).Count();

            if (count == 0)
            {
                log.Debug("Nessun nuovo test trovato");
                Globali.InvioInCorso = false;
                return(true);
            }

            //recupero il primo guid valido

            var guid = db.Tests.Where(o => (o.trasferito != true & o.errore != true & o.datiordine1 != "" & o.datiordine2 != "")).OrderBy(o => o.Orario).Select(o => o.GuidProva).First();

            log.Info($"Test trovato: GUID {guid}");



            //verifica presenza di tutte le righe ncessarie per importare la prova
            var prove = db.Tests.Where(o => o.GuidProva == guid).OrderBy(t => t.Orario);

            if (prove == null)
            {
                return(true);                 //non dovrebbe capitare
            }
            var ok1 = prove.Where(o => o.metodo == "HVAC").Count();
            var ok2 = prove.Where(o => o.metodo == "ISO").Count();

            if (!(ok1 == 1 & ok2 == 1))
            {
                //non tutte le righe sono presenti - marca le righe esistenti il test cone fallato/inviato;
                log.Info($"Test incompleto - tutte le voci sono contrassegate come invalide e non saranno più valuate (guid {guid})");
                foreach (Test prova in prove)
                {
                    prova.errore = true;
                }
                db.SaveChanges();
                Globali.InvioInCorso = false;
                return(true);
            }

            //estrazione dati da inviare

            DatiPerInvioTest Dato      = new DatiPerInvioTest();
            string           esitoHVAC = "";
            string           esitoISO  = "";

            foreach (Test prova in prove)
            {
                if (prova.metodo == "ISO")
                {
                    Dato.nomeccsv = prova.nomecsv;   //passato per voci di log
                    Dato.guid     = prova.GuidProva; //passato per voci di log

                    Dato.tensioneisolamento    = prova.valore1;
                    Dato.restistenzaisolamento = prova.valore2;

                    Dato.esito = (prova.esitototale.ToLower() == "go") ? "PASS":"******";
                    esitoISO   = (prova.esitototale.ToLower() == "go") ? "PASS" : "Fail";

                    Dato.serialnumber  = prova.numerodiserie.ToString() + prova.numeroprogetto.ToString();
                    Dato.idprogramma   = prova.programmadiprova;
                    Dato.nomeprogramma = prova.datiordine1;
                    Dato.finalmaterial = prova.datiordine2;
                }
                if (prova.metodo == "HVAC")
                {
                    Dato.tensionerigidità = prova.valore1;
                    Dato.correnterigidità = prova.valore2;
                    esitoHVAC             = (prova.esitototale.ToLower() == "go") ? "PASS" : "Fail";
                }
            }
            Dato.descrizioneesito = $"ISO: {esitoISO} - HVAC: {esitoHVAC}";

            //invio dati
            try
            {
                var res = Globali.Invio.Invio(Dato);
                //invio con successo segno come trasferiti;
                if (res)
                {
                    foreach (Test prova in prove)
                    {
                        prova.OrarioTrasferimetno = DateTime.Now;
                        prova.serialegenerato     = Dato.serialnumber;
                        prova.trasferito          = true;
                    }
                    db.SaveChanges();
                }
                else
                {
                    //invio non effettutato da imputare alla libreria (connettivita, nome server, rete, etc.)
                    //i recrodo non vengono rimarcati e il tantativo verra ripetutto dopo aver fattto passare un intervallo più lungo;
                    log.Warn("Invio non risucito, verra riprovato tra 60 secondi");
                    Globali.InvioInCorso = false;
                    return(false);
                }
            }
            catch (Exception ex)
            {
                log.Debug("errore invio dati");
                log.Debug(ex);
                //segnare come invalido;
                foreach (Test prova in prove)
                {
                    prova.errore = true;
                }
                db.SaveChanges();
                Globali.InvioInCorso = false;
                return(false);
            }

            // aggiorna tabella con i test importati
            try
            {
                var query1 = db.Tests.Where(o => o.trasferito == true).OrderByDescending(o => o.Orario).Take(100);
                var ultimitestimportati1 = query1.ToList();
                bindingSource1.DataSource = ultimitestimportati1;
                dataGridView1.DataSource  = bindingSource1;
            }
            catch
            {
            }

            Globali.InvioInCorso = false;
            return(true);
        }