From de1d6cf24efebced674fbaa46123648bf50bd74a Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 06 五月 2026 14:08:02 +0800
Subject: [PATCH] feat(device): 添加物联网设备支持功能

---
 src/main/java/com/ruoyi/device/pojo/DeviceLedger.java                                                    |    6 ++
 src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java                                           |    8 ++
 sql/device_ledger_add_iot_fields.sql                                                                     |    6 ++
 src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java                                                  |    6 ++
 src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java |    4 
 src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java    |    2 
 src/main/resources/mapper/device/DeviceLedgerMapper.xml                                                  |   10 +++
 src/main/java/com/ruoyi/http/service/controller/JclyController.java                                      |   82 ++++++++++++--------------
 src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml                      |    2 
 9 files changed, 76 insertions(+), 50 deletions(-)

diff --git a/sql/device_ledger_add_iot_fields.sql b/sql/device_ledger_add_iot_fields.sql
new file mode 100644
index 0000000..43e4d83
--- /dev/null
+++ b/sql/device_ledger_add_iot_fields.sql
@@ -0,0 +1,6 @@
+ALTER TABLE `device_ledger`
+    ADD COLUMN `is_iot_device` tinyint DEFAULT 0 COMMENT '鏄惁涓虹墿鑱旇澶囷細0-鍚︼紝1-鏄�' AFTER `type`,
+    ADD COLUMN `external_code` varchar(255) DEFAULT NULL COMMENT '澶栭儴缂栫爜' AFTER `is_iot_device`;
+
+CREATE INDEX `idx_device_ledger_iot_external_code`
+    ON `device_ledger` (`is_iot_device`, `external_code`);
diff --git a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
index 17ecb06..ca2fd94 100644
--- a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
+++ b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
@@ -94,4 +94,10 @@
 
     @ApiModelProperty("璁惧绫诲瀷")
     private String type;
+
+    @ApiModelProperty("鏄惁涓虹墿鑱旇澶� 0-鍚� 1-鏄�")
+    private Integer isIotDevice;
+
+    @ApiModelProperty("澶栭儴缂栫爜")
+    private String externalCode;
 }
diff --git a/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java b/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java
index b26c193..5f778a6 100644
--- a/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java
+++ b/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java
@@ -51,6 +51,12 @@
     @Excel(name = "璁惧鍖哄煙", sort = 11)
     private String areaName;
 
-    @Excel(name = "褰曞叆浜�", sort = 12)
+    @Excel(name = "鏄惁涓虹墿鑱旇澶�", sort = 12, readConverterExp = "0=鍚�,1=鏄�")
+    private Integer isIotDevice;
+
+    @Excel(name = "澶栭儴缂栫爜", sort = 13)
+    private String externalCode;
+
+    @Excel(name = "褰曞叆浜�", sort = 14)
     private String createUser;
 }
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java b/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
index 7631866..e9dab5a 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceLedger.java
@@ -109,4 +109,10 @@
 
     @ApiModelProperty("璁惧绫诲瀷")
     private String type;
+
+    @ApiModelProperty("鏄惁涓虹墿鑱旇澶� 0-鍚� 1-鏄�")
+    private Integer isIotDevice;
+
+    @ApiModelProperty("澶栭儴缂栫爜")
+    private String externalCode;
 }
diff --git a/src/main/java/com/ruoyi/http/service/controller/JclyController.java b/src/main/java/com/ruoyi/http/service/controller/JclyController.java
index 2f966d2..00bbb74 100644
--- a/src/main/java/com/ruoyi/http/service/controller/JclyController.java
+++ b/src/main/java/com/ruoyi/http/service/controller/JclyController.java
@@ -1,5 +1,9 @@
 package com.ruoyi.http.service.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.device.pojo.DeviceLedger;
+import com.ruoyi.device.service.IDeviceLedgerService;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.http.service.impl.RealTimeEnergyConsumptionServiceImpl;
@@ -10,8 +14,11 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.naming.ldap.PagedResultsControl;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @RestController
 @RequestMapping("/iot")
@@ -21,55 +28,42 @@
     @Autowired
     private RealTimeEnergyConsumptionServiceImpl realTimeEnergyConsumptionService;
 
-    private final String DEVICE_GUID = "90444196515214284663";
-
-    private final String DEVICE_GUID_2 = "90187099059463151919";
-
-    private final String DEVICE_GUID_3 = "90299548548536240693";
-
-    private final String DEVICE_GUID_4 = "90558670647417764794";
-
-    private final String DEVICE_GUID_5 = "90802100373808917949";
-
-    private final String DEVICE_GUID_6 = "90878497978270816672";
-
-    private final String DEVICE_GUID_7 = "90140305546502568592";
-
-    private final String DEVICE_GUID_8 = "90169534185157152878";
-
-    private final String DEVICE_GUID_9 = "90276104525436465283";
-
-    private final String DEVICE_GUID_10 = "90543538108119559625";
-
-    private final String DEVICE_GUID_11 = "90689981408895835872";
-
-    private final String DEVICE_GUID_12 = "90943795336343088068";
+    @Autowired
+    private IDeviceLedgerService deviceLedgerService;
 
     /**
      * 瀹炴椂鑾峰彇娓╂箍搴︼紝浜屾哀鍖栫⒊鏁版嵁
      */
     @GetMapping("/getRealData")
     public AjaxResult getRealData() {
-        List<Map<String,String>> maps = realTimeEnergyConsumptionService
-                .getRealData(Arrays.
-                        asList(
-                                DEVICE_GUID,
-                                DEVICE_GUID_2,
-                                DEVICE_GUID_3,
-                                DEVICE_GUID_4,
-                                DEVICE_GUID_5,
-                                DEVICE_GUID_6,
-                                DEVICE_GUID_7,
-                                DEVICE_GUID_8,
-                                DEVICE_GUID_9,
-                                DEVICE_GUID_10,
-                                DEVICE_GUID_11,
-                                DEVICE_GUID_12
-                        ));
+        List<DeviceLedger> iotDevices = deviceLedgerService.list(new LambdaQueryWrapper<DeviceLedger>()
+                .eq(DeviceLedger::getIsIotDevice, 1)
+                .isNotNull(DeviceLedger::getExternalCode)
+                .ne(DeviceLedger::getExternalCode, ""));
+
+        Map<String, String> guidDeviceNameMap = iotDevices.stream()
+                .filter(item -> StringUtils.isNotEmpty(item.getExternalCode()))
+                .collect(Collectors.toMap(
+                        item -> item.getExternalCode().trim(),
+                        item -> StringUtils.isNotEmpty(item.getDeviceName()) ? item.getDeviceName().trim() : "",
+                        (oldValue, newValue) -> StringUtils.isNotEmpty(oldValue) ? oldValue : newValue,
+                        LinkedHashMap::new
+                ));
+        List<String> guidList = new ArrayList<>(guidDeviceNameMap.keySet());
+
+        List<Map<String, String>> maps = realTimeEnergyConsumptionService
+                .getRealData(guidList);
+        for (Map<String, String> item : maps) {
+            String guid = item.get("guid");
+            if (StringUtils.isNotEmpty(guid)) {
+                String deviceName = guidDeviceNameMap.get(guid.trim());
+                if (StringUtils.isNotEmpty(deviceName)) {
+                    item.put("deviceName", deviceName);
+                }
+            }
+        }
         return AjaxResult.success(maps);
     }
-
-
 
     /**
      * 鑾峰彇鍘嗗彶鏁版嵁
@@ -78,7 +72,7 @@
     public AjaxResult getHistoryData(@RequestParam(value = "guid") String guid,
                                      @RequestParam(value = "startTime") long startTime,
                                      @RequestParam(value = "endTime") long endTime) {
-        List<Map<String,String>> maps = realTimeEnergyConsumptionService.getHistoryData(guid, startTime, endTime);
+        List<Map<String, String>> maps = realTimeEnergyConsumptionService.getHistoryData(guid, startTime, endTime);
         return AjaxResult.success(maps);
     }
 
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
index b166c89..e514da9 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/MeasuringInstrumentLedgerController.java
@@ -74,7 +74,7 @@
         if (sysUser == null) {
             return AjaxResult.error("鐢ㄦ埛涓嶅瓨鍦�");
         }
-        measuringInstrumentLedger.setUserName(sysUser.getUserName());
+        measuringInstrumentLedger.setUserName(sysUser.getNickName());
         boolean update = measuringInstrumentLedgerService.updateById(measuringInstrumentLedger);
         if (update) {
             return AjaxResult.success();
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
index fbaad14..a71cb5a 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/MeasuringInstrumentLedgerServiceImpl.java
@@ -109,7 +109,7 @@
             measuringInstrumentLedgerRecord.setEntryDate(req.getEntryDate());
             measuringInstrumentLedgerRecord.setValid(req.getValid());
             measuringInstrumentLedgerRecord.setUserId(req.getUserId());
-            measuringInstrumentLedgerRecord.setUserName(sysUser.getUserName());
+            measuringInstrumentLedgerRecord.setUserName(sysUser.getNickName());
             measuringInstrumentLedgerRecordMapper.insert(measuringInstrumentLedgerRecord);
             // 鍙拌处缁戝畾涓�娆�
 //            if(!CollectionUtils.isEmpty(req.getTempFileIds())){
@@ -137,7 +137,7 @@
         if (sysUser == null) {
             return false;
         }
-        measuringInstrumentLedger.setUserName(sysUser.getUserName());
+        measuringInstrumentLedger.setUserName(sysUser.getNickName());
         measuringInstrumentLedgerMapper.insert(measuringInstrumentLedger);
         if(!CollectionUtils.isEmpty(measuringInstrumentLedger.getTempFileIds())){
             migrateTempFilesToFormal(measuringInstrumentLedger.getId(), measuringInstrumentLedger.getTempFileIds(), FileNameType.MEASURING.getValue());
diff --git a/src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml b/src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml
index 5da6dff..22b3cf1 100644
--- a/src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml
+++ b/src/main/resources/mapper/collaborativeApproval/SealApplicationManagementMapper.xml
@@ -4,7 +4,7 @@
 
 
     <select id="listPage" resultType="com.ruoyi.collaborativeApproval.dto.SealApplicationManagementDTO">
-        select sam.*, su.user_name as create_user_name, d.dept_name as department,
+        select sam.*, su.nick_name as create_user_name, d.dept_name as department,
         su1.nick_name as approveUserName
         from seal_application_management sam
         left join sys_user su on sam.create_user = su.user_id
diff --git a/src/main/resources/mapper/device/DeviceLedgerMapper.xml b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
index 67522aa..a525abc 100644
--- a/src/main/resources/mapper/device/DeviceLedgerMapper.xml
+++ b/src/main/resources/mapper/device/DeviceLedgerMapper.xml
@@ -33,7 +33,9 @@
             dl.tenant_id,
             dl.is_depr,
             dl.annual_depreciation_amount,
-            dl.type
+            dl.type,
+            dl.is_iot_device AS isIotDevice,
+            dl.external_code AS externalCode
         FROM device_ledger dl
                  LEFT JOIN sys_user su ON dl.create_user = su.user_id
                  LEFT JOIN device_area da ON dl.area_id = da.id
@@ -71,6 +73,12 @@
             <if test="deviceLedger.tenantId != null">
                 AND dl.tenant_id = #{deviceLedger.tenantId}
             </if>
+            <if test="deviceLedger.isIotDevice != null">
+                AND dl.is_iot_device = #{deviceLedger.isIotDevice}
+            </if>
+            <if test="deviceLedger.externalCode != null and deviceLedger.externalCode != ''">
+                AND dl.external_code LIKE CONCAT('%', #{deviceLedger.externalCode}, '%')
+            </if>
         </where>
         ORDER BY dl.create_time DESC
     </select>

--
Gitblit v1.9.3