Gerador de Matricula

6 respostas
J

Eu tenho um script em PHP que gera matrículas sequencias !
90466316 90466317 90466318 90466319 9046631X 90466410
90466411 90466412 90466413 90466414 90466415 90466416
90466417 90466418 90466419 9046641X 90466510

$prefixo = substr($matricula,-8, -2);
            //$digito  = '1';
            $sufixo  = substr($matricula,-1);

            if($sufixo != 9 and $sufixo != "X"){
                $sufixo += 1;
                    $matricula = $prefixo . $digito . $sufixo;}
            else if ($sufixo==9){
                $sufixo = "X";
                    $matricula = $prefixo . $digito . $sufixo;}
            else if($sufixo == "X"){
                    $sufixo   = 0;
                    $prefixo += 1;
                    $matricula = $prefixo . $digito . $sufixo;}

Como faz isso em java ?

6 Respostas

W

Eu testei seu código usando este interpretador online de PHP e descobri que se a matrícula for “90466316”, está linha…

$prefixo = substr($matricula,-8, -2);

Retorna “904663”. E esta linha…

$sufixo  = substr($matricula,-1);

Retorna “6”.

Com base nestas observações, acredito que em Java ficaria assim:

String matricula = "90466316";
String digito = "1";

// retorna desde o primeiro digito até o sexto;
String prefixoString = matricula.substring(0, 6);

// retorna o último digito independente do tamanho da string
String sufixoString = matricula.substring( matricula.length() - 1 );

// convertemos prefixo de string para int para poder incrementá-lo
// caso sufixoString seja igual a "X"
int prefixoInt = Integer.parseInt( prefixoString );


if ( sufixoString.equals( "9" ) ) {
    sufixoString = "X";
} else if ( sufixoString.equals( "X" ) ) {
    sufixoString = "0";
    prefixoInt += 1;
} else {
    // convertemos sufixoString para int para poder somá-lo com um
    // e após a soma o transformamos de novo em string
    int sufixoInt  = Integer.parseInt( sufixoString );
    sufixoString = String.valueOf( sufixoInt + 1 );
}

String novaMatricula = prefixoInt + digito + sufixoString;
J

wldomiciano Bom Dia !

Parabéns pelas conclusões e obrigado pela gentileza de fazer o algoritimo !

J

package gera;

public class Gera {

public static void main(String[] args) {
    String matricula = "90384019";
    String digito = "1";
    int quantidade = 100;
    int contador = 1;
    
        // retorna desde o primeiro digito até o sexto;
    String prefixoString = matricula.substring(0, 6);

        // retorna o último digito independente do tamanho da string
    String sufixoString = matricula.substring(matricula.length() - 1);

        // convertemos prefixo de string para int para poder incrementá-lo
        // caso sufixoString seja igual a "X"
    int prefixoInt = Integer.parseInt(prefixoString);
    
    while (contador < quantidade) {
    contador ++;        
    switch (sufixoString) {
        case "9":
            sufixoString = "X";
            break;
        case "X":
            sufixoString = "0";
            prefixoInt += 1;
            break;
        default:
            // convertemos sufixoString para int para poder somá-lo com um
            // e após a soma o transformamos de novo em string
            int sufixoInt = Integer.parseInt(sufixoString);
            sufixoString = String.valueOf(sufixoInt + 1);
            break;
    }
         
            String novaMatricula = prefixoInt + digito + sufixoString;
            System.out.println(novaMatricula);

}
}
}

W

Haha, com switch ficou bem melhor pra ler!

J
imports

import java.math.BigInteger;

import java.util.ArrayList;

import java.util.List;

import javax.ejb.Stateless;

import javax.persistence.Query;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.PathParam;

import javax.ws.rs.Produces;

/**
*

  • @author jr

  • @author wldomiciano

  • 20/03/2016
    
    */
    
    @Stateless
    
    <a class="mention" href="/u/path">@Path</a>(“gerador”)
    
    public class GeradorFacadeREST extends AbstractFacade<Gerador, ServiceException> {
    
    public GeradorFacadeREST() {
    
    super(Gerador.class);
    
    }
    
    //cadastra a lista de matriculas
    
    //Recebe a lista de matrícula do gerarmatriculaPOST
    
    <a class="mention" href="/u/get">@GET</a>
    
    <a class="mention" href="/u/path">@Path</a>(“gerar/{pardigito}/{parquantidade}/{paridfuncionario}/{paridunidade}”)
    
    @Produces({“application/json”})
    
    public List getGerador(
    
    @PathParam(“pardigito”) Integer pardigito,
    
    @PathParam(“parquantidade”) Integer parquantidade,
    
    @PathParam(“paridfuncionario”) BigInteger paridfuncionario,
    
    @PathParam(“paridunidade”) Integer paridunidade ) {
    
    List<Gerador> listaGerador = new ArrayList<Gerador>();
     List<String> listaMatricula = gerarmatriculaPOST(pardigito, parquantidade);
     
     Query query = getEntityManager().createQuery("FROM Funcionario WHERE id=:paridfuncionario");
     query.setParameter("paridfuncionario", paridfuncionario);
     Funcionario f = (Funcionario) query.getSingleResult();
     for (String matricula : listaMatricula) {
         Gerador gerador = new Gerador();
         gerador.setMatricula(matricula);
         gerador.setDigito(pardigito);
         gerador.setQuantidade(parquantidade);
         gerador.setFuncionarioFk(f);
         gerador.setUnidadeFk(paridunidade);
         gerador.setNomeFuncionario(f.getNome());
         super.create(gerador);
         listaGerador.add(gerador);
     }
     return listaGerador;
    

    }

    //lista todos

    <a class="mention" href="/u/get">@GET</a>
    
    @Produces({“application/json”})
    
    <a class="mention" href="/u/override">@Override</a>
    
    public List findAll() {
    
    List lista = super.findAll();
    
    return lista;
    
    }
    
    //pesquisa por nome monta o combobox
    
    <a class="mention" href="/u/get">@GET</a>
    
    <a class="mention" href="/u/path">@Path</a>(“pesqnome/{parnome}”)
    
    @Produces({“application/json”})
    
    public List getPesqFuncNome(@PathParam(“parnome”) String parnome) {
    
    List pesqFuncNome = PesqFuncNome(parnome);
    
    return pesqFuncNome;
    
    }
    
    //pesquisa por sigla monta o combobox
    
    <a class="mention" href="/u/get">@GET</a>
    
    <a class="mention" href="/u/path">@Path</a>(“pesqsigla/{parsigla}”)
    
    @Produces({“application/json”})
    
    public List getPesqSigla(@PathParam(“parsigla”) String parsigla) {
    
    List pesqSigla = PesqSigla(parsigla);
    
    return pesqSigla;
    
    }
    
    //pesquisa por matricula monta o combobox
    
    <a class="mention" href="/u/get">@GET</a>
    
    <a class="mention" href="/u/path">@Path</a>(“pesqmatricula/{parmatricula}”)
    
    @Produces({“application/json”})
    
    public List getPesqMatricula(@PathParam(“parmatricula”) String parmatricula) {
    
    List pesqMatricula = PesqMatricula(parmatricula);
    
    return pesqMatricula;
    
    }
    
    /*========================================================================================
    
    ============================   GERADOR DE MATŔICULA    =================================
    
    Pesquisa  a ultima matrícula baseado no tipo, 1 tercerizado
    
    2 cooperado, gerando baseado na quantidade solicitada
    
    */
    
    private List gerarmatriculaPOST(Integer pardigito, Integer parquantidade) {
    
    //pesquisa a ultima matrícula gerada, digito define se tercerizado ou cooperado
    
    String hql = SELECT max(matricula) FROM Gerador WHERE digito = :pardigito;
    
    Query query = getEntityManager().createQuery(hql);
    
    query.setParameter(pardigito, pardigito);
    
    String matricula = (String) query.getSingleResult();
    
    Integer digito = pardigito;
    
    Integer quantidade = parquantidade;
    
    Integer contador = 0;
    
    // retorna desde o primeiro digito até o sexto;
    
    String prefixoString = matricula.substring(0, 6);
    
    // retorna o último digito independente do tamanho da string
    
    String sufixoString = matricula.substring(matricula.length() - 1);
    
    // convertemos prefixo de string para int para poder incrementá-lo
    
    // caso sufixoString seja igual a "X"
    
    int prefixoInt = Integer.parseInt(prefixoString);
    
    //intera a quantidade de matrículas solicitadas
    
    List list = new ArrayList<>();
    
    while (contador < quantidade) {
    
    contador++;
    
    switch (sufixoString) {
    
    case 9:
    
    sufixoString = X;
    
    break;
    
    case X:
    
    sufixoString = 0;
    
    prefixoInt += 1;
    
    break;
    
    default:
    
    // convertemos sufixoString para int para poder somá-lo com um
    
    // e após a soma o transformamos de novo em string
    
    int sufixoInt = Integer.parseInt(sufixoString);
    
    sufixoString = String.valueOf(sufixoInt + 1);
    
    break;
    
    }
    
    String novaMatricula = prefixoInt + “” + digito + “” + sufixoString;
    
    //retorna a lista de matrícula
    
    list.add(novaMatricula);
    
    }
    
    return list;
    
    }
    
    private List PesqFuncNome(String parnome) {
    
    String hql = ("SELECT w.nome, <a href="http://w.id">w.id</a> FROM "
    
    + "Funcionario w "
    
    + "WHERE w.nome "
    
    + "LIKE :parnome "
    
    + “ORDER BY w.nome”);
    
    Query query = getEntityManager().createQuery(hql);
    
    query.setParameter(“parnome”, “%” + parnome.toUpperCase() + “%”);
    
    List lista = query.getResultList();
    
    return lista;
    
    }
    
    public List PesqSigla(String parsigla) {
    
    String hql = "SELECT s.sigla, <a href="http://s.id">s.id</a> FROM "
    
    + "Organograma s "
    
    + "WHERE s.sigla "
    
    + "LIKE :parsigla "
    
    + “ORDER BY s.sigla”;
    
    Query query = getEntityManager().createQuery(hql);
    
    query.setParameter(“parsigla”, “%” + parsigla.toUpperCase() + “%”);
    
    List lista = query.getResultList();
    
    return lista;
    
    }
    
    public List PesqMatricula(String parmatricula) {
    
    String hql = "SELECT s.matricula, <a href="http://s.id">s.id</a> FROM "
    
    + "FuncionarioContrato s "
    
    + "WHERE s.matricula "
    
    + "LIKE :parmatricula "
    
    + “ORDER BY s.matricula”;
    
    Query query = getEntityManager().createQuery(hql);
    
    query.setParameter(“parmatricula”, “%” + parmatricula.toUpperCase() + “%”);
    
    List lista = query.getResultList();
    
    return lista;
    
    }
    
    }
    
J

Dei os Créditos @author wldomiciano

Criado 19 de fevereiro de 2016
Ultima resposta 11 de mar. de 2016
Respostas 6
Participantes 2