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); }
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); }
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); }