package gcom.gui.atendimentopublico.ordemservico; import gcom.atendimentopublico.ordemservico.ComandoOrdemSeletiva; import gcom.atendimentopublico.ordemservico.FiltroServicoTipo; import gcom.atendimentopublico.ordemservico.OrdemServico; import gcom.atendimentopublico.ordemservico.ServicoTipo; import gcom.cadastro.empresa.Empresa; import gcom.cadastro.empresa.FiltroEmpresa; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.unidade.FiltroUnidadeOrganizacional; import gcom.cadastro.unidade.UnidadeOrganizacional; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.Funcionalidade; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; 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; /** * [UC1193] Consultar Comandos de OS Seletiva de Inspe��o de Anormalidade * * Action respons�vel por validar os dados informados na p�gina de Gerar OS do processo * de movimentar ordem de servi�o * * @author Vivianne Sousa * @since 12/07/2011 */ public class MovimentarOSSeletivaInspecaoAnormalidadeGerarOSAction 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 para a p�gina de definir acesso do grupo ActionForward retorno = actionMapping.findForward("movimentarOSSeletivaInspecaoAnormalidadeAction"); //Cria uma inst�ncia da sess�o HttpSession sessao = httpServletRequest.getSession(false); MovimentarOSSeletivaInspecaoAnormalidadeActionForm form = (MovimentarOSSeletivaInspecaoAnormalidadeActionForm) actionForm; Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); if ((httpServletRequest.getAttribute("confirmacao") != null && (httpServletRequest.getAttribute("confirmacao")).toString().equalsIgnoreCase("true")) || (httpServletRequest.getAttribute("confirmado") != null && (httpServletRequest.getAttribute("confirmado")).toString().equalsIgnoreCase("ok"))) { Iterator iterator = form.getColecaoImovel().iterator(); while(iterator.hasNext()) { Integer idImovel = (Integer) iterator.next(); this.geraOrdemServico(new Integer(form.getIdTipoServico()), new Integer(form.getIdEmpresa()), idImovel, usuarioLogado, new Integer(form.getIdComando())); } httpServletRequest.setAttribute("tipoMovimentacao", "Gerada(s)"); httpServletRequest.removeAttribute("confirmacao"); httpServletRequest.setAttribute("concluir", "true"); } else if (httpServletRequest.getParameter("concluir") != null && (httpServletRequest.getParameter("concluir")).toString().equalsIgnoreCase("true")) { String mensagem = validarForm(form); if (mensagem != null && !mensagem.equals("")) { throw new ActionServletException(mensagem); } httpServletRequest.setAttribute("destino", "2"); sessao.setAttribute("destino", "2"); // Monta a p�gina de confirma��o do wizard para perguntar se // o usu�rio quer confirmar o encerramento do comando // mesmo sem ter sido enviado para a empresa contratada return montarPaginaConfirmacaoWizard( "atencao.serao.geradas.ordens.servico", httpServletRequest, actionMapping, ((Integer) form.getColecaoImovel().size()).toString()); } //Retorna o mapemaneto na vari�vel "retorno" return retorno; } public String validarForm(MovimentarOSSeletivaInspecaoAnormalidadeActionForm form) { if (form.getIdTipoServico() == null || form.getIdTipoServico().equals("") || form.getIdTipoServico().equals("-1")) { return "atencao.informe.servico_tipo"; } List<Integer> numerosImoveisPesquisar = new ArrayList(); for (int i = 0; i < form.getMatriculasImoveis().length; i++) { if (form.getMatriculasImoveis()[i] != null && !form.getMatriculasImoveis()[i].equals("")) { numerosImoveisPesquisar.add(new Integer(form.getMatriculasImoveis()[i])); } } if (numerosImoveisPesquisar == null || numerosImoveisPesquisar.isEmpty()) { return "atencao.filtro.nenhum_imovel_informado"; }else{ verificaSeImovelFazParteComando(numerosImoveisPesquisar,form.getIdComando()); Collection colecaoImovel = new ArrayList(numerosImoveisPesquisar); form.setColecaoImovel(colecaoImovel); } return null; } private Integer geraOrdemServico(Integer idTipoServico, Integer idEmpresa, Integer idImovel, Usuario usuarioLogado, Integer idComando) { OrdemServico ordemServico = null; ServicoTipo servicoTipo = null; Empresa empresa = null; Integer retorno = null; Fachada fachada = Fachada.getInstancia(); // [UC0430] - Gerar Ordem de Servico servicoTipo = new ServicoTipo(); FiltroServicoTipo filtroServicoTipo = new FiltroServicoTipo(); filtroServicoTipo.adicionarParametro(new ParametroSimples( FiltroServicoTipo.ID,idTipoServico )); filtroServicoTipo.adicionarCaminhoParaCarregamentoEntidade( FiltroServicoTipo.SERVICO_TIPO_REFERENCIA); Collection colecaoServTipo = Fachada.getInstancia().pesquisar(filtroServicoTipo, ServicoTipo.class.getName()); servicoTipo = (ServicoTipo) Util.retonarObjetoDeColecao(colecaoServTipo); ordemServico = new OrdemServico(); ordemServico.setServicoTipo(servicoTipo); Imovel imovel = new Imovel(); imovel.setId(idImovel); ordemServico.setImovel(imovel); FiltroEmpresa filtroEmpresa = new FiltroEmpresa(); filtroEmpresa.adicionarParametro(new ParametroSimples(FiltroEmpresa.ID, idEmpresa)); Collection<Empresa> colecaoEmpresa = fachada.pesquisar(filtroEmpresa, Empresa.class.getName()); if (colecaoEmpresa == null || colecaoEmpresa.isEmpty()) { throw new ActionServletException("atencao.empresa_nao_encontra", null, idEmpresa.toString()); } empresa = (Empresa) Util.retonarObjetoDeColecao(colecaoEmpresa); UnidadeOrganizacional unidadeOrganizacional = new UnidadeOrganizacional(); // Recupera a Unidade Organizacional da Empresa unidadeOrganizacional.setEmpresa(empresa); FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional(); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.EMPRESA, empresa)); filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO)); Collection<UnidadeOrganizacional> colecaoUnidadeOrganizacional = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName()); if (colecaoUnidadeOrganizacional != null && !colecaoUnidadeOrganizacional.isEmpty()) { //[FS0011]-Verificar exist�ncia de mais de uma unidade correspondente � empresa if(colecaoUnidadeOrganizacional.size() > 1){ throw new ActionServletException("atencao.unidade_organizacional_dupla_correspondente_empresa"); } unidadeOrganizacional = colecaoUnidadeOrganizacional.iterator().next(); }else { throw new ActionServletException("atencao.unidade_organizacional_nao_encontrada_empresa", null, empresa.getDescricao()); } ordemServico.setUnidadeAtual(unidadeOrganizacional); ComandoOrdemSeletiva comandoOrdemSeletiva = new ComandoOrdemSeletiva(); comandoOrdemSeletiva.setId(idComando); ordemServico.setComandoOrdemSeletiva(comandoOrdemSeletiva); retorno = fachada.gerarOrdemServico(ordemServico, usuarioLogado, Funcionalidade.MOVIMENTAR_OS_SELETIVA_INSPECAO_ANORMALIDADE); return retorno; } //[FS0003] � Verificar se im�vel faz parte do comando public String verificaSeImovelFazParteComando(List<Integer> numerosImoveisPesquisar,String idComandoOrdemSeletiva) { String retorno = null; String imovelNaoFazParteComando = Fachada.getInstancia().retornaImovelNaoFazParteComando( new Integer (idComandoOrdemSeletiva),numerosImoveisPesquisar); if(!imovelNaoFazParteComando.equalsIgnoreCase("")){ throw new ActionServletException("atencao.imoveis.nao_contido_comando",null,imovelNaoFazParteComando); } return retorno; } }