Esempio n. 1
0
        private void TratarFinalizacaoLotecef(LotecefPronto lotecefPronto, int qtdeDesejada)
        {
            //// movendo excessos para novo dia
            if (lotecefPronto.QtdeTotal - qtdeDesejada > 0)
            {
                LoteCef lotecefAberto    = null;
                var     listagemJaAberto = this.loteCefRepositorio.ObterAbertos();
                if (listagemJaAberto.Count > 0)
                {
                    lotecefAberto = listagemJaAberto.Where(x => x.Id != lotecefPronto.LotecefId).OrderBy(x => x.Id).FirstOrDefault();
                }

                if (lotecefAberto == null)
                {
                    lotecefAberto = LoteCef.Novo();
                    this.loteCefRepositorio.Salvar(lotecefAberto);
                }

                var contador = 0;
                var lotes    = this.loteRepositorio.ObterPorLoteCefId(lotecefPronto.LotecefId).OrderByDescending(x => x.Id);
                foreach (var lote in lotes.Where(x => x.Status == LoteStatus.Faturamento && x.ResultadoQualidadeCef == null && x.QualidadeM2sys == 0))
                {
                    this.loteRepositorio.AtualizarLotecef(lote.Id, lotecefAberto.Id);
                    contador++;
                    if (contador >= lotecefPronto.QtdeTotal - qtdeDesejada)
                    {
                        break;
                    }
                }
            }

            this.loteCefRepositorio.Finalizar(lotecefPronto.LotecefId, qtdeDesejada);
        }
Esempio n. 2
0
        private bool JaPodeRedisponibilizarParaQualiCef(LoteCef loteCefAguardando)
        {
            var lotes = this.loteRepositorio.ObterPorLoteCef(loteCefAguardando.Id);

            if (lotes.Count == 0)
            {
                return(false);
            }

            var maiorAmostra           = lotes.Max(x => x.QualidadeCef);
            var lotesNaQualiCef        = lotes.Count(x => x.QualidadeCef == maiorAmostra && x.Status == LoteStatus.AguardandoControleQualidadeCef);
            var lotesNaPrimeiraAmostra = lotes.Count(x => x.QualidadeCef == 1);

            return(lotesNaQualiCef >= lotesNaPrimeiraAmostra);
        }
Esempio n. 3
0
        public void Executar(ConfiguracaoDeLoteCef configuracaoDeLoteCef)
        {
            Contexto.LotesCef.Clear();
            var lotesCef = this.loteCefRepositorio.ObterAbertos(configuracaoDeLoteCef);

            while (lotesCef.Count < 1)
            {
                var novoLote = LoteCef.Novo();
                this.loteCefRepositorio.Salvar(novoLote);

                lotesCef.Add(novoLote);
            }

            foreach (var loteCef in lotesCef)
            {
                this.AdicionaNoContexto(loteCef.Id, loteCef.QuantidadeDeLotes);
            }
        }
        private void Processar(LoteCef loteCef)
        {
            var lotes = this.loteRepositorio.ObterPorLoteCef(loteCef.Id);
            var identificacaoNovaAmostra = lotes.Max(x => x.QualidadeCef) + 1;

            if (identificacaoNovaAmostra > 6)
            {
                Log.Application.InfoFormat("Não buscar nova amostra pois o LoteCEF #{0} já possui mais de 6 amostras.", loteCef.Id);
                return;
            }

            var quantidadeDeLotesParaNovaAmostra = lotes.Count(x => x.QualidadeCef == 1);
            var novaAmostra = lotes.Where(x => x.QualidadeM2sys == 1 && x.QualidadeCef == 0 && x.Status == LoteStatus.Faturamento).ToList();

            ////if (novaAmostra.Count() >= quantidadeDeLotesParaNovaAmostra)
            ////{
            ////    this.EnviarParaQualidade(
            ////        novaAmostra.Take(quantidadeDeLotesParaNovaAmostra).ToList(),
            ////        identificacaoNovaAmostra);

            ////    this.loteCefRepositorio.AlterarStatus(loteCef.Id, LoteCefStatus.Fechado);
            ////    return;
            ////}

            /////*
            //// * OK - os selecionados faz: pega a quantidade e seta LoteSTatus = q5 e proc_status = q5 e batch_qualicef = identificacaoNovaAmostra
            //// * OK - ate chegar no numero quantidadeDeLotesParaNovaAmostra, vou enviar para qualidade M2: batch_m2 = 1 e  LoteSTatus = M5 e proc_status = M5
            //// *
            //// * TODOS ESSES DEVE RECEBER BATCH_QUALICEF = identificacaoNovaAmostra
            //// *
            //// * lotecef_status = ReprovadoAguardandoNovaAmostra
            //// */

            ////this.EnviarParaQualidade(novaAmostra, identificacaoNovaAmostra);
            this.EnviarLotesParaQualidadeM2(lotes, identificacaoNovaAmostra, quantidadeDeLotesParaNovaAmostra);
            this.loteCefRepositorio.AlterarStatus(loteCef.Id, LoteCefStatus.ReprovadoAguardandoNovaAmostra);
        }