From bc1b3ee367f7e9aef88fc59647a9631f39eca6b5 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 23 四月 2025 09:19:55 +0800
Subject: [PATCH] 1.数采 2.国产网分仪

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceServiceImpl.java |   92 ++++++++++++++++++++++++++++-----------------
 1 files changed, 57 insertions(+), 35 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 3f9b658..8ca0333 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
@@ -511,19 +511,52 @@
     @Override
     @Transactional(isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)
     public void importExcel(List<Device> batch) {
-        if (CollectionUtils.isEmpty(batch)) {
+        if (CollUtil.isEmpty(batch)) {
             return;
         }
 
-        // 1. 鎵归噺鏌ヨ鍏宠仈鏁版嵁锛堢敤鎴枫�佸疄楠屽锛�
+        // 鎻愬墠鑾峰彇璁惧鍚嶇О銆佸瀷鍙峰拰绠$悊缂栧彿闆嗗悎
+        Set<String> deviceNames = batch.stream().map(Device::getDeviceName).collect(Collectors.toSet());
+        Set<String> specificationModels = batch.stream().map(Device::getSpecificationModel).collect(Collectors.toSet());
+        Set<String> managementNumbers = batch.stream().map(Device::getManagementNumber).collect(Collectors.toSet());
+
+        // 鎵归噺鏌ヨ鍏宠仈鏁版嵁锛堢敤鎴枫�佸疄楠屽锛�
         Map<String, Integer> userMap = queryUserMap(batch);
         Map<String, Integer> labMap = queryLabMap(batch);
 
-        // 2. 鍐呭瓨澶勭悊锛氳浆鎹㈠叧鑱斿瓧娈靛苟鍘婚噸
-        processBatch(batch, userMap, labMap);
+        // 鍐呭瓨澶勭悊锛氳浆鎹㈠叧鑱斿瓧娈靛苟鍘婚噸锛屽悓鏃舵媶鍒嗘彃鍏ュ拰鏇存柊鍒楄〃
+        List<Device> toInsert = new ArrayList<>();
+        List<Device> toUpdate = new ArrayList<>();
+        processBatch(batch, userMap, labMap, deviceNames, specificationModels, managementNumbers, toInsert, toUpdate);
 
-        // 3. 鎵归噺鎿嶄綔鏁版嵁搴�
-        batchOperate(batch);
+        // 鎵归噺鎿嶄綔鏁版嵁搴�
+        batchOperate(toInsert, toUpdate);
+    }
+
+    /**
+     * 鍒ゆ柇璇ヨ澶囨槸鍚﹀彲浠ユ暟閲�
+     * @param managementNumber
+     * @param request
+     * @return
+     */
+    @Override
+    public Result<?> determineWhetherToCollectData(String managementNumber, HttpServletRequest request) {
+        String ip = DataAcquisition.getIp(request);
+        List<Device> device = baseMapper.selectList(Wrappers.<Device>lambdaQuery()
+                .eq(Device::getIp, ip));
+        if (ObjectUtils.isEmpty(device)) {
+            return Result.success(false);
+        }
+        if (ObjectUtils.isEmpty(device.get(0).getFileType()) || ObjectUtils.isEmpty(device.get(0).getCollectUrl())) {
+            return Result.success(false);
+        } else {
+            return Result.success(true);
+        }
+    }
+
+    @Override
+    public Result<?> dataCollection1(HttpServletRequest request, DeviceCollectionDto dto) {
+        return null;
     }
 
     private Map<String, Integer> queryUserMap(List<Device> batch) {
@@ -552,31 +585,35 @@
         ).stream().collect(Collectors.toMap(Laboratory::getLaboratoryName, Laboratory::getId));
     }
 
-    private void processBatch(List<Device> batch, Map<String, Integer> userMap, Map<String, Integer> labMap) {
+    private void processBatch(List<Device> batch, Map<String, Integer> userMap, Map<String, Integer> labMap,
+                              Set<String> deviceNames, Set<String> specificationModels, Set<String> managementNumbers,
+                              List<Device> toInsert, List<Device> toUpdate) {
         // 棰勮绠楀敮涓�閿紙璁惧鍚嶇О+鍨嬪彿+绠$悊缂栧彿锛�
         Map<String, Device> existDevices = deviceMapper.selectList(
                 new LambdaQueryWrapper<Device>()
-                        .in(Device::getDeviceName, batch.stream().map(Device::getDeviceName).collect(Collectors.toSet()))
-                        .in(Device::getSpecificationModel, batch.stream().map(Device::getSpecificationModel).collect(Collectors.toSet()))
-                        .in(Device::getManagementNumber, batch.stream().map(Device::getManagementNumber).collect(Collectors.toSet()))
+                        .in(Device::getDeviceName, deviceNames)
+                        .in(Device::getSpecificationModel, specificationModels)
+                        .in(Device::getManagementNumber, managementNumbers)
         ).stream().collect(Collectors.toMap(
                 d -> d.getDeviceName() + "|" + d.getSpecificationModel() + "|" + d.getManagementNumber(),
                 Function.identity()
         ));
-
-        List<Device> toInsert = new ArrayList<>();
-        List<Device> toUpdate = new ArrayList<>();
 
         for (Device device : batch) {
             // 杞崲鍏宠仈瀛楁
             device.setEquipmentManager(userMap.get(device.getEquipmentManagerName()));
             device.setSubordinateDepartmentsId(labMap.get(device.getSubordinateDepartments()));
 
-            //璁惧鐘舵��
-            if (ObjectUtils.isNotEmpty(device.getDeviceStatusName())){
-                //鏌ュ瓧鍏稿搴旂殑鍊�
-                String status = sysDictDataMapper.selectDictValue("device_status", device.getDeviceStatusName());
-                device.setDeviceStatus(Integer.parseInt(status));
+            // 璁惧鐘舵��
+            if (ObjectUtils.isNotEmpty(device.getDeviceStatusName())) {
+                try {
+                    // 鏌ュ瓧鍏稿搴旂殑鍊�
+                    String status = sysDictDataMapper.selectDictValue("device_status", device.getDeviceStatusName());
+                    device.setDeviceStatus(Integer.parseInt(status));
+                } catch (Exception e) {
+                    // 澶勭悊寮傚父锛屼緥濡傝褰曟棩蹇�
+                    e.printStackTrace();
+                }
             }
 
             // 鐢熸垚鍞竴閿�
@@ -589,27 +626,12 @@
                 toInsert.add(device);
             }
         }
-
-        batch.clear();
-        batch.addAll(toInsert);
-        batch.addAll(toUpdate);
     }
 
-    private void batchOperate(List<Device> batch) {
-        // 鎷嗗垎鎻掑叆鍜屾洿鏂板垪琛�
-        List<Device> toInsert = new ArrayList<>();
-        List<Device> toUpdate = new ArrayList<>();
-        for (Device device : batch) {
-            if (device.getId() == null) {
-                toInsert.add(device);
-            } else {
-                toUpdate.add(device);
-            }
-        }
-
+    private void batchOperate(List<Device> toInsert, List<Device> toUpdate) {
         // 鎵归噺鎻掑叆
         if (CollUtil.isNotEmpty(toInsert)) {
-            baseMapper.insertBatchSomeColumn(toInsert);
+            deviceMapper.insertBatchSomeColumn(toInsert);
         }
 
         // 鎵归噺鏇存柊

--
Gitblit v1.9.3