예제 #1
0
        private bool PreparaDistinte(out string messaggioErrore, out List <Distinta> distinte)
        {
            distinte = new List <Distinta>();
            try
            {
                messaggioErrore = string.Empty;
                MigrazioneDiBaBLL bll = new MigrazioneDiBaBLL();

                List <MigrazioneDiBaDS.DATIEXCELRow> righeConAnagrafica = _ds.DATIEXCEL.Where(x => !string.IsNullOrEmpty(x.ANAGRAFICA)).OrderBy(x => x.IDDATAEXCEL).ToList();
                if (righeConAnagrafica.Count == 0)
                {
                    messaggioErrore = "Nessuna anagrafica trovata";
                    return(false);
                }

                MigrazioneDiBaDS.DATIEXCELRow riga = righeConAnagrafica.FirstOrDefault();
                int avantiMassimo = _ds.DATIEXCEL.Max(x => x.AVANTI);
                creaDistinta(riga, 1, _ds.DATIEXCEL.Rows.Count, distinte, righeConAnagrafica, avantiMassimo);

                ImpaginaMessaggioDistinte(distinte);
                return(true);
            }
            catch (Exception ex)
            {
                messaggioErrore = ex.Message;
                return(false);
            }
        }
예제 #2
0
        private void creaDistinta(MigrazioneDiBaDS.DATIEXCELRow riga, int indiceMinimo, int indiceMassimo, List <Distinta> distinte, List <MigrazioneDiBaDS.DATIEXCELRow> righeConAnagrafica, int avantiMassimo)
        {
            int indice = 0;

            List <MigrazioneDiBaDS.DATIEXCELRow> righeFiglie = new List <MigrazioneDiBaDS.DATIEXCELRow>();

            do
            {
                indice++;
                if (indice > avantiMassimo)
                {
                    return;
                }

                righeFiglie = righeConAnagrafica.Where(x => x.AVANTI == riga.AVANTI + indice && x.IDDATAEXCEL > indiceMinimo && x.IDDATAEXCEL < indiceMassimo).ToList();
            } while (righeFiglie.Count == 0);

            List <Componente> componenti = new List <Componente>();

            righeFiglie.ForEach(x => componenti.Add(new Componente(x.ANAGRAFICA, x.QUANTITA)));

            distinte.Add(new Distinta(riga.ANAGRAFICA, componenti));

            for (int i = 0; i < righeFiglie.Count; i++)
            {
                if (i < righeFiglie.Count - 1)
                {
                    creaDistinta(righeFiglie[i], righeFiglie[i].IDDATAEXCEL, righeFiglie[i + 1].IDDATAEXCEL, distinte, righeConAnagrafica, avantiMassimo);
                }
                else
                {
                    creaDistinta(righeFiglie[i], righeFiglie[i].IDDATAEXCEL, indiceMassimo, distinte, righeConAnagrafica, avantiMassimo);
                }
            }
        }
예제 #3
0
        private bool PreparaCicli(out string messaggioErrore, out List <Ciclo> cicli)
        {
            cicli = new List <Ciclo>();
            try
            {
                messaggioErrore = string.Empty;
                MigrazioneDiBaBLL bll = new MigrazioneDiBaBLL();

                List <MigrazioneDiBaDS.DATIEXCELRow> righeConAnagrafica = _ds.DATIEXCEL.Where(x => !string.IsNullOrEmpty(x.ANAGRAFICA)).OrderByDescending(x => x.IDDATAEXCEL).ToList();
                if (righeConAnagrafica.Count == 0)
                {
                    messaggioErrore = "Nessuna anagrafica trovata";
                    return(false);
                }

                int idInizioCiclo = 0;
                int avanti        = 0;
                foreach (MigrazioneDiBaDS.DATIEXCELRow riga in righeConAnagrafica)
                {
                    if (idInizioCiclo == 0)
                    {
                        idInizioCiclo = riga.IDDATAEXCEL;
                        avanti        = riga.AVANTI;
                    }
                    else if (idInizioCiclo > 0)
                    {
                        if (riga.AVANTI < avanti)
                        {
                            cicli.Add(new Ciclo(idInizioCiclo, riga.IDDATAEXCEL, riga.ANAGRAFICA));
                        }
                        idInizioCiclo = riga.IDDATAEXCEL;
                        avanti        = riga.AVANTI;
                    }
                }

                foreach (Ciclo c in cicli)
                {
                    int operazione = 10;
                    for (int i = c.Inizio - 1; i >= c.Fine; i--)
                    {
                        MigrazioneDiBaDS.DATIEXCELRow riga = _ds.DATIEXCEL.Where(x => x.IDDATAEXCEL == i).FirstOrDefault();
                        if (riga != null)
                        {
                            Fase f = new Fase();
                            f.Operazione = operazione;
                            operazione  += 10;

                            f.AreaProduzione   = riga.REPARTO;
                            f.TempoLavorazione = riga.PEZZIORARI > 0 ? 1 / riga.PEZZIORARI : 0;
                            f.Collegamento     = riga.COLLEGAMENTO;
                            f.Task             = riga.CODICEFASE;
                            if (!string.IsNullOrEmpty(riga.NOTA))
                            {
                                f.Commenti.Add(riga.NOTA);
                            }
                            c.Fasi.Add(f);
                        }
                    }
                }
                ImpaginaMessaggioCicli(cicli);
                return(true);
            }
            catch (Exception ex)
            {
                messaggioErrore = ex.Message;
                return(false);
            }
        }