| | |
| | | <!-- 批量添加设备到设备组 --> |
| | | <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=")"> |
| | |
| | | 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} |
| | |
| | | <!-- 删除设备组关联 --> |
| | | <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 |