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-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java | 86 +++++++++++++++++++++++++++++++++++--------
1 files changed, 70 insertions(+), 16 deletions(-)
diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java
index 06edf3c..182f382 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentControlledServiceImpl.java
@@ -7,7 +7,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.numgen.NumberGenerator;
import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.framework.exception.ErrorException;
+import com.ruoyi.manage.excel.ManageDocumentControlledImportDto;
import com.ruoyi.manage.mapper.ManageDocumentControlledMapper;
import com.ruoyi.manage.mapper.ManageDocumentListMapper;
import com.ruoyi.manage.mapper.ManageRecordCheckMapper;
@@ -15,6 +18,7 @@
import com.ruoyi.manage.pojo.ManageDocumentList;
import com.ruoyi.manage.pojo.ManageRecordCheck;
import com.ruoyi.manage.service.ManageDocumentControlledService;
+import com.ruoyi.manage.util.DocumentPreviewUtils;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -26,7 +30,10 @@
import java.io.FileInputStream;
import java.io.OutputStream;
import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -58,6 +65,11 @@
@Resource
private UserMapper userMapper;
+ @Resource
+ private NumberGenerator<ManageDocumentControlled> numberGenerator;
+
+ private static final DateTimeFormatter CODE_DATE_FORMAT = DateTimeFormatter.ofPattern("yyMMdd");
+
@Override
public IPage<ManageDocumentControlled> pageManageDocumentControlled(Page page, ManageDocumentControlled manageDocumentControlled) {
return manageDocumentControlledMapper.pageManageDocumentControlled(page, QueryWrappers.queryWrappers(manageDocumentControlled));
@@ -66,6 +78,10 @@
@Override
public int addManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
manageDocumentControlled.setState("寰呭鏍�");
+ // 鎻愪氦鏃ユ湡涓嶅啀鍦ㄧ晫闈㈠~鍐欙紝鍏ュ簱鏃惰嚜鍔ㄥ啓褰撳ぉ锛屼繚鐣欏師鏈夊瓧娈靛惈涔�
+ if (manageDocumentControlled.getSubmitDate() == null) {
+ manageDocumentControlled.setSubmitDate(LocalDate.now());
+ }
String urlString;
String pathName;
String path;
@@ -147,6 +163,13 @@
@Override
public int checkManageDocumentControlled(ManageDocumentControlled manageDocumentControlled) {
ManageDocumentControlled documentControlled = manageDocumentControlledMapper.selectById(manageDocumentControlled.getId());
+ if (documentControlled == null) {
+ throw new ErrorException("鐢宠璁板綍涓嶅瓨鍦�");
+ }
+ // 宸查�氳繃鐨勭敵璇蜂笉鑳藉啀瀹℃牳锛屽惁鍒欎細閲嶅鐢熸垚鏂囦欢娓呭崟鍜屽鎵硅褰�
+ if ("閫氳繃".equals(documentControlled.getState())) {
+ throw new ErrorException("璇ョ敵璇峰凡瀹℃牳閫氳繃锛屼笉鑳介噸澶嶅鏍�");
+ }
if (manageDocumentControlled.getState().equals("閫氳繃")) {
// 鍒犻櫎鏃ф枃浠�
File oldFile = new File(wordUrl + "/" + documentControlled.getUrl());
@@ -178,7 +201,9 @@
manageDocumentList.setName(documentControlled.getName());
manageDocumentList.setVersion(documentControlled.getVersion());
manageDocumentList.setWriter(documentControlled.getWriter());
- manageDocumentList.setEffectiveDate(LocalDate.now());
+ // 鏂囦欢娓呭崟鐨勭敓鏁堟棩鏈熷彇鐢宠鐨勨�滃疄鏂芥棩鏈熲�濓紝娌″~鎵嶇敤褰撳ぉ
+ manageDocumentList.setEffectiveDate(documentControlled.getImplementDate() != null
+ ? documentControlled.getImplementDate() : LocalDate.now());
manageDocumentList.setState("鏈夋晥");
manageDocumentList.setUrl(manageDocumentControlled.getUrl());
manageDocumentListMapper.insert(manageDocumentList);
@@ -188,7 +213,14 @@
manageRecordCheck.setDocumentCode(documentControlled.getDocumentCode());
manageRecordCheck.setDocumentName(documentControlled.getName());
manageRecordCheck.setDocumentVersion(documentControlled.getVersion());
- manageRecordCheck.setWriteUser(userMapper.selectOne(Wrappers.<User>lambdaQuery().eq(User::getName,documentControlled.getWriter())).getId());
+ // 浣滆�呭彲鑳戒笉鏄郴缁熺敤鎴凤紙鍘嗗彶鏁版嵁/鎵嬪~锛夛紝鏌ヤ笉鍒版椂涓嶅啀绌烘寚閽�
+ User writerUser = null;
+ if (documentControlled.getWriter() != null && !documentControlled.getWriter().trim().isEmpty()) {
+ writerUser = userMapper.selectOne(Wrappers.<User>lambdaQuery()
+ .eq(User::getName, documentControlled.getWriter())
+ .last("limit 1"));
+ }
+ manageRecordCheck.setWriteUser(writerUser == null ? null : writerUser.getId());
manageRecordCheck.setCheckUser(documentControlled.getDutyUser());
manageRecordCheck.setCheckState(manageDocumentControlled.getState());
manageRecordCheck.setRemark(documentControlled.getInstructions());
@@ -197,23 +229,45 @@
}
@Override
+ public int importManageDocumentControlled(List<ManageDocumentControlledImportDto> rows) {
+ LocalDate today = LocalDate.now();
+ LocalDateTime now = LocalDateTime.now();
+ String codePrefix = "WT" + CODE_DATE_FORMAT.format(today);
+ int count = 0;
+ for (ManageDocumentControlledImportDto dto : rows) {
+ Map<String, Object> row = new HashMap<>();
+ row.put("documentCode", numberGenerator.generateNumberWithPrefix(
+ 3, codePrefix, ManageDocumentControlled::getDocumentCode));
+ row.put("type", null);
+ row.put("name", dto.getName().trim());
+ row.put("version", trimToNull(dto.getVersion()));
+ row.put("writer", null);
+ row.put("submitDate", today);
+ row.put("publishDate", dto.getPublishDateValue());
+ row.put("implementDate", dto.getImplementDateValue());
+ row.put("instructions", null);
+ row.put("state", "鑽夌");
+ row.put("url", null);
+ row.put("dutyUser", null);
+ row.put("createTime", now);
+ row.put("updateTime", now);
+ count += manageDocumentControlledMapper.insertImportedDraft(row);
+ }
+ return count;
+ }
+
+ private String trimToNull(String value) {
+ return value == null || value.trim().isEmpty() ? null : value.trim();
+ }
+
+ @Override
public void checkManageDocumentControlledPdf(Long id, HttpServletResponse response) throws Exception {
ManageDocumentControlled manageDocumentControlled = manageDocumentControlledMapper.selectById(id);
- File file = new File(wordUrl + "/" + manageDocumentControlled.getUrl());
- FileInputStream fileInputStream = new FileInputStream(file);
- response.setContentType("application/pdf");
- response.setCharacterEncoding("UTF-8");
- response.setHeader("Content-disposition", "inline;filename=" + file.getName());
- response.setContentLength((int)file.length());
- OutputStream os = response.getOutputStream();
- // 灏嗘枃浠跺唴瀹瑰啓鍏ヨ緭鍑烘祦
- byte[] buffer = new byte[4096];
- int bytesRead;
- while ((bytesRead = fileInputStream.read(buffer)) != -1) {
- os.write(buffer, 0, bytesRead);
+ if (manageDocumentControlled == null || ObjectUtils.isEmpty(manageDocumentControlled.getUrl())) {
+ throw new ErrorException("鏂囦欢鏈笂浼�");
}
- os.flush();
- os.close();
+ // PDF 鐩存帴杈撳嚭锛學ord/鍥剧墖鍦ㄧ嚎杞� PDF锛屼緵鍓嶇棰勮鐩栫珷
+ DocumentPreviewUtils.writeAsPdf(new File(wordUrl + "/" + manageDocumentControlled.getUrl()), response);
}
}
--
Gitblit v1.9.3