Pessoal, estou com o seguinte problema no meu código, eu não estou conseguindo gravar a primeira linha da planilha Excel, porém eu consigo gravar somente da segunda linha adiante, quando eu faço a consulta no meu banco de dados não aparece o nome da pessoa da primeira linha, que no caso se chama interessado lá no banco de dados, somente da segunda a diante que grava. Printei as imagens para vocês poderem visualizar na prática, consigo ler os três registros da planilha, porém não consigo gravar o da primeira linha, pega somente da segunda linha adiante galera. postarei meu código, preciso finalizar isso até quarta, queria ver se alguém pode me ajudar. Alguém sabe o que posso aplicar para resolver olhando meu código? Vou postar também meu código para ficar melhor a entender. No interessado mostra como tipo nulo e dá o seguinte erro:
NHibernate.Exceptions.GenericADOException: could not insert: [SDPJDominio.Domain.Interessado#19516][SQL: INSERT INTO sdpj_interessado (TIP_INTERESSADO, CPF_CNPJ_INTERESSADO, NME_INTERESSADO, DSC_ENDERECO, NUM_ENDERECO, DSC_COMPLEMENTO, NUM_CEP, COD_BAIRRO, COD_MUNICIPIO, COD_INTERESSADO) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] ---> Oracle.DataAccess.Client.OracleException:
ORA-01400: não é possível inserir NULL em ("U_SDP"."SDPJ_INTERESSADO"."NME_INTERESSADO")
Meu código:
protected void importar_Click(object sender, EventArgs e)
{
DataTable Dados = new DataTable();
if (selecionarArquivo.HasFile)
{
if (Path.GetExtension(selecionarArquivo.FileName) != ".xlsx" && Path.GetExtension(selecionarArquivo.FileName) != ".xls")
ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Somente arquivos em excel')</script>");
else
{
if (selecionarArquivo.FileContent != null)
{
string Excel = AppDomain.CurrentDomain.BaseDirectory + selecionarArquivo.FileName;
selecionarArquivo.SaveAs(Excel);
Dados = DadosExcel(Excel);
var registrosValidos = ((DataTable)Dados).Rows.OfType<DataRow>().Skip(5);
registrosValidos = registrosValidos.Take(registrosValidos.Count() - 1);
int quantidade_por_pagina = 100;
int total_de_paginas;
int qtd_total_registros = registrosValidos.Count();
total_de_paginas = (int)Math.Ceiling((double)qtd_total_registros / quantidade_por_pagina);
bool layoutValido = VerificaLayout(Dados);
if (!layoutValido)
ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Layout do arquivo fora do padrão definido para importação.')</script>");
else
{
VerificacaoPreliminar(registrosValidos);
List<System.Threading.Tasks.Task> TarefasParalelas = new List<System.Threading.Tasks.Task>();
for (int i = 0; i < total_de_paginas; i++)
{
var pagina = i;
var linhasPorPagina = registrosValidos.Skip(pagina * quantidade_por_pagina).Take(quantidade_por_pagina);
var data_rows_divididos = linhasPorPagina.SplitList(10);
foreach (var aaa in data_rows_divididos)
{
TarefasParalelas.Add(ProcessamentoTabela(aaa));
}
}
foreach (var tarefa in TarefasParalelas)
tarefa.Start();
System.Threading.Tasks.Task.WaitAll(TarefasParalelas.ToArray());
ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '60%';</script>");
if (listaGravarProcInter.Count != 0)
{
var ListaSemDuplicados = listaGravarProcInter.Distinct().ToList();
foreach (ProcessoInteressado item in ListaSemDuplicados)
{
aplProcessoInteressado.salvar(item);
}
}
if (listaLogsAuditoria.Count != 0)
{
foreach (var item in listaLogsAuditoria)
{
aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), item, DateTime.Now);
}
}
else
{
logimportacao.Visible = true;
loglbl.Text = log.ToString();
//ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '100%';</script>");
ClientScript.RegisterStartupScript(typeof(string), "Alerta", "<script>alert('Arquivo importado com sucesso. Verifique o log na tela. ')</script>");
}
/*else
{
logimportacao.Visible = true;
loglbl.Text = log.ToString();
ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
}*/
}
}
}
}
}
private System.Threading.Tasks.Task ProcessamentoTabela(IEnumerable<DataRow> dadosparam)
{
Action<object> processamento = (dados) =>
{
NHibernate.Context.ThreadStaticSessionContext.Bind(NhibernateHelper.Teste().OpenSession());
foreach (var linha in (IEnumerable<DataRow>)dados)
{
List<Processo> listaProcessoExistente = new List<Processo>();
Processo processo = null;
Interessado interessado = new Interessado();
if (!arquivoInvalidado)
//ClientScript.RegisterStartupScript(Page.GetType(), "Carregando...", "<script>document.getElementById('progresso').style.width = '30%';</script>");
//Verifica se existe mais de 1 interessado com mesmo CPF cadastrado, salva os interessados inexistentes e altera os cadastros q tem interessados duplicados.
this.ValidaDuplicidadeInteressado();
if (!linha.ItemArray[1].ToString().Equals(""))
processo = aplProcesso.consultarPorNProcessoER(linha.ItemArray[1].ToString());
if (processo == null)
{
if (!linha.ItemArray[2].ToString().Equals(""))
processo = aplProcesso.consultarPorNProcessoER(linha.ItemArray[2].ToString());
}
if (linha.ItemArray[7].ToString().Length == 14)
interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString()));
if (linha.ItemArray[7].ToString().Length == 18)
interessado = aplInteressado.ConsultarPorCPF(AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString()));
if (processo != null)
{
List<ProcessoInteressado> listaprocinter = aplProcessoInteressado.consultarPorIdProcesso(processo.Codigo);
if (listaprocinter.Exists(o => o.Interessado == interessado))
log.Append("O interessado informado na linha " + (1) + " foi adicionado novamente ao processo " + processo.NumProcessoJudicial + " <br>");
setProcInter(processo, interessado, linha);
}
else
{
//Novo Processo - 6.3
processo = new Processo();
processo.Interessado = interessado;
processo.NumProcessoJudicial = linha.ItemArray[2].ToString().Trim();
processo.RenunciaCredito = "N";
processo.Situacao = new AplSituacao().ConsultarPorId(1);
processo.HonorarioDativo = "S";
processo.Reclamado = new AplReclamado().buscaItem(2);
processo.TipoDocumento = new AplTipoDocumento().buscaItem(4);
processo.TipoProcesso = "O";
if (linha.ItemArray[5].ToString().Contains("juizado"))
processo.Tribunal = new AplTribunal().buscaItem(71);
else
processo.Tribunal = new AplTribunal().buscaItem(3);
processo.NaturezaDespeza = new AplNaturezadeDespesa().buscaItem(3);
VaraExecucao vara = new VaraExecucao();
if (!linha.ItemArray[3].ToString().Equals("") && !linha.ItemArray[5].ToString().Equals(""))
{
List<VaraExecucao> listaVaraComarca = aplVaraExecucao.ConsultarPorNomeVaraNomeComarca(linha.ItemArray[5].ToString().Trim(), linha.ItemArray[3].ToString().Trim());
if (listaVaraComarca.Count != 0)
{
if (linha.ItemArray[4].ToString().Equals(""))
{
vara = listaVaraComarca.Find(o => o.NumeroVara == null);
}
else
{
vara = listaVaraComarca.Find(o => o.NumeroVara == int.Parse(linha.ItemArray[4].ToString().Trim()));
}
}
}
if (vara != null && vara.Codigo != 0)
{
processo.VaraExecucao = vara;
}
else
{
logimportacao.Visible = true;
loglbl.Text = log.ToString();
ClientScript.RegisterStartupScript(typeof(string), "Erro", "<script>alert('Arquivo não importado. Verifique o log de erros na tela. ')</script>");
}
var ListaSemDuplicados = listaGravarProcesso.Distinct().ToList();
aplProcesso.gravar(processo);
/*aplLog.LogarAtividade(aplUsuario.buscaPorLogin(ObterUsuarioAutenticado().Login), "Importação do processo de número judicial: " + processo.NumProcessoJudicial
+ ". Interessado: " + processo.Interessado.Nome + " - " + processo.Interessado.CPF_CNPJ + ". Tribunal "
+ processo.Tribunal.NomeTribunal + ".", DateTime.Now);*/
//log.Append("O processo " + processo.NumProcessoJudicial + " informado na linha " + (i + 1) + " foi cadastrado com sucesso. <br>");*/
setProcInter(processo, interessado, linha);
}
}
ISession sessao = ThreadStaticSessionContext.Unbind(NhibernateHelper.Teste());
if (sessao != null)
{
if (sessao.Transaction != null && sessao.Transaction.IsActive)
{
sessao.Transaction.Rollback();
}
else
{
//sessao.Flush();
}
sessao.Close();
}
};
System.Threading.Tasks.Task tarefa_executar = new System.Threading.Tasks.Task(processamento, dadosparam);
return tarefa_executar;
}
private Interessado setInteressado(DataRow linha)
{
Interessado interessado = new Interessado();
AplMunicipio aplMunicipio = new AplMunicipio();
AplBairro aplBairro = new AplBairro();
interessado.Nome = linha.ItemArray[6].ToString().ToUpper();
if (!linha.ItemArray[8].ToString().Equals(""))
interessado.Endereco = linha.ItemArray[8].ToString().ToUpper();
if (!linha.ItemArray[9].ToString().Equals(""))
interessado.Numero = interessado.Complemento = linha.ItemArray[9].ToString();
if (!linha.ItemArray[10].ToString().Equals(""))
interessado.Complemento = linha.ItemArray[10].ToString().ToUpper();
if (!linha.ItemArray[13].ToString().Equals(""))
{
//Municipio municipio = aplMunicipio.ConsultarPorNome(linha.ItemArray[13].ToString().ToUpper());
Municipio municipio = this.listaMunicipios.Find(m => Utilitarios.RemoveAcentos(m.Nome).ToUpper() == Utilitarios.RemoveAcentos(linha.ItemArray[13].ToString()).ToUpper());
if (municipio == null)
{
municipio = new Municipio();
municipio.Estado = new AplEstado().buscaItem(1);
municipio.Nome = linha.ItemArray[13].ToString().ToUpper();
//obter lista sem registros duplicados (Robson)
var ListaSemDuplicados = listaMunicipios.Distinct().ToList();
aplMunicipio.gravar(municipio);
}
interessado.Municipio = municipio;// aplMunicipio.ConsultarPorNome(ds.Tables[0].Rows[i].ItemArray[13].ToString().ToUpper());
if (!String.IsNullOrEmpty(linha.ItemArray[11].ToString()))
{
//Bairro bairro = aplBairro.ConsultarPorNomeCodMunicipio(linha.ItemArray[11].ToString().ToUpper(), municipio.Codigo);
List<Bairro> listaBairro = aplBairro.ListaPorIdMunicipio(municipio.Codigo);
Bairro bairro = listaBairro.Find(b => Utilitarios.RemoveAcentos(b.Descricao).ToUpper() == Utilitarios.RemoveAcentos(linha.ItemArray[11].ToString()).ToUpper());
if (bairro == null)
{
bairro = new Bairro();
bairro.CodMunicipio = municipio;
bairro.Descricao = linha.ItemArray[11].ToString().ToUpper();
//obter lista sem registros duplicados (Robson)
var ListaSemDuplicados = listaBairro.Distinct().ToList();
aplBairro.gravar(bairro);
}
interessado.Bairro = bairro;// aplBairro.ConsultarPorNomeCodMunicipio(ds.Tables[0].Rows[i].ItemArray[11].ToString().ToUpper(), municipio.Codigo);
}
}
if (!linha.ItemArray[12].ToString().Equals(""))
interessado.Cep = linha.ItemArray[12].ToString();
if (!linha.ItemArray[7].ToString().Equals(""))
if (linha.ItemArray[7].ToString().Length == 14)
{
interessado.CPF_CNPJ = AuxiliarCPF_CNPJ.DesformataCPF(linha.ItemArray[7].ToString());
interessado.Tipo = 1;
}
else if (linha.ItemArray[7].ToString().Length == 18)
{
interessado.CPF_CNPJ = AuxiliarCPF_CNPJ.DesformataCNPJ(linha.ItemArray[7].ToString());
interessado.Tipo = 2;
}
else
{
log.Append("O CPF/CNPJ informado na célula H" + ( 1) + " está em um formato incorreto. Favor corrigir a planilha. <br>");
arquivoInvalidado = true;
}
return interessado;