Copiez le code comme suit :
importer java.text.SimpleDateFormat ;
importer java.util.Date ;
importer org.apache.commons.lang3.StringUtils ;
/**
* Générer une classe d'outils de numéro de série
* @version V1.0
* @date : 2013-11-16 17:21:37
*/
classe publique SerialNum {
nombre de chaînes statiques privées = "000" ;
chaîne statique privée dateValue = "20131115" ;
/**
* Générer un numéro de série
*/
Chaîne statique synchronisée publique getMoveOrderNo() {
long Non = 0 ;
SimpleDateFormat sdf = new SimpleDateFormat("aaaaMMjj");
Chaîne nowdate = sdf.format(new Date());
Non = Long.parseLong(nowdate);
if (!(String.valueOf(No)).equals(dateValue)) {
compte = "000" ;
dateValue = String.valueOf(Non);
}
String num = String.valueOf(Non);
num += getNo(compte);
num = "CB" + num;
retourner num ;
}
/**
* Obtenir le numéro de série de l'ordre de déménagement
*/
Chaîne statique synchronisée publique getMoveOrderNo (String SerialNum) {
String nyr = StringUtils.substring(serialNum, 2, 10); // Récupère la chaîne de l'année, du mois et du jour
String countV = StringUtils.substring(serialNum, 10); // Récupère le numéro de série
if (Integer.valueOf(countV) > Integer.valueOf(count)) {
dateValue = nyr;
count = String.valueOf(countV);
}
return getMoveOrderNo();
}
/**
* Renvoie le nombre de commandes de la journée +1
*/
chaîne statique publique getNo(String s) {
Chaîne rs = s ;
int i = Integer.parseInt(rs);
je += 1 ;
rs = "" + je;
pour (int j = rs.length(); j < 3; j++) {
rs = "0" + rs ;
}
compte = rs ;
retourner rs;
}
public static void main (String[] arguments) {
pour (int je = 0; je < 10; i++) {
System.out.println(getMoveOrderNo());
}
}
}
Remarque : Le programme ci-dessus ne posera aucun problème si le serveur peut toujours fonctionner normalement. Si le serveur est redémarré ou s'il y a une défaillance dans le processus et que le service doit être redémarré, cela peut entraîner la génération de numéros de série en double. Afin de garantir l'unicité, nous devons coopérer avec la requête de la base de données, interroger le dernier enregistrement, puis extraire le numéro de série et appeler la méthode getMoveOrderNo(String SerialNum) pour garantir que le numéro de série généré est correct et unique en toutes circonstances. .