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/ManageDocumentAlterServiceImpl.java |   71 ++++++++++++++++++++++++++++-------
 1 files changed, 56 insertions(+), 15 deletions(-)

diff --git a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java
index 6576d4b..f0b243e 100644
--- a/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java
+++ b/cnas-manage/src/main/java/com/ruoyi/manage/service/impl/ManageDocumentAlterServiceImpl.java
@@ -13,7 +13,9 @@
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.system.mapper.UserMapper;
+import com.ruoyi.manage.util.DocumentPreviewUtils;
 
 
 import com.ruoyi.manage.mapper.*;
@@ -97,6 +99,7 @@
         manageRecordAudit.setReason(manageDocumentAlter.getAlterNote());
         manageRecordAudit.setAlterUser(SecurityUtils.getUserId().intValue());
         manageRecordAudit.setMethod("淇");
+        manageRecordAudit.setCreateTime(LocalDate.now());
         if (ObjectUtils.isNotEmpty(manageDocumentAlter.getFile())) {
             String urlString;
             String pathName;
@@ -154,7 +157,44 @@
                 return 0;
             }
         }
-        return manageDocumentAlterMapper.updateById(manageDocumentAlter);
+        int result = manageDocumentAlterMapper.updateById(manageDocumentAlter);
+        // 鍙樻洿鍐呭淇敼鍚庡悓姝ュ埌鑷姩鐢熸垚鐨勪慨璁㈣褰曪紝閬垮厤涓や釜椤甸潰鍐呭瀵逛笉涓�
+        ManageRecordAudit linkedAudit = findLinkedAudit(manageDocumentAlter1);
+        if (linkedAudit != null) {
+            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeCode())) {
+                linkedAudit.setDocumentCode(manageDocumentAlter.getAlterBeforeCode());
+            }
+            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeName())) {
+                linkedAudit.setDocumentName(manageDocumentAlter.getAlterBeforeName());
+            }
+            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeVersion())) {
+                linkedAudit.setBeforeVersion(manageDocumentAlter.getAlterBeforeVersion());
+            }
+            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterAfterVersion())) {
+                linkedAudit.setAfterVersion(manageDocumentAlter.getAlterAfterVersion());
+            }
+            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterNote())) {
+                linkedAudit.setReason(manageDocumentAlter.getAlterNote());
+            }
+            if (ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterAfterUrl())) {
+                linkedAudit.setAfterUrl(manageDocumentAlter.getAlterAfterUrl());
+            }
+            manageRecordAuditMapper.updateById(linkedAudit);
+        }
+        return result;
+    }
+
+    // 鎸夊彉鏇村墠淇℃伅瀹氫綅鑷姩鐢熸垚鐨勯偅鏉′慨璁㈣褰�
+    private ManageRecordAudit findLinkedAudit(ManageDocumentAlter manageDocumentAlter) {
+        return manageRecordAuditMapper.selectOne(Wrappers.<ManageRecordAudit>lambdaQuery()
+                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeCode()), ManageRecordAudit::getDocumentCode, manageDocumentAlter.getAlterBeforeCode())
+                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeName()), ManageRecordAudit::getDocumentName, manageDocumentAlter.getAlterBeforeName())
+                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterBeforeVersion()), ManageRecordAudit::getBeforeVersion, manageDocumentAlter.getAlterBeforeVersion())
+                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getAlterAfterVersion()), ManageRecordAudit::getAfterVersion, manageDocumentAlter.getAlterAfterVersion())
+                .eq(ObjectUtils.isNotEmpty(manageDocumentAlter.getCreateUser()), ManageRecordAudit::getAlterUser, manageDocumentAlter.getCreateUser())
+                .eq(ManageRecordAudit::getMethod, "淇")
+                .orderByDesc(ManageRecordAudit::getId)
+                .last("limit 1"));
     }
 
     @Override
@@ -215,6 +255,8 @@
                 manageRecordAudit.setDocumentName(manageDocumentCancel.getName());
                 manageRecordAudit.setAlterThing("浣滃簾");
                 manageRecordAudit.setMethod("浣滃簾");
+                manageRecordAudit.setAlterUser(oldManageDocumentAlter.getCreateUser());
+                manageRecordAudit.setCreateTime(LocalDate.now());
                 manageRecordAuditMapper.insert(manageRecordAudit);
             }else {
                 //濡傛灉鏄瓨妗d笉鍙敤,閭e氨灏嗘枃浠舵竻鍗曠殑鐘舵�佹敼涓烘棤鏁�
@@ -233,27 +275,26 @@
         manageRecordCheck.setCheckState(manageDocumentAlter.getState());
         manageRecordCheck.setRemark(manageDocumentAlter.getAlterNote());
         manageRecordCheckMapper.insert(manageRecordCheck);
+        // 瀹℃牳閫氳繃鍚庡洖鍐欐壒鍑嗕汉锛屾枃浠朵慨璁㈢敵璇峰鎵硅褰曢噷鑳界洿鎺ョ湅鍒板鎵圭粨鏋�
+        ManageRecordAudit linkedAudit = findLinkedAudit(oldManageDocumentAlter);
+        if (linkedAudit != null
+                && "閫氳繃".equals(manageDocumentAlter.getState())
+                && linkedAudit.getRatifyUser() == null
+                && oldManageDocumentAlter.getCheckUser() != null) {
+            linkedAudit.setRatifyUser(oldManageDocumentAlter.getCheckUser());
+            manageRecordAuditMapper.updateById(linkedAudit);
+        }
         return manageDocumentAlterMapper.updateById(manageDocumentAlter);
     }
 
     @Override
     public void checkManageDocumentAlterPdf(Long id, HttpServletResponse response) throws Exception {
         ManageDocumentAlter manageDocumentAlter = manageDocumentAlterMapper.selectById(id);
-        File file = new File(wordUrl + "/" + manageDocumentAlter.getAlterAfterUrl());
-        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 (manageDocumentAlter == null || ObjectUtils.isEmpty(manageDocumentAlter.getAlterAfterUrl())) {
+            throw new ErrorException("鏂囦欢鏈笂浼�");
         }
-        os.flush();
-        os.close();
+        // PDF 鐩存帴杈撳嚭锛學ord/鍥剧墖鍦ㄧ嚎杞� PDF锛屼緵鍓嶇棰勮鐩栫珷
+        DocumentPreviewUtils.writeAsPdf(new File(wordUrl + "/" + manageDocumentAlter.getAlterAfterUrl()), response);
     }
 
     @Override

--
Gitblit v1.9.3