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