From 8ad863082097ffdcab4a8e7f426d344a1fe6f892 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期六, 07 十一月 2026 00:27:02 +0800
Subject: [PATCH] 修复人员管理接口校验与导出,完善设备保养计划与文件受控功能
---
cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java | 90 ++++++++++++++++++++++++++-------------------
1 files changed, 52 insertions(+), 38 deletions(-)
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java
index 4f45be8..bd81697 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/service/impl/PersonPostAuthorizationRecordServiceImpl.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
@@ -11,7 +13,9 @@
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.personnel.dto.PersonPostAuthorizationRecordDto;
+import com.ruoyi.personnel.mapper.PersonBasicInfoMapper;
import com.ruoyi.personnel.mapper.PersonPostAuthorizationRecordMapper;
+import com.ruoyi.personnel.pojo.PersonBasicInfo;
import com.ruoyi.personnel.pojo.PersonPostAuthorizationRecord;
import com.ruoyi.personnel.service.PersonPostAuthorizationRecordService;
import com.ruoyi.system.mapper.UserMapper;
@@ -20,6 +24,7 @@
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
+import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
@@ -39,6 +44,8 @@
@Resource
private UserMapper userMapper;
+ @Resource
+ private PersonBasicInfoMapper personBasicInfoMapper;
@Value("${file.path}")
private String imgUrl;
@@ -50,73 +57,80 @@
@Override
public void exportPersonPostAuthorizationRecord(Integer id, HttpServletResponse response) {
+ if (id == null) {
+ throw new ErrorException("缂哄皯浠昏亴鎺堟潈璁板綍id");
+ }
PersonPostAuthorizationRecord personPostAuthorizationRecord = baseMapper.selectById(id);
+ if (personPostAuthorizationRecord == null) {
+ throw new ErrorException("浠昏亴鎺堟潈璁板綍涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎");
+ }
+ Integer incumbentUserId;
+ try {
+ incumbentUserId = Integer.valueOf(personPostAuthorizationRecord.getUserId());
+ } catch (Exception e) {
+ throw new ErrorException("璇ヨ褰曟病鏈夐�夋嫨琚换鑱屼汉鍛橈紝鏃犳硶瀵煎嚭涓婂矖璇�");
+ }
//濮撳悕
- User user = userMapper.selectById(personPostAuthorizationRecord.getUserId());
+ User user = userMapper.selectById(incumbentUserId);
+ if (user == null) {
+ throw new ErrorException("琚换鑱屼汉鍛樹笉瀛樺湪鎴栧凡琚垹闄わ紝鏃犳硶瀵煎嚭涓婂矖璇�");
+ }
String name = user.getName();
- //todo: 浜哄憳浠昏亴鎺堟潈璁板綍濮撳悕鑻辨枃
-// HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
-// format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
-// format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
-// StringBuilder pinyinBuilder = new StringBuilder();
-// for (int i = 0; i < name.length(); i++) {
-// char c = name.charAt(i);
-// // 鍒ゆ柇鏄惁鏄眽瀛�
-// if (Character.toString(c).matches("[\\u4E00-\\u9FFF]")) {
-// // 鑾峰彇姹夊瓧鐨勬嫾闊虫暟缁�
-// String[] pinyinArray = new String[0];
-// try {
-// pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
-// } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
-//
-// }
-// if (pinyinArray!= null && pinyinArray.length > 0) {
-// pinyinBuilder.append(pinyinArray[0]);
-// }
-// } else {
-// pinyinBuilder.append(c);
-// }
-// }
-// String nameEn = pinyinBuilder.toString();
- String nameEn = user.getNameEn();
- //鐞嗚鐭ヨ瘑鑰冭瘯鎴愮哗
- String num1=personPostAuthorizationRecord.getNum1();
- //鎿嶄綔鎶�鑳借�冭瘯鎴愮哗
- String num2=personPostAuthorizationRecord.getNum2();
+ //韬唤璇佸彿
+ PersonBasicInfo basicInfo = personBasicInfoMapper.selectOne(Wrappers.<PersonBasicInfo>lambdaQuery()
+ .eq(PersonBasicInfo::getUserId, incumbentUserId)
+ .last("limit 1"));
+ if (basicInfo == null || StringUtils.isBlank(basicInfo.getIdentityCard())) {
+ throw new ErrorException(name + "杩樻病鏈夊湪浜哄憳鍩烘湰淇℃伅涓~鍐欒韩浠借瘉鍙凤紝鏃犳硶瀵煎嚭涓婂矖璇�");
+ }
+ String identityCard = basicInfo.getIdentityCard();
//璇佷功缂栧彿
String code = personPostAuthorizationRecord.getCertificateNumber();
+ if (StringUtils.isBlank(code)) {
+ throw new ErrorException("璇ヨ褰曡繕娌℃湁濉啓璇佷功缂栧彿锛屾棤娉曞鍑轰笂宀楄瘉");
+ }
+ //浠昏亴宀椾綅
+ String post = personPostAuthorizationRecord.getPost();
+ String finalPost = StringUtils.isBlank(post) ? "妫�娴�" : post;
//鍙戣瘉鏃堕棿
LocalDateTime createTime = personPostAuthorizationRecord.getCreateTime();
+ if (createTime == null) {
+ createTime = LocalDateTime.now();
+ }
String year = createTime.getYear() + "";
- String mon = createTime.getMonth().getValue() + "";
+ String mon = createTime.getMonthValue() + "";
String day = createTime.getDayOfMonth() + "";
//涓汉鐓х墖
if (ObjectUtils.isEmpty(user.getPictureUrl())) {
- throw new ErrorException(name+"鐨勪釜浜虹収鐗囨病鏈変笂浼�");
+ throw new ErrorException(name + "鐨勪釜浜虹収鐗囨病鏈変笂浼狅紝鏃犳硶瀵煎嚭涓婂矖璇�");
}
String pictureUrl = user.getPictureUrl();
-
+ if (!new File(imgUrl + "/" + pictureUrl).exists()) {
+ throw new ErrorException(name + "鐨勪釜浜虹収鐗囨枃浠朵笉瀛樺湪锛岃閲嶆柊涓婁紶");
+ }
InputStream inputStream = this.getClass().getResourceAsStream("/static/credentials-deal.docx");
+ if (inputStream == null) {
+ throw new ErrorException("涓婂矖璇佸鍑烘ā鏉夸笉瀛樺湪");
+ }
ConfigureBuilder builder = Configure.builder();
builder.useSpringEL(true);
XWPFTemplate template = XWPFTemplate.compile(inputStream, builder.build()).render(
new HashMap<String, Object>() {{
put("name", name);
- put("nameEn", nameEn);
- put("num1", num1);
- put("num2", num2);
+ put("identityCard", identityCard);
put("code", code);
+ put("post", finalPost);
put("year", year);
put("mon", mon);
put("day", day);
- put("writeUrl", new FilePictureRenderData(100,50,imgUrl + "/" + pictureUrl));
+ put("writeUrl", new FilePictureRenderData(100, 140, imgUrl + "/" + pictureUrl));
}});
try {
response.setContentType("application/msword");
String fileName = URLEncoder.encode(
- name+"鐨勫矖浣嶈亴涓氳祫鏍兼寮�", "UTF-8");
+ name + "鐨勬娴嬩汉鍛樹笂宀楄瘉", "UTF-8");
response.setHeader("Content-disposition",
"attachment;filename=" + fileName + ".docx");
OutputStream os = response.getOutputStream();
--
Gitblit v1.9.3