Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Renato Muniz

Java Filtros de cadastramento para fornecedores. Busca cadastro associado à ID logada

Recommended Posts

Olá pessoal bom dia, olha só... 

to terminando um sistema, daí tem o seguinte, cada usuário logado terá N empresas "oficina mecânica" cadastrada em seu nome, possibilitando ele selecionar em qual deseja incluir um cadastro, 
dessa forma , nas pesquisas por exemplo de clientes  "MARIA" o sistema terá que filtrar todas as "MARIAS" que esteja cadastrada com 1 das empresas deste usuário logado, exemplo. 

Pensei em fazer da seguinte forma... 
o usuario 1 tem no nome dele a empresa , 1,2,3 (IDs) em uma subtabela 

Citação

 

id_usuario              |     id_empresa              | id_cadastro 
      1 - RENATO               1 - EMPRESA1             11     - MARIA DOS SANTOS 
      1 - RENATO               2 - EMPRESA1             11     - MARIA DOS SANTOS 
      1 - RENATO               3 - EMPRESA1             11     - MARIA DOS SANTOS 
      1 - RENATO               1 - EMPRESA1             108   - RICARDO SOUZA 
      1 - RENATO               2 - EMPRESA1             108   - RICARDO SOUZA 
      1 - RENATO               3 - EMPRESA1             108   - RICARDO SOUZA 

 

 

*** QUANDO O USUÁRIO LOGAR O SISTEMA VAI GUARDAR OS IDS DAS EMPRESAS EM QUE ELE ESTA CADASTRADO, ASSIM QUANDO ELE FOR INCLUIR ALGO, O SISTEMA DA UM FOR NOS IDS E INCLUI DE ACORDO COM A QTD DE IDS 
*** FAZENDO A REFERENCIA DOS CADASTROS AO IDS DAS EMPRESAS 

ou seja pra cada inclusão do cadastro eu gravo na sub-tabela a mesma quantidade de registros que o usuário tem cadastrado nas empresas, ou seja, se o usuário é cadastrado em 3 empresas eu incluo na tabela para o relacionamento 3 
registros , pensando num sistema grande essa tabela vai crescer bastante não acham??? enfim, daí para fazer a pesquisa seria tipo isso 

"select id_cadatro, subtabela.id_cadastro  from cadastros 
left join subtabela on idsub = id_cad" 

for (ids_cadastrados as subtabela) 
   where " o r" + "subtabela.id_cadastro =  subtabelaid_subtabela " 
endfor 

teria uma maneira melhor? qq vcs acham?? isso vai ocorrer em varias outras tabelas... e assim esse retorno de dados será bem grande, esse intuito é pra resolver o seguinte... 

o cliente vai controlar varias empresas dele no mesmo sistema e ele quer as informações numa só tela, os relatórios das empresas que ele controla, em precisar ta logando em uma determinada empresa, 
sei que eu posso por um SELECT pra ele escolher na hora de fazer um filtro ou na hora de incluir um cadastro, mas queria fazer automático quando cadastrar um cliente ele ficar visível para as 3 empresas que ele controla 


qq dúvida to por aqui pessoal, já agradeço desde já!!! 
obrigado!!! 
bom dia à todos!! 
Oss!! 

Editado por DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Renato Muniz Olá, 

Como não obteve respostas ainda e acredito que nunca é tarde para se responder um tópico.

 

Pelo que eu entendi, você precisa fazer algumas mudanças no seu banco de dados.

Por exemplo:

Criar os índices na tabela que vai comandar a consulta e depois criar os relacionamentos 1:N, além de criar outras tabelas.

O segredo é desmantelar seu BD em várias tabelas.

 

Você disse que um usuário pode ter N empresas em seu nome certo?

 

Simplesmente podes criar uma tabela chamada "empresas_usuarios" onde nesta tabela receberia os seguintes campos:

  • ID auto increment Chave Primárias
  • ID_empresa INT 11 Chave estrangeira
  • ID_usuario INT 11 Chave estrangeira

No momento do cadastro, você deixa a possibilidade do usuário fazer uma múltipla escolha de empresas. 

Então a linguagem de programação que você usa fará um laço de repetição para cada item selecionado. Ou seja, em outras palavras,  na linguagem de programação, você faria um laço de while iterando cada opção escolhida. 

 

Por exemplo em PHP:

 

while($empresasEscolhidas as $empresas):
   $cadastra = mysqli_query($conexao, "INSERT INTO empresas_usuario(id_empresa, id_usuario) 
                                       VALUES('$empresas', '$id')");
endwhile;

Atenção, o código acima é meramente explicativo.

 

Assim desta forma, faria um laço onde será cadastrado no banco de dados, na tabela empresas_usuario, o ID da empresa e o ID do usuário.

 

Posteriormente para uma consulta basta usar o INNER JOIN e trazer todas as empresas que aquele usuário possui.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por responder @DiF , na verdade o "problema" nem seria pra adquirir as empresas do determinado usuário, teria que ser uma tabela assim mesmo como você mencionou, o problema é que uso Spring + JPA , daí no meu repository onde monto a tabela eu nao tenho fazer um loop pra criar um where com as empresas que o usuario selecionasse para pesquisa, a ideia é a seguinte:

quanto o usuario fosse fazer um pesquisa dos atendimentos por exemplo, ele poderia escolher quais as empresas ele quer filtrar, com um (select multiselect por exemplo), daí lá na montagem da pesquisa eu faria um laço dessa forma

 whr = " where "

for empresas : emp {

    whr =  whr + " atendimento.empresa = "+  emp.id+ " or "

}

 

do no fim das contas a string ficaria assim: where atendimento.empresa = 1 OR atendimento.empresa = 1 ... etc...

resolveria, o problema é la no meu repository que é esse cara abaixo..

 

public interface AtendimentosRepository extends CrudRepository<Atendimentos, Long> {

	String sqlPrincipal = "SELECT id_heados, usuario_heados, cadastro_heados, "
			+ " sinistronumero_heados, corretor_heados,  "
			+ " custosadicionais_heados, veiculo_heados, empresa_heados, "
			+ " seguradora_heados, "

			+ " pecastotal.totalpecas as totalpecas, "
			+ " datalanc_heados, dataprevsaida_heados, dataentrada_heados, deducao_heados,extramaoobra_heados ,"
			+ " extrapeca_heados, franquia_heados, maoobra_heados, materialpintura_heados,obschecklist_heados, "
			+ " veiculo_km_heados, obsextras_heados,tipoatendimento_heados,  "

			+ " datasaida_heados FROM heados  "

			+ "	LEFT JOIN (	(SELECT pedos.controle_pedos,adicional_pedos,"
			+ "	sum( ( COALESCE(valor_pedos,'0') * COALESCE(quantidade_pedos,'0') ) - (  "
			+ "	( COALESCE(valor_pedos,'0') * COALESCE(quantidade_pedos,'0') )	* COALESCE(desconto_pedos,'0') /100"
			+ "	) ) as totalpecas FROM pedos as pedos  WHERE adicional_pedos  = 'N'"
			+ "	group by pedos.controle_pedos) ) pecastotal ON controle_pedos "
			
  			//----- AQUI QUE SERIA O FOR PRA MONTAR A LINHA DO WHERE COM AS EMPRESAS QUE O USUARIO SELECIONOU
  
			+ " WHERE id_heados = :controle ";

	
		
	

	@Query(value = sqlPrincipal, nativeQuery = true)
	public Atendimentos atendimentoByControle(@Param("controle") Long controle);

}

 

ele nao deixa adicionar linhas que neo extenda do repository, pelo menos eu nao consegui, daí tem um tal de criteria, que meio chato de fazer mas vou ter q da uma estudada

 

 

AT+ e obrigado

Editado por Renato Muniz

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Renato Muniz Ok,  nesse caso não poderei ajudar você. Pois não programo na linguagem que está usando.  Parece ser Java.  Por isso é melhor eu mover seu tópico para o setor de Java, onde você poderá receber respostas mais satisfatórias.

Certo de sua compreensão,

Desde já agradeço.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×