1.导入依赖 拼音依赖
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
2.代码实现
// 定义并初始化 sequenceNumber
private final AtomicInteger sequenceNumber = new AtomicInteger(0);
private String generateSystemCode(String systemName) {
// 获取系统名称的首字母
String firstLetter = systemName.substring(0, 1).toUpperCase();
// 将系统名称转换为拼音
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
StringBuilder pinyinBuilder = new StringBuilder();
try {
for (char c : systemName.toCharArray()) {
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
if (pinyinArray != null) {
pinyinBuilder.append(pinyinArray[0]);
}
// if (pinyinArray != null && pinyinArray.length > 0) {
// // 只取拼音的首字母并大写化
// pinyinBuilder.append(pinyinArray[0].substring(0, 1).toUpperCase());
// }
}
} else {
pinyinBuilder.append(c);
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
String pinyin = pinyinBuilder.toString();
// 获取当前年月日
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String dateStr = sdf.format(new Date());
// 生成4位序号
String sequenceStr = String.format("%04d", sequenceNumber.getAndIncrement());
// 组合系统编号
return firstLetter + pinyin + dateStr + sequenceStr;
}
3.实现效果
