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/resources/mapper/device/DeviceGroupRelationMapper.xml |   40 ++++++++++++++++++++++++----------------
 1 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/mes-processes/mes-plcSend/src/main/resources/mapper/device/DeviceGroupRelationMapper.xml b/mes-processes/mes-plcSend/src/main/resources/mapper/device/DeviceGroupRelationMapper.xml
index e165559..33e312c 100644
--- a/mes-processes/mes-plcSend/src/main/resources/mapper/device/DeviceGroupRelationMapper.xml
+++ b/mes-processes/mes-plcSend/src/main/resources/mapper/device/DeviceGroupRelationMapper.xml
@@ -5,38 +5,46 @@
     <!-- 鎵归噺娣诲姞璁惧鍒拌澶囩粍 -->
     <insert id="batchAddDevicesToGroup" parameterType="map">
         INSERT INTO device_group_relation (group_id, device_id, role, status, priority, connection_order, 
-                                          created_at, updated_at, created_by, updated_by)
+                                          created_time, updated_time, created_by, updated_by)
         SELECT 
-            #{groupId} as group_id,
-            device_id,
+            #{groupId},
+            t.device_id,
             CASE 
                 WHEN #{deviceRole} = 'CONTROLLER' THEN 1
                 WHEN #{deviceRole} = 'COLLABORATOR' THEN 2
                 WHEN #{deviceRole} = 'MONITOR' THEN 3
                 ELSE 2
-            END as role,
-            1 as status,
-            5 as priority,
-            ROW_NUMBER() OVER (ORDER BY device_id) as connection_order,
-            NOW() as created_at,
-            NOW() as updated_at,
-            'system' as created_by,
-            'system' as updated_by
+            END,
+            1,
+            5,
+            (SELECT IFNULL(MAX(connection_order), 0) FROM device_group_relation WHERE group_id = #{groupId} AND is_deleted = 0) + 
+            t.row_num as connection_order,
+            NOW(),
+            NOW(),
+            'system',
+            'system'
+        FROM (
+            SELECT 
+                device_id,
+                @row_num := @row_num + 1 as row_num
         FROM (
             <foreach collection="deviceIds" item="deviceId" separator=" UNION ALL ">
                 SELECT #{deviceId} as device_id
             </foreach>
+            ) d
+            CROSS JOIN (SELECT @row_num := 0) r
+            ORDER BY device_id
         ) t
         WHERE NOT EXISTS (
-            SELECT 1 FROM device_group_relation 
-            WHERE group_id = #{groupId} AND device_id = device_id AND is_deleted = 0
+            SELECT 1 FROM device_group_relation dgr
+            WHERE dgr.group_id = #{groupId} AND dgr.device_id = t.device_id AND dgr.is_deleted = 0
         )
     </insert>
 
     <!-- 鎵归噺浠庤澶囩粍绉婚櫎璁惧 -->
     <update id="batchRemoveDevicesFromGroup" parameterType="map">
         UPDATE device_group_relation 
-        SET is_deleted = 1, updated_at = NOW(), updated_by = 'system'
+        SET is_deleted = 1, updated_time = NOW(), updated_by = 'system'
         WHERE group_id = #{groupId} 
         AND device_id IN 
         <foreach collection="deviceIds" item="deviceId" open="(" separator="," close=")">
@@ -54,7 +62,7 @@
                 WHEN #{deviceRole} = 'MONITOR' THEN 3
                 ELSE 2
             END,
-            updated_at = NOW(),
+            updated_time = NOW(),
             updated_by = 'system'
         WHERE group_id = #{groupId} 
         AND device_id = #{deviceId} 
@@ -73,7 +81,7 @@
     <!-- 鍒犻櫎璁惧缁勫叧鑱� -->
     <delete id="deleteDeviceFromGroup">
         UPDATE device_group_relation 
-        SET is_deleted = 1, updated_at = NOW(), updated_by = 'system'
+        SET is_deleted = 1, updated_time = NOW(), updated_by = 'system'
         WHERE group_id = #{groupId} 
         AND device_id = #{deviceId} 
         AND is_deleted = 0

--
Gitblit v1.8.0