diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/TemplateDownloadController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/TemplateDownloadController.java index b3403f3..284e07a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/TemplateDownloadController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/TemplateDownloadController.java @@ -1,8 +1,10 @@ package com.ruoyi.web.controller.common; +import cn.hutool.crypto.digest.DigestUtil; import com.ruoyi.bgt.domain.BgtProjectRecruit; import com.ruoyi.bgt.domain.dto.BgtUploadDTO; import com.ruoyi.bgt.service.IBgtProjectRecruitService; +import com.ruoyi.common.utils.PinYinUtil; import com.ruoyi.wgz.domain.WgzUser; import com.ruoyi.wgz.service.IWgzUserService; import io.swagger.annotations.Api; @@ -50,7 +52,8 @@ public class TemplateDownloadController { public ResponseEntity downloadFolders(@RequestBody BgtUploadDTO dto) { BgtProjectRecruit recruit = recruitService.queryById(dto.getRecruitId()); - String firstLevelFolderName = recruit.getId() + "_" + recruit.getRecruitName(); + String s = DigestUtil.md5Hex(recruit.getRecruitName()); + String firstLevelFolderName = recruit.getId() + "_" + s; File baseDir = new File(TEMP_DIR); File folderToZip = new File(baseDir, firstLevelFolderName); @@ -93,7 +96,8 @@ public class TemplateDownloadController { // 获取招工名 BgtProjectRecruit recruit = recruitService.queryById(dto.getRecruitId()); // 第一层文件夹名 - String firstLevelFolderName = recruit.getId() + "_" + recruit.getRecruitName(); + String s = DigestUtil.md5Hex(recruit.getRecruitName()); + String firstLevelFolderName = recruit.getId() + "_" + s; File baseDir = new File(TEMP_DIR); if (!baseDir.exists()) { if (!baseDir.mkdirs()) { @@ -122,7 +126,7 @@ public class TemplateDownloadController { String userName = wgzUser.getUsername(); String idCard = wgzUser.getIdentityCard(); // 第二层文件夹名 - String secondLevelFolderName = userName + "_" + idCard; + String secondLevelFolderName = PinYinUtil.getChineseNameInitials(userName) + "_" + idCard; byte[] bytes2 = secondLevelFolderName.getBytes(StandardCharsets.UTF_8); // 将 UTF - 8 字节数组转换回字符串 @@ -139,7 +143,7 @@ public class TemplateDownloadController { } // 创建第三层的两个固定文件夹 - String[] thirdLevelFolderNames = {"劳务合同", "保险"}; + String[] thirdLevelFolderNames = {"HeTong", "BaoXian"}; for (String thirdLevelFolderName : thirdLevelFolderNames) { byte[] bytes3 = thirdLevelFolderName.getBytes(StandardCharsets.UTF_8); // 将 UTF - 8 字节数组转换回字符串 diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 972f8c1..cb7b9bb 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -169,6 +169,11 @@ lombok provided + + com.belerweb + pinyin4j + 2.5.1 + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/PinYinUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PinYinUtil.java new file mode 100644 index 0000000..0382651 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/PinYinUtil.java @@ -0,0 +1,40 @@ +package com.ruoyi.common.utils; + +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +public class PinYinUtil { + + public static String getChineseNameInitials(String chineseName) { + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + // 设置拼音大小写格式为大写 + format.setCaseType(HanyuPinyinCaseType.UPPERCASE); + // 设置拼音声调格式为无音调 + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + // 设置 ü 的显示格式 + format.setVCharType(HanyuPinyinVCharType.WITH_V); + + StringBuilder initials = new StringBuilder(); + for (char c : chineseName.toCharArray()) { + if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) { + try { + String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format); + if (pinyinArray != null) { + // 取拼音的首字母 + initials.append(pinyinArray[0].charAt(0)); + } + } catch (BadHanyuPinyinOutputFormatCombination e) { + e.printStackTrace(); + } + } else { + // 非中文字符直接添加 + initials.append(c); + } + } + return initials.toString(); + } +}