From bcbdb084c3a3a0a4de8fca1aa16caf0bc4681ddf Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期二, 27 十月 2026 09:41:51 +0800
Subject: [PATCH] feat(device): 删除核查计划明细时连带清理未审核记录和附件,已审核记录仍禁止删除

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java |   66 +++++++++++++++++++++-----------
 1 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
index 14a060c..810d54e 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java
@@ -17,17 +17,22 @@
 import com.ruoyi.basic.pojo.StructureItemParameter;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.common.core.domain.entity.SysDictData;
-import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.User;
 import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.device.dto.*;
 import com.ruoyi.device.excel.upload.DeviceImport;
 import com.ruoyi.device.mapper.CollectBridgeMapper;
+import com.ruoyi.device.mapper.DeviceCalibrationPlanDetailMapper;
+import com.ruoyi.device.mapper.DeviceCalibrationPlanMapper;
 import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
 import com.ruoyi.device.mapper.DeviceMapper;
 import com.ruoyi.device.mapper.DeviceMetricRecordMapper;
 import com.ruoyi.device.pojo.*;
 import com.ruoyi.device.service.DataConfigService;
+import com.ruoyi.device.service.DeviceCalibrationPlanService;
+import com.ruoyi.device.service.DeviceExaminePlanService;
+import com.ruoyi.device.service.DeviceMaintenancePlanService;
 import com.ruoyi.device.service.DeviceService;
 import com.ruoyi.device.service.DeviceDocumentsService;
 import com.ruoyi.device.utils.DataAcquisition;
@@ -36,7 +41,6 @@
 import com.ruoyi.inspect.pojo.InsProduct;
 import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
 import com.ruoyi.system.mapper.SysDictDataMapper;
-import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.UserMapper;
 import lombok.AllArgsConstructor;
 import org.apache.logging.log4j.util.Strings;
@@ -68,8 +72,6 @@
 
     private UserMapper userMapper;
 
-    private SysDeptMapper sysDeptMapper;
-
     private SysDictDataMapper sysDictDataMapper;
 
     private StructureItemParameterMapper structureItemParameterMapper;
@@ -86,6 +88,12 @@
 
     private CollectBridgeMapper collectBridgeMapper;
 
+    private DeviceCalibrationPlanService deviceCalibrationPlanService;
+
+    private DeviceExaminePlanService deviceExaminePlanService;
+
+    private DeviceMaintenancePlanService deviceMaintenancePlanService;
+
     @Override
     public IPage<DeviceDto> selectDeviceParameter(Page page, DeviceDto itemParameter, Boolean laboratoryNameIsNull) {
         IPage<DeviceDto> iPage = deviceMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(itemParameter), laboratoryNameIsNull);
@@ -94,7 +102,13 @@
 
     @Override
     public int addDeviceParameter(Device itemParameter) {
-        return deviceMapper.insert(itemParameter);
+        int rows = deviceMapper.insert(itemParameter);
+        Device device = deviceMapper.selectById(itemParameter.getId());
+        if (device != null && (device.getNextExamineDate() != null
+                || (device.getLastExamineDate() != null && StringUtils.isNotBlank(device.getExamineCycle())))) {
+            deviceExaminePlanService.syncDeviceExamineDetail(device);
+        }
+        return rows;
     }
 
     @Override
@@ -105,8 +119,23 @@
     @Transactional(rollbackFor = Exception.class)
     @Override
     public int upDeviceParameter(Device itemParameter) {
-
-        return deviceMapper.updateById(itemParameter);
+        int rows = deviceMapper.updateById(itemParameter);
+        // 妗f淇濉啓浜嗘牎鍑嗕俊鎭悗锛屽埌鐐圭殑鑷姩鍚屾鍒拌澶囨牎鍑嗚鍒�
+        Device device = deviceMapper.selectById(itemParameter.getId());
+        if (device != null && (device.getNextCalibrationDate() != null || device.getActivationDate() != null)) {
+            deviceCalibrationPlanService.syncDeviceCalibrationDetail(device);
+        }
+        // 妗f淇濉啓浜嗘牳鏌ヤ俊鎭悗锛屽埌鐐圭殑鑷姩鍚屾鍒拌澶囨牳鏌ヨ鍒�
+        if (device != null && (device.getNextExamineDate() != null
+                || (device.getLastExamineDate() != null && StringUtils.isNotBlank(device.getExamineCycle())))) {
+            deviceExaminePlanService.syncDeviceExamineDetail(device);
+        }
+        // 妗f淇濉啓浜嗕繚鍏讳俊鎭悗锛屽埌鐐圭殑鑷姩鍚屾鍒拌澶囦繚鍏昏鍒�
+        if (device != null && (device.getNextMaintenanceDate() != null
+                || (device.getLastMaintenanceDate() != null && StringUtils.isNotBlank(device.getMaintenanceCycle())))) {
+            deviceMaintenancePlanService.syncDeviceMaintenanceDetail(device);
+        }
+        return rows;
     }
 
     @Override
@@ -458,8 +487,9 @@
     }
 
     @Override
-    public void exportEquipmentDetails(HttpServletResponse response) {
-        List<Device> deviceList = baseMapper.selectList(null);
+    public void exportEquipmentDetails(DeviceDto itemParameter, HttpServletResponse response) {
+        // 鎸夊綋鍓嶇瓫閫夋潯浠跺鍑�(鏉′欢涓虹┖鏃跺鍑哄叏閮�)
+        List<Device> deviceList = baseMapper.selectList(QueryWrappers.<Device>queryWrappers(itemParameter));
         List<DeviceExport> deviceExportList = new ArrayList<>();
 
         int index = 1;
@@ -550,19 +580,16 @@
         Set<String> fileKeys = new HashSet<>();
         for (int i = 0; i < rows.size(); i++) {
             String managementNumber = required(rows.get(i).getManagementNumber(), i + 2, "绠$悊缂栧彿");
-            String deviceName = required(rows.get(i).getDeviceName(), i + 2, "浠櫒鍚嶇О");
+            String deviceName = required(rows.get(i).getDeviceName(), i + 2, "璁惧鍚嶇О");
             String specificationModel = required(rows.get(i).getSpecificationModel(), i + 2, "瑙勬牸鍨嬪彿");
             if (!fileKeys.add(deviceKey(deviceName, specificationModel, managementNumber))) {
-                throw new RuntimeException("绗�" + (i + 2) + "琛岋細浠櫒鍚嶇О+瑙勬牸鍨嬪彿+绠$悊缂栧彿鍦ㄦ枃浠朵腑閲嶅");
+                throw new RuntimeException("绗�" + (i + 2) + "琛岋細璁惧鍚嶇О+瑙勬牸鍨嬪彿+绠$悊缂栧彿鍦ㄦ枃浠朵腑閲嶅");
             }
         }
         Set<String> existingKeys = baseMapper.selectList(Wrappers.<Device>lambdaQuery()
                         .select(Device::getDeviceName, Device::getSpecificationModel, Device::getManagementNumber))
                 .stream().map(d -> deviceKey(d.getDeviceName(), d.getSpecificationModel(), d.getManagementNumber())).collect(Collectors.toSet());
 
-        Map<String, List<SysDept>> departmentMap = sysDeptMapper.selectDeptList(new SysDept()).stream()
-                .filter(item -> StringUtils.isNotBlank(item.getDeptName()))
-                .collect(Collectors.groupingBy(item -> item.getDeptName().trim()));
         Map<String, List<User>> userMap = userMapper.selectList(Wrappers.<User>lambdaQuery()
                         .isNotNull(User::getName).select(User::getId, User::getName))
                 .stream().collect(Collectors.groupingBy(item -> item.getName().trim()));
@@ -574,16 +601,10 @@
             int rowNumber = i + 2;
             DeviceImport row = rows.get(i);
             String managementNumber = required(row.getManagementNumber(), rowNumber, "绠$悊缂栧彿");
-            String deviceName = required(row.getDeviceName(), rowNumber, "浠櫒鍚嶇О");
+            String deviceName = required(row.getDeviceName(), rowNumber, "璁惧鍚嶇О");
             String specificationModel = required(row.getSpecificationModel(), rowNumber, "瑙勬牸鍨嬪彿");
             if (existingKeys.contains(deviceKey(deviceName, specificationModel, managementNumber))) {
-                throw new RuntimeException("绗�" + rowNumber + "琛岋細浠櫒鍚嶇О鈥�" + deviceName + "鈥�+瑙勬牸鍨嬪彿鈥�" + specificationModel + "鈥�+绠$悊缂栧彿鈥�" + managementNumber + "鈥濆凡瀛樺湪");
-            }
-
-            String laboratoryName = required(row.getLaboratoryName(), rowNumber, "鎵�灞為儴闂�");
-            List<SysDept> departments = departmentMap.get(laboratoryName);
-            if (CollectionUtils.isEmpty(departments) || departments.size() > 1) {
-                throw new RuntimeException("绗�" + rowNumber + "琛岋細鎵�灞為儴闂ㄢ��" + laboratoryName + "鈥濅笉瀛樺湪鎴栦笉鍞竴");
+                throw new RuntimeException("绗�" + rowNumber + "琛岋細璁惧鍚嶇О鈥�" + deviceName + "鈥�+瑙勬牸鍨嬪彿鈥�" + specificationModel + "鈥�+绠$悊缂栧彿鈥�" + managementNumber + "鈥濆凡瀛樺湪");
             }
 
             Device device = new Device();
@@ -591,7 +612,6 @@
             device.setSpecificationModel(specificationModel);
             device.setManagementNumber(managementNumber);
             device.setActivationDate(parseDate(row.getActivationDate()));
-            device.setSubordinateDepartmentsId(departments.get(0).getDeptId().intValue());
             device.setDeviceStatus(Integer.valueOf(dictValue(statusMap, row.getDeviceStatus(), rowNumber, "褰撳墠鐘舵��", true)));
             device.setCalibrationDate(required(row.getCalibrationDate(), rowNumber, "鏍″噯鍛ㄦ湡(鏈�)"));
             device.setEnDeviceName(trim(row.getEnDeviceName()));

--
Gitblit v1.9.3