private void Grafico_Click(object sender, EventArgs e) { VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); Grafico grafico = new Grafico(ciclo); grafico.ShowDialog(this); }
private void Imprimir_Click(object sender, EventArgs e) { VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); OpcoesImpressao impressao = new OpcoesImpressao(ciclo); impressao.ShowDialog(this); }
private void Produtos_Click(object sender, EventArgs e) { VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); List <ProdutoCiclo> listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(ciclo); DetalhesProdutosCiclo produtos = new DetalhesProdutosCiclo(listaProdutos); produtos.ShowDialog(this); }
public RelTratamento(VO.Ciclos ciclo, int opcao, string empresa, string comentario, ConfiguracaoRelatorio configRelatorio) { InitializeComponent(); this.ciclo = ciclo; this.opcao = opcao; this.empresa = empresa; this.comentario = comentario; this.configRelatorio = configRelatorio; }
private void button1_Click(object sender, EventArgs e) { var ciclo = new VO.Ciclos(); ciclo.id = 1; List <LeiturasTrat> listaLeiturasTrat = LeiturasTratDAO.ListaLeiturasTratamento(ciclo); MessageBox.Show(listaLeiturasTrat.Count.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private VO.Ciclos TransformaEmListaCorreta(VO.Ciclos c) { var listaLeiturasCiclo = new List <LeiturasCiclo>(); var listaLeiturasTrat = new List <LeiturasTrat>(); listaLeiturasCiclo = LeiturasCicloDAO.ListaLeiturasCiclos(c); listaLeiturasTrat = LeiturasTratDAO.ListaLeiturasTratamento(c); return(new VO.Ciclos()); }
private void Receber_Click(object sender, EventArgs e) { dtgHistorico.Rows.Clear(); int numEquipamento = cmbCRG.SelectedIndex + 1; string porta = ConfiguracaoDAO.retornaPorta(); bool continua = false; byte numBytes = 0; try { t = new Thread(new ThreadStart(carregarAguarde)); t.Start(); var srpComm = new SerialPort(porta, 19200, Parity.None, 8, StopBits.One); srpComm.DtrEnable = true; srpComm.RtsEnable = false; srpComm.ReadBufferSize = 50000; srpComm.WriteBufferSize = 50000; Conexao.srpComm = srpComm; if (Conexao.srpComm.IsOpen == false) { Conexao.srpComm.Open(); Thread.Sleep(100); } int aux = numEquipamento + 63; Conexao.srpComm.Write(((char)19).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)17).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)aux).ToString()); Thread.Sleep(100); if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } continua = true; if (continua) { int contador = 0; switch (Conexao.buffer[0]) { case 167: Conexao.srpComm.Write(((char)15).ToString()); Thread.Sleep(500); do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } } while (contador < 3 && Conexao.srpComm.BytesToRead != 0); int checksum = 0; for (int i = 0; i < Conexao.buffer.Length - 2; i++) { checksum ^= Conexao.buffer[i]; } if (checksum == Conexao.buffer[Conexao.buffer.Length - 2]) { for (int i = 0; i < Conexao.buffer.Length - 2; i++) { VO.Ciclos ciclo = new VO.Ciclos(); ciclo.nTrat = (Conexao.buffer[i] * 256) + Conexao.buffer[i + 1]; ciclo.nl = (Conexao.buffer[i + 2] * 256) + Conexao.buffer[i + 3]; ciclo.dataInicio = Convert.ToDateTime( string.Concat((Conexao.buffer[i + 7] / 16), (Conexao.buffer[i + 7] % 16)) + "/" + string.Concat((Conexao.buffer[i + 8] / 16), (Conexao.buffer[i + 8] % 16)) + "/20" + string.Concat((Conexao.buffer[i + 9] / 16), (Conexao.buffer[i + 9] % 16)) + " " + string.Concat((Conexao.buffer[i + 5] / 16), (Conexao.buffer[i + 5] % 16)) + ":" + string.Concat((Conexao.buffer[i + 4] / 16), (Conexao.buffer[i + 4] % 16))); ciclo.crg = numEquipamento; bool noBanco = CicloDAO.testanoBanco(ciclo); if (!noBanco) { dtgHistorico.Rows.Add(ciclo.nTrat, ciclo.nl, ciclo.dataInicio.ToString("dd/MM/yyyy HH:mm")); } i = i + 9; } t.Abort(); Thread.Sleep(100); if (dtgHistorico.Rows.Count == 0) { MessageBox.Show("Não há nenhum histórico novo"); } Conexao.srpComm.Close(); } else { MessageBox.Show("Erro de checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Conexao.srpComm.Close(); } break; case 166: Conexao.srpComm.Write(((char)15).ToString()); Thread.Sleep(500); do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } } while (contador < 3 && Conexao.srpComm.BytesToRead != 0); int checksum1 = 0; for (int i = 0; i < Conexao.buffer.Length - 2; i++) { checksum1 ^= Conexao.buffer[i]; } if (checksum1 == Conexao.buffer[Conexao.buffer.Length - 2]) { for (int i = 0; i < Conexao.buffer.Length - 2; i++) { VO.Ciclos ciclo = new VO.Ciclos(); ciclo.nTrat = (Conexao.buffer[i] * 256) + Conexao.buffer[i + 1]; ciclo.nl = (Conexao.buffer[i + 2] * 256) + Conexao.buffer[i + 3]; ciclo.dataInicio = Convert.ToDateTime( string.Concat((Conexao.buffer[i + 7] / 16), (Conexao.buffer[i + 7] % 16)) + "/" + string.Concat((Conexao.buffer[i + 8] / 16), (Conexao.buffer[i + 8] % 16)) + "/20" + string.Concat((Conexao.buffer[i + 9] / 16), (Conexao.buffer[i + 9] % 16)) + " " + string.Concat((Conexao.buffer[i + 5] / 16), (Conexao.buffer[i + 5] % 16)) + ":" + string.Concat((Conexao.buffer[i + 4] / 16), (Conexao.buffer[i + 4] % 16))); ciclo.crg = numEquipamento; bool noBanco = CicloDAO.testanoBanco(ciclo); if (!noBanco) { dtgHistorico.Rows.Add(ciclo.nTrat, ciclo.nl, ciclo.dataInicio.ToString("dd/MM/yyyy HH:mm")); } i = i + 9; } t.Abort(); Thread.Sleep(100); if (dtgHistorico.Rows.Count == 0) { MessageBox.Show("Não há nenhum histórico novo", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } Conexao.srpComm.Close(); } else { MessageBox.Show("Erro de checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Conexao.srpComm.Close(); } break; case 165: t.Abort(); Thread.Sleep(100); if (dtgHistorico.Rows.Count > 0) { dtgHistorico.Rows.Clear(); } MessageBox.Show("Essa função não está disponivel para esse equipamento.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); Conexao.srpComm.Close(); break; } inserir.Enabled = true; } } catch (Exception error) { if (t.IsAlive) { t.Abort(); Thread.Sleep(100); } VO.LogErro logErro = new VO.LogErro(); logErro.crg = numEquipamento; logErro.data = DateTime.Now; logErro.descricao = "Erro ao decodificar os dados do histórico, aparelho nº " + numEquipamento; logErro.maisDetalhes = error.Message + " " + error.StackTrace; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro durante a comunicação com o equipamento", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public static List <ListaCiclosTratGrafico> GerarListaTratamento(VO.Ciclos ciclo, List <LeiturasCiclo> leiturasCiclo, List <LeiturasTrat> leiturasTrat, ConfiguracaoRelatorio configRelatorio) { var listaRetorno = new List <ListaCiclosTratGrafico>(); var linhasAntesTrat = configRelatorio.LeiturasAntes; var linhasTrat = configRelatorio.LeiturasTrat; var linhasDepoisTrat = configRelatorio.LeiturasDepois; if (leiturasTrat == null || leiturasTrat.Count == 0) { return(listaRetorno); } var totalCiclo = leiturasCiclo.Count; var totalAntesTrat = ciclo.NLIniTrat - 1; var inicioTrat = ciclo.NLIniTrat; var totalTrat = leiturasTrat.Count; var fimTrat = inicioTrat + totalTrat - 1; var totalDepoisTrat = totalCiclo - fimTrat; var nlt = 0; /// POPULA DADOS DO AQUECIMENTO //if (totalAntesTrat <= linhasAntesTrat) //{ // for (var i = 0; i < totalAntesTrat; i++) // { // nlt++; // listaRetorno.Add(new ListaCiclosTratGrafico() // { // NLT = nlt, // NL = i + 1, // horario = leiturasCiclo[i].horario, // T1 = leiturasCiclo[i].T1, // T2 = leiturasCiclo[i].T2, // T3 = leiturasCiclo[i].T3, // T4 = leiturasCiclo[i].T4 // }); // } //} //else //{ var indicesAntesTrat = PegarIndicesPorDivisao(0, totalAntesTrat - 1, linhasAntesTrat); foreach (var indice in indicesAntesTrat.ToList()) { nlt++; listaRetorno.Add(new ListaCiclosTratGrafico() { NLT = nlt, NL = indice + 1, horario = leiturasCiclo[indice].horario, T1 = leiturasCiclo[indice].T1, T2 = leiturasCiclo[indice].T2, T3 = leiturasCiclo[indice].T3, T4 = leiturasCiclo[indice].T4 }); } //} /// POPULA DADOS DO TRATAMENTO //if (totalTrat < linhasTrat) //{ // for (var i = 0; i < totalTrat; i++) // { // nlt++; // listaRetorno.Add(new ListaCiclosTratGrafico() // { // NLT = nlt, // NL = inicioTrat + i, // horario = leiturasCiclo[i].horario, // T1 = leiturasCiclo[i].T1, // T2 = leiturasCiclo[i].T2, // T3 = leiturasCiclo[i].T3, // T4 = leiturasCiclo[i].T4 // }); // } //} //else //{ var indicesTrat = PegarIndicesPorDivisao(0, totalTrat - 1, linhasTrat); foreach (var indice in indicesTrat.ToList()) { nlt++; listaRetorno.Add(new ListaCiclosTratGrafico() { NLT = nlt, NL = inicioTrat + indice, horario = leiturasTrat[indice].horario, T1 = leiturasTrat[indice].T1, T2 = leiturasTrat[indice].T2, T3 = leiturasTrat[indice].T3, T4 = leiturasTrat[indice].T4, demarca_tratamento = indice == 0 || indice == (totalTrat - 1) }); } //} /// POPULA DADOS DO RESFRIAMENTO //if (totalDepoisTrat <= linhasDepoisTrat) //{ // for (var i = fimTrat; i < totalCiclo; i++) // { // nlt++; // listaRetorno.Add(new ListaCiclosTratGrafico() // { // NLT = nlt, // NL = i + 1, // horario = leiturasCiclo[i].horario, // T1 = leiturasCiclo[i].T1, // T2 = leiturasCiclo[i].T2, // T3 = leiturasCiclo[i].T3, // T4 = leiturasCiclo[i].T4 // }); // } //} //else //{ var indicesDepoisTrat = PegarIndicesPorDivisao(fimTrat, totalCiclo - 1, linhasDepoisTrat); foreach (var indice in indicesDepoisTrat.ToList()) { nlt++; listaRetorno.Add(new ListaCiclosTratGrafico() { NLT = nlt, NL = indice + 1, horario = leiturasCiclo[indice].horario, T1 = leiturasCiclo[indice].T1, T2 = leiturasCiclo[indice].T2, T3 = leiturasCiclo[indice].T3, T4 = leiturasCiclo[indice].T4 }); } //} return(listaRetorno); }
public static List <ListaCiclosTratGrafico> populaTratamento(VO.Ciclos ciclo, List <LeiturasCiclo> leiturasCiclo, List <LeiturasTrat> leiturasTrat, ConfiguracaoRelatorio configRelatorio) { return(GerarListaTratamento(ciclo, leiturasCiclo, leiturasTrat, configRelatorio)); /*if (leiturasTrat == null || leiturasTrat.Count == 0) * { * return listaRetorno; * } * var nl = 1; * var nlt = 1; * var leiturainicial = ciclo.NLIniTrat; * var jmp = (leiturainicial - 1) / 9; * var i = 0; * * for (i = 0; i < ciclo.NLIniTrat - 1; i += jmp, nl += jmp) * { * listaRetorno.Add(new ListaCiclosTratGrafico() * { * NLT = nlt, * NL = nl, * horario = leiturasCiclo[i].horario, * T1 = leiturasCiclo[i].T1, * T2 = leiturasCiclo[i].T2, * T3 = leiturasCiclo[i].T3, * T4 = leiturasCiclo[i].T4 * }); * nlt++; * } * if (i <= ciclo.NLIniTrat - 1) * { * nl = leiturainicial - 1; * nlt = 10; * listaRetorno.Add(new ListaCiclosTratGrafico() * { * NLT = nlt, * NL = nl, * horario = leiturasCiclo[ciclo.NLIniTrat-2].horario, * T1 = leiturasCiclo[ciclo.NLIniTrat - 2].T1, * T2 = leiturasCiclo[ciclo.NLIniTrat - 2].T2, * T3 = leiturasCiclo[ciclo.NLIniTrat - 2].T3, * T4 = leiturasCiclo[ciclo.NLIniTrat - 2].T4 * }); * nlt = 11; * } * * * nl = ciclo.NLIniTrat; * * for (i = 0; i <= leiturasTrat.Count - 1; i += 2, nl += 2) * { * listaRetorno.Add(new ListaCiclosTratGrafico() * { * NLT = nlt, * NL = nl, * horario = leiturasTrat[i].horario, * T1 = leiturasTrat[i].T1, * T2 = leiturasTrat[i].T2, * T3 = leiturasTrat[i].T3, * T4 = leiturasTrat[i].T4 * }); * if (i == 0) * { * listaRetorno[listaRetorno.Count - 1].demarca_tratamento = true; * } * nlt++; * } * if (i == leiturasTrat.Count) * { * nl = ciclo.NLIniTrat + leiturasTrat.Count - 1; * listaRetorno.Add(new ListaCiclosTratGrafico() * { * NLT = nlt, * NL = nl, * horario = leiturasTrat[leiturasTrat.Count - 1].horario, * T1 = leiturasTrat[leiturasTrat.Count - 1].T1, * T2 = leiturasTrat[leiturasTrat.Count - 1].T2, * T3 = leiturasTrat[leiturasTrat.Count - 1].T3, * T4 = leiturasTrat[leiturasTrat.Count - 1].T4 * }); * nlt++; * } * * listaRetorno[listaRetorno.Count - 1].demarca_tratamento = true; * * nl = ciclo.NLIniTrat + ciclo.nlt; * * var countFim = ciclo.nlPostTrat; * jmp = countFim / 9; * * for (i = 0; i < countFim; i += 2, nl += 2) * { * listaRetorno.Add(new ListaCiclosTratGrafico() * { * NLT = nlt, * NL = nl, * horario = leiturasCiclo[nl - 1].horario, * T1 = leiturasCiclo[nl - 1].T1, * T2 = leiturasCiclo[nl - 1].T2, * T3 = leiturasCiclo[nl - 1].T3, * T4 = leiturasCiclo[nl - 1].T4 * }); * nlt++; * } * if (i < leiturasCiclo.Count - 1) * { * nl = leiturasCiclo.Count; * listaRetorno.Add(new ListaCiclosTratGrafico() * { * NLT = nlt, * NL = nl, * horario = leiturasCiclo[leiturasCiclo.Count - 1].horario, * T1 = leiturasCiclo[leiturasCiclo.Count - 1].T1, * T2 = leiturasCiclo[leiturasCiclo.Count - 1].T2, * T3 = leiturasCiclo[leiturasCiclo.Count - 1].T3, * T4 = leiturasCiclo[leiturasCiclo.Count - 1].T4 * }); * } * return listaRetorno;*/ }
public bool AtualizaCiclo() { List <string> mensagens = new List <string>(); //Lista ciclos em Andamento List <VO.Ciclos> ciclos = CicloDAO.listaCiclosPorSituacaoAll(0); t = new Thread(new ThreadStart(carregarAguarde)); //this.Enabled = false; try { for (int i = 0; i < ciclos.Count; i++) { VO.Ciclos cic = ciclos[i]; List <ProdutoCiclo> listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(cic); VO.Ciclos ciclo = new VO.Ciclos(); string porta = ConfiguracaoDAO.retornaPorta(); bool continua = false; if (!t.IsAlive) { t.Start(); } var srpComm = new SerialPort(porta, 19200, Parity.None, 8, StopBits.One); srpComm.DtrEnable = true; srpComm.RtsEnable = false; srpComm.ReadBufferSize = 100000; srpComm.WriteBufferSize = 100000; Conexao.srpComm = srpComm; Conexao.srpComm.Open(); Thread.Sleep(100); int numBytes = 0; int aux = cic.crg + 63; Conexao.srpComm.Write(((char)19).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)17).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)aux).ToString()); Thread.Sleep(100); if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } continua = true; if (continua) { // int cont = 0; //Verifica se é aparelho novo ou antigo switch (Conexao.buffer[0]) { //Versão nova até 150ºC case 167: string binario = decimalParaBinario(cic.nTrat); numTrat1 = binarioParaDecimal(binario.Substring(0, 8)); numTrat2 = binarioParaDecimal(binario.Substring(8, 8)); Conexao.srpComm.Write(((char)5).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat1).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat2).ToString()); Thread.Sleep(8000); int contador = 0; do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = int.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } contador++; } while (Conexao.srpComm.BytesToRead != 0); int checksum = 0; //Verifica se o ciclo ainda está na memória do equipamento if (Conexao.buffer.Length > 2) { for (int j = 0; j < Conexao.buffer.Length - 2; j++) { checksum ^= Conexao.buffer[j]; } if (checksum == Conexao.buffer[Conexao.buffer.Length - 2]) { int aux2 = Conexao.buffer.Length - 10; cic.numSerie = ((char)Conexao.buffer[aux2]).ToString() + ((char)Conexao.buffer[aux2 + 1]).ToString() + ((char)Conexao.buffer[aux2 + 2]).ToString() + ((char)Conexao.buffer[aux2 + 3]).ToString() + ((char)Conexao.buffer[aux2 + 4]).ToString() + ((char)Conexao.buffer[aux2 + 5]).ToString() + ((char)Conexao.buffer[aux2 + 6]).ToString() + ((char)Conexao.buffer[aux2 + 7]).ToString(); cic.nTrat = (Conexao.buffer[0] * 256) + Conexao.buffer[1]; string dataInicio = string.Concat((Conexao.buffer[7] / 16), (Conexao.buffer[7] % 16)) + "/" + string.Concat((Conexao.buffer[8] / 16), (Conexao.buffer[8] % 16)) + "/20" + string.Concat((Conexao.buffer[9] / 16), (Conexao.buffer[9] % 16)) + " " + string.Concat((Conexao.buffer[5] / 16), (Conexao.buffer[5] % 16)) + ":" + string.Concat((Conexao.buffer[4] / 16), (Conexao.buffer[4] % 16)); cic.dataInicio = Convert.ToDateTime(dataInicio); cic.dataColeta = DateTime.Now; bool retorno = false; int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(cic.id, cic.crg); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(cic.id, cic.crg); retorno = ConexaoBO.EnviaBancodeDados(cic, Conexao.buffer, true, listaProdutos, indiceLeitCiclo, indiceLeitTrat, true); if (retorno) { AtualizaUltimo(cic.operador, cic.responsavel); mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " foi atualizado com sucesso."); } } else { MessageBox.Show("Erro no checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " nao está mais na memória do equipamento."); } break; //Versão nova até 102ºC case 166: string binario1 = decimalParaBinario(cic.nTrat); numTrat1 = binarioParaDecimal(binario1.Substring(0, 8)); numTrat2 = binarioParaDecimal(binario1.Substring(8, 8)); Conexao.srpComm.Write(((char)5).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat1).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat2).ToString()); Thread.Sleep(8000); int contador1 = 0; do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = int.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } contador1++; } while (Conexao.srpComm.BytesToRead != 0); int checksum1 = 0; //Verifica se o ciclo ainda está na memória do equipamento if (Conexao.buffer.Length > 2) { for (int j = 0; j < Conexao.buffer.Length - 2; j++) { checksum1 ^= Conexao.buffer[j]; } if (checksum1 == Conexao.buffer[Conexao.buffer.Length - 2]) { int aux2 = Conexao.buffer.Length - 10; ciclo.numSerie = ((char)Conexao.buffer[aux2]).ToString() + ((char)Conexao.buffer[aux2 + 1]).ToString() + ((char)Conexao.buffer[aux2 + 2]).ToString() + ((char)Conexao.buffer[aux2 + 3]).ToString() + ((char)Conexao.buffer[aux2 + 4]).ToString() + ((char)Conexao.buffer[aux2 + 5]).ToString() + ((char)Conexao.buffer[aux2 + 6]).ToString() + ((char)Conexao.buffer[aux2 + 7]).ToString(); ciclo.nTrat = (Conexao.buffer[0] * 256) + Conexao.buffer[1]; string dataInicio = string.Concat((Conexao.buffer[7] / 16), (Conexao.buffer[7] % 16)) + "/" + string.Concat((Conexao.buffer[8] / 16), (Conexao.buffer[8] % 16)) + "/20" + string.Concat((Conexao.buffer[9] / 16), (Conexao.buffer[9] % 16)) + " " + string.Concat((Conexao.buffer[5] / 16), (Conexao.buffer[5] % 16)) + ":" + string.Concat((Conexao.buffer[4] / 16), (Conexao.buffer[4] % 16)); ciclo.dataInicio = Convert.ToDateTime(dataInicio); ciclo.dataColeta = DateTime.Now; bool retorno = false; int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(ciclo.id, ciclo.crg); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(ciclo.id, ciclo.crg); retorno = ConexaoBO.EnviaBancodeDados(ciclo, Conexao.buffer, true, listaProdutos, indiceLeitCiclo, indiceLeitTrat, false); if (retorno) { AtualizaUltimo(cic.operador, cic.responsavel); mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " foi atualizado com sucesso."); } } else { mensagens.Add("Não foi possível atualizar o ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + ". Erro de Checksum."); } } else { mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " nao está mais na memória do equipamento."); } break; //Versão antiga até 102ºC apenas case 165: Conexao.srpComm.Write(((char)6).ToString()); Thread.Sleep(8000); int cont = 0; do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = int.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } cont++; } while (Conexao.srpComm.BytesToRead != 0); int chk = 0; for (int j = 0; j < Conexao.buffer.Length - 2; j++) { chk ^= Conexao.buffer[j]; } if (((Conexao.buffer[5] * 256) + Conexao.buffer[2]) == cic.nTrat) { if (chk == Conexao.buffer[Conexao.buffer.Length - 2]) { int aux2 = Conexao.buffer.Length - 10; cic.numSerie = ((char)Conexao.buffer[aux2]).ToString() + ((char)Conexao.buffer[aux2 + 1]).ToString() + ((char)Conexao.buffer[aux2 + 2]).ToString() + ((char)Conexao.buffer[aux2 + 3]).ToString() + ((char)Conexao.buffer[aux2 + 4]).ToString() + ((char)Conexao.buffer[aux2 + 5]).ToString() + ((char)Conexao.buffer[aux2 + 6]).ToString() + ((char)Conexao.buffer[aux2 + 7]).ToString(); cic.nTrat = (Conexao.buffer[5] * 256) + Conexao.buffer[2]; string dataInicio = string.Concat((Conexao.buffer[6] / 16), (Conexao.buffer[6] % 16)) + "/" + string.Concat((Conexao.buffer[7] / 16), (Conexao.buffer[7] % 16)) + "/20" + string.Concat((Conexao.buffer[8] / 16), (Conexao.buffer[8] % 16)) + " " + string.Concat((Conexao.buffer[4] / 16), (Conexao.buffer[4] % 16)) + ":" + string.Concat((Conexao.buffer[3] / 16), (Conexao.buffer[3] % 16)); cic.dataInicio = Convert.ToDateTime(dataInicio); cic.dataColeta = DateTime.Now; bool retorno = false; int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(cic.id, cic.crg); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(cic.id, cic.crg); retorno = ConexaoBO.EnviaBancodeDadosAntigo(cic, Conexao.buffer, true, listaProdutos, indiceLeitCiclo, indiceLeitTrat); if (retorno) { AtualizaUltimo(cic.operador, cic.responsavel); mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " foi atualizado com sucesso."); } } else { mensagens.Add("Não foi possível atualizar o ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + ". Erro de Checksum."); } } else { mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " não está mais no histórico."); } break; } } Conexao.srpComm.Close(); Thread.Sleep(100); } t.Abort(); if (mensagens.Count > 0) { StatusAtualizacao frm = new StatusAtualizacao(mensagens); frm.ShowDialog(this); } return(true); } catch (Exception error) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = 0; logErro.descricao = "Erro ao tentar receber o ciclo"; logErro.maisDetalhes = error.Message + " " + error.StackTrace; logErro.data = DateTime.Now; LogErroDAO.inserirLogErro(logErro, logErro.crg); t.Abort(); return(false); } }
public OpcoesImpressao(VO.Ciclos ciclo) { InitializeComponent(); this.ciclo = ciclo; }
private void DetalhesCiclo_Load(object sender, EventArgs e) { var config = ConfiguracaoDAO.PegarConfigRelatorio(); VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); List <LeiturasCiclo> listaLeiturasCiclo = LeiturasCicloDAO.ListaLeiturasCiclos(ciclo); List <LeiturasTrat> listaLeiturasTrat = LeiturasTratDAO.ListaLeiturasTratamento(ciclo); var dados = new List <string>(); if (string.IsNullOrEmpty(ciclo.versaoEquip)) { dados.Add("Controlador nº" + crg.ToString("##") + " com " + ciclo.nl + " leituras(NTRAT: " + ciclo.nTrat.ToString("000") + ") - Nº Série " + ciclo.numSerie); } else { dados.Add("Controlador nº" + crg.ToString("##") + " com " + ciclo.nl + " leituras(NTRAT: " + ciclo.nTrat.ToString("000") + ") " + ciclo.versaoEquip + " - Nº Série " + ciclo.numSerie); } dados.Add("Valores programados no SET POINT do equipamento"); dados.Add(" - Temperatura de Controle(Tc): " + ciclo.temperaturaControle.ToString("##.0") + "ºC"); dados.Add(" - Temperatura do Tratamento(Tt): " + ciclo.temperaturaTrat.ToString("##.0") + "ºC"); dados.Add(" - Tempo do Tratamento(tt): " + ciclo.tempoTrat + " minuto(s)"); dados.Add("Período do ciclo: " + ciclo.dataInicio + " - " + ciclo.dataFim); dados.Add("Descrição: " + ciclo.descricao); if (listaLeiturasTrat.Count > 0 && ciclo.nlt == ciclo.tempoTrat) { dados.Add("Início do tratamento na leitura " + ciclo.NLIniTrat + " - " + ciclo.dataIniTrat + " (concluído)"); } else { dados.Add("Não realizou o tratamento"); } dados.Add("Responsável Técnico: " + ciclo.responsavel); dados.Add("Operador: " + ciclo.operador); if (!string.IsNullOrWhiteSpace(ciclo.VolumeFixo)) { dados.Add("Volume total: " + ciclo.VolumeFixo + (ciclo.IsMetrosCubicos ? "m³" : " peça(s)")); } else { dados.Add(""); } switch (ciclo.sensor) { case 0: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 16: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 32: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 48: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 64: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Mad"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Mad"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 80: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Mad"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Mad"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Mad"; dtgCiclo.Columns["T3"].HeaderText = "T3 Mad"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; } foreach (var dado in dados) { dtgResumo.Rows.Add(dado); } dtgResumo.Rows[1].DefaultCellStyle.Font = new Font("Microsoft Sans Seriff", 8, FontStyle.Bold); if (ciclo.tipoCRG == 100) { foreach (var leiturasCiclo in listaLeiturasCiclo) { dtgCiclo.Rows.Add((dtgCiclo.Rows.Count + 1).ToString("000"), leiturasCiclo.horario, leiturasCiclo.T1.ToString("#0.0"), leiturasCiclo.T2.ToString("#0.0"), leiturasCiclo.T3.ToString("#0.0"), leiturasCiclo.T4.ToString("#0.0")); if (ciclo.NLIniTrat == dtgCiclo.Rows.Count) { dtgCiclo.Rows[dtgCiclo.Rows.Count - 1].DefaultCellStyle.BackColor = Color.PaleGreen; } } int contGeral = 1; var listaTratamento = new List <ListaCiclosTratGrafico>(); if (listaLeiturasTrat.Count > 0 && ciclo.nlt == ciclo.tempoTrat) { listaTratamento = RelTratamento.populaTratamento(ciclo, listaLeiturasCiclo, listaLeiturasTrat, config); } if (listaTratamento.Count > 0) { var nlt_inicio_tratamento = 0; var nlt_fim_tratamento = 0; foreach (var item in listaTratamento.ToList()) { if (item.demarca_tratamento) { if (nlt_inicio_tratamento == 0) { nlt_inicio_tratamento = item.NLT; } else { nlt_fim_tratamento = item.NLT; } } dtgTratamento.Rows.Add(item.NLT.ToString("000"), item.NL.ToString("000"), item.horario, item.T1.ToString("#0.0"), item.T2.ToString("#0.0"), item.T3.ToString("#0.0"), item.T4.ToString("#0.0")); } foreach (DataGridViewRow row in dtgTratamento.Rows) { var nlt_value = Convert.ToInt32(row.Cells[0].Value); if (nlt_value >= nlt_inicio_tratamento && nlt_value <= nlt_fim_tratamento) { row.DefaultCellStyle.BackColor = Color.PaleGreen; } } //Leituras Anteriores ao Tratamento /*for (int i = 0; i < ciclo.nlAntesTrat; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i].horario, * listaLeiturasCiclo[i].T1.ToString("##.0"), * listaLeiturasCiclo[i].T2.ToString("##.0"), listaLeiturasCiclo[i].T3.ToString("##.0"), * listaLeiturasCiclo[i].T4.ToString("##.0")); * contGeral += 2; * } * * int contTrat = 1; * //Leituras do Tratamento * for (int i = 0; i < listaLeiturasTrat.Count; i += 2) * { * dtgTratamento.Rows.Add(contTrat.ToString("000"), contGeral.ToString("000"), * listaLeiturasTrat[i].horario, listaLeiturasTrat[i].T1.ToString("##.0"), * listaLeiturasTrat[i].T2.ToString("##.0"), listaLeiturasTrat[i].T3.ToString("##.0"), * listaLeiturasTrat[i].T4.ToString("##.0")); * contTrat += 2; * contGeral += 2; * dtgTratamento.Rows[dtgTratamento.RowCount - 1].DefaultCellStyle.BackColor = Color.PaleGreen; * } * * //Leituras Posteriores ao Tratamento * for (int i = contGeral; i < listaLeiturasCiclo.Count; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i - 1].horario, * listaLeiturasCiclo[i - 1].T1.ToString("##.0"), * listaLeiturasCiclo[i - 1].T2.ToString("##.0"), listaLeiturasCiclo[i - 1].T3.ToString("##.0"), * listaLeiturasCiclo[i - 1].T4.ToString("##.0")); * contGeral += 2; * }*/ } } else if (ciclo.tipoCRG == 150) { foreach (var leiturasCiclo in listaLeiturasCiclo) { dtgCiclo.Rows.Add((dtgCiclo.Rows.Count + 1).ToString("000"), leiturasCiclo.horario, leiturasCiclo.T1.ToString(), leiturasCiclo.T2.ToString(), leiturasCiclo.T3.ToString(), leiturasCiclo.T4.ToString()); if (ciclo.NLIniTrat == dtgCiclo.Rows.Count) { dtgCiclo.Rows[dtgCiclo.Rows.Count - 1].DefaultCellStyle.BackColor = Color.PaleGreen; } } int contGeral = 1; var listaTratamento = new List <ListaCiclosTratGrafico>(); if (listaLeiturasTrat.Count > 0 && ciclo.nlt == ciclo.tempoTrat) { listaTratamento = RelTratamento.populaTratamento(ciclo, listaLeiturasCiclo, listaLeiturasTrat, config); } if (listaTratamento.Count > 0) { var nlt_inicio_tratamento = 0; var nlt_fim_tratamento = 0; foreach (var item in listaTratamento.ToList()) { if (item.demarca_tratamento) { if (nlt_inicio_tratamento == 0) { nlt_inicio_tratamento = item.NLT; } else { nlt_fim_tratamento = item.NLT; } } dtgTratamento.Rows.Add(item.NLT.ToString("000"), item.NL.ToString("000"), item.horario, item.T1.ToString(), item.T2.ToString(), item.T3.ToString(), item.T4.ToString()); } foreach (DataGridViewRow row in dtgTratamento.Rows) { var nlt_value = Convert.ToInt32(row.Cells[0].Value); if (nlt_value >= nlt_inicio_tratamento && nlt_value <= nlt_fim_tratamento) { row.DefaultCellStyle.BackColor = Color.PaleGreen; } } //Leituras Anteriores ao Tratamento /*for (int i = 0; i < ciclo.nlAntesTrat; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i].horario, * listaLeiturasCiclo[i].T1.ToString(), * listaLeiturasCiclo[i].T2.ToString(), listaLeiturasCiclo[i].T3.ToString(), * listaLeiturasCiclo[i].T4.ToString()); * contGeral += 2; * } * * int contTrat = 1; * //Leituras do Tratamento * for (int i = 0; i < listaLeiturasTrat.Count; i += 2) * { * dtgTratamento.Rows.Add(contTrat.ToString("000"), contGeral.ToString("000"), * listaLeiturasTrat[i].horario, listaLeiturasTrat[i].T1.ToString(), * listaLeiturasTrat[i].T2.ToString(), listaLeiturasTrat[i].T3.ToString(), * listaLeiturasTrat[i].T4.ToString()); * contTrat += 2; * contGeral += 2; * dtgTratamento.Rows[dtgTratamento.RowCount - 1].DefaultCellStyle.BackColor = Color.PaleGreen; * } * * //Leituras Posteriores ao Tratamento * for (int i = contGeral; i < listaLeiturasCiclo.Count; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i - 1].horario, * listaLeiturasCiclo[i - 1].T1.ToString(), * listaLeiturasCiclo[i - 1].T2.ToString(), listaLeiturasCiclo[i - 1].T3.ToString(), * listaLeiturasCiclo[i - 1].T4.ToString()); * contGeral += 2; * }*/ } } }
/// <summary> /// Geração do corpo do histórico /// </summary> /// <param name="writer"></param> /// <param name="ciclo"></param> /// <param name="id"></param> private void ExportarCiclo(XmlTextWriter writer, VO.Ciclos ciclo, int id) { writer.WriteStartElement("Ciclo"); writer.WriteElementString("Id", ciclo.id.ToString()); writer.WriteElementString("CRG", ciclo.crg.ToString()); writer.WriteElementString("NTrat", ciclo.nTrat.ToString()); writer.WriteElementString("NL", ciclo.nl.ToString()); writer.WriteElementString("BaseTempo", ciclo.baseTempo.ToString()); writer.WriteElementString("NLT", ciclo.nlt.ToString()); writer.WriteElementString("DataColeta", ciclo.dataColeta.ToString()); writer.WriteElementString("Descricao", ciclo.descricao); writer.WriteElementString("DataInicio", ciclo.dataInicio.ToString()); writer.WriteElementString("DataFim", ciclo.dataFim.ToString()); writer.WriteElementString("NLIniTrat", ciclo.NLIniTrat.ToString()); writer.WriteElementString("DataIniTrat", ciclo.dataIniTrat.ToString()); writer.WriteElementString("TemperaturaControle", ciclo.temperaturaControle.ToString()); writer.WriteElementString("TemperaturaTrat", ciclo.temperaturaTrat.ToString()); writer.WriteElementString("TempoTrat", ciclo.tempoTrat.ToString()); writer.WriteElementString("Responsavel", ciclo.responsavel); writer.WriteElementString("Operador", ciclo.operador); writer.WriteElementString("Situacao", ciclo.situacao.ToString()); writer.WriteElementString("NumSerie", ciclo.numSerie); writer.WriteElementString("VersaoEquip", ciclo.versaoEquip); writer.WriteElementString("Histerese", ciclo.histerese.ToString()); writer.WriteElementString("TControl", ciclo.tControl.ToString()); writer.WriteElementString("NLAntesTrat", ciclo.nlAntesTrat.ToString()); writer.WriteElementString("NLPostTrat", ciclo.nlPostTrat.ToString()); writer.WriteElementString("Sensor", ciclo.sensor.ToString()); writer.WriteElementString("CA", ciclo.CA); writer.WriteElementString("tipoCRG", ciclo.tipoCRG.ToString()); // Leituras do Ciclo var listaLeiturasCiclo = LeiturasCicloDAO.ListaLeiturasCiclos(ciclo); foreach (var leitura in listaLeiturasCiclo) { writer.WriteStartElement("LeituraCiclo"); writer.WriteElementString("IdLeituraCiclo", leitura.idLeiturasCiclo.ToString()); writer.WriteElementString("Horario", leitura.horario); writer.WriteElementString("T1", leitura.T1.ToString()); writer.WriteElementString("T2", leitura.T2.ToString()); writer.WriteElementString("T3", leitura.T3.ToString()); writer.WriteElementString("T4", leitura.T4.ToString()); writer.WriteElementString("Ciclo", leitura.ciclo.id.ToString()); writer.WriteEndElement(); } // Leituras de Tratamento var listaLeiturasTrat = LeiturasTratDAO.ListaLeiturasTratamento(ciclo); foreach (var leitura in listaLeiturasTrat) { writer.WriteStartElement("LeituraTratamento"); writer.WriteElementString("IdLeituraTratamento", leitura.idLeiturasTrat.ToString()); writer.WriteElementString("Horario", leitura.horario); writer.WriteElementString("T1", leitura.T1.ToString()); writer.WriteElementString("T2", leitura.T2.ToString()); writer.WriteElementString("T3", leitura.T3.ToString()); writer.WriteElementString("T4", leitura.T4.ToString()); writer.WriteElementString("Ciclo", leitura.ciclo.id.ToString()); writer.WriteEndElement(); } // Produtos var listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(ciclo); foreach (var leitura in listaProdutos) { writer.WriteStartElement("ProdutoCiclo"); writer.WriteElementString("IdProdutoCiclo", leitura.idProdutoCiclo.ToString()); writer.WriteElementString("Produto", leitura.produto.idProduto.ToString()); writer.WriteElementString("Volume", leitura.volume); writer.WriteElementString("Unidade", leitura.unidade.idUnidade.ToString()); writer.WriteElementString("Empresa", leitura.empresa.idEmpresa.ToString()); writer.WriteElementString("Ciclo", leitura.ciclo.id.ToString()); writer.WriteEndElement(); } writer.WriteEndElement(); // Fecha a tag <Ciclo> }
private void Arquivo_Click(object sender, EventArgs e) { var crg = 0; if (Exportar.Checked) { salvarCiclo.RestoreDirectory = true; salvarCiclo.Title = "Exportar Ciclo para..."; salvarCiclo.Filter = "crg08 files(*.crg08)|*.crg08"; salvarCiclo.DefaultExt = "crg08"; salvarCiclo.CheckPathExists = true; var dialogResult = salvarCiclo.ShowDialog(this); if (dialogResult == DialogResult.OK) { var writer = new XmlTextWriter(salvarCiclo.FileName, null); // Gera o XML de cada ciclo try { writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement("Ciclos"); for (int i = 0; i < dtgAndamento.RowCount; i++) { if (dtgAndamento.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgAndamento.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgAndamento.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } for (int i = 0; i < dtgFinalizados.RowCount; i++) { if (dtgFinalizados.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgFinalizados.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgFinalizados.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } writer.WriteFullEndElement(); writer.WriteEndDocument(); } catch (Exception error) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = error.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } finally { writer.Flush(); writer.Close(); var xmlDoc = new XmlDocument(); try { xmlDoc.PreserveWhitespace = true; xmlDoc.Load(salvarCiclo.FileName); } catch (Exception er) { Console.WriteLine(er.Message); } var cspParams = new CspParameters(); cspParams.KeyContainerName = "CRG08"; var rsaKey = new RSACryptoServiceProvider(cspParams); try { Crypto.Encrypt(xmlDoc, "Ciclo", "Ciclo", rsaKey, "rsaKey"); xmlDoc.Save(salvarCiclo.FileName); } catch (Exception er) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = er.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } CarregaCiclos(); MessageBox.Show("Ciclo exportado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None); } } } else { var listaCiclos = new List <ImportarCiclo>(); var importacaoCiclo = new ImportarCiclo(); var listaLeituras = new List <LeiturasCiclo>(); var listaTratamento = new List <LeiturasTrat>(); var produtosCiclos = new List <ProdutoCiclo>(); var tag = ""; var stream = new MemoryStream(); var xmlDocument = new XmlDocument(); var cspParams = new CspParameters(); abrirCiclo.RestoreDirectory = true; abrirCiclo.Title = "Importar Ciclo"; abrirCiclo.Filter = "crg08 files(*.crg08)|*.crg08"; abrirCiclo.DefaultExt = "crg08"; abrirCiclo.CheckPathExists = true; VO.Ciclos cicloTemp; VO.Ciclos cic = new VO.Ciclos(); var dialogResult = abrirCiclo.ShowDialog(this); if (dialogResult == DialogResult.OK) { try { cspParams.KeyContainerName = "CRG08"; var rsaKey = new RSACryptoServiceProvider(cspParams); xmlDocument.PreserveWhitespace = true; xmlDocument.Load(abrirCiclo.FileName); Crypto.Decrypt(xmlDocument, rsaKey, "rsaKey"); xmlDocument.Save(stream); stream.Flush(); stream.Position = 0; // Carrega os dados no Reader para ler var reader = new XmlTextReader(stream); reader.WhitespaceHandling = WhitespaceHandling.None; // Para ignorar espaço em branco // Carrega os dados de um ciclo, verifica se já existe e questiona // o usuário se ele deseja substituir e os próximos ciclos também while ((reader.Read())) { switch (reader.NodeType) { case XmlNodeType.EndElement: if (reader.Name == "Ciclo") { importacaoCiclo.leiturasCiclo = listaLeituras; importacaoCiclo.leiturasTratamento = listaTratamento; importacaoCiclo.produtosCiclo = produtosCiclos; importacaoCiclo.ciclo = cic; listaCiclos.Add(importacaoCiclo); importacaoCiclo = new ImportarCiclo(); listaLeituras = new List <LeiturasCiclo>(); listaTratamento = new List <LeiturasTrat>(); produtosCiclos = new List <ProdutoCiclo>(); cic = new VO.Ciclos(); } break; case XmlNodeType.Element: tag = reader.Name; if (tag == "LeituraCiclo") { listaLeituras.Add(CarregaLeiturasCiclo(reader.ReadSubtree())); } else if (tag == "LeituraTratamento") { listaTratamento.Add(CarregaLeituraTratamento(reader.ReadSubtree())); } else if (tag == "ProdutoCiclo") { produtosCiclos.Add(CarregaProdutos(reader.ReadSubtree())); } break; case XmlNodeType.Text: switch (tag) { // Cabeçalho case "Id": cic.id = Convert.ToInt32(reader.Value); break; case "CRG": cic.crg = Convert.ToInt32(reader.Value); break; case "NTrat": cic.nTrat = Convert.ToInt32(reader.Value); break; case "NL": cic.nl = Convert.ToInt32(reader.Value); break; case "BaseTempo": cic.baseTempo = Convert.ToInt32(reader.Value); break; case "NLT": cic.nlt = Convert.ToInt32(reader.Value); break; case "DataColeta": cic.dataColeta = Convert.ToDateTime(reader.Value); break; case "Descricao": cic.descricao = reader.Value; break; case "DataInicio": cic.dataInicio = Convert.ToDateTime(reader.Value); break; case "DataFim": cic.dataFim = Convert.ToDateTime(reader.Value); break; case "NLIniTrat": cic.NLIniTrat = Convert.ToInt32(reader.Value); break; case "TemperaturaControle": cic.temperaturaControle = Convert.ToSingle(reader.Value); break; case "TemperaturaTrat": cic.temperaturaTrat = Convert.ToSingle(reader.Value); break; case "TempoTrat": cic.tempoTrat = Convert.ToInt32(reader.Value); break; case "Responsavel": cic.responsavel = reader.Value; break; case "Operador": cic.operador = reader.Value; break; case "Situacao": cic.situacao = Convert.ToInt32(reader.Value); break; case "NumSerie": cic.numSerie = reader.Value; break; case "VersaoEquip": cic.versaoEquip = reader.Value; break; case "Histerese": cic.histerese = Convert.ToInt32(reader.Value); break; case "TControl": cic.tControl = Convert.ToInt32(reader.Value); break; case "NLAntesTrat": cic.nlAntesTrat = Convert.ToInt32(reader.Value); break; case "NLPostTrat": cic.nlPostTrat = Convert.ToInt32(reader.Value); break; case "Sensor": cic.sensor = Convert.ToInt32(reader.Value); break; case "CA": cic.CA = reader.Value; break; case "tipoCRG": cic.tipoCRG = Convert.ToInt32(reader.Value); break; } break; } } foreach (var ciclo in listaCiclos) { // Verifica se o ciclo está no banco de dados e add em um Obj temporário = cicloTemp cicloTemp = CicloDAO.testaCiclo(ciclo.ciclo); if (cicloTemp != null) { // Se o obj for diferente de nulo... if (MessageBox.Show("O ciclo de nº " + ciclo.ciclo.nTrat + " já existe no Banco de Dados. Deseja atualizar?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { bool retorno = CicloDAO.alteraCiclo(ciclo.ciclo); if (retorno) { ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.ciclo.id, ciclo.ciclo.crg); for (int i = 0; i < ciclo.produtosCiclo.Count; i++) { ciclo.produtosCiclo[i].ciclo = ciclo.ciclo; ProdutoCicloDAO.inserirProdutoCiclo(ciclo.produtosCiclo[i]); } if (ciclo.leiturasCiclo.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasCicloDAO.inserirLeiturasCiclo150(ciclo.leiturasCiclo, ciclo.ciclo.nl, ciclo.ciclo); } else { LeiturasCicloDAO.inserirLeiturasCiclo(ciclo.leiturasCiclo, ciclo.ciclo.nl, ciclo.ciclo); } } if (ciclo.leiturasTratamento.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasTratDAO.inserirLeiturasTratamento150(ciclo.leiturasTratamento, ciclo.ciclo.nlt, ciclo.ciclo); } else { LeiturasTratDAO.inserirLeiturasTratamento(ciclo.leiturasTratamento, ciclo.ciclo.nlt, ciclo.ciclo); } } } CarregaCiclos(); } } else { // Inclui a ciclo ImportarCiclo(ciclo); CarregaCiclos(); } } MessageBox.Show("Importação realizada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None); } catch (Exception ex) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar importar ciclo"; logErro.data = DateTime.Now; logErro.maisDetalhes = ex.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar importar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } }