Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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!! 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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.

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

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

Link para o comentário
Compartilhar em outros sites

  • Moderador

@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
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...