huang
2025-11-20 366ba040d2447bacd3455299425e3166f1f992bb
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