From 366ba040d2447bacd3455299425e3166f1f992bb Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期四, 20 十一月 2025 14:38:32 +0800
Subject: [PATCH] 添加大车、大理片笼以及多设备串行/并行执行写入基础逻辑

---
 mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGroupRelationMapper.java |   27 ++++++++++++++++++++++++---
 1 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGroupRelationMapper.java b/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGroupRelationMapper.java
index f9eb11f..48a403a 100644
--- a/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGroupRelationMapper.java
+++ b/mes-processes/mes-plcSend/src/main/java/com/mes/device/mapper/DeviceGroupRelationMapper.java
@@ -57,11 +57,15 @@
      * @return 璁惧淇℃伅鍒楄〃
      */
     @Select("SELECT d.id, d.device_name as deviceName, d.device_code as deviceCode, " +
-            "d.device_type as deviceType, dgr.role, d.status, " +
-            "d.last_heartbeat as lastHeartbeat, d.is_online as isOnline " +
+            "d.device_type as deviceType, d.plc_ip as plcIp, dgr.role, d.status, " +
+            "ds.last_heartbeat as lastHeartbeat, " +
+            "CASE WHEN ds.status = 'ONLINE' THEN TRUE ELSE FALSE END as isOnline " +
             "FROM device_config d " +
             "INNER JOIN device_group_relation dgr ON d.id = dgr.device_id " +
-            "WHERE dgr.group_id = #{groupId} AND dgr.is_deleted = 0 AND d.is_deleted = 0")
+            "LEFT JOIN device_status ds ON d.device_id = ds.device_id " +
+            "  AND ds.id = (SELECT MAX(id) FROM device_status WHERE device_id = d.device_id) " +
+            "WHERE dgr.group_id = #{groupId} AND dgr.is_deleted = 0 AND d.is_deleted = 0 " +
+            "ORDER BY dgr.connection_order ASC")
     List<DeviceGroupVO.DeviceInfo> getGroupDevices(@Param("groupId") Long groupId);
 
     /**
@@ -93,4 +97,21 @@
             "  AND d.is_deleted = 0 " +
             "ORDER BY IFNULL(dgr.connection_order, 0) ASC, dgr.id ASC")
     List<DeviceConfig> getOrderedDeviceConfigs(@Param("groupId") Long groupId);
+
+    /**
+     * 鑾峰彇璁惧缁勪笅鐨勫湪绾胯澶囨暟閲�
+     * 
+     * @param groupId 璁惧缁処D
+     * @return 鍦ㄧ嚎璁惧鏁伴噺
+     */
+    @Select("SELECT COUNT(DISTINCT d.id) " +
+            "FROM device_config d " +
+            "INNER JOIN device_group_relation dgr ON d.id = dgr.device_id " +
+            "LEFT JOIN device_status ds ON d.device_id = ds.device_id " +
+            "  AND ds.id = (SELECT MAX(id) FROM device_status WHERE device_id = d.device_id) " +
+            "WHERE dgr.group_id = #{groupId} " +
+            "  AND dgr.is_deleted = 0 " +
+            "  AND d.is_deleted = 0 " +
+            "  AND ds.status = 'ONLINE'")
+    Integer getOnlineDeviceCountByGroupId(@Param("groupId") Long groupId);
 }
\ No newline at end of file

--
Gitblit v1.8.0