Пример #1
0
  protected ArrayList<ArrayList<String>> montaRelatorio(Filtro filtro) {
    filtro.setIdLinha("");

    ArrayList<ArrayList<String>> mascara = this.buscaMascara(filtro);
    ArrayList<RegistroTO> dados = this.buscaDados(filtro);

    filtro.setNomeTabela(ParametrosDB.Tabelas.TB_ORCAMENTO_REFERENCIA_INICIAL);
    ArrayList<RegistroTO> dadosInicial = this.buscaDados(filtro);

    ArrayList<String> lin;
    RegistroTO reg = new RegistroTO();
    RegistroTO regInic = new RegistroTO();

    String temp;
    double dSaldoMedio1 = 0;
    double dSaldoMedio2 = 0;
    double dResultado1 = 0;
    double dResultado2 = 0;
    boolean achou = false;
    for (int m = 0; m < mascara.size(); m++) {
      dSaldoMedio1 = 0;
      dSaldoMedio2 = 0;
      dResultado1 = 0;
      dResultado2 = 0;
      lin = mascara.get(m);
      temp = lin.get(1).trim();
      achou = false;

      for (int dI = 0; dI < dadosInicial.size(); dI++) {
        regInic = dadosInicial.get(dI);
        if (temp.equals(regInic.getId_linha().trim()) && regInic.getMedida().equals("S")) {
          achou = true;
          break;
        }
      }

      if (achou && Excessoes.imprimeSaldoMedio(lin.get(1))) {
        dSaldoMedio1 = (regInic.getOR_12());
        lin.set(5, formata(dSaldoMedio1, 0));
      } else {
        lin.set(5, " - ");
        lin.set(6, " - ");
      }

      achou = false;
      for (int d = 0; d < dados.size(); d++) {
        reg = dados.get(d);
        if (temp.equals(reg.getId_linha().trim()) && reg.getMedida().equals("S")) {
          achou = true;
          break;
        }
      }

      if (achou && Excessoes.imprimeSaldoMedio(lin.get(1))) {
        dSaldoMedio2 = (reg.getOR_12());
        lin.set(8, formata(dSaldoMedio2, 0));
      } else {
        lin.set(8, " - ");
        lin.set(9, " - ");
      }
      lin.set(11, formata(dSaldoMedio2 - dSaldoMedio1, 0)); // Var.
      // absoluta

      if (dSaldoMedio1 == 0) {
        lin.set(13, " - "); // Var. %
      } else {
        lin.set(13, formata((dSaldoMedio2 / dSaldoMedio1 - 1) * 100, 2)); // Var.
        // %
      }

      achou = false;
      for (int d = 0; d < dadosInicial.size(); d++) {
        regInic = dadosInicial.get(d);
        if (temp.equals(regInic.getId_linha().trim()) && regInic.getMedida().equals("R")) {
          achou = true;
          break;
        }
      }
      if (achou) {
        dResultado1 = (regInic.getOR_12());
        lin.set(7, formata(dResultado1, 0));

      } else {
        lin.set(7, " - ");
      }

      achou = false;
      for (int d = 0; d < dados.size(); d++) {
        reg = dados.get(d);
        if (temp.equals(reg.getId_linha().trim()) && reg.getMedida().equals("R")) {
          achou = true;
          break;
        }
      }
      if (achou) {
        dResultado2 = (reg.getOR_12());
        lin.set(10, formata(dResultado2, 0));
      } else {
        lin.set(10, " - ");
      }

      lin.set(12, formata(dResultado2 - dResultado1, 0)); // Var. absoluta

      if (dResultado1 == 0) {
        lin.set(14, " - "); // Var. %
      } else {
        lin.set(14, formata((dResultado2 / dResultado1 - 1) * 100, 2)); // Var.
        // %
      }

      if (Excessoes.imprimeSpread(lin.get(1))) {
        if (dSaldoMedio1 == 0) {
          lin.set(6, " - "); // Var. %
        } else {
          lin.set(6, formata((dResultado1 / dSaldoMedio1) * 100, 3)); // Spread.
        }
        if (dSaldoMedio2 == 0) {
          lin.set(9, " - "); // Var. %
        } else {
          lin.set(9, formata((dResultado2 / dSaldoMedio2) * 100, 3)); // Spread.
        }
      }
    }
    return mascara;
  }