As operações básicas da biblioteca precisam utilizar periféricos do computador, como impressora e leitor de digitais. Isto não é possível através de um sistema web. Por isso, a solução adotada para o módulo de circulação foi desenvolver um programa desktop.
Para se comunicar com o servidor, o programa utiliza Spring Remoting através de uma servlet criada no Sigaa (httpCirculacaoController).
Após efetuar o login, será exibida a tela principal do módulo de circulação desktop. O operador inicia um dos casos de uso. A especificação de cada um deles segue abaixo.
Para as operações de realizar e renovar empréstimos é necessário realizar uma busca pelo usuário da biblioteca. Esta pode ser feita indicando-se o nome, o cpf, a matrícula ou o siape do mesmo.
Neste módulo desktop estão disponíveis as seguintes opções para o usuário:
Caso o usuário possua mais de um vínculo com a universidade, na busca (seja pela matrícula, siape, cpf ou pelo nome) o vínculo com mais permissões deve ser retornado. A hierarquia para os tipos de usuários é executada da seguinte maneira:
Se um discente for especial e não for de mobilidade estudantil, este não poderá realizar empréstimos.
Se um usuário não tiver mais um vínculo ativo com a instituição, este deve aparecer na consulta mas não pode realizar ou renovar empréstimos.
Classe | Tabela |
---|---|
br.ufrn.sigaa.biblioteca.processos_tecnicos.dominio.UsuarioBiblioteca | sigaa.biblioteca.usuario_biblioteca |
Este módulo é um programa desktop. Portanto, não há um link específico para ele.
Papéis: SigaaPapeis.BIBLIOTECA_SETOR_CIRCULACAO_BIBLIOTECARIO, SigaaPapeis.BIBLIOTECA_SETOR_CIRCULACAO ou SigaaPapeis.BIBLIOTECA_SETOR_CIRCULACAO_CHECKOUT
Usuários: usuarios
Utilizar o seguinte código SQL para verificar os resultados encontrados.
select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, d.id_discente, d.matricula, d.nivel, null as id_servidor,null as siape, null as id_categoria, p.id_pessoa, d.tipo as tipo_discente, fi.mobilidade_estudantil, 0 as id_docente_externo from biblioteca.usuario_biblioteca ub join pessoa p on p.id_pessoa = ub.id_pessoa join discente d on d.id_pessoa = p.id_pessoa and d.status in (1, 8, 9) and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%' or p.cpf_cnpj = 0 or d.matricula = 0) left join ensino.forma_ingresso fi on fi.id_forma_ingresso = d.id_forma_ingresso where ub.ativo = trueValue() union all select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, null as id_discente, null as matricula, null as nivel, s.id_servidor, s.siape, s.id_categoria, p.id_pessoa, null as tipo_discente, null as mobilidade_estudantil, 0 as id_docente_externo from biblioteca.usuario_biblioteca ub join pessoa p on p.id_pessoa = ub.id_pessoa join rh.servidor s on s.id_pessoa = p.id_pessoa and s.id_ativo in (1, 2, 9) and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%' or p.cpf_cnpj = 0 or s.siape = 0) where ub.ativo = trueValue() union all select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, null as id_discente, null as matricula, null as nivel, null as id_servidor, null as siape, null as id_categoria, p.id_pessoa, null as tipo_discente, null as mobilidade_estudantil, 0 as id_docente_externo from biblioteca.usuario_biblioteca ub join biblioteca.usuario_externo_biblioteca ue on ue.id_usuario_externo_biblioteca = ub.id_usuario_externo_biblioteca join pessoa p on p.id_pessoa = ue.id_pessoa and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%' or p.cpf_cnpj = 0 ) where ub.ativo = trueValue() union all select ub.id_usuario_biblioteca, p.cpf_cnpj, p.nome, p.data_nascimento, null as id_discente, null as matricula, null as nivel, null as id_servidor, null as siape, null as id_categoria, p.id_pessoa, null as tipo_discente, null as mobilidade_estudantil, de.id_docente_externo from biblioteca.usuario_biblioteca ub join pessoa p on p.id_pessoa = ub.id_pessoa join ensino.docente_externo de on de.id_pessoa = p.id_pessoa and de.ativo = trueValue() and de.matricula is not null and (p.nome_ascii ilike '%victor hugo de carvalho fernandes%' or p.cpf_cnpj = 0) where ub.ativo = trueValue() order by 3