Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        private void Excluir_Click(object sender, EventArgs e)
        {
            var checados = new List <DataGridViewRow>();

            if (tabCiclos.SelectedIndex == 0)
            {
                checados = DtgChecked(dtgAndamento);
            }
            else
            {
                checados = DtgChecked(dtgFinalizados);
            }
            if (checados.Count > 0)
            {
                if (MessageBox.Show("Deseja excluir o(s) ciclo(s) selecionado(s)?", "Atenção",
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    foreach (var item in checados)
                    {
                        VO.LogMudanca log = new VO.LogMudanca();
                        log.descricao = "O tratamento nº " + Convert.ToInt32(item.Cells[4].Value) +
                                        " do CRG nº " +
                                        Convert.ToInt32(item.Cells[2].Value) + " iniciado no dia " +
                                        item.Cells[8].Value +
                                        " foi excluído";
                        log.crg  = Convert.ToInt32(item.Cells[2].Value);
                        log.data = DateTime.Now;
                        string[] dados = ObterDadosUltimo();
                        log.responsavel = dados[1];
                        LogMudancaDAO.insereLogMudanca(log);

                        LeiturasCicloDAO.DeletaLeiturasCiclo(Convert.ToInt32(item.Cells[1].Value),
                                                             Convert.ToInt32(item.Cells[2].Value));
                        LeiturasTratDAO.DeletaLeiturasTratamento(Convert.ToInt32(item.Cells[1].Value),
                                                                 Convert.ToInt32(item.Cells[2].Value));
                        ProdutoCicloDAO.DeletaProdutosCiclo(Convert.ToInt32(item.Cells[1].Value),
                                                            Convert.ToInt32(item.Cells[2].Value));
                        CicloDAO.DeletaCiclo(Convert.ToInt32(item.Cells[1].Value),
                                             Convert.ToInt32(item.Cells[2].Value));
                    }
                    CarregaCiclos();
                }
            }
            else
            {
                MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
            }
        }
Exemplo n.º 3
0
        private void ImportarCiclo(ImportarCiclo ciclo)
        {
            try
            {
                // Inclui o ciclo no banco de dados
                CicloDAO.inserirCiclo(ciclo.ciclo);
                ciclo.ciclo.id = CicloDAO.retornaId(ciclo.ciclo);

                // Insere as leituras da ciclo
                if (ciclo.ciclo.tipoCRG == 2)
                {
                    LeiturasCicloDAO.inserirLeiturasCiclo150(ciclo.leiturasCiclo, 0, ciclo.ciclo);
                }
                else
                {
                    LeiturasCicloDAO.inserirLeiturasCiclo(ciclo.leiturasCiclo, 0, ciclo.ciclo);
                }

                // Caso haja tratamento, insere-se neste método
                if (ciclo.leiturasTratamento.Count > 0)
                {
                    if (ciclo.ciclo.tipoCRG == 2)
                    {
                        LeiturasTratDAO.inserirLeiturasTratamento150(ciclo.leiturasTratamento, 0, ciclo.ciclo);
                    }
                    else
                    {
                        LeiturasTratDAO.inserirLeiturasTratamento(ciclo.leiturasTratamento, 0, ciclo.ciclo);
                    }
                }
                foreach (var p in ciclo.produtosCiclo)
                {
                    //Insere produtos do ciclo
                    p.ciclo.id = ciclo.ciclo.id;
                    ProdutoCicloDAO.inserirProdutoCiclo(p);
                }
            }
            catch (Exception exception)
            {
                throw new Exception(exception.Message);
            }
        }
Exemplo n.º 4
0
        private void RelTratamento_Load(object sender, EventArgs e)
        {
            reportViewer1.LocalReport.EnableExternalImages = true;

            var fieldInfo = typeof(Microsoft.Reporting.WinForms.RenderingExtension).GetField("m_isVisible", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

            foreach (var extension in this.reportViewer1.LocalReport.ListRenderingExtensions())
            {
                if (string.Compare("Excel", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
                else if (string.Compare("WORD", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
                else if (string.Compare("EXCELOPENXML", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
                else if (string.Compare("WORDOPENXML", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
            }

            List <ProdutoCiclo> listaProdutos;

            if (empresa != "")
            {
                int idEmpresa = EmpresaCicloDAO.retornaID(empresa);
                listaProdutos = ProdutoCicloDAO.listaProdutosCicloPorEmpresa(ciclo, idEmpresa);
            }
            else
            {
                listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(ciclo);
            }
            var listaLeiturasTrat  = LeiturasTratDAO.ListaLeiturasTratamento(ciclo);
            var listaLeiturasCiclo = LeiturasCicloDAO.ListaLeiturasCiclos(ciclo);

            var strProdutos = string.Empty;

            foreach (var p in listaProdutos)
            {
                strProdutos += p.produto.descricao + " com " + p.volume + " " + p.unidade.unidade + " - " +
                               p.empresa.nome + Environment.NewLine;
            }

            RelatorioUtils.GerarQrCode($"Relatório do Controlador Nº {ciclo.crg} {Environment.NewLine}Nº Série: {ciclo.numSerie}{Environment.NewLine}" +
                                       $"Tratamento Nº {ciclo.nTrat}{Environment.NewLine}" +
                                       $"Nº de leituras: {ciclo.nl}{Environment.NewLine}{Environment.NewLine}" +
                                       $"Período do ciclo: {Environment.NewLine}Início: {ciclo.dataInicio}{Environment.NewLine}Fim: {ciclo.dataFim}{Environment.NewLine}{Environment.NewLine}" +
                                       $"Temperatura de Controle {Environment.NewLine}Tc: {ciclo.temperaturaControle} ºC{Environment.NewLine}{Environment.NewLine}" +
                                       $"Temperatura do Tratamento {Environment.NewLine}Tt: {ciclo.temperaturaTrat} ºC{Environment.NewLine}{Environment.NewLine}" +
                                       $"Tempo do Tratamento {Environment.NewLine}tt: {ciclo.tempoTrat} minuto(s){Environment.NewLine}{Environment.NewLine}" +
                                       (!string.IsNullOrWhiteSpace(ciclo.VolumeFixo) ? $"Volume total: {Environment.NewLine}" + ciclo.VolumeFixo + (ciclo.IsMetrosCubicos ? "m³" : " peças") + Environment.NewLine + Environment.NewLine : "") +
                                       (listaLeiturasTrat?.Count > 0
                    ? $"Início do Tratamento{Environment.NewLine}Leitura: {ciclo.NLIniTrat}{Environment.NewLine}Data: {ciclo.dataIniTrat}{Environment.NewLine}(concluído)"
                    : "Não realizou tratamento") + Environment.NewLine + Environment.NewLine +
                                       $"Responsável Técnico: {Environment.NewLine}{ciclo.responsavel}{Environment.NewLine}{Environment.NewLine}" +
                                       $"Operador: {Environment.NewLine}{ciclo.operador}{Environment.NewLine}{Environment.NewLine}" +
                                       $"PRODUTOS: {Environment.NewLine}" +
                                       strProdutos
                                       );

            ReportParameter Titulo = new ReportParameter("Titulo");

            Titulo.Values.Add("Relatório do Controlador Nº " + ciclo.crg + " (Nº Série: " + ciclo.numSerie + ")");
            ReportParameter Periodo = new ReportParameter("Periodo");

            Periodo.Values.Add("Período do ciclo: " + ciclo.dataInicio + " - " + ciclo.dataFim);
            ReportParameter Tc = new ReportParameter("Tc");

            Tc.Values.Add("   - Temperatura de Controle (Tc): " + ciclo.temperaturaControle + " ºC");
            ReportParameter Tt = new ReportParameter("Tt");

            Tt.Values.Add("   - Temperatura do Tratamento (Tt): " + ciclo.temperaturaTrat + " ºC");
            ReportParameter tempoT = new ReportParameter("tempoT");

            tempoT.Values.Add("   - Tempo do Tratamento (tt): " + ciclo.tempoTrat + " minuto(s)");
            ReportParameter Controlador = new ReportParameter("Controlador");

            Controlador.Values.Add("Controlador nº " + ciclo.crg + " com " + ciclo.nl + " leituras(NTrat: " +
                                   ciclo.nTrat + ")");
            ReportParameter Descricao = new ReportParameter("Descricao");

            Descricao.Values.Add("Descrição: " + ciclo.descricao);
            ReportParameter VolumeFixo = new ReportParameter("VolumeFixo");

            if (!string.IsNullOrWhiteSpace(ciclo.VolumeFixo))
            {
                VolumeFixo.Values.Add("Volume total: " + ciclo.VolumeFixo + (ciclo.IsMetrosCubicos ? "m³" : " peças"));
            }
            else
            {
                VolumeFixo.Values.Add("");
            }
            ReportParameter Tratamento = new ReportParameter("Tratamento");

            if (listaLeiturasCiclo != null && listaLeiturasTrat.Count > 0)
            {
                Tratamento.Values.Add("Início do Tratamento na leitura " + ciclo.NLIniTrat + " - " + ciclo.dataIniTrat +
                                      "(concluído)");
            }
            else
            {
                Tratamento.Values.Add("Não realizou o tratamento");
            }
            ReportParameter Responsavel = new ReportParameter("Responsavel");

            Responsavel.Values.Add("Responsável Técnico: " + ciclo.responsavel);
            ReportParameter Operador = new ReportParameter("Operador");

            Operador.Values.Add("Operador: " + ciclo.operador);
            ReportParameter Produtos = new ReportParameter("Produtos");
            string          produtos = "";

            foreach (var p in listaProdutos)
            {
                produtos = produtos + p.produto.descricao + " com " + p.volume + " " + p.unidade.unidade + " - " +
                           p.empresa.nome + " \n";
            }
            Produtos.Values.Add(produtos);
            ReportParameter path = new ReportParameter("path");

            path.Values.Add(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath) ?? string.Empty, "Image.png"));
            ReportParameter qrCode = new ReportParameter("QrCodePath");

            qrCode.Values.Add(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath) ?? string.Empty, "qrcode.png"));
            ReportParameter coment = new ReportParameter("Comentario");

            coment.Values.Add("Comentário: " + comentario);

            VO.Empresa empresaCiclo = EmpresaDAO.retornaEmpresa();
            if (empresaCiclo != null)
            {
                dataSetGeral.Empresa.AddEmpresaRow(empresaCiclo.Nome, empresaCiclo.Endereco, empresaCiclo.Cep, empresaCiclo.Cidade,
                                                   empresaCiclo.UF,
                                                   empresaCiclo.Fone, empresaCiclo.Fax, empresaCiclo.CNPJ, empresaCiclo.IE, empresaCiclo.NCredenciamento, empresaCiclo.Logo);
            }
            else
            {
                dataSetGeral.Empresa.AddEmpresaRow("", "", "", "", -1, "", "", "", "", "", null);
            }

            var maskSensores = ciclo.tipoCRG == 150 ? "" : "#0.0";

            int aux = 1, nl = 1, nlt = 1;

            if (listaLeiturasTrat != null && listaLeiturasTrat.Count > 0)
            {
                var puloleitura = (ciclo.NLIniTrat - 1) / 10;
                var lista       = populaTratamento(ciclo, listaLeiturasCiclo, listaLeiturasTrat, configRelatorio);

                foreach (var item in lista.ToList())
                {
                    dataSetGeral.Tratamento.AddTratamentoRow(item.NLT.ToString("000"), item.NL.ToString("000"),
                                                             item.horario, item.T1.ToString(maskSensores),
                                                             item.T2.ToString(maskSensores),
                                                             item.T3.ToString(maskSensores),
                                                             item.T4.ToString(maskSensores));
                }

                var             primeiro = true;
                ReportParameter p1 = null, p2 = null;
                foreach (var item in lista.ToList())
                {
                    if (item.demarca_tratamento == true)
                    {
                        if (primeiro)
                        {
                            p1       = new ReportParameter("nlt_inicio", item.NLT.ToString("000"));
                            primeiro = false;
                        }
                        else
                        {
                            p2 = new ReportParameter("nlt_fim", item.NLT.ToString("000"));
                            break;
                        }
                    }
                }
                if (p1 != null)
                {
                    reportViewer1.LocalReport.SetParameters(p1);
                }
                if (p2 != null)
                {
                    reportViewer1.LocalReport.SetParameters(p2);
                }

                Grafico grafico = new Grafico(ciclo, 2, lista);
                grafico.ShowDialog(this);

                //Leituras antes do Tratamento

                /*for (int i = 0; i < ciclo.nlAntesTrat; i += 2)
                 * {
                 *  dataSetGeral.Tratamento.AddTratamentoRow("--", nl.ToString("000"),
                 *      listaLeiturasCiclo[i].horario, listaLeiturasCiclo[i].T1.ToString("00.0"),
                 *      listaLeiturasCiclo[i].T2.ToString("00.0"),
                 *      listaLeiturasCiclo[i].T3.ToString("00.0"), listaLeiturasCiclo[i].T4.ToString("00.0"));
                 *  nl += 2;
                 * }*/
                /*for (int i = 0; i < ciclo.NLIniTrat; i += puloleitura)
                 * {
                 *  dataSetGeral.Tratamento.AddTratamentoRow(nlt.ToString("000"), nl.ToString("000"),
                 *      listaLeiturasCiclo[i].horario, listaLeiturasCiclo[i].T1.ToString("00.0"),
                 *      listaLeiturasCiclo[i].T2.ToString("00.0"),
                 *      listaLeiturasCiclo[i].T3.ToString("00.0"), listaLeiturasCiclo[i].T4.ToString("00.0"));
                 *  nl += puloleitura;
                 *  nlt++;
                 * }
                 * nl = ciclo.NLIniTrat;
                 * //Leituras do Tratamento
                 * puloleitura = listaLeiturasTrat.Count/20;
                 *
                 * for (int i = 0; i < listaLeiturasTrat.Count; i += 2)
                 * {
                 *  dataSetGeral.Tratamento.AddTratamentoRow(aux.ToString("000"), nl.ToString("000"),
                 *      listaLeiturasTrat[i].horario, listaLeiturasTrat[i].T1.ToString("00.0"),
                 *      listaLeiturasTrat[i].T2.ToString("00.0"),
                 *      listaLeiturasTrat[i].T3.ToString("00.0"), listaLeiturasTrat[i].T4.ToString("00.0"));
                 *  aux += 2;
                 *  nl += 2;
                 * }
                 * nl = listaLeiturasCiclo.Count - 20;
                 * //Leituras após o tratamento
                 * for (int i = 0; i < ciclo.nlPostTrat; i += 2)
                 * {
                 *  dataSetGeral.Tratamento.AddTratamentoRow("--", nl.ToString("000"),
                 *      listaLeiturasCiclo[nl - 1].horario, listaLeiturasCiclo[nl - 1].T1.ToString("00.0"),
                 *      listaLeiturasCiclo[nl - 1].T2.ToString("00.0"),
                 *      listaLeiturasCiclo[nl - 1].T3.ToString("00.0"), listaLeiturasCiclo[nl - 1].T4.ToString("00.0"));
                 *  nl += 2;
                 * }*/

                int tamanho = dataSetGeral.Tratamento.Count / 2;
                int resto   = dataSetGeral.Tratamento.Count % 2;
                if (resto == 1)
                {
                    for (int i = 0; i < tamanho + 1; i++)
                    {
                        dataSetGeral.Tratamento1.AddTratamento1Row(dataSetGeral.Tratamento[i].NLT,
                                                                   dataSetGeral.Tratamento[i].NL, dataSetGeral.Tratamento[i].Hora,
                                                                   dataSetGeral.Tratamento[i].T1, dataSetGeral.Tratamento[i].T2, dataSetGeral.Tratamento[i].T3,
                                                                   dataSetGeral.Tratamento[i].T4);
                    }
                    for (int i = tamanho + 1; i < dataSetGeral.Tratamento.Count; i++)
                    {
                        dataSetGeral.Tratamento2.AddTratamento2Row(dataSetGeral.Tratamento[i].NLT,
                                                                   dataSetGeral.Tratamento[i].NL, dataSetGeral.Tratamento[i].Hora,
                                                                   dataSetGeral.Tratamento[i].T1, dataSetGeral.Tratamento[i].T2, dataSetGeral.Tratamento[i].T3,
                                                                   dataSetGeral.Tratamento[i].T4);
                    }
                }
                if (resto == 0)
                {
                    for (int i = 0; i < tamanho; i++)
                    {
                        dataSetGeral.Tratamento1.AddTratamento1Row(dataSetGeral.Tratamento[i].NLT,
                                                                   dataSetGeral.Tratamento[i].NL, dataSetGeral.Tratamento[i].Hora,
                                                                   dataSetGeral.Tratamento[i].T1, dataSetGeral.Tratamento[i].T2, dataSetGeral.Tratamento[i].T3,
                                                                   dataSetGeral.Tratamento[i].T4);
                    }
                    for (int i = tamanho; i < dataSetGeral.Tratamento.Count; i++)
                    {
                        dataSetGeral.Tratamento2.AddTratamento2Row(dataSetGeral.Tratamento[i].NLT,
                                                                   dataSetGeral.Tratamento[i].NL, dataSetGeral.Tratamento[i].Hora,
                                                                   dataSetGeral.Tratamento[i].T1, dataSetGeral.Tratamento[i].T2, dataSetGeral.Tratamento[i].T3,
                                                                   dataSetGeral.Tratamento[i].T4);
                    }
                }
            }



            reportViewer1.LocalReport.SetParameters(Titulo);
            reportViewer1.LocalReport.SetParameters(Periodo);
            reportViewer1.LocalReport.SetParameters(Tc);
            reportViewer1.LocalReport.SetParameters(Tt);
            reportViewer1.LocalReport.SetParameters(tempoT);
            reportViewer1.LocalReport.SetParameters(Controlador);
            reportViewer1.LocalReport.SetParameters(Descricao);
            reportViewer1.LocalReport.SetParameters(Tratamento);
            reportViewer1.LocalReport.SetParameters(Responsavel);
            reportViewer1.LocalReport.SetParameters(Operador);
            reportViewer1.LocalReport.SetParameters(Produtos);
            reportViewer1.LocalReport.SetParameters(path);
            reportViewer1.LocalReport.SetParameters(qrCode);
            reportViewer1.LocalReport.SetParameters(new ReportParameter("ExibirQrCode", "false"));
            reportViewer1.LocalReport.SetParameters(coment);
            reportViewer1.LocalReport.SetParameters(VolumeFixo);

            empresaBindingSource.DataSource     = dataSetGeral.Empresa;
            tratamento1BindingSource.DataSource = dataSetGeral.Tratamento1;
            comentarioBindingSource.DataSource  = dataSetGeral.Comentario;
            tratamento2BindingSource.DataSource = dataSetGeral.Tratamento2;

            this.reportViewer1.RefreshReport();
            reportViewer1.LocalReport.EnableExternalImages = true;
        }
Exemplo n.º 5
0
        private void RelGeral_Load(object sender, EventArgs e)
        {
            var fieldInfo = typeof(Microsoft.Reporting.WinForms.RenderingExtension).GetField("m_isVisible", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

            foreach (var extension in this.reportViewer1.LocalReport.ListRenderingExtensions())
            {
                if (string.Compare("Excel", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
                else if (string.Compare("WORD", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
                else if (string.Compare("EXCELOPENXML", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
                else if (string.Compare("WORDOPENXML", extension.Name) == 0)
                {
                    fieldInfo.SetValue(extension, false);
                }
            }

            List <ProdutoCiclo> listaProdutos;

            if (empresa != "")
            {
                int idEmpresa = EmpresaCicloDAO.retornaID(empresa);
                listaProdutos = ProdutoCicloDAO.listaProdutosCicloPorEmpresa(ciclo, idEmpresa);
            }
            else
            {
                listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(ciclo);
            }
            var listaLeiturasTrat  = LeiturasTratDAO.ListaLeiturasTratamento(ciclo);
            var listaLeiturasCiclo = LeiturasCicloDAO.ListaLeiturasCiclos(ciclo);

            ReportParameter Titulo = new ReportParameter("Titulo");

            Titulo.Values.Add("Relatório do Controlador Nº " + ciclo.crg + " (Nº Série: " + ciclo.numSerie + ")");
            ReportParameter Periodo = new ReportParameter("Periodo");

            Periodo.Values.Add("Período do ciclo: " + ciclo.dataInicio + " - " + ciclo.dataFim);
            ReportParameter Tc = new ReportParameter("Tc");

            Tc.Values.Add("   - Temperatura de Controle (Tc): " + ciclo.temperaturaControle + " ºC");
            ReportParameter Tt = new ReportParameter("Tt");

            Tt.Values.Add("   - Temperatura do Tratamento (Tt): " + ciclo.temperaturaTrat + " ºC");
            ReportParameter tempoT = new ReportParameter("tempoT");

            tempoT.Values.Add("   - Tempo do Tratamento (tt): " + ciclo.tempoTrat + " minuto(s)");
            ReportParameter Controlador = new ReportParameter("Controlador");

            Controlador.Values.Add("Controlador nº " + ciclo.crg + " com " + ciclo.nl + " leituras(NTrat: " + ciclo.nTrat + ")");
            ReportParameter Descricao = new ReportParameter("Descricao");

            Descricao.Values.Add("Descrição: " + ciclo.descricao);
            ReportParameter VolumeFixo = new ReportParameter("VolumeFixo");

            if (!string.IsNullOrWhiteSpace(ciclo.VolumeFixo))
            {
                VolumeFixo.Values.Add("Volume total: " + ciclo.VolumeFixo + (ciclo.IsMetrosCubicos ? "m³" : " peças"));
            }
            else
            {
                VolumeFixo.Values.Add("");
            }
            ReportParameter Tratamento = new ReportParameter("Tratamento");

            if (listaLeiturasCiclo != null && listaLeiturasTrat.Count > 0)
            {
                Tratamento.Values.Add("Início do Tratamento na leitura " + ciclo.NLIniTrat + " - " + ciclo.dataIniTrat + "(concluído)");
            }
            else
            {
                Tratamento.Values.Add("Não realizou o tratamento");
            }
            ReportParameter Responsavel = new ReportParameter("Responsavel");

            Responsavel.Values.Add("Responsável Técnico: " + ciclo.responsavel);
            ReportParameter Operador = new ReportParameter("Operador");

            Operador.Values.Add("Operador: " + ciclo.operador);
            ReportParameter Produtos = new ReportParameter("Produtos");
            string          produtos = "";

            for (int i = 0; i < listaProdutos.Count; i++)
            {
                produtos = produtos + listaProdutos[i].produto.descricao + " com " + listaProdutos[i].volume + " "
                           + listaProdutos[i].unidade.unidade + " - " + listaProdutos[i].empresa.nome;
                if ((i + 1) < listaProdutos.Count)
                {
                    produtos = produtos + " \n";
                }
            }
            Produtos.Values.Add(produtos);
            ReportParameter NLIniTrat = new ReportParameter("NLIniTrat");

            NLIniTrat.Values.Add(ciclo.NLIniTrat.ToString("000"));
            ReportParameter Comentario = new ReportParameter("Comentario");

            Comentario.Values.Add("Comentário: " + comentario);

            VO.Empresa dadosEmpresa = EmpresaDAO.retornaEmpresa();
            if (dadosEmpresa != null)
            {
                DataSetGeral.Empresa.AddEmpresaRow(dadosEmpresa.Nome, dadosEmpresa.Endereco, dadosEmpresa.Cep, dadosEmpresa.Cidade,
                                                   dadosEmpresa.UF,
                                                   dadosEmpresa.Fone, dadosEmpresa.Fax, dadosEmpresa.CNPJ, dadosEmpresa.IE, dadosEmpresa.NCredenciamento, dadosEmpresa.Logo);
            }
            else
            {
                DataSetGeral.Empresa.AddEmpresaRow("", "", "", "", -1, "", "", "", "", "", null);
            }

            var maskSensores = ciclo.tipoCRG == 150 ? "" : "#0.0";

            //Forma lista com dados dos Ciclo
            if (filtro == "")
            {
                for (int i = 0; i < listaLeiturasCiclo.Count; i++)
                {
                    DataSetGeral.Ciclo.AddCicloRow((i + 1).ToString("000"), listaLeiturasCiclo[i].horario,
                                                   listaLeiturasCiclo[i].T1.ToString(maskSensores),
                                                   listaLeiturasCiclo[i].T2.ToString(maskSensores), listaLeiturasCiclo[i].T3.ToString(maskSensores),
                                                   listaLeiturasCiclo[i].T4.ToString(maskSensores));
                }
            }
            else
            {
                int contLista = 0;
                for (int i = 0; i < filtro.Length; i++)
                {
                    int n;
                    //Se é numérico
                    if (Int32.TryParse(filtro.Substring(i, 1), out n))
                    {
                        ordemFiltro.Add(filtro.Substring(i, 1));
                        int  j      = i + 1;
                        bool passou = false;
                        //Enquanto não encontra ";" e "-"
                        while (Int32.TryParse(filtro.Substring(j, 1), out n))
                        {
                            ordemFiltro[contLista] = ordemFiltro[contLista] + filtro.Substring(j, 1);
                            j++;
                            passou = true;
                        }
                        if (passou)
                        {
                            i = j - 1;
                        }
                        contLista++;
                    }
                    //Se e traçinho
                    else if (filtro.Substring(i, 1) == "-")
                    {
                        ordemFiltro[contLista - 1] = ordemFiltro[contLista - 1] + filtro.Substring(i, 2);
                        int  j      = i + 2;
                        bool passou = false;
                        //Enquanto não encontra ";" e "-"
                        while (Int32.TryParse(filtro.Substring(j, 1), out n))
                        {
                            ordemFiltro[contLista - 1] = ordemFiltro[contLista - 1] + filtro.Substring(j, 1);
                            j++;
                            passou = true;
                        }
                        if (passou)
                        {
                            i = j - 1;
                        }
                        else
                        {
                            i = i + 1;
                        }
                    }
                    //Se é ;
                    else if (filtro.Substring(i, 1) == ";")
                    {
                    }
                }

                for (int i = 0; i < ordemFiltro.Count; i++)
                {
                    if (ordemFiltro[i].Contains("-"))
                    {
                        string[] numeros = ordemFiltro[i].Split('-');
                        for (int j = Convert.ToInt32(numeros[0]) - 1; j < Convert.ToInt32(numeros[1]); j++)
                        {
                            DataSetGeral.Ciclo.AddCicloRow((j + 1).ToString("000"), listaLeiturasCiclo[j].horario,
                                                           listaLeiturasCiclo[j].T1.ToString(maskSensores),
                                                           listaLeiturasCiclo[j].T2.ToString(maskSensores), listaLeiturasCiclo[i].T3.ToString(maskSensores),
                                                           listaLeiturasCiclo[j].T4.ToString(maskSensores));
                        }
                    }
                    else
                    {
                        int j = Convert.ToInt32(ordemFiltro[i]) - 1;
                        DataSetGeral.Ciclo.AddCicloRow((j + 1).ToString("000"), listaLeiturasCiclo[j].horario,
                                                       listaLeiturasCiclo[j].T1.ToString(maskSensores),
                                                       listaLeiturasCiclo[j].T2.ToString(maskSensores), listaLeiturasCiclo[i].T3.ToString(maskSensores),
                                                       listaLeiturasCiclo[j].T4.ToString(maskSensores));
                    }
                }
            }

            int tamanho = DataSetGeral.Ciclo.Count / 2;

            if (DataSetGeral.Ciclo.Count % 2 == 0)
            {
                for (int i = 0; i < tamanho; i++)
                {
                    DataSetGeral.Ciclo1.AddCiclo1Row(DataSetGeral.Ciclo[i].NL,
                                                     DataSetGeral.Ciclo[i].Hora, DataSetGeral.Ciclo[i].T1,
                                                     DataSetGeral.Ciclo[i].T2, DataSetGeral.Ciclo[i].T3, DataSetGeral.Ciclo[i].T4);
                }
                for (int i = tamanho; i < DataSetGeral.Ciclo.Count; i++)
                {
                    DataSetGeral.Ciclo2.AddCiclo2Row(DataSetGeral.Ciclo[i].NL,
                                                     DataSetGeral.Ciclo[i].Hora, DataSetGeral.Ciclo[i].T1,
                                                     DataSetGeral.Ciclo[i].T2, DataSetGeral.Ciclo[i].T3, DataSetGeral.Ciclo[i].T4);
                }
            }
            else
            {
                for (int i = 0; i < tamanho + 1; i++)
                {
                    DataSetGeral.Ciclo1.AddCiclo1Row(DataSetGeral.Ciclo[i].NL,
                                                     DataSetGeral.Ciclo[i].Hora, DataSetGeral.Ciclo[i].T1,
                                                     DataSetGeral.Ciclo[i].T2, DataSetGeral.Ciclo[i].T3, DataSetGeral.Ciclo[i].T4);
                }
                for (int i = tamanho + 1; i < DataSetGeral.Ciclo.Count; i++)
                {
                    DataSetGeral.Ciclo2.AddCiclo2Row(DataSetGeral.Ciclo[i].NL,
                                                     DataSetGeral.Ciclo[i].Hora, DataSetGeral.Ciclo[i].T1,
                                                     DataSetGeral.Ciclo[i].T2, DataSetGeral.Ciclo[i].T3, DataSetGeral.Ciclo[i].T4);
                }
            }


            int aux = 1, nl = 1;

            //Forma a tabela com os dados do tratamento
            //Leituras antes do Tratamento
            ReportParameter p1 = null, p2 = null;
            var             listaTratamento = RelTratamento.populaTratamento(ciclo, listaLeiturasCiclo, listaLeiturasTrat, configRelatorio);

            foreach (var item in listaTratamento)
            {
                if (item.demarca_tratamento)
                {
                    if (p1 == null)
                    {
                        p1 = new ReportParameter("nlt_inicio", item.NLT.ToString("000"));
                    }
                    else
                    {
                        p2 = new ReportParameter("nlt_fim", item.NLT.ToString("000"));
                    }
                }
                DataSetGeral.Tratamento.AddTratamentoRow(item.NLT.ToString("000"), item.NL.ToString("000"),
                                                         item.horario, item.T1.ToString(maskSensores), item.T2.ToString(maskSensores),
                                                         item.T3.ToString(maskSensores), item.T4.ToString(maskSensores));
            }

            /*for (int i = 0; i < ciclo.nlAntesTrat; i += 2)
             * {
             *  DataSetGeral.Tratamento.AddTratamentoRow("--", nl.ToString("000"),
             *      listaLeiturasCiclo[i].horario, listaLeiturasCiclo[i].T1.ToString("00.0"),
             *      listaLeiturasCiclo[i].T2.ToString("00.0"),
             *      listaLeiturasCiclo[i].T3.ToString("00.0"), listaLeiturasCiclo[i].T4.ToString("00.0"));
             *  nl += 2;
             * }
             * nl -= 1;
             * //Leituras do Tratamento
             * for (int i = 0; i < listaLeiturasTrat.Count; i += 2)
             * {
             *  DataSetGeral.Tratamento.AddTratamentoRow(aux.ToString("000"), nl.ToString("000"),
             *      listaLeiturasTrat[i].horario, listaLeiturasTrat[i].T1.ToString("00.0"),
             *      listaLeiturasTrat[i].T2.ToString("00.0"),
             *      listaLeiturasTrat[i].T3.ToString("00.0"), listaLeiturasTrat[i].T4.ToString("00.0"));
             *  aux += 2;
             *  nl += 2;
             * }
             * nl = listaLeiturasCiclo.Count - 20;
             * //Leituras após o tratamento
             * for (int i = 0; i < ciclo.nlPostTrat; i += 2)
             * {
             *  DataSetGeral.Tratamento.AddTratamentoRow("--", nl.ToString("000"),
             *      listaLeiturasCiclo[nl - 1].horario, listaLeiturasCiclo[nl - 1].T1.ToString("00.0"),
             *      listaLeiturasCiclo[nl - 1].T2.ToString("00.0"),
             *      listaLeiturasCiclo[nl - 1].T3.ToString("00.0"),
             *      listaLeiturasCiclo[nl - 1].T4.ToString("00.0"));
             *  nl += 2;
             * }*/

            if (p1 != null && p2 != null)
            {
                reportViewer1.LocalReport.SetParameters(p1);
                reportViewer1.LocalReport.SetParameters(p2);
            }

            tamanho = DataSetGeral.Tratamento.Count / 2;
            if (DataSetGeral.Tratamento.Count % 2 == 0)
            {
                for (int i = 0; i < tamanho; i++)
                {
                    DataSetGeral.Tratamento1.AddTratamento1Row(DataSetGeral.Tratamento[i].NLT,
                                                               DataSetGeral.Tratamento[i].NL, DataSetGeral.Tratamento[i].Hora,
                                                               DataSetGeral.Tratamento[i].T1, DataSetGeral.Tratamento[i].T2,
                                                               DataSetGeral.Tratamento[i].T3,
                                                               DataSetGeral.Tratamento[i].T4);
                }
                for (int i = tamanho; i < DataSetGeral.Tratamento.Count; i++)
                {
                    DataSetGeral.Tratamento2.AddTratamento2Row(DataSetGeral.Tratamento[i].NLT,
                                                               DataSetGeral.Tratamento[i].NL, DataSetGeral.Tratamento[i].Hora,
                                                               DataSetGeral.Tratamento[i].T1, DataSetGeral.Tratamento[i].T2,
                                                               DataSetGeral.Tratamento[i].T3,
                                                               DataSetGeral.Tratamento[i].T4);
                }
            }
            else
            {
                for (int i = 0; i < tamanho + 1; i++)
                {
                    DataSetGeral.Tratamento1.AddTratamento1Row(DataSetGeral.Tratamento[i].NLT,
                                                               DataSetGeral.Tratamento[i].NL, DataSetGeral.Tratamento[i].Hora,
                                                               DataSetGeral.Tratamento[i].T1, DataSetGeral.Tratamento[i].T2,
                                                               DataSetGeral.Tratamento[i].T3,
                                                               DataSetGeral.Tratamento[i].T4);
                }
                for (int i = tamanho + 1; i < DataSetGeral.Tratamento.Count; i++)
                {
                    DataSetGeral.Tratamento2.AddTratamento2Row(DataSetGeral.Tratamento[i].NLT,
                                                               DataSetGeral.Tratamento[i].NL, DataSetGeral.Tratamento[i].Hora,
                                                               DataSetGeral.Tratamento[i].T1, DataSetGeral.Tratamento[i].T2,
                                                               DataSetGeral.Tratamento[i].T3,
                                                               DataSetGeral.Tratamento[i].T4);
                }
            }

            reportViewer1.LocalReport.SetParameters(Titulo);
            reportViewer1.LocalReport.SetParameters(Periodo);
            reportViewer1.LocalReport.SetParameters(Tc);
            reportViewer1.LocalReport.SetParameters(Tt);
            reportViewer1.LocalReport.SetParameters(tempoT);
            reportViewer1.LocalReport.SetParameters(Controlador);
            reportViewer1.LocalReport.SetParameters(Descricao);
            reportViewer1.LocalReport.SetParameters(Tratamento);
            reportViewer1.LocalReport.SetParameters(Responsavel);
            reportViewer1.LocalReport.SetParameters(Operador);
            reportViewer1.LocalReport.SetParameters(Produtos);
            reportViewer1.LocalReport.SetParameters(NLIniTrat);
            reportViewer1.LocalReport.SetParameters(Comentario);
            reportViewer1.LocalReport.SetParameters(VolumeFixo);

            EmpresaBindingSource.DataSource     = DataSetGeral.Empresa;
            Tratamento1BindingSource.DataSource = DataSetGeral.Tratamento1;
            ComentarioBindingSource.DataSource  = DataSetGeral.Comentario;
            Tratamento2BindingSource.DataSource = DataSetGeral.Tratamento2;
            Ciclo1BindingSource.DataSource      = DataSetGeral.Ciclo1;
            Ciclo2BindingSource.DataSource      = DataSetGeral.Ciclo2;

            this.reportViewer1.RefreshReport();
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        public static bool EnviaBancodeDadosAntigo(Ciclos ciclo, byte[] buffer, bool atualiza,
                                                   List <ProdutoCiclo> listaProdutos, int indiceLeitCiclo, int indiceLeitTrat)
        {
            try
            {
                //Novo histórico

                List <LeiturasTrat>  leiturasTrat  = new List <LeiturasTrat>();
                List <LeiturasCiclo> leiturasCiclo = new List <LeiturasCiclo>();


                if ((Conexao.buffer[0] & 128) == 0)
                {
                    ciclo.baseTempo = 0;
                }
                else
                {
                    ciclo.baseTempo = 1;
                }

                ciclo.nl = ((Conexao.buffer[0] & 127) * 256) + Conexao.buffer[1];

                string dataFim = string.Concat((Conexao.buffer[12] / 16), (Conexao.buffer[12] % 16)) + "/" +
                                 string.Concat((Conexao.buffer[13] / 16), (Conexao.buffer[13] % 16)) + "/20" +
                                 string.Concat((Conexao.buffer[14] / 16), (Conexao.buffer[14] % 16)) + " " +
                                 string.Concat((Conexao.buffer[10] / 16), (Conexao.buffer[10] % 16)) + ":" +
                                 string.Concat((Conexao.buffer[9] / 16), (Conexao.buffer[9] % 16));
                ciclo.dataFim = Convert.ToDateTime(dataFim);

                //Sensor
                ciclo.sensor = Conexao.buffer[16] & 240;

                int cont = 20;


                ciclo.tipoCRG = 100;
                //Qtde leituras do Tratamento
                ciclo.nlt = ((Conexao.buffer.Length - ((ciclo.nl * 8) + 42)) / 8);

                //leituras do Ciclo
                if (ciclo.nl > 0)
                {
                    for (int i = 0; i < ciclo.nl; i++)
                    {
                        LeiturasCiclo leitura = new LeiturasCiclo();

                        int auxL = (Conexao.buffer[cont] * 16) + (Conexao.buffer[cont + 1] / 16);
                        if (auxL < 1000)
                        {
                            leitura.T1 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T1 = 999 / 10.0;
                        }

                        auxL = ((Conexao.buffer[cont + 1] % 16) * 256) + Conexao.buffer[cont + 2];
                        if (auxL < 1000)
                        {
                            leitura.T2 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T2 = 999 / 10.0;
                        }

                        auxL = (Conexao.buffer[cont + 3] * 16) + (Conexao.buffer[cont + 4] / 16);
                        if (auxL < 1000)
                        {
                            leitura.T3 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T3 = 999 / 10.0;
                        }

                        auxL = ((Conexao.buffer[cont + 4] % 16) * 256) + Conexao.buffer[cont + 5];
                        if (auxL < 1000)
                        {
                            leitura.T4 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T4 = 999 / 10.0;
                        }

                        leitura.horario =
                            string.Concat((Conexao.buffer[cont + 7] / 16), (Conexao.buffer[cont + 7] % 16)) + ":" +
                            string.Concat((Conexao.buffer[cont + 6] / 16), (Conexao.buffer[cont + 6] % 16));
                        leiturasCiclo.Add(leitura);
                        cont = cont + 8;
                    }
                }

                //Temperatura de Controle e do Tratamento
                int auxT = (Conexao.buffer[cont] * 256) + Conexao.buffer[cont + 1];
                if (auxT < 1000)
                {
                    ciclo.temperaturaControle = auxT / 10;
                }
                else
                {
                    ciclo.temperaturaControle = 999 / 10;
                }

                auxT = (Conexao.buffer[cont + 2] * 256) + Conexao.buffer[cont + 3];
                if (auxT < 1000)
                {
                    ciclo.temperaturaTrat = auxT / 10;
                }
                else
                {
                    ciclo.temperaturaTrat = 999 / 10;
                }

                //Tempo Tratamento
                ciclo.tempoTrat = Conexao.buffer[cont + 4];
                if (ciclo.tempoTrat > 100)
                {
                    ciclo.tempoTrat = 99;
                }

                //Data e hora inicio do tratamento
                String dataInicioTrat = string.Concat((Conexao.buffer[cont + 8] / 16), (Conexao.buffer[cont + 8] % 16)) +
                                        "/" +
                                        string.Concat((Conexao.buffer[cont + 9] / 16), (Conexao.buffer[cont + 9] % 16)) +
                                        "/20" +
                                        string.Concat((Conexao.buffer[cont + 10] / 16), (Conexao.buffer[cont + 10] % 16)) +
                                        " " +
                                        string.Concat((Conexao.buffer[cont + 6] / 16), (Conexao.buffer[cont + 6] % 16)) +
                                        ":" +
                                        string.Concat((Conexao.buffer[cont + 5] / 16), (Conexao.buffer[cont + 5] % 16));
                ciclo.dataIniTrat = Convert.ToDateTime(dataInicioTrat);

                //Leitura inicio do Tratamento
                ciclo.NLIniTrat = ((Conexao.buffer[cont + 11] & 127) * 256) + Conexao.buffer[cont + 12];

                //leituras do Tratamento
                if (ciclo.nlt > 0)
                {
                    cont = cont + 13;
                    for (int i = 0; i < ciclo.nlt; i++)
                    {
                        LeiturasTrat leitura = new LeiturasTrat();
                        int          auxL    = (Conexao.buffer[cont] * 16) + (Conexao.buffer[cont + 1] / 16);
                        if (auxL < 1000)
                        {
                            leitura.T1 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T1 = 999 / 10.0;
                        }

                        auxL = ((Conexao.buffer[cont + 1] % 16) * 256) + Conexao.buffer[cont + 2];
                        if (auxL < 1000)
                        {
                            leitura.T2 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T2 = 999 / 10.0;
                        }

                        auxL = (Conexao.buffer[cont + 3] * 16) + (Conexao.buffer[cont + 4] / 16);
                        if (auxL < 1000)
                        {
                            leitura.T3 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T3 = 999 / 10.0;
                        }

                        auxL = ((Conexao.buffer[cont + 4] % 16) * 256) + Conexao.buffer[cont + 5];
                        if (auxL < 1000)
                        {
                            leitura.T4 = auxL / 10.0;
                        }
                        else
                        {
                            leitura.T4 = 999 / 10.0;
                        }

                        leitura.horario = string.Concat((Conexao.buffer[cont + 7] / 16), (Conexao.buffer[cont + 7] % 16)) +
                                          ":" +
                                          string.Concat((Conexao.buffer[cont + 6] / 16), (Conexao.buffer[cont + 6] % 16));
                        leiturasTrat.Add(leitura);
                        cont = cont + 8;
                    }
                }

                ciclo.nlAntesTrat = ciclo.NLIniTrat - 1;
                int iniResf;
                if (ciclo.baseTempo == 0)
                {
                    iniResf = ciclo.NLIniTrat + ciclo.tempoTrat;
                }
                else
                {
                    iniResf = ciclo.NLIniTrat + 1;
                }
                if (ciclo.nl - iniResf >= 19 && ciclo.baseTempo == 0)
                {
                    ciclo.nlPostTrat = 20;
                }
                else if (ciclo.nl - iniResf >= 9 && ciclo.baseTempo == 1)
                {
                    ciclo.nlPostTrat = 10;
                }
                else if (ciclo.nl >= iniResf)
                {
                    ciclo.nlPostTrat = ((ciclo.nl - iniResf) + 1);
                }

                ciclo.nlPostTrat = Conexao.buffer[28];

                ciclo.situacao = 0;
                if (!atualiza)
                {
                    bool retorno = CicloDAO.inserirCiclo(ciclo);
                    if (retorno)
                    {
                        ciclo.id = CicloDAO.retornaId(ciclo);
                        foreach (var l in listaProdutos)
                        {
                            l.ciclo = ciclo;
                            ProdutoCicloDAO.inserirProdutoCiclo(l);
                        }
                        if (leiturasCiclo.Count > 0)
                        {
                            LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, 0, ciclo);
                        }
                        if (leiturasTrat.Count > 0)
                        {
                            LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, 0, ciclo);
                        }
                    }
                }
                else
                {
                    bool retorno = CicloDAO.alteraCiclo(ciclo);
                    if (retorno)
                    {
                        ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.id, ciclo.crg);
                        for (int i = 0; i < listaProdutos.Count; i++)
                        {
                            listaProdutos[i].ciclo = ciclo;
                            ProdutoCicloDAO.inserirProdutoCiclo(listaProdutos[i]);
                        }
                        if (leiturasCiclo.Count > 0)
                        {
                            LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, indiceLeitCiclo, ciclo);
                        }
                        if (leiturasTrat.Count > 0)
                        {
                            LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, indiceLeitTrat, ciclo);
                        }
                    }
                }


                return(true);
            }
            catch (Exception error)
            {
                LogErro logErro = new LogErro();
                logErro.crg          = ciclo.crg;
                logErro.data         = DateTime.Now;
                logErro.descricao    = "Erro ao tentar processar os dados do Tratamento e salvá-lo";
                logErro.maisDetalhes = error.Message + " " + error.StackTrace;
                return(false);
            }
        }
Exemplo n.º 8
0
        public static bool EnviaBancodeDados(Ciclos ciclo, byte[] buffer, bool atualiza,
                                             List <ProdutoCiclo> listaProdutos, int indiceLeitCiclo, int indiceLeitTrat, bool crg150)
        {
            try
            {
                //Novo histórico

                List <LeiturasTrat>  leiturasTrat  = new List <LeiturasTrat>();
                List <LeiturasCiclo> leiturasCiclo = new List <LeiturasCiclo>();


                ciclo.nl = (Conexao.buffer[2] * 256) + Conexao.buffer[3];
                string dataFim = string.Concat((Conexao.buffer[13] / 16), (Conexao.buffer[13] % 16)) + "/" +
                                 string.Concat((Conexao.buffer[14] / 16), (Conexao.buffer[14] % 16)) + "/20" +
                                 string.Concat((Conexao.buffer[15] / 16), (Conexao.buffer[15] % 16)) + " " +
                                 string.Concat((Conexao.buffer[11] / 16), (Conexao.buffer[11] % 16)) + ":" +
                                 string.Concat((Conexao.buffer[10] / 16), (Conexao.buffer[10] % 16));
                ciclo.dataFim = Convert.ToDateTime(dataFim);
                string dataIniTrat = string.Concat((Conexao.buffer[19] / 16), (Conexao.buffer[19] % 16)) +
                                     "/" +
                                     string.Concat((Conexao.buffer[20] / 16), (Conexao.buffer[20] % 16)) +
                                     "/20" +
                                     string.Concat((Conexao.buffer[21] / 16), (Conexao.buffer[21] % 16)) +
                                     " " +
                                     string.Concat((Conexao.buffer[17] / 16), (Conexao.buffer[17] % 16)) +
                                     ":" +
                                     string.Concat((Conexao.buffer[16] / 16), (Conexao.buffer[16] % 16));
                ciclo.dataIniTrat = Convert.ToDateTime(dataIniTrat);
                //Leitura inicio do Tratamento
                ciclo.NLIniTrat = ((Conexao.buffer[22] & 127) * 256) + Conexao.buffer[23];
                //Qtde leituras do Tratamento
                ciclo.nlt = Conexao.buffer[24];
                //Flags
                string flags = decimalParaBinario(Conexao.buffer[25]);

                ciclo.baseTempo = Convert.ToInt32(flags.Substring(6, 1));
                //TControl e Histerese
                string aux = decimalParaBinario(Conexao.buffer[26]);
                ciclo.tControl  = binarioParaDecimal(aux.Substring(0, 4));
                ciclo.histerese = binarioParaDecimal(aux.Substring(4, 4));

                ciclo.nlAntesTrat = Conexao.buffer[27];
                ciclo.nlPostTrat  = Conexao.buffer[28];

                //Tempo Tratamento
                ciclo.tempoTrat = Conexao.buffer[33];

                //Sensor
                ciclo.sensor = Conexao.buffer[26] & 240;
                if (crg150)
                {
                    //Tipo 1 é normal e 2 é 150
                    ciclo.tipoCRG = 150;
                    //Temperatura de Controle e do Tratamento
                    int auxT = (Conexao.buffer[29] * 256) + Conexao.buffer[30];
                    if (auxT < 150)
                    {
                        ciclo.temperaturaControle = auxT;
                    }
                    else
                    {
                        ciclo.temperaturaControle = 150;
                    }
                    auxT = (Conexao.buffer[31] * 256) + Conexao.buffer[32];
                    if (auxT < 150)
                    {
                        ciclo.temperaturaTrat = auxT;
                    }
                    else
                    {
                        ciclo.temperaturaTrat = 150;
                    }

                    //leituras do Ciclo
                    int cont = 34;
                    if (ciclo.nl > 0)
                    {
                        for (int i = 0; i < ciclo.nl; i++)
                        {
                            LeiturasCiclo leitura = new LeiturasCiclo();

                            int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16);
                            if (auxL < 150)
                            {
                                leitura.T1 = auxL;
                            }
                            else
                            {
                                leitura.T1 = 150;
                            }

                            auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4];
                            if (auxL < 150)
                            {
                                leitura.T2 = auxL;
                            }
                            else
                            {
                                leitura.T2 = 150;
                            }

                            auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16);
                            if (auxL < 150)
                            {
                                leitura.T3 = auxL;
                            }
                            else
                            {
                                leitura.T3 = 150;
                            }

                            auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7];
                            if (auxL < 150)
                            {
                                leitura.T4 = auxL;
                            }
                            else
                            {
                                leitura.T4 = 150;
                            }

                            leitura.horario =
                                string.Concat((Conexao.buffer[cont] / 16), (Conexao.buffer[cont] % 16)) + ":" +
                                string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16));
                            leiturasCiclo.Add(leitura);
                            cont = cont + 8;
                        }
                    }

                    //leituras do Tratamento
                    if (ciclo.nlt > 0)
                    {
                        for (int i = 0; i < ciclo.nlt; i++)
                        {
                            LeiturasTrat leitura = new LeiturasTrat();

                            int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16);
                            if (auxL < 150)
                            {
                                leitura.T1 = auxL;
                            }
                            else
                            {
                                leitura.T1 = 150;
                            }

                            auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4];
                            if (auxL < 150)
                            {
                                leitura.T2 = auxL;
                            }
                            else
                            {
                                leitura.T2 = 150;
                            }

                            auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16);
                            if (auxL < 150)
                            {
                                leitura.T3 = auxL;
                            }
                            else
                            {
                                leitura.T3 = 150;
                            }

                            auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7];
                            if (auxL < 150)
                            {
                                leitura.T4 = auxL;
                            }
                            else
                            {
                                leitura.T4 = 150;
                            }

                            string binario = decimalParaBinario(Conexao.buffer[cont]);
                            auxL            = binarioParaDecimal(binario.Substring(1, 7));
                            leitura.horario = string.Concat((auxL / 16), (auxL % 16)) + ":" +
                                              string.Concat((Conexao.buffer[cont + 1] / 16),
                                                            (Conexao.buffer[cont + 1] % 16));
                            leiturasTrat.Add(leitura);
                            cont = cont + 8;
                        }
                    }
                }
                else
                {
                    //1 é normal e 2 é 150
                    ciclo.tipoCRG = 100;
                    //Temperatura de Controle e do Tratamento
                    int auxT = (Conexao.buffer[29] * 256) + Conexao.buffer[30];
                    if (auxT < 1000)
                    {
                        ciclo.temperaturaControle = auxT / 10;
                    }
                    else
                    {
                        ciclo.temperaturaControle = 999 / 10;
                    }
                    auxT = (Conexao.buffer[31] * 256) + Conexao.buffer[32];
                    if (auxT < 1000)
                    {
                        ciclo.temperaturaTrat = auxT / 10;
                    }
                    else
                    {
                        ciclo.temperaturaTrat = 999 / 10;
                    }

                    //leituras do Ciclo
                    int cont = 34;
                    if (ciclo.nl > 0)
                    {
                        for (int i = 0; i < ciclo.nl; i++)
                        {
                            LeiturasCiclo leitura = new LeiturasCiclo();

                            int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16);
                            if (auxL < 1000)
                            {
                                leitura.T1 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T1 = 999 / 10.0;
                            }

                            auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4];
                            if (auxL < 1000)
                            {
                                leitura.T2 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T2 = 999 / 10.0;
                            }

                            auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16);
                            if (auxL < 1000)
                            {
                                leitura.T3 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T3 = 999 / 10.0;
                            }

                            auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7];
                            if (auxL < 1000)
                            {
                                leitura.T4 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T4 = 999 / 10.0;
                            }

                            leitura.horario =
                                string.Concat((Conexao.buffer[cont] / 16), (Conexao.buffer[cont] % 16)) + ":" +
                                string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16));
                            leiturasCiclo.Add(leitura);
                            cont = cont + 8;
                        }
                    }

                    //leituras do Tratamento
                    if (ciclo.nlt > 0)
                    {
                        for (int i = 0; i < ciclo.nlt; i++)
                        {
                            LeiturasTrat leitura = new LeiturasTrat();

                            int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16);
                            if (auxL < 1000)
                            {
                                leitura.T1 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T1 = 999 / 10.0;
                            }

                            auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4];
                            if (auxL < 1000)
                            {
                                leitura.T2 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T2 = 999 / 10.0;
                            }

                            auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16);
                            if (auxL < 1000)
                            {
                                leitura.T3 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T3 = 999 / 10.0;
                            }

                            auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7];
                            if (auxL < 1000)
                            {
                                leitura.T4 = auxL / 10.0;
                            }
                            else
                            {
                                leitura.T4 = 999 / 10.0;
                            }

                            string binario = decimalParaBinario(Conexao.buffer[cont]);
                            auxL            = binarioParaDecimal(binario.Substring(1, 7));
                            leitura.horario = string.Concat((auxL / 16), (auxL % 16)) + ":" +
                                              string.Concat((Conexao.buffer[cont + 1] / 16),
                                                            (Conexao.buffer[cont + 1] % 16));
                            leiturasTrat.Add(leitura);
                            cont = cont + 8;
                        }
                    }
                }
                ciclo.situacao = 0;
                if (!atualiza)
                {
                    bool retorno = CicloDAO.inserirCiclo(ciclo);
                    if (retorno)
                    {
                        ciclo.id = CicloDAO.retornaId(ciclo);
                        foreach (var l in listaProdutos)
                        {
                            l.ciclo = ciclo;
                            ProdutoCicloDAO.inserirProdutoCiclo(l);
                        }
                        if (leiturasCiclo.Count > 0)
                        {
                            LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, 0, ciclo);
                        }
                        if (leiturasTrat.Count > 0)
                        {
                            LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, 0, ciclo);
                        }
                    }
                }
                else
                {
                    bool retorno = CicloDAO.alteraCiclo(ciclo);
                    if (retorno)
                    {
                        ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.id, ciclo.crg);
                        for (int i = 0; i < listaProdutos.Count; i++)
                        {
                            listaProdutos[i].ciclo = ciclo;
                            ProdutoCicloDAO.inserirProdutoCiclo(listaProdutos[i]);
                        }
                        if (leiturasCiclo.Count > 0)
                        {
                            LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, indiceLeitCiclo, ciclo);
                        }
                        if (leiturasTrat.Count > 0)
                        {
                            LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, indiceLeitTrat, ciclo);
                        }
                    }
                }


                return(true);
            }
            catch (Exception error)
            {
                LogErro logErro = new LogErro();
                logErro.crg          = ciclo.crg;
                logErro.data         = DateTime.Now;
                logErro.descricao    = "Erro ao tentar processar os dados do Tratamento e salvá-lo";
                logErro.maisDetalhes = error.Message + " " + error.StackTrace;
                return(false);
            }
        }
Exemplo n.º 9
0
        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;
                     * }*/
                }
            }
        }
Exemplo n.º 10
0
        /// <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>
        }
Exemplo n.º 11
0
        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);
                    }
                }
            }
        }