package gcom.gui.micromedicao; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.registroatendimento.FiltroRegistroAtendimento; import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipoEspecificacao; import gcom.atendimentopublico.registroatendimento.MeioSolicitacao; import gcom.atendimentopublico.registroatendimento.RABuilder; import gcom.atendimentopublico.registroatendimento.RADadosGeraisHelper; import gcom.atendimentopublico.registroatendimento.RALocalOcorrenciaHelper; import gcom.atendimentopublico.registroatendimento.RASolicitanteHelper; import gcom.atendimentopublico.registroatendimento.RegistroAtendimento; import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao; import gcom.atendimentopublico.registroatendimento.bean.DefinirDataPrevistaUnidadeDestinoEspecificacaoHelper; import gcom.atendimentopublico.registroatendimento.bean.ObterDadosIdentificacaoLocalOcorrenciaHelper; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.gui.GcomAction; import gcom.operacional.DivisaoEsgoto; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroNulo; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Iterator; 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; /** * Action utilizado para inserir uma resolu��o de diretoria no banco * * [UC0217] Inserir Resolu��o de Diretoria Permite inserir uma * * @author Rafael Corr�a * @since 08/06/2008 */ public class GerarRAImoveisAnormalidadeAction extends GcomAction { /** * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("telaSucesso"); Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); GerarRAImoveisAnormalidadeActionForm gerarRAImoveisAnormalidadeActionForm = (GerarRAImoveisAnormalidadeActionForm) actionForm; // Recupera os im�veis selecionados pelo usu�rio Collection<Imovel> colecaoImoveisGerarOS = (Collection) sessao.getAttribute("colecaoImoveisGerarOS"); HashMap<Integer, String> colecaoObservacaoOS = (HashMap<Integer, String>) sessao.getAttribute("colecaoObservacaoOS"); int qtde = 0; if (colecaoImoveisGerarOS != null && !colecaoImoveisGerarOS.isEmpty()) { Integer idMeioSolicitacao = MeioSolicitacao.INTERNO; FiltroSolicitacaoTipoEspecificacao filtroSolicitacaoTipoEspecificacao = new FiltroSolicitacaoTipoEspecificacao(); filtroSolicitacaoTipoEspecificacao.adicionarCaminhoParaCarregamentoEntidade(FiltroSolicitacaoTipoEspecificacao.SOLICITACAO_TIPO); filtroSolicitacaoTipoEspecificacao.adicionarCaminhoParaCarregamentoEntidade(FiltroSolicitacaoTipoEspecificacao.SERVICO_TIPO); filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.ID, gerarRAImoveisAnormalidadeActionForm.getSolicitacaoTipoEspecificacao())); Collection colecaoSolicitacaoTipoEspecificacao = fachada.pesquisar(filtroSolicitacaoTipoEspecificacao, SolicitacaoTipoEspecificacao.class.getName()); SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao = (SolicitacaoTipoEspecificacao) Util.retonarObjetoDeColecao(colecaoSolicitacaoTipoEspecificacao); Usuario usuarioLogado = this.getUsuarioLogado(httpServletRequest); UnidadeOrganizacional unidadeAtendimento = fachada.pesquisarUnidadeUsuario(usuarioLogado.getId()); DefinirDataPrevistaUnidadeDestinoEspecificacaoHelper definirDataPrevistaUnidadeDestinoEspecificacaoHelper = fachada .definirDataPrevistaUnidadeDestinoEspecificacao(new Date(), solicitacaoTipoEspecificacao.getId()); for (Imovel imovel : colecaoImoveisGerarOS) { // Verifica se j� existe uma RA com esse tipo de especifica��o para este im�vel, caso exista descarta o im�vel FiltroRegistroAtendimento filtroRA = new FiltroRegistroAtendimento(); filtroRA.adicionarParametro(new ParametroSimples(FiltroRegistroAtendimento.IMOVEL_ID, imovel.getId())); filtroRA.adicionarParametro(new ParametroSimples(FiltroRegistroAtendimento.ID_SOLICITACAO_TIPO_ESPECIFICACAO, solicitacaoTipoEspecificacao.getId())); filtroRA.adicionarParametro(new ParametroNulo(FiltroRegistroAtendimento.ID_ATENDIMENTO_MOTIVO_ENCERRAMENTO)); Collection colecaoRA = fachada.pesquisar(filtroRA, RegistroAtendimento.class.getName()); String observacao = colecaoObservacaoOS.get(imovel.getId()); if (colecaoRA == null || colecaoRA.isEmpty()) { Date dataAtual = new Date(); String dataAtendimento = Util.formatarData(dataAtual); String horaAtendimento = Util.formatarHoraSemData(dataAtual); Collection colecaoEnderecos = new ArrayList(); Imovel imovelEndereco = fachada.pesquisarImovelParaEndereco(imovel.getId()); colecaoEnderecos.add(imovelEndereco); qtde++; //Obter a unidade Destino ObterDadosIdentificacaoLocalOcorrenciaHelper habilitaGeograficoDivisaoEsgoto = fachada .habilitarGeograficoDivisaoEsgoto(new Integer(gerarRAImoveisAnormalidadeActionForm.getSolicitacaoTipo())); // [SB0006] - Obt�m Divis�o de Esgoto DivisaoEsgoto divisaoEsgoto = fachada.obterDivisaoEsgoto( imovel.getQuadra().getId(), habilitaGeograficoDivisaoEsgoto.isSolicitacaoTipoRelativoAreaEsgoto()); UnidadeOrganizacional unidadeDestino = null; if (divisaoEsgoto != null) { unidadeDestino = fachada.definirUnidadeDestinoDivisaoEsgoto( new Integer(gerarRAImoveisAnormalidadeActionForm.getSolicitacaoTipoEspecificacao()), divisaoEsgoto.getId(), habilitaGeograficoDivisaoEsgoto.isSolicitacaoTipoRelativoAreaEsgoto(), imovel.getLocalidade().getId(), new Integer(gerarRAImoveisAnormalidadeActionForm.getSolicitacaoTipo())); } if ( unidadeDestino == null || unidadeDestino.equals("") ) { unidadeDestino = fachada.definirUnidadeDestinoLocalidade( new Integer(gerarRAImoveisAnormalidadeActionForm.getSolicitacaoTipoEspecificacao()), imovel.getLocalidade().getId(), new Integer(gerarRAImoveisAnormalidadeActionForm.getSolicitacaoTipo()), habilitaGeograficoDivisaoEsgoto.isSolicitacaoTipoRelativoAreaEsgoto()); } RADadosGeraisHelper raDadosGerais = RABuilder.buildRADadosGerais(new Short("1"), idMeioSolicitacao, solicitacaoTipoEspecificacao.getId(), definirDataPrevistaUnidadeDestinoEspecificacaoHelper.getDataPrevista(), solicitacaoTipoEspecificacao.getSolicitacaoTipo().getId(), unidadeAtendimento.getId(), usuarioLogado.getId(), observacao); RASolicitanteHelper raSolicitante = RABuilder.buildRASolicitante(false, unidadeAtendimento); raSolicitante.setIdServicoTipo(solicitacaoTipoEspecificacao.getId()); if(unidadeDestino == null){ RALocalOcorrenciaHelper raLocalOcorrencia = RABuilder.buildRALocalOcorrencia(imovel, colecaoEnderecos, ConstantesSistema.NAO, null); fachada.inserirRegistroAtendimento(raDadosGerais, raLocalOcorrencia, raSolicitante); }else{ RALocalOcorrenciaHelper raLocalOcorrencia = RABuilder.buildRALocalOcorrencia(imovel, colecaoEnderecos, ConstantesSistema.NAO, unidadeDestino.getId()); fachada.inserirRegistroAtendimento(raDadosGerais, raLocalOcorrencia, raSolicitante); } }else{ fachada.verificarExistenciaRAImovelMesmaEspecificacao(imovel.getId(), solicitacaoTipoEspecificacao.getId()); } if(observacao != null){ Iterator<RegistroAtendimento> iterator = colecaoRA.iterator(); StringBuilder sb = new StringBuilder(); RegistroAtendimento ra = null; while (iterator.hasNext()){ ra = iterator.next(); OrdemServico os = fachada.pesquisarOrdemServicoRegistroAtendimento(ra); /*if(os.getObservacao() != null){ sb.append(os.getObservacao()); sb.append("; "); }*/ sb.append(observacao); os.setObservacao(sb.toString()); fachada.atualizar(os); qtde++; } } } } // Monta a p�gina de sucesso de acordo com o padr�o do sistema. montarPaginaSucessoComVoltarJavascript(httpServletRequest, qtde + " Registro(s) Atendimento(s) inclu�do(s) com sucesso.", "Efetuar Outra An�lise de Exce��es e Consumo", "exibirFiltrarExcecoesLeiturasConsumosAction.do?nomeCaminhoMapping=efetuarAnaliseExcecoesLeiturasConsumos&menu=sim", "exibirFiltrarOrdemServicoAction.do?menu=sim", "Manter Ordem de Servi�o", "Voltar", "javascript:history.back();"); return retorno; } }