代码如下:
package com;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class PrimaryGenerater {
private static String SERIAL_NUMBER = "0001";
private static PrimaryGenerater primaryGenerater = null;
private PrimaryGenerater() {
}
/**
* 取得PrimaryGenerater的单例实现
*
* @return
*/
public static PrimaryGenerater getInstance() {
if (primaryGenerater == null) {
synchronized (PrimaryGenerater.class) {
if (primaryGenerater == null) {
primaryGenerater = new PrimaryGenerater();
}
}
}
return primaryGenerater;
}
/**
* 生成 日期+随机数的流水号
* */
public String getNumberForPK() {
String id = "";
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
String temp = sf.format(new Date());
int random = (int) (Math.random() * 10000);
id = temp + random;
return id;
}
/**
* 每年从0001开始计数 type 1 煤矿安许证 2 煤矿安资证 3 安全设施设计审查 4 中介机构 types 1 受理 2 不受理
* */
public static synchronized String getnumber(String thisCode,
String typeString, Integer types) {
String id = null;
Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yy");
String thisData = thisCode.substring(thisCode.length() - 6,
thisCode.length() - 4);
String formatData = formatter.format(date);
Integer newDate = Integer.parseInt(formatData);
Integer newThisData = Integer.parseInt(thisData);
// 这个判断就是判断你数据取出来的最后一个单号是不是当年的
if (newDate < newThisData) {
System.out.println("新的一年");
thisData = formatter.format(date);
// 如果是新的一年的就直接变成0001
if (types == 1) {
id = typeString + "受" + thisData + "0001";
} else {
id = typeString + "不受" + thisData + "0001";
}
} else if (newDate == newThisData) {
System.out.println("当年");
DecimalFormat df = new DecimalFormat("0000");
// 不是新的一年加
if (types == 1) {
id = typeString
+ "受"
+ formatter.format(date)
+ df.format(1 + Integer.parseInt(thisCode.substring(
thisCode.length() - 6, thisCode.length())));
} else {
id = typeString
+ "不受"
+ formatter.format(date)
+ df.format(1 + Integer.parseInt(thisCode.substring(
thisCode.length() - 6, thisCode.length())));
}
} else {
System.out.println("年份出错!");
}
return id;
}
public static void main(String[] args) {
/**
* types 煤矿安许证 types1 煤矿安资证 types2 安全设施设计审查 types3 中介机构
* */
String[] types = { "安全生产许可证首次申请", "延期", "直接延期", "变更" };
String[] types1 = { "安全资格证(企业)", "安全资格证(项目部)" };
String[] types2 = { "安全设施设计审查" };
String[] types3 = { "职业卫生技术服务机构资质", "安全评价机构资质", "安全生产检测检验机构资质" };
TypeEntity en = new TypeEntity(1, types);
TypeEntity en1 = new TypeEntity(2, types1);
TypeEntity en2 = new TypeEntity(3, types2);
TypeEntity en3 = new TypeEntity(4, types3);
// 1为受理 2不受理
Integer ii = 1;
List<TypeEntity> list = new ArrayList<TypeEntity>();
list.add(en);
list.add(en1);
list.add(en2);
list.add(en3);
/**
* 类型名称 + 年月 + 0001 typeEntity.getTypes()[i].equals("xxx") 中的 安全设施设计审查
* 是前台传来的类型的值 getnumber(sno,typeString,number) 其中sno是取得数据库中的最后一个字段
* typeString 前台传来的类型的值 number 是受理和不受理类型 1 受理 2 不受理
* */
for (TypeEntity typeEntity : list) {
for (TypeEntity typeEntity : list) {
for (int i = 0; i < typeEntity.getTypes().length; i++) {
if (typeEntity.getTypes()[i].equals("安全生产许可证首次申请")) {
String sno = "煤矿安许证受192991";
String typeString = "煤矿安许证";
System.out.println(getnumber(sno, typeString, 1));
}
}
}
}
}
输出结果:
当年:
新的一年: