package gcom.relatorio.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.bean.OSPavimentoHelper;
import gcom.atendimentopublico.ordemservico.bean.OSPavimentoRetornoHelper;
import gcom.batch.Relatorio;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.relatorio.ConstantesRelatorios;
import gcom.relatorio.RelatorioDataSource;
import gcom.relatorio.RelatorioVazioException;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaException;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
import gcom.util.ControladorException;
import gcom.util.Util;
import gcom.util.agendadortarefas.AgendadorTarefas;
import gcom.util.filtro.ParametroSimples;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* <p>
*
* Title: GCOM
* </p>
* <p>
*
* Description: Sistema de Gest�o Comercial
* </p>
* <p>
*
* Copyright: Copyright (c) 2004
* </p>
* <p>
*
* Company: COMPESA - Companhia Pernambucana de Saneamento
* </p>
*
* @author Yara Taciane, Hugo Leonardo
* @created 28/02/2008, 13/12/2010
* @version 1.0
*/
public class RelatorioRelacaoServicosAcompanhamentoRepavimentacao extends TarefaRelatorio {
private static final long serialVersionUID = 1L;
/**
* Constructor for the RelatorioManterNegativadorExclusaoMotivo object
*/
public RelatorioRelacaoServicosAcompanhamentoRepavimentacao(Usuario usuario) {
super(usuario, ConstantesRelatorios.RELATORIO_RELACAO_SERVICO_ACOMPANHAMENTO_REPAVIMENTACAO_NOVO);
}
@Deprecated
public RelatorioRelacaoServicosAcompanhamentoRepavimentacao() {
super(null, "");
}
/**
* < <Descri��o do m�todo>>
*
* @param NegativadorExclusaoMotivo Parametros
* Description of the Parameter
* @return Descri��o do retorno
* @exception RelatorioVazioException
* Descri��o da exce��o
*/
public Object executar() throws TarefaException {
// ------------------------------------
Integer idFuncionalidadeIniciada = this.getIdFuncionalidadeIniciada();
// ------------------------------------
// Recebe os par�metros que ser�o utilizados no relat�rio
//FiltroNegativadorExclusaoMotivo filtroNegativadorExclusaoMotivo = (FiltroNegativadorExclusaoMotivo) getParametro("filtroNegativadorExclusaoMotivo");
OSPavimentoHelper oSPavimentoHelperParametros = (OSPavimentoHelper) getParametro("parametros");
String escolhaRelatorio = (String) getParametro("escolhaRelatorio");
int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio");
String indicadorOsObservacaoRetorno = (String) getParametro("indicadorOsObservacaoRetorno");
if(indicadorOsObservacaoRetorno != null &&
new Short(indicadorOsObservacaoRetorno).shortValue() == ConstantesSistema.SIM.shortValue()){
oSPavimentoHelperParametros.setIndicadorOsObservacaoRetorno(ConstantesSistema.SIM);
}else{
oSPavimentoHelperParametros.setIndicadorOsObservacaoRetorno(ConstantesSistema.NAO);
}
// Flag's
Boolean achouPrimeiraOcorrenciaPendente = false;
Boolean indicadorPrimeiraOcorrenciaPendente = false;
Boolean indicadorUltimaOcorrenciaRejeitada = false;
Boolean achouPrimeiraOcorrenciaConcluida = false;
Boolean indicadorPrimeiraOcorrenciaConcluida = false;
Boolean achouPrimeiraOcorrenciaRejeitada = false;
Boolean indicadorPrimeiraOcorrenciaRejeitada = false;
// valor de retorno
byte[] retorno = null;
// cole��o de beans do relat�rio
ArrayList relatorioBeans = new ArrayList();
Fachada fachada = Fachada.getInstancia();
RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean relatorioBean = null;
Collection<OSPavimentoRetornoHelper> collOrdemServicoPavimentoHelper = fachada.
pesquisarRelatorioOrdemProcessoRepavimentacao(oSPavimentoHelperParametros, escolhaRelatorio);
if (collOrdemServicoPavimentoHelper != null && !collOrdemServicoPavimentoHelper.isEmpty()) {
// coloca a cole��o de par�metros da analise no iterator
for (OSPavimentoRetornoHelper oSPavimentoRetornoHelper : collOrdemServicoPavimentoHelper) {
// Faz as valida��es dos campos necess�riose e formata a String
// para a forma como ir� aparecer no relat�rio
// Situa��o Retorno
String situacaoRetorno = "";
// numeroOS
String numeroOS = "";
if (oSPavimentoRetornoHelper.getOrdemServico() != null) {
numeroOS = oSPavimentoRetornoHelper.getOrdemServico().getId().toString();
}
// matricula do im�vel
String matricula = "";
if (oSPavimentoRetornoHelper.getOrdemServico()!= null && oSPavimentoRetornoHelper.getOrdemServico().getImovel() != null) {
matricula = oSPavimentoRetornoHelper.getOrdemServico().getImovel().getId().toString();
}
// endereco
String endereco = "";
if (oSPavimentoRetornoHelper.getEndereco() != null) {
endereco = oSPavimentoRetornoHelper.getEndereco();
}
// data encerramento da OS
String dataEncerramento = "";
if (oSPavimentoRetornoHelper.getOrdemServico() != null && oSPavimentoRetornoHelper.getOrdemServico().getDataEncerramento()!= null) {
dataEncerramento = Util.formatarData(oSPavimentoRetornoHelper.getOrdemServico().getDataEncerramento());
}
// tipo pvto rua
String tipoPvtoRua = "";
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento() != null &&
oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRua()!= null &&
oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRua().getDescricaoAbreviada()!= null) {
tipoPvtoRua = oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRua().getId() + "-" +
oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRua().getDescricaoAbreviada();
}
// Metr. (m�) indicada.
BigDecimal metragem = null;
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento() != null && oSPavimentoRetornoHelper.getOrdemServicoPavimento().getAreaPavimentoRua()!= null) {
metragem =oSPavimentoRetornoHelper.getOrdemServicoPavimento().getAreaPavimentoRua();
}
//...............................................................................................
// data da conclus�o
String dataConclusao = "";
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento()!= null && oSPavimentoRetornoHelper.getOrdemServicoPavimento().getDataExecucao()!= null) {
dataConclusao = Util.formatarData(oSPavimentoRetornoHelper.getOrdemServicoPavimento().getDataExecucao());
}
//...............................................................................................
//tipo pvto rua retorno.
String tipoPvtoRuaRetorno = "";
// flag usada para agrupar as ordens de servi�os entre: Pendentes e Conclu�das
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento() != null &&
oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRuaRetorno()!= null &&
oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRuaRetorno().getDescricaoAbreviada()!= null &&
oSPavimentoRetornoHelper.getOrdemServicoPavimento().getMotivoRejeicao() == null ) {
tipoPvtoRuaRetorno = oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRuaRetorno().getId() + "-" +
oSPavimentoRetornoHelper.getOrdemServicoPavimento().getPavimentoRuaRetorno().getDescricaoAbreviada();
situacaoRetorno = "2"; // CONCLUIDAS
if(indicadorPrimeiraOcorrenciaConcluida == false && achouPrimeiraOcorrenciaConcluida == false){
indicadorPrimeiraOcorrenciaConcluida = true;
achouPrimeiraOcorrenciaConcluida = true;
}else{
indicadorPrimeiraOcorrenciaConcluida = false;
}
}else if(oSPavimentoRetornoHelper.getOrdemServicoPavimento().getMotivoRejeicao() == null){
situacaoRetorno = "1"; // PENDENTES
if(indicadorPrimeiraOcorrenciaPendente == false && achouPrimeiraOcorrenciaPendente == false){
indicadorPrimeiraOcorrenciaPendente = true;
achouPrimeiraOcorrenciaPendente = true;
}else{
indicadorPrimeiraOcorrenciaPendente = false;
}
}
// Metr. (m�) indicada retorno.
BigDecimal metragemRetorno = null;
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento() != null && oSPavimentoRetornoHelper.getOrdemServicoPavimento().getAreaPavimentoRuaRetorno()!= null) {
metragemRetorno = oSPavimentoRetornoHelper.getOrdemServicoPavimento().getAreaPavimentoRuaRetorno();
}
// Motivo Rejei��o
String motivoRejeicao = "";
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento().getMotivoRejeicao() != null){
situacaoRetorno = "4"; // REJEITADAS
motivoRejeicao = oSPavimentoRetornoHelper.getOrdemServicoPavimento().getMotivoRejeicao().getDescricao();
if(indicadorPrimeiraOcorrenciaRejeitada == false && achouPrimeiraOcorrenciaRejeitada == false){
indicadorPrimeiraOcorrenciaRejeitada = true;
achouPrimeiraOcorrenciaRejeitada = true;
}else{
indicadorPrimeiraOcorrenciaRejeitada = false;
}
}else{
if(indicadorPrimeiraOcorrenciaRejeitada == true && indicadorUltimaOcorrenciaRejeitada == false ){
indicadorUltimaOcorrenciaRejeitada = true;
}else{
indicadorUltimaOcorrenciaRejeitada = false;
}
}
String observacao = "";
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento().getObservacao() != null){
observacao = oSPavimentoRetornoHelper.getOrdemServicoPavimento().getObservacao();
}
// data da rejei��o
String dataRejeicao = "";
if (oSPavimentoRetornoHelper.getOrdemServicoPavimento()!= null && oSPavimentoRetornoHelper.getOrdemServicoPavimento().getDataRejeicao()!= null) {
dataRejeicao = Util.formatarData(oSPavimentoRetornoHelper.getOrdemServicoPavimento().getDataRejeicao());
}
//Verifica o tipo de relatorio a ser gerado � COMPLETO
if (escolhaRelatorio != null && escolhaRelatorio.equals("1")){
//Inicializa o construtor constitu�do dos campos
// necess�rios para a impress�o do relatorio
relatorioBean =
new RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean(
numeroOS,
matricula,
endereco,
dataEncerramento,
tipoPvtoRua,
metragem,
dataConclusao,
tipoPvtoRuaRetorno,
metragemRetorno,
oSPavimentoRetornoHelper.getCollOSTipoPavimentoHelper_Rua(),
oSPavimentoRetornoHelper.getCollOSTipoPavimentoHelper_RuaRet()
);
relatorioBean.setDataRejeicao(dataRejeicao);
relatorioBean.setSituacaoRetorno(situacaoRetorno);
relatorioBean.setIndicadorPrimeiraOcorrenciaConcluida(indicadorPrimeiraOcorrenciaConcluida);
relatorioBean.setIndicadorPrimeiraOcorrenciaPendente(indicadorPrimeiraOcorrenciaPendente);
relatorioBean.setIndicadorPrimeiraOcorrenciaRejeitada(indicadorPrimeiraOcorrenciaRejeitada);
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(indicadorUltimaOcorrenciaRejeitada);
relatorioBean.setMotivoRejeicao(motivoRejeicao);
relatorioBean.setObservacao(observacao);
//adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
//Verifica se o Tipo do relatorio a ser gerado � DIVERGENTE
} else if (escolhaRelatorio != null && escolhaRelatorio.equals("2") ) {
Integer validacaoAceite = calculaPercentualMetragemEValidaRetorno( metragem, metragemRetorno ) ;
//Validar se oSPavimentoRetorno � divergente, pois esse relatorio � divergente!
if ( ( tipoPvtoRuaRetorno != null && !tipoPvtoRuaRetorno.equals("") && !tipoPvtoRuaRetorno.equals(tipoPvtoRua) ) ||
( validacaoAceite != null && validacaoAceite.toString().equals("2") ) ) {
//Inicializa o construtor constitu�do dos campos
// necess�rios para a impress�o do relatorio
relatorioBean =
new RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean(
numeroOS,
matricula,
endereco,
dataEncerramento,
tipoPvtoRua,
metragem,
dataConclusao,
tipoPvtoRuaRetorno,
metragemRetorno,
oSPavimentoRetornoHelper.getCollOSTipoPavimentoHelper_Rua(),
oSPavimentoRetornoHelper.getCollOSTipoPavimentoHelper_RuaRet()
);
relatorioBean.setDataRejeicao(dataRejeicao);
relatorioBean.setSituacaoRetorno(situacaoRetorno);
relatorioBean.setIndicadorPrimeiraOcorrenciaConcluida(indicadorPrimeiraOcorrenciaConcluida);
relatorioBean.setIndicadorPrimeiraOcorrenciaPendente(indicadorPrimeiraOcorrenciaPendente);
relatorioBean.setIndicadorPrimeiraOcorrenciaRejeitada(indicadorPrimeiraOcorrenciaRejeitada);
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(indicadorUltimaOcorrenciaRejeitada);
relatorioBean.setMotivoRejeicao(motivoRejeicao);
relatorioBean.setObservacao(observacao);
//adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
}
// Caso o Tipo do relat�rio seja CONVERGENTE
} else {
Integer validacaoAceite = calculaPercentualMetragemEValidaRetorno( metragem, metragemRetorno ) ;
//Validar se oSPavimentoRetorno � divergente, pois esse relatorio � divergente!
if ( ( tipoPvtoRuaRetorno != null && !tipoPvtoRuaRetorno.equals("") && tipoPvtoRuaRetorno.equals(tipoPvtoRua) ) ||
( validacaoAceite != null && validacaoAceite.toString().equals("1"))) {
//Inicializa o construtor constitu�do dos campos
// necess�rios para a impress�o do relatorio
relatorioBean = new RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean(
numeroOS,
matricula,
endereco,
dataEncerramento,
tipoPvtoRua,
metragem,
dataConclusao,
tipoPvtoRuaRetorno,
metragemRetorno,
oSPavimentoRetornoHelper.getCollOSTipoPavimentoHelper_Rua(),
oSPavimentoRetornoHelper.getCollOSTipoPavimentoHelper_RuaRet()
);
relatorioBean.setDataRejeicao(dataRejeicao);
relatorioBean.setSituacaoRetorno(situacaoRetorno);
relatorioBean.setIndicadorPrimeiraOcorrenciaConcluida(indicadorPrimeiraOcorrenciaConcluida);
relatorioBean.setIndicadorPrimeiraOcorrenciaPendente(indicadorPrimeiraOcorrenciaPendente);
relatorioBean.setIndicadorPrimeiraOcorrenciaRejeitada(indicadorPrimeiraOcorrenciaRejeitada);
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(indicadorUltimaOcorrenciaRejeitada);
relatorioBean.setMotivoRejeicao(motivoRejeicao);
relatorioBean.setObservacao(observacao);
//adiciona o bean a cole��o
relatorioBeans.add(relatorioBean);
}
}
}
}
// Par�metros do relat�rio
Map parametros = new HashMap();
// adiciona os par�metros do relat�rio
// adiciona o laudo da an�lise
SistemaParametro sistemaParametro = fachada
.pesquisarParametrosDoSistema();
parametros.put("imagem", sistemaParametro.getImagemRelatorio());
UnidadeOrganizacional unidadeOrganizacional = null;
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID,oSPavimentoHelperParametros.getIdUnidadeResponsavel()));
filtroUnidadeOrganizacional.adicionarCaminhoParaCarregamentoEntidade("unidadeSuperior");
Collection colecaoUnidadeOrganizacional = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
Iterator it = colecaoUnidadeOrganizacional.iterator();
while(it.hasNext()){
unidadeOrganizacional = (UnidadeOrganizacional)it.next();
}
if(unidadeOrganizacional != null){
parametros.put("unidadeResponsavel", unidadeOrganizacional.getDescricao());
}
if(unidadeOrganizacional != null && unidadeOrganizacional.getUnidadeSuperior() != null){
FiltroUnidadeOrganizacional filtroUnidadeOrganizacionalSup = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacionalSup.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID,unidadeOrganizacional.getUnidadeSuperior().getId()));
filtroUnidadeOrganizacionalSup.adicionarCaminhoParaCarregamentoEntidade("gerenciaRegional");
UnidadeOrganizacional unidadeOrganizacionalSup = null;
Collection colecaoUnidadeOrganizacionalSup = fachada.pesquisar(filtroUnidadeOrganizacionalSup, UnidadeOrganizacional.class.getName());
Iterator itt = colecaoUnidadeOrganizacionalSup.iterator();
while(itt.hasNext()){
unidadeOrganizacionalSup = (UnidadeOrganizacional)itt.next();
}
if(unidadeOrganizacionalSup!= null && unidadeOrganizacionalSup.getGerenciaRegional()!= null){
parametros.put("gerenciaRegional", unidadeOrganizacionalSup.getGerenciaRegional().getId() + "-" + unidadeOrganizacionalSup.getGerenciaRegional().getNomeAbreviado());
}
}
String situacao = "";
if(oSPavimentoHelperParametros.getSituacaoRetorno() == 1){
situacao = "PENDENTE";
}else if(oSPavimentoHelperParametros.getSituacaoRetorno() == 2){
situacao = "CONCLU�DA";
}else if(oSPavimentoHelperParametros.getSituacaoRetorno() == 4){
situacao = "REJEITADAS";
// 3
}else{
situacao = "TODAS";
}
parametros.put("situacao", situacao);
parametros.put("escolhaRelatorio", escolhaRelatorio);
String periodoEncerramentoOs = "";
if(oSPavimentoHelperParametros.getPeriodoEncerramentoOsInicial()!= null && oSPavimentoHelperParametros.getPeriodoEncerramentoOsFinal()!= null){
periodoEncerramentoOs = oSPavimentoHelperParametros.getPeriodoEncerramentoOsInicial() + "-" +
oSPavimentoHelperParametros.getPeriodoEncerramentoOsFinal();
parametros.put("periodoEncerramentoOs", periodoEncerramentoOs) ;
}
String periodoRetornoServico = "";
if(oSPavimentoHelperParametros.getPeriodoRetornoServicoInicial()!=null && oSPavimentoHelperParametros.getPeriodoRetornoServicoFinal()!= null ){
periodoRetornoServico = oSPavimentoHelperParametros.getPeriodoRetornoServicoInicial() + "-" +
oSPavimentoHelperParametros.getPeriodoRetornoServicoFinal();
parametros.put("periodoRetornoServico", periodoRetornoServico);
}
String periodoRejeicaoServico = "";
if(oSPavimentoHelperParametros.getPeriodoRejeicaoInicial()!=null && oSPavimentoHelperParametros.getPeriodoRejeicaoFinal()!= null ){
periodoRejeicaoServico = oSPavimentoHelperParametros.getPeriodoRejeicaoInicial() + "-" +
oSPavimentoHelperParametros.getPeriodoRejeicaoFinal();
parametros.put("periodoRejeicaoServico", periodoRejeicaoServico);
}
// teste
ArrayList colecaoBeans = (ArrayList) relatorioBeans;
//colecaoBeans.ge
Iterator itBean = colecaoBeans.iterator();
int indice = 0;
int ultimoIndice = colecaoBeans.size();
while(itBean.hasNext()){
relatorioBean = (RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean)itBean.next();
if(relatorioBean.getIndicadorUltimaOcorrenciaRejeitada() == true){
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(false);
if(indice > 0){
relatorioBean = (RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean)colecaoBeans.get(indice-1);
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(true);
}
break;
}
indice = indice + 1;
}
if(indice > 0 && indice == ultimoIndice){
relatorioBean = (RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean)colecaoBeans.get(indice-1);
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(true);
}
// classifica a lista por situa��o de retorno
Collections.sort((List) colecaoBeans,
new Comparator() {
public int compare(Object a, Object b) {
String codigo1 = ((RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean) a)
.getSituacaoRetorno();
String codigo2 = ((RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean) b)
.getSituacaoRetorno();
if (codigo1 == null || codigo1.equals("")) {
return -1;
} else {
return codigo1.compareTo(codigo2);
}
}
});
// classifica a lista por situa��o de retorno
Collections.sort((List) colecaoBeans,
new Comparator() {
public int compare(Object a, Object b) {
String codigo1 = ((RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean) a)
.getSituacaoRetorno();
String codigo2 = ((RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean) b)
.getSituacaoRetorno();
if (codigo1 == null || codigo1.equals("")) {
return -1;
} else {
return codigo1.compareTo(codigo2);
}
}
});
while(itBean.hasNext()){
relatorioBean = (RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean)itBean.next();
if(relatorioBean.getIndicadorUltimaOcorrenciaRejeitada() == true){
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(false);
if(indice > 0){
relatorioBean = (RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean)colecaoBeans.get(indice-1);
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(true);
}
break;
}
indice = indice + 1;
}
if(indice > 0 && indice == ultimoIndice){
relatorioBean = (RelatorioRelacaoServicosAcompanhamentoRepavimentacaoBean)colecaoBeans.get(indice-1);
relatorioBean.setIndicadorUltimaOcorrenciaRejeitada(true);
}
// cria uma inst�ncia do dataSource do relat�rio
if ( relatorioBeans.size() > 0) {
RelatorioDataSource ds = new RelatorioDataSource((List) relatorioBeans);
retorno = this.gerarRelatorio(
ConstantesRelatorios.RELATORIO_RELACAO_SERVICO_ACOMPANHAMENTO_REPAVIMENTACAO_NOVO, parametros, ds,
tipoFormatoRelatorio);
} else {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
// ------------------------------------
// Grava o relat�rio no sistema
try {
persistirRelatorioConcluido(retorno, Relatorio.RELATORIO_RELACAO_SERVICO_ACOMPANHAMENTO_REPAVIMENTACAO,
idFuncionalidadeIniciada);
} catch (ControladorException e) {
e.printStackTrace();
throw new TarefaException("Erro ao gravar relat�rio no sistema", e);
}
// ------------------------------------
// retorna o relat�rio gerado
return retorno;
}
@Override
public int calcularTotalRegistrosRelatorio() {
int retorno = 1;
OSPavimentoHelper osPavimentoHelper = (OSPavimentoHelper) getParametro("parametros");
retorno = Fachada.getInstancia().pesquisarOrdemProcessoRepavimentacaoCount(osPavimentoHelper);
return retorno;
}
public void agendarTarefaBatch() {
AgendadorTarefas.agendarTarefa("RelatorioRelacaoServicosAcompanhamentoRepavimentacao", this);
}
/**
* [SB0003] - Imprimir rela��o das ordens
* 1.331
* Metodo responsavel por verificar se a metragem informada no retorno esta compreendida
* entre o percentual de varia��o permitido.
*
* @author Arthur Carvalho
* @date 26/07/2010
* @param metragem
* @param metragemRetono
* @return
*/
public Integer calculaPercentualMetragemEValidaRetorno(BigDecimal metragem, BigDecimal metragemRetono ) {
Integer indicadorAceiteComCalculoPercentualConvergencia = null;
BigDecimal percentualConvergenciaRepavimentacao = new BigDecimal(0);
SistemaParametro sistemaParametro = Fachada.getInstancia().pesquisarParametrosDoSistema();
percentualConvergenciaRepavimentacao = sistemaParametro.getPercentualConvergenciaRepavimentacao();
//1.3.3. Total Ordens Aceitas
if ( percentualConvergenciaRepavimentacao != null ) {
if ( metragem.add(metragem.multiply(percentualConvergenciaRepavimentacao).divide(
new BigDecimal(100))).compareTo(metragemRetono) >= 0 &&
metragem.subtract(metragem.multiply(
percentualConvergenciaRepavimentacao).divide(
new BigDecimal(100))).compareTo(metragemRetono) <= 0 ) {
indicadorAceiteComCalculoPercentualConvergencia = 1;
} else {
indicadorAceiteComCalculoPercentualConvergencia = 2;
}
}
return indicadorAceiteComCalculoPercentualConvergencia;
}
}