From 801854b46b8ad6b003fc767e0cf85367de8843eb Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 28 七月 2026 18:12:47 +0800
Subject: [PATCH] fix: 安全设施巡检修改

---
 src/main/java/com/ruoyi/safe/service/impl/SafeHiddenServiceImpl.java |  110 +++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 87 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/ruoyi/safe/service/impl/SafeHiddenServiceImpl.java b/src/main/java/com/ruoyi/safe/service/impl/SafeHiddenServiceImpl.java
index 993556e..0856823 100644
--- a/src/main/java/com/ruoyi/safe/service/impl/SafeHiddenServiceImpl.java
+++ b/src/main/java/com/ruoyi/safe/service/impl/SafeHiddenServiceImpl.java
@@ -3,23 +3,31 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.project.system.domain.SysNotice;
-import com.ruoyi.project.system.mapper.SysNoticeMapper;
-import com.ruoyi.project.system.service.ISysNoticeService;
-import com.ruoyi.project.system.service.impl.SysNoticeServiceImpl;
-import com.ruoyi.safe.dto.SafeHiddenDto;
-import com.ruoyi.safe.pojo.SafeHidden;
-import com.ruoyi.safe.mapper.SafeHiddenMapper;
-import com.ruoyi.safe.service.SafeHiddenService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.mapper.StorageAttachmentMapper;
+import com.ruoyi.basic.mapper.StorageBlobMapper;
+import com.ruoyi.basic.pojo.StorageAttachment;
+import com.ruoyi.project.system.domain.SysNotice;
+import com.ruoyi.project.system.service.ISysDictDataService;
+import com.ruoyi.project.system.service.ISysNoticeService;
+import com.ruoyi.safe.dto.SafeHiddenDto;
+import com.ruoyi.safe.mapper.SafeHiddenFileMapper;
+import com.ruoyi.safe.mapper.SafeHiddenMapper;
+import com.ruoyi.safe.pojo.SafeHidden;
+import com.ruoyi.safe.pojo.SafeHiddenFile;
+import com.ruoyi.safe.service.SafeHiddenService;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -31,13 +39,15 @@
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
 public class SafeHiddenServiceImpl extends ServiceImpl<SafeHiddenMapper, SafeHidden> implements SafeHiddenService {
 
-    @Autowired
-    private SafeHiddenMapper safeHiddenMapper;
-    @Autowired
-    private ISysNoticeService sysNoticeService;
-
+    private final SafeHiddenMapper safeHiddenMapper;
+    private final ISysNoticeService sysNoticeService;
+    private final ISysDictDataService sysDictDataService;
+    private final StorageAttachmentMapper storageAttachmentMapper;
+    private final StorageBlobMapper storageBlobMapper;
+    private final SafeHiddenFileMapper safeHiddenFileMapper;
 
     @Override
     public IPage<SafeHiddenDto> pageSafeHidden(Page page, SafeHiddenDto safeHiddenDto) {
@@ -47,33 +57,87 @@
     @Override
     public int add(SafeHidden safeHidden) {
         safeHiddenMapper.insert(safeHidden);
-        String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyMMdd"));
         String no = "YH" + String.format("%s%03d", datePrefix, safeHidden.getId());
         safeHidden.setHiddenCode(no);
         safeHiddenMapper.updateById(safeHidden);
-        //娑堟伅閫氱煡
+
+        String type = sysDictDataService.selectDictLabel("hidden_danger_type", safeHidden.getType());
         sysNoticeService.simpleNoticeByUser("闅愭偅鎺掓煡涓婃姤鏁存敼",
-                "闅愭偅绫诲瀷锛�"+safeHidden.getType()+"\n"+
-                        "闅愭偅椋庨櫓绛夌骇锛�"+safeHidden.getRiskLevel()+"\n"+
-                        "闅愭偅鍏蜂綋浣嶇疆锛�"+safeHidden.getLocation()+"\n"+
-                        "闅愭偅鎻忚堪锛�"+safeHidden.getHiddenDesc()+"\n"+
-                        "鏁存敼瀹屾垚鏈熼檺(鏃ユ湡)锛�"+safeHidden.getRectifyTime(),
+                "闅愭偅绫诲瀷锛�" + type + "\t" +
+                        "闅愭偅椋庨櫓绛夌骇锛�" + safeHidden.getRiskLevel() + "\t" +
+                        "闅愭偅鍏蜂綋浣嶇疆锛�" + safeHidden.getLocation() + "\t" +
+                        "闅愭偅鎻忚堪锛�" + safeHidden.getHiddenDesc() + "\t" +
+                        "鏁存敼瀹屾垚鏈熼檺(鏃ユ湡)锛�" + safeHidden.getRectifyTime(),
                 Arrays.asList(Long.valueOf(safeHidden.getRectifyUserId())),
-                "/collaborativeApproval/approvalProcess?id=" + safeHidden.getId());
+                "/safeProduction/dangerInvestigation?id=" + safeHidden.getId());
         return 0;
     }
 
     @Override
     public int delSafeHidden(List<Integer> ids) {
+        if (ids == null || ids.isEmpty()) {
+            return 0;
+        }
+
         List<SafeHidden> safeHiddens = safeHiddenMapper.selectBatchIds(ids);
+        List<String> rectifiedHiddenCodes = safeHiddens.stream()
+                .filter(this::isRectified)
+                .map(item -> StringUtils.hasText(item.getHiddenCode()) ? item.getHiddenCode() : String.valueOf(item.getId()))
+                .collect(Collectors.toList());
+        if (!rectifiedHiddenCodes.isEmpty()) {
+            throw new RuntimeException("宸叉暣鏀圭殑闅愭偅涓嶈兘鍒犻櫎锛�" + String.join("銆�", rectifiedHiddenCodes));
+        }
+
         for (SafeHidden safeHidden : safeHiddens) {
-            //  鍒犻櫎瀵瑰簲鐨勬秷鎭�氱煡
             sysNoticeService.remove(new LambdaQueryWrapper<SysNotice>()
                     .eq(SysNotice::getNoticeTitle, "闅愭偅鎺掓煡涓婃姤鏁存敼")
                     .eq(SysNotice::getSenderId, safeHidden.getCreateUser())
                     .apply("CAST(notice_content AS CHAR) LIKE CONCAT('%', {0}, '%')", safeHidden.getId()));
         }
+        deleteAttachments(ids);
         safeHiddenMapper.deleteBatchIds(ids);
         return 0;
     }
+
+    private boolean isRectified(SafeHidden safeHidden) {
+        return safeHidden.getRectifyActualTime() != null
+                || StringUtils.hasText(safeHidden.getRectifyMeasures())
+                || safeHidden.getVerifyTime() != null
+                || StringUtils.hasText(safeHidden.getVerifyResult())
+                || StringUtils.hasText(safeHidden.getVerifyRemark());
+    }
+
+    private void deleteAttachments(List<Integer> ids) {
+        List<Long> recordIds = ids.stream()
+                .filter(Objects::nonNull)
+                .map(Integer::longValue)
+                .collect(Collectors.toList());
+        if (recordIds.isEmpty()) {
+            return;
+        }
+
+        List<StorageAttachment> storageAttachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
+                .eq(StorageAttachment::getRecordType, RecordTypeEnum.SAFE_HIDDEN.getType())
+                .in(StorageAttachment::getRecordId, recordIds));
+        if (!storageAttachments.isEmpty()) {
+            List<Long> storageAttachmentIds = storageAttachments.stream()
+                    .map(StorageAttachment::getId)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toList());
+            List<Long> storageBlobIds = storageAttachments.stream()
+                    .map(StorageAttachment::getStorageBlobId)
+                    .filter(Objects::nonNull)
+                    .distinct()
+                    .collect(Collectors.toList());
+            if (!storageAttachmentIds.isEmpty()) {
+                storageAttachmentMapper.deleteByIds(storageAttachmentIds);
+            }
+            if (!storageBlobIds.isEmpty()) {
+                storageBlobMapper.deleteByIds(storageBlobIds);
+            }
+        }
+
+        safeHiddenFileMapper.delete(new LambdaQueryWrapper<SafeHiddenFile>().in(SafeHiddenFile::getSafeHiddenId, ids));
+    }
 }

--
Gitblit v1.9.3