public static String codeGenerate() throws Exception {
CodeInfoDao dao = new CodeInfoDao();
String code = null;
List<Map<String, String>> list = dao.queryForList();
if (CollectionUtils.isEmpty(list)) {
final AtomicInteger counter = new AtomicInteger(0);
code = String.format("%04d", counter.incrementAndGet());
} else {
List<Integer> codeInts = list.stream().filter(v -> StringUtils.isNotBlank(v.get("code")))
.map(v -> Integer.parseInt(v.get("code"))).collect(Collectors.toList());
Integer i = 1;
while (true) {
Boolean flag = true;
for (Integer codeInt : codeInts) {
if (i == codeInt) {
flag = false;
}
}
if (flag) {
break;
}
i++;
}
final AtomicInteger counter = new AtomicInteger(i - 1);
code = String.format("%04d", counter.incrementAndGet());
}
return code;
}