package gcom.gui.micromedicao.leitura;
import gcom.atendimentopublico.ligacaoagua.FiltroLigacaoAgua;
import gcom.atendimentopublico.ligacaoagua.LigacaoAgua;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.micromedicao.leitura.FiltroLeituraAnormalidade;
import gcom.micromedicao.leitura.FiltroLeituraFiscalizacao;
import gcom.micromedicao.leitura.LeituraAnormalidade;
import gcom.micromedicao.leitura.LeituraFiscalizacao;
import gcom.micromedicao.medicao.FiltroMedicaoHistorico;
import gcom.micromedicao.medicao.FiltroMedicaoTipo;
import gcom.micromedicao.medicao.MedicaoHistorico;
import gcom.micromedicao.medicao.MedicaoTipo;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author R�mulo Aur�lio
*
*/
public class ExibirInformarLeituraFiscalizacaoAction extends GcomAction {
/**
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("informarLeituraFiscalizacao");
HttpSession sessao = httpServletRequest.getSession(false);
InformarLeituraFiscalizacaoActionForm form = (InformarLeituraFiscalizacaoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
FiltroMedicaoHistorico filtroMedicaoHistorico = new FiltroMedicaoHistorico();
String matricula;
String idMedicaoTipo = null;
if (httpServletRequest.getAttribute("idMedicaoTipo") != null) {
idMedicaoTipo = (String) httpServletRequest
.getAttribute("idMedicaoTipo");
} else {
idMedicaoTipo = form.getMedicaoTipo();
}
filtroMedicaoHistorico.adicionarParametro(new ParametroSimples(
FiltroMedicaoHistorico.MEDICAO_TIPO_ID, idMedicaoTipo));
if (httpServletRequest.getAttribute("matricula") != null) {
matricula = (String) httpServletRequest.getAttribute("matricula");
} else {
matricula = form.getMatricula();
}
sessao.setAttribute("matricula", matricula);
Imovel imovel = this.pesquisarImovel(httpServletRequest, form,
matricula, filtroMedicaoHistorico, sessao);
form.setInscricaoImovel("" + imovel.getInscricaoFormatada());
if((new Integer (idMedicaoTipo)).intValue() == MedicaoTipo.LIGACAO_AGUA.intValue()){
filtroMedicaoHistorico.adicionarParametro(new ParametroSimples(
FiltroMedicaoHistorico.LIGACAO_AGUA_ID, imovel.getId()));
} else{
filtroMedicaoHistorico.adicionarParametro(new ParametroSimples(
FiltroMedicaoHistorico.IMOVEL_ID, imovel.getId()));
}
String mesAnoReferencia;
if (httpServletRequest.getAttribute("mesAnoReferencia") != null) {
mesAnoReferencia = (String) httpServletRequest
.getAttribute("mesAnoReferencia");
} else {
mesAnoReferencia = form.getMesAnoReferencia();
}
String mes;
String ano;
String anoMesReferencia;
/**
* [FS0001]- Validar m�s e ano de referencia do faturamento
*/
boolean mesAnoValido = Util.validarMesAno(mesAnoReferencia);
/**
* Caso 1
*/
if (mesAnoValido == false) {
throw new ActionServletException(
"atencao.mes_ano_referencia_faturamento_invalido", null,
mesAnoReferencia);
}
mes = mesAnoReferencia.substring(0, 2);
ano = mesAnoReferencia.substring(3, 7);
anoMesReferencia = ano + mes;
//Integer anoMesReferenciaInteiro
SistemaParametro sistemaParametro = fachada
.pesquisarParametrosDoSistema();
/**
* Caso 2
*/
if ((new Integer(anoMesReferencia)).intValue() > sistemaParametro
.getAnoMesFaturamento().intValue()) {
throw new ActionServletException(
"atencao.mes_ano_referencia_faturamento_posterior_ano_mes_faturamento_sistema_parametro",
null, mesAnoReferencia);
}
filtroMedicaoHistorico.adicionarParametro(new ParametroSimples(
FiltroMedicaoHistorico.ANO_MES_REFERENCIA_FATURAMENTO,
anoMesReferencia));
filtroMedicaoHistorico
.adicionarCaminhoParaCarregamentoEntidade("leituraFiscalizacao");
filtroMedicaoHistorico
.adicionarCaminhoParaCarregamentoEntidade("funcionario");
filtroMedicaoHistorico
.adicionarCaminhoParaCarregamentoEntidade("leituraAnormalidadeInformada");
filtroMedicaoHistorico
.adicionarCaminhoParaCarregamentoEntidade("medicaoTipo");
filtroMedicaoHistorico
.adicionarCaminhoParaCarregamentoEntidade("leituraAnormalidadeFaturamento");
this.carregarCombos(httpServletRequest, form);
// Obtendo dados do imovel
Collection colecaoMedicaoHistorico = fachada.pesquisar(
filtroMedicaoHistorico, MedicaoHistorico.class.getName());
if (colecaoMedicaoHistorico != null
&& !colecaoMedicaoHistorico.isEmpty()) {
MedicaoHistorico medicaoHistorico = (MedicaoHistorico) colecaoMedicaoHistorico
.iterator().next();
sessao.setAttribute("medicaoHistorico", medicaoHistorico);
/**
* [FS0012] Verificar existencia de hidr�metro
* Caso 1
*/
form.setMedicaoTipo("" + medicaoHistorico.getMedicaoTipo().getId().toString());
if (medicaoHistorico.getMedicaoTipo().getId().intValue() == MedicaoTipo.LIGACAO_AGUA
.intValue()) {
FiltroLigacaoAgua filtroLigacaoAgua = new FiltroLigacaoAgua();
filtroLigacaoAgua.adicionarParametro(new ParametroSimples(
FiltroLigacaoAgua.ID, imovel.getId()));
/*filtroLigacaoAgua.adicionarCaminhoParaCarregamentoEntidade(
FiltroLigacaoAgua.HIDROMETRO_INSTALACAO_HISTORICO);*/
filtroLigacaoAgua.adicionarCaminhoParaCarregamentoEntidade("hidrometroInstalacaoHistorico.hidrometro");
Collection colecaoLigacaoAgua = fachada.pesquisar(
filtroLigacaoAgua, LigacaoAgua.class.getName());
LigacaoAgua ligacaoAgua = (LigacaoAgua) colecaoLigacaoAgua
.iterator().next();
if (ligacaoAgua.getHidrometroInstalacaoHistorico() == null) {
throw new ActionServletException(
"atencao.fiscalizao_ligacao_agua_sem_hidrometro");
}else{
sessao.setAttribute("numeroDigitosLeitura",
ligacaoAgua.getHidrometroInstalacaoHistorico().getHidrometro().getNumeroDigitosLeitura());
}
if(medicaoHistorico.getLeituraAnormalidadeInformada() != null){
form.setAnormalidadeNormal(""
+ medicaoHistorico.getLeituraAnormalidadeInformada()
.getDescricao());
} else{
form.setAnormalidadeNormal("");
}
form.setDataLeituraNormal(""
+ Util.formatarData(medicaoHistorico
.getDataLeituraAtualInformada()));
if(medicaoHistorico.getLeituraAtualInformada() != null){
form.setLeituraNormal(""
+ medicaoHistorico.getLeituraAtualInformada());
}else{
form.setLeituraNormal("");
}
if(medicaoHistorico.getFuncionario() != null){
form.setMatriculaLeituristaNormal(""
+ medicaoHistorico.getFuncionario().getId());
} else{
form.setMatriculaLeituristaNormal("");
}
} else {
/**
* [FS0012] Verificar existencia de hidr�metro
* Caso 2
*/
if ((medicaoHistorico.getMedicaoTipo().getId().intValue() == MedicaoTipo.POCO
.intValue())
&& (imovel.getHidrometroInstalacaoHistorico() == null)) {
throw new ActionServletException(
"atencao.fiscalizao_poco_sem_hidrometro");
}else{
sessao.setAttribute("numeroDigitosLeitura",
imovel.getHidrometroInstalacaoHistorico().getHidrometro().getNumeroDigitosLeitura());
}
if (medicaoHistorico.getLeituraAnormalidadeInformada() != null)
form.setAnormalidadeNormal(""
+ medicaoHistorico
.getLeituraAnormalidadeInformada()
.getDescricao());
else {
form.setAnormalidadeNormal("");
}
form.setDataLeituraNormal(""
+ Util.formatarData(medicaoHistorico
.getDataLeituraAtualInformada()));
if (medicaoHistorico.getNumeroConsumoInformado() != null)
form.setLeituraNormal(""
+ medicaoHistorico.getNumeroConsumoInformado());
else
form.setLeituraNormal("");
if (medicaoHistorico.getFuncionario() != null) {
if (medicaoHistorico.getFuncionario().getId().intValue() != 0)
form.setMatriculaLeituristaNormal(""
+ medicaoHistorico.getFuncionario().getId());
else
form.setMatriculaLeituristaNormal("");
}
}
FiltroLeituraFiscalizacao filtroLeituraFiscalizacao = new FiltroLeituraFiscalizacao();
filtroLeituraFiscalizacao.adicionarParametro(new ParametroSimples(
FiltroLeituraFiscalizacao.ID, medicaoHistorico.getId()
.toString()));
Collection colecaoLeituraFiscalizacao = fachada.pesquisar(
filtroLeituraFiscalizacao, LeituraFiscalizacao.class
.getName());
if (colecaoLeituraFiscalizacao != null
&& !colecaoLeituraFiscalizacao.isEmpty()) {
LeituraFiscalizacao leituraFiscalizacao = (LeituraFiscalizacao) colecaoLeituraFiscalizacao
.iterator().next();
form.setMatriculaLeituristaFiscalizacao(leituraFiscalizacao
.getFuncionario().getId().toString());
form.setDataLeituraFiscalizacao(Util
.formatarData(leituraFiscalizacao
.getdataLeituraEmpresa()));
form.setAnormalidadeFiscalizacao(leituraFiscalizacao
.getLeituraAnormalidade().getId().toString());
form.setLeituraFiscalizacao(""
+ leituraFiscalizacao.getNumeroLeituraEmpresa());
} else {
form.setMatriculaLeituristaFiscalizacao("");
form.setDataLeituraFiscalizacao("");
form.setAnormalidadeFiscalizacao("");
form.setLeituraFiscalizacao("");
}
} else {
/**
* [FS0011]-Verificar exist�ncia do hist�rico de medi��o
*/
throw new ActionServletException(
"atencao.imovel_sem_dados_faturamento", null,
mesAnoReferencia);
}
return retorno;
}
/*
* Carregamento dos combos
*/
public void carregarCombos(HttpServletRequest httpServletRequest,
InformarLeituraFiscalizacaoActionForm form) {
//Tipo de Medicao
Collection colecaoMedicaoTipo = new ArrayList();
FiltroMedicaoTipo filtroMedicaoTipo = new FiltroMedicaoTipo();
filtroMedicaoTipo.setCampoOrderBy(FiltroMedicaoTipo.DESCRICAO);
// Verifica se os dados foram informados da tabela existem e joga numa
// colecao
colecaoMedicaoTipo = Fachada.getInstancia().pesquisar(
filtroMedicaoTipo, MedicaoTipo.class.getName());
if (colecaoMedicaoTipo == null || colecaoMedicaoTipo.isEmpty()) {
throw new ActionServletException(
"atencao.entidade_sem_dados_para_selecao", null,
"MedicaoTipo");
}
httpServletRequest.setAttribute("colecaoMedicaoTipo",
colecaoMedicaoTipo);
//Anormalidade
Collection<LeituraAnormalidade> colecaoLeituraAnormalidade = new ArrayList();
FiltroLeituraAnormalidade filtroLeituraAnormalidade = new FiltroLeituraAnormalidade();
filtroLeituraAnormalidade
.setCampoOrderBy(FiltroLeituraAnormalidade.DESCRICAO);
// Verifica se os dados foram informados da tabela existem e joga numa
// colecao
colecaoLeituraAnormalidade = Fachada.getInstancia().pesquisar(
filtroLeituraAnormalidade, LeituraAnormalidade.class.getName());
if (colecaoLeituraAnormalidade == null
|| colecaoLeituraAnormalidade.isEmpty()) {
throw new ActionServletException(
"atencao.entidade_sem_dados_para_selecao", null,
"LeituraAnormalidade");
}
httpServletRequest.setAttribute("colecaoLeituraAnormalidade",
colecaoLeituraAnormalidade);
}
public Imovel pesquisarImovel(HttpServletRequest httpServletRequest,
InformarLeituraFiscalizacaoActionForm form, String matricula,
FiltroMedicaoHistorico filtroMedicaoHistorico, HttpSession sessao) {
Imovel imovel = null;
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID,
matricula));
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.QUADRA);
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.SETOR_COMERCIAL);
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOCALIDADE);
filtroImovel
.adicionarCaminhoParaCarregamentoEntidade("hidrometroInstalacaoHistorico.hidrometro");
Collection colecaoImovel = Fachada.getInstancia().pesquisar(
filtroImovel, Imovel.class.getName());
if (colecaoImovel != null && !colecaoImovel.isEmpty()) {
imovel = (Imovel) colecaoImovel.iterator().next();
} else {
throw new ActionServletException("matriculaNaoEncontrado");
}
return imovel;
}
public void pesquisarDadosLeituraFiscalizacao(
InformarLeituraFiscalizacaoActionForm form,
MedicaoHistorico medicaoHistorico) {
FiltroLeituraFiscalizacao filtroLeituraFiscalizacao = new FiltroLeituraFiscalizacao();
filtroLeituraFiscalizacao.adicionarParametro(new ParametroSimples(
FiltroLeituraFiscalizacao.MEDICAO_HISTORICO_ID,
medicaoHistorico.getId()));
filtroLeituraFiscalizacao
.adicionarCaminhoParaCarregamentoEntidade(FiltroLeituraFiscalizacao.FUNCIONARIO);
filtroLeituraFiscalizacao
.adicionarCaminhoParaCarregamentoEntidade(FiltroLeituraFiscalizacao.LEITURA_ANORMALIDADE);
Collection colecaoLeituraFiscalizacao = Fachada.getInstancia()
.pesquisar(filtroLeituraFiscalizacao,
LeituraFiscalizacao.class.getName());
if (colecaoLeituraFiscalizacao != null
&& !colecaoLeituraFiscalizacao.isEmpty()) {
LeituraFiscalizacao leituraFiscalizacao = (LeituraFiscalizacao) colecaoLeituraFiscalizacao
.iterator().next();
form.setAnormalidadeFiscalizacao(""
+ leituraFiscalizacao.getLeituraAnormalidade()
.getDescricao());
form.setDataLeituraFiscalizacao(""
+ Util.formatarData(leituraFiscalizacao
.getdataLeituraEmpresa()));
form.setLeituraFiscalizacao(""
+ leituraFiscalizacao.getNumeroLeituraEmpresa());
form.setMatriculaLeituristaFiscalizacao(""
+ leituraFiscalizacao.getFuncionario().getId());
} else {
form.setAnormalidadeFiscalizacao("");
form.setDataLeituraFiscalizacao("");
form.setLeituraFiscalizacao("");
form.setMatriculaLeituristaFiscalizacao("");
}
}
}