Пример #1
0
        private void Imprimir_Click(object sender, EventArgs e)
        {
            VO.Ciclos       ciclo     = CicloDAO.buscaCiclo(crg, idCiclo);
            OpcoesImpressao impressao = new OpcoesImpressao(ciclo);

            impressao.ShowDialog(this);
        }
Пример #2
0
        private void Grafico_Click(object sender, EventArgs e)
        {
            VO.Ciclos ciclo   = CicloDAO.buscaCiclo(crg, idCiclo);
            Grafico   grafico = new Grafico(ciclo);

            grafico.ShowDialog(this);
        }
Пример #3
0
 private void Finalizar_Click(object sender, EventArgs e)
 {
     if (Finalizar.Text == "Enviar Finalizadas")
     {
         var checados = DtgChecked(dtgAndamento);
         if (checados.Count > 0)
         {
             if (MessageBox.Show("Deseja continuar a enviar os ciclos para finalizadas?", "Atenção",
                                 MessageBoxButtons.YesNo) == DialogResult.Yes)
             {
                 foreach (var item in checados)
                 {
                     CicloDAO.alteraSituacao(Convert.ToInt32(item.Cells[2].Value),
                                             Convert.ToInt32(item.Cells[1].Value));
                 }
                 CarregaCiclos();
             }
         }
         else
         {
             MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK,
                             MessageBoxIcon.Information);
         }
     }
     else
     {
         var filtro = new Filtro(this);
         filtro.ShowDialog(this);
     }
 }
Пример #4
0
        private void Produtos_Click(object sender, EventArgs e)
        {
            VO.Ciclos             ciclo         = CicloDAO.buscaCiclo(crg, idCiclo);
            List <ProdutoCiclo>   listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(ciclo);
            DetalhesProdutosCiclo produtos      = new DetalhesProdutosCiclo(listaProdutos);

            produtos.ShowDialog(this);
        }
Пример #5
0
        public void CarregaCiclos()
        {
            var filtro = UltimosDAO.RetornaUltimoFiltro();

            dtgAndamento.Rows.Clear();
            dtgFinalizados.Rows.Clear();
            List <VO.Ciclos> CiclosAndamento = CicloDAO.listaCiclosPorSituacaoAll(0);

            foreach (var c in CiclosAndamento)
            {
                dtgAndamento.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"),
                                      c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
            }

            selecao = filtro.ValorFiltro;
            if (selecao == 4)
            {
                int crg = filtro.Equipamento;
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEq(crg, 1);
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }
            else if (selecao == 3)
            {
                int crg = filtro.Equipamento;
                int mes = filtro.QtdMeses;
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoMes(crg, 1, -mes);
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }
            else if (selecao == 2)
            {
                int crg = filtro.Equipamento;
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEntre(crg, 1, filtro.DataInicio, filtro.DataFim);
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }
            else
            {
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoAll(1);
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }

            toggleBotoesDtgAndamento(false);
        }
Пример #6
0
        public void CarregaCiclos()
        {
            string[] filtro = ObterDadosFiltro();
            dtgAndamento.Rows.Clear();
            dtgFinalizados.Rows.Clear();
            List <VO.Ciclos> CiclosAndamento = CicloDAO.listaCiclosPorSituacaoAll(0);

            foreach (var c in CiclosAndamento)
            {
                dtgAndamento.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"),
                                      c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
            }

            //selecao = int.Parse(filtro[0]);
            if (selecao == 4)
            {
                int crg = int.Parse(filtro[3]);
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEq(crg, 1);
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }
            else if (selecao == 3)
            {
                int crg = int.Parse(filtro[3]);
                int mes = int.Parse(filtro[4]);
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoMes(crg, 1, -mes);
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }
            else if (selecao == 2)
            {
                int              crg               = int.Parse(filtro[3]);
                string           dataInicio        = filtro[1];
                string           dataFim           = filtro[2];
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEntre(crg, 1, Convert.ToDateTime(dataInicio), Convert.ToDateTime(dataFim));
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }
            else
            {
                List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoAll(1);
                foreach (var c in CiclosFinalizados)
                {
                    dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"),
                                            c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
                }
            }
        }
Пример #7
0
 private void dtgFinalizados_CellEndEdit(object sender, DataGridViewCellEventArgs e)
 {
     if (e.ColumnIndex == 9)
     {
         var row   = dtgFinalizados.Rows[e.RowIndex];
         var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(row.Cells[2].Value),
                                         Convert.ToInt32(row.Cells[1].Value));
         ciclo.descricao = (string)row.Cells[9].Value;
         CicloDAO.alteraCiclo(ciclo);
     }
 }
Пример #8
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);
            }
        }
Пример #9
0
        public void CarregaCiclos()
        {
            dtgAndamento.Rows.Clear();
            dtgFinalizados.Rows.Clear();
            List <VO.Ciclos> CiclosAndamento   = CicloDAO.listaCiclosPorSituacaoAll(0);
            List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoAll(1);

            foreach (var c in CiclosAndamento)
            {
                dtgAndamento.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
            }
            foreach (var c in CiclosFinalizados)
            {
                dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao);
            }
        }
Пример #10
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);
            }
        }
Пример #11
0
        private void Alterar_Click(object sender, EventArgs e)
        {
            if (Atualizar.Text == "Atualizar")
            {
                var checados = DtgChecked(dtgAndamento);
                if (checados.Count == 0)
                {
                    return;
                }
                var frmTipoCom = new frmSelecionarMeioComunicacao(0);
                frmTipoCom.ShowDialog(this);
                if (!frmTipoCom.Sucesso)
                {
                    return;
                }
                var tipoCom = frmTipoCom.TipoComunicacao;
                if (string.IsNullOrWhiteSpace(tipoCom))
                {
                    return;
                }


                foreach (var item in checados)
                {
                    var crg   = Convert.ToInt32(item.Cells[2].Value);
                    var nTrat = Convert.ToInt32(item.Cells[4].Value);

                    if (tipoCom == "ONLINE")
                    {
                        var func = new funcaoAssincrona(() => SecagensBO.ReceberSecagem(0, crg, ConfiguracaoDAO.retornaPorta()));

                        this.Enabled = false;
                        frmCarregar  = new Carregar();
                        frmCarregar.Show(this);
                        var asyncResult = func.BeginInvoke((ar) =>
                        {
                        }, null);

                        while (asyncResult.IsCompleted == false)
                        {
                            Application.DoEvents();
                            Thread.Sleep(50);
                        }

                        frmCarregar.Invoke(new MethodInvoker(() => frmCarregar.Close()));

                        var listaRetorno = func.EndInvoke(asyncResult);

                        if (listaRetorno == null || listaRetorno.Count == 0)
                        {
                            MessageBox.Show("Não foi possível comunicar com o equipamento!", "Erro de comunicação",
                                            MessageBoxButtons.OK, MessageBoxIcon.Error);
                            this.Enabled = true;
                            return;
                        }
                        var secagem = SecagensBO.DescriptografarSecagem(listaRetorno);

                        if (secagem == null)
                        {
                            MessageBox.Show("Não foi possível carregar este ciclo!", "Erro", MessageBoxButtons.OK,
                                            MessageBoxIcon.Error);
                            this.Enabled = true;
                            return;
                        }
                        secagem.ciclo.crg = crg;

                        var status = SecagensBO.SalvarSecagem(true, secagem, this);

                        if (status.Cancelado)
                        {
                            this.Enabled = true;
                            return;
                        }

                        if (!status.Sucesso)
                        {
                            var msgs = string.Empty;
                            foreach (var msg in ErrorHandler.GetAllErrors)
                            {
                                msgs += Environment.NewLine + msg.ErrorMessage;
                            }
                            MessageBox.Show(
                                "Não foi possível salvar o ciclo " + secagem.ciclo.nTrat + "!" + Environment.NewLine +
                                Environment.NewLine + "Detalhes: " + msgs, "Erro", MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                            this.Enabled = true;
                            return;
                        }

                        MessageBox.Show(
                            "Ciclo " + secagem.ciclo.nTrat + " " + (status.Salvo ? "salvo" : "atualizado") + " com sucesso!",
                            "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        CarregaCiclos();
                        Enabled = true;
                        Activate();
                    }
                    else
                    {
                        var frmPendrive = new frmPendriveList(crg, nTrat);
                        frmPendrive.ShowDialog(this);
                        var arquivo = frmPendrive.Arquivo;

                        if (string.IsNullOrWhiteSpace(arquivo) || nTrat == -1 || crg == -1)
                        {
                            return;
                        }

                        var bytes = File.ReadAllBytes(arquivo);
                        if (!bytes.Any())
                        {
                            ErrorHandler.ThrowNew(0, "Arquivo inválido!");
                            goto Fim;
                        }
                        var secagem = SecagensBO.DescriptografarSecagem(bytes.ToList(), 1);
                        if (secagem == null)
                        {
                            var msg = "Não foi possível carregar este ciclo!";
                            if (ErrorHandler.GetLastError != null)
                            {
                                msg += Environment.NewLine + Environment.NewLine + "Detalhes:" + Environment.NewLine +
                                       ErrorHandler.GetLastError.ErrorMessage;
                                ErrorHandler.ClearErrors();
                            }
                            MessageBox.Show(msg, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            goto Fim;
                        }

                        secagem.ciclo.crg = crg;


                        var status = SecagensBO.SalvarSecagem(true, secagem);

                        if (status.Sucesso)
                        {
                            MessageBox.Show("Ciclo " + secagem.ciclo.nTrat + " " + (status.Salvo ? "salvo" : "atualizado") +
                                            " com sucesso!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            goto Fim;
                        }

                        var ultimoErro = ErrorHandler.GetLastError;
                        if (ultimoErro != null)
                        {
                            MessageBox.Show(ultimoErro.ErrorMessage, ultimoErro.Identifier == 0 ? "Erro" : "Informação",
                                            MessageBoxButtons.OK,
                                            ultimoErro.Identifier == 0 ? MessageBoxIcon.Error : MessageBoxIcon.Information);
                            goto Fim;
                        }
                    }
Fim:
                    Activate();
                    CarregaCiclos();
                }
            }
            else
            {
                var checados = DtgChecked(dtgFinalizados);
                if (checados.Count > 0)
                {
                    foreach (var item in checados)
                    {
                        var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(item.Cells[2].Value),
                                                        Convert.ToInt32(item.Cells[1].Value));
                        var novoCiclo = new NovoCiclo(true, Convert.ToInt32(item.Cells[4].Value), ciclo,
                                                      Convert.ToInt32(item.Cells[2].Value) - 1, false);
                        novoCiclo.ShowDialog(this);
                    }
                    CarregaCiclos();
                }
                else
                {
                    MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
            }
        }
Пример #12
0
        private void Email_Click(object sender, EventArgs e)
        {
            FormularioEmail form = new FormularioEmail(this);

            form.ShowDialog(this);
            if (continuarExportandoEmail)
            {
                var crg = 0;

                FileInfo file = new FileInfo(@Environment.CurrentDirectory + "\\CiclosExportados.crg08");
                if (file.Exists)
                {
                    file.Delete();
                }

                var writer = new XmlTextWriter(Environment.CurrentDirectory + "\\CiclosExportados.crg08", 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 por email.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                finally
                {
                    writer.Flush();
                    writer.Close();

                    var xmlDoc = new XmlDocument();

                    try
                    {
                        xmlDoc.PreserveWhitespace = true;
                        xmlDoc.Load(file.Name);
                    }
                    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(file.Name);
                    }
                    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 por email.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                    MailMessage          msg = new MailMessage();
                    List <Destinatarios> listaDestinatarios = ListaDestinatarios();
                    string[]             dadosConfiguracao  = ObterDadosEmail();

                    if (listaDestinatarios.Count > 0)
                    {
                        msg.From = new MailAddress(dadosConfiguracao[1]);
                        foreach (var d in listaDestinatarios)
                        {
                            msg.To.Add(new MailAddress(d.email));
                        }
                        msg.Subject = "Envio de Ciclos Exportados pelo CRG 08";
                        msg.Body    = "Ciclo exportado no dia " + DateTime.Today.ToString().Substring(0, 10) +
                                      " do equipamento CRG 08 enviado via software do CRG 08 desenvolvido pela Digisystem Indústria de " +
                                      "Sistema Eletrônico LTDA, e autorizado conforme configuração do usuário no software.";

                        msg.Attachments.Add(new Attachment(@Environment.CurrentDirectory + "\\CiclosExportados.crg08"));

                        SmtpClient smtp = new SmtpClient(dadosConfiguracao[0]);
                        smtp.Port = Convert.ToInt32(dadosConfiguracao[4]);
                        if (int.Parse(dadosConfiguracao[5]) == 1)
                        {
                            smtp.EnableSsl = true;
                        }
                        else
                        {
                            smtp.EnableSsl = false;
                        }
                        smtp.Credentials = new NetworkCredential(dadosConfiguracao[2], dadosConfiguracao[3]);
                        smtp.SendAsync(msg, msg.Subject);
                        smtp.SendCompleted += new SendCompletedEventHandler(stmp_SendCompletedRGD);
                    }
                    MessageBox.Show("O email foi enviado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None);
                }
            }
        }
Пример #13
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);
            }
        }
Пример #14
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);
            }
        }
Пример #15
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);
            }
        }
Пример #16
0
        private void Alterar_Click(object sender, EventArgs e)
        {
            if (Atualizar.Text == "Atualizar")
            {
                var frmTipoCom = new frmSelecionarMeioComunicacao();
                frmTipoCom.ShowDialog(this);
                var tipoCom = frmTipoCom.comunicacao;
                if (string.IsNullOrWhiteSpace(tipoCom))
                {
                    return;
                }
                MessageBox.Show(tipoCom);
                return;


                int[]        atualizacao = ConfiguracaoDAO.RetornaAtualizacao();
                Configuracao config      = new Configuracao();
                config.atualizacao = atualizacao[0];
                if (config.atualizacao == 1)
                {
                    var checados = DtgChecked(dtgAndamento);
                    if (checados.Count > 0)
                    {
                        foreach (var item in checados)
                        {
                            var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(item.Cells[2].Value),
                                                            Convert.ToInt32(item.Cells[1].Value));
                            var novoCiclo = new NovoCiclo(true, Convert.ToInt32(item.Cells[4].Value), ciclo,
                                                          Convert.ToInt32(item.Cells[2].Value) - 1, false);
                            novoCiclo.ShowDialog(this);
                        }
                        CarregaCiclos();
                    }
                    else
                    {
                        MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK,
                                        MessageBoxIcon.Information);
                    }

                    /*for (int i = 0; i < dtgAndamento.Rows.Count; i++)
                     * {
                     *  var rows = dtgAndamento.Rows;
                     *  if ((bool) dtgAndamento.Rows[i].Cells[0].Value)
                     *  {
                     *      VO.Ciclos ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(dtgAndamento.Rows[i].Cells[2].Value),
                     *          Convert.ToInt32(dtgAndamento.Rows[i].Cells[1].Value));
                     *      NovoCiclo novoCiclo = new NovoCiclo(true,Convert.ToInt32(dtgAndamento.Rows[i].Cells[4].Value),
                     *          ciclo, Convert.ToInt32(dtgAndamento.Rows[i].Cells[2].Value) - 1, false);
                     *      novoCiclo.ShowDialog(this);
                     *  }
                     * }*/
                }
            }
            else
            {
                var checados = DtgChecked(dtgFinalizados);
                if (checados.Count > 0)
                {
                    foreach (var item in checados)
                    {
                        var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(item.Cells[2].Value),
                                                        Convert.ToInt32(item.Cells[1].Value));
                        var novoCiclo = new NovoCiclo(true, Convert.ToInt32(item.Cells[4].Value), ciclo,
                                                      Convert.ToInt32(item.Cells[2].Value) - 1, false);
                        novoCiclo.ShowDialog(this);
                    }
                    CarregaCiclos();
                }
                else
                {
                    MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
            }
        }
Пример #17
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;
                     * }*/
                }
            }
        }
Пример #18
0
        private void Receber_Click(object sender, EventArgs e)
        {
            dtgHistorico.Rows.Clear();
            int    numEquipamento = cmbCRG.SelectedIndex + 1;
            string porta          = ConfiguracaoDAO.retornaPorta();
            bool   continua       = false;
            byte   numBytes       = 0;

            try
            {
                t = new Thread(new ThreadStart(carregarAguarde));
                t.Start();
                var srpComm = new SerialPort(porta, 19200, Parity.None, 8, StopBits.One);
                srpComm.DtrEnable       = true;
                srpComm.RtsEnable       = false;
                srpComm.ReadBufferSize  = 50000;
                srpComm.WriteBufferSize = 50000;

                Conexao.srpComm = srpComm;

                if (Conexao.srpComm.IsOpen == false)
                {
                    Conexao.srpComm.Open();
                    Thread.Sleep(100);
                }

                int aux = numEquipamento + 63;
                Conexao.srpComm.Write(((char)19).ToString());
                Thread.Sleep(100);
                Conexao.srpComm.Write(((char)17).ToString());
                Thread.Sleep(100);
                Conexao.srpComm.Write(((char)aux).ToString());
                Thread.Sleep(100);

                if (Conexao.srpComm.BytesToRead != 0)
                {
                    numBytes       = byte.Parse(Conexao.srpComm.BytesToRead.ToString());
                    Conexao.buffer = new byte[numBytes];
                    Conexao.srpComm.Read(Conexao.buffer, 0, numBytes);
                }
                continua = true;

                if (continua)
                {
                    int contador = 0;

                    switch (Conexao.buffer[0])
                    {
                    case 167:
                        Conexao.srpComm.Write(((char)15).ToString());
                        Thread.Sleep(500);
                        do
                        {
                            if (Conexao.srpComm.BytesToRead != 0)
                            {
                                numBytes       = byte.Parse(Conexao.srpComm.BytesToRead.ToString());
                                Conexao.buffer = new byte[numBytes];
                                Conexao.srpComm.Read(Conexao.buffer, 0, numBytes);
                            }
                        } while (contador < 3 && Conexao.srpComm.BytesToRead != 0);

                        int checksum = 0;
                        for (int i = 0; i < Conexao.buffer.Length - 2; i++)
                        {
                            checksum ^= Conexao.buffer[i];
                        }

                        if (checksum == Conexao.buffer[Conexao.buffer.Length - 2])
                        {
                            for (int i = 0; i < Conexao.buffer.Length - 2; i++)
                            {
                                VO.Ciclos ciclo = new VO.Ciclos();
                                ciclo.nTrat      = (Conexao.buffer[i] * 256) + Conexao.buffer[i + 1];
                                ciclo.nl         = (Conexao.buffer[i + 2] * 256) + Conexao.buffer[i + 3];
                                ciclo.dataInicio =
                                    Convert.ToDateTime(
                                        string.Concat((Conexao.buffer[i + 7] / 16), (Conexao.buffer[i + 7] % 16)) + "/" +
                                        string.Concat((Conexao.buffer[i + 8] / 16), (Conexao.buffer[i + 8] % 16)) +
                                        "/20" +
                                        string.Concat((Conexao.buffer[i + 9] / 16), (Conexao.buffer[i + 9] % 16)) + " " +
                                        string.Concat((Conexao.buffer[i + 5] / 16), (Conexao.buffer[i + 5] % 16)) + ":" +
                                        string.Concat((Conexao.buffer[i + 4] / 16), (Conexao.buffer[i + 4] % 16)));
                                ciclo.crg = numEquipamento;
                                bool noBanco = CicloDAO.testanoBanco(ciclo);
                                if (!noBanco)
                                {
                                    dtgHistorico.Rows.Add(ciclo.nTrat, ciclo.nl,
                                                          ciclo.dataInicio.ToString("dd/MM/yyyy HH:mm"));
                                }
                                i = i + 9;
                            }
                            t.Abort();
                            Thread.Sleep(100);
                            if (dtgHistorico.Rows.Count == 0)
                            {
                                MessageBox.Show("Não há nenhum histórico novo");
                            }
                            Conexao.srpComm.Close();
                        }
                        else
                        {
                            MessageBox.Show("Erro de checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Conexao.srpComm.Close();
                        }

                        break;

                    case 166:
                        Conexao.srpComm.Write(((char)15).ToString());
                        Thread.Sleep(500);
                        do
                        {
                            if (Conexao.srpComm.BytesToRead != 0)
                            {
                                numBytes       = byte.Parse(Conexao.srpComm.BytesToRead.ToString());
                                Conexao.buffer = new byte[numBytes];
                                Conexao.srpComm.Read(Conexao.buffer, 0, numBytes);
                            }
                        } while (contador < 3 && Conexao.srpComm.BytesToRead != 0);

                        int checksum1 = 0;
                        for (int i = 0; i < Conexao.buffer.Length - 2; i++)
                        {
                            checksum1 ^= Conexao.buffer[i];
                        }

                        if (checksum1 == Conexao.buffer[Conexao.buffer.Length - 2])
                        {
                            for (int i = 0; i < Conexao.buffer.Length - 2; i++)
                            {
                                VO.Ciclos ciclo = new VO.Ciclos();
                                ciclo.nTrat      = (Conexao.buffer[i] * 256) + Conexao.buffer[i + 1];
                                ciclo.nl         = (Conexao.buffer[i + 2] * 256) + Conexao.buffer[i + 3];
                                ciclo.dataInicio =
                                    Convert.ToDateTime(
                                        string.Concat((Conexao.buffer[i + 7] / 16), (Conexao.buffer[i + 7] % 16)) + "/" +
                                        string.Concat((Conexao.buffer[i + 8] / 16), (Conexao.buffer[i + 8] % 16)) +
                                        "/20" +
                                        string.Concat((Conexao.buffer[i + 9] / 16), (Conexao.buffer[i + 9] % 16)) + " " +
                                        string.Concat((Conexao.buffer[i + 5] / 16), (Conexao.buffer[i + 5] % 16)) + ":" +
                                        string.Concat((Conexao.buffer[i + 4] / 16), (Conexao.buffer[i + 4] % 16)));
                                ciclo.crg = numEquipamento;
                                bool noBanco = CicloDAO.testanoBanco(ciclo);
                                if (!noBanco)
                                {
                                    dtgHistorico.Rows.Add(ciclo.nTrat, ciclo.nl,
                                                          ciclo.dataInicio.ToString("dd/MM/yyyy HH:mm"));
                                }
                                i = i + 9;
                            }
                            t.Abort();
                            Thread.Sleep(100);
                            if (dtgHistorico.Rows.Count == 0)
                            {
                                MessageBox.Show("Não há nenhum histórico novo", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            Conexao.srpComm.Close();
                        }
                        else
                        {
                            MessageBox.Show("Erro de checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            Conexao.srpComm.Close();
                        }
                        break;

                    case 165:
                        t.Abort();
                        Thread.Sleep(100);
                        if (dtgHistorico.Rows.Count > 0)
                        {
                            dtgHistorico.Rows.Clear();
                        }
                        MessageBox.Show("Essa função não está disponivel para esse equipamento.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        Conexao.srpComm.Close();
                        break;
                    }
                    inserir.Enabled = true;
                }
            }
            catch (Exception error)
            {
                if (t.IsAlive)
                {
                    t.Abort();
                    Thread.Sleep(100);
                }
                VO.LogErro logErro = new VO.LogErro();
                logErro.crg          = numEquipamento;
                logErro.data         = DateTime.Now;
                logErro.descricao    = "Erro ao decodificar os dados do histórico, aparelho nº " + numEquipamento;
                logErro.maisDetalhes = error.Message + " " + error.StackTrace;
                LogErroDAO.inserirLogErro(logErro, logErro.crg);
                MessageBox.Show("Erro durante a comunicação com o equipamento", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Пример #19
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);
                    }
                }
            }
        }