示例#1
0
        public void BaterUsandoFullText(Documento documento, IList <PalavraReconhecida> palavras)
        {
            if (palavras == null)
            {
                return;
            }

            if (palavras.Count == 0)
            {
                return;
            }

            var listaLimpa = new List <dynamic>();

            foreach (var regiao in palavras)
            {
                var palavraAtual = Equivalencia.LimpaConteudoNome(regiao.Texto);
                if (string.IsNullOrEmpty(palavraAtual) == false)
                {
                    ////listaLimpa.Add(new dynamic()
                    ////{
                    ////    Texto = palavraAtual,
                    ////    Localizacao = regiao.Localizacao
                    ////});
                }
            }

            Log.Application.DebugFormat("Documento {0} - Palavras: {1} ", documento.Id, BatimentoFullText.ImprimirLista(listaLimpa));

            if (listaLimpa.Count == 0)
            {
                return;
            }

            var camposSemValor1 = this.indexacaoRepositorio.ObterComMapeamentoPorDocumento(documento);

            if (camposSemValor1 == null)
            {
                return;
            }

            if (camposSemValor1.Count == 0)
            {
                return;
            }

            var ultimoCampo = new Campo();

            foreach (var indexacao in camposSemValor1)
            {
                if (ultimoCampo.Id == indexacao.Campo.Id || indexacao.PrimeiroValor != null)
                {
                    continue;
                }

                ultimoCampo = indexacao.Campo;
                var deveSalvar = false;
                switch (indexacao.Campo.Id)
                {
                default:
                    if (indexacao.BateComFullText(listaLimpa))
                    {
                        deveSalvar = true;
                    }

                    break;
                }

                if (deveSalvar)
                {
                    indexacao.PrimeiroValor = indexacao.SegundoValor;
                    indexacao.ValorFinal    = indexacao.SegundoValor;
                    indexacao.ValorUtilizadoParaValorFinal = ValorUtilizadoParaValorFinal.SegundoValor;
                    indexacao.OcrComplementou       = true;
                    indexacao.DataPrimeiraDigitacao = DateTime.Now;

                    this.gravaLogDocumentoServico.Executar(
                        LogDocumento.AcaoDocumentoOcr,
                        documento.Id,
                        string.Format("Campo [{0}] complementado pelo ocr-FT. Valor:[{1}]", indexacao.Campo.Description, BatimentoFullText.LimitaString(indexacao.SegundoValor.Trim(), 99)));

                    this.indexacaoRepositorio.Salvar(indexacao);
                }
            }
        }