<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.mes.device.mapper.DeviceGroupRelationMapper">
|
|
<!-- 批量添加设备到设备组 -->
|
<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)
|
SELECT
|
#{groupId} as group_id,
|
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
|
FROM (
|
<foreach collection="deviceIds" item="deviceId" separator=" UNION ALL ">
|
SELECT #{deviceId} as device_id
|
</foreach>
|
) t
|
WHERE NOT EXISTS (
|
SELECT 1 FROM device_group_relation
|
WHERE group_id = #{groupId} AND device_id = device_id AND is_deleted = 0
|
)
|
</insert>
|
|
<!-- 批量从设备组移除设备 -->
|
<update id="batchRemoveDevicesFromGroup" parameterType="map">
|
UPDATE device_group_relation
|
SET is_deleted = 1, updated_at = NOW(), updated_by = 'system'
|
WHERE group_id = #{groupId}
|
AND device_id IN
|
<foreach collection="deviceIds" item="deviceId" open="(" separator="," close=")">
|
#{deviceId}
|
</foreach>
|
AND is_deleted = 0
|
</update>
|
|
<!-- 更新设备在设备组中的角色 -->
|
<update id="updateDeviceRole" parameterType="map">
|
UPDATE device_group_relation
|
SET role = CASE
|
WHEN #{deviceRole} = 'CONTROLLER' THEN 1
|
WHEN #{deviceRole} = 'COLLABORATOR' THEN 2
|
WHEN #{deviceRole} = 'MONITOR' THEN 3
|
ELSE 2
|
END,
|
updated_at = NOW(),
|
updated_by = 'system'
|
WHERE group_id = #{groupId}
|
AND device_id = #{deviceId}
|
AND is_deleted = 0
|
</update>
|
|
<!-- 检查设备是否已在设备组中 -->
|
<select id="checkDeviceInGroup" parameterType="map" resultType="boolean">
|
SELECT COUNT(*) > 0
|
FROM device_group_relation
|
WHERE group_id = #{groupId}
|
AND device_id = #{deviceId}
|
AND is_deleted = 0
|
</select>
|
|
<!-- 删除设备组关联 -->
|
<delete id="deleteDeviceFromGroup">
|
UPDATE device_group_relation
|
SET is_deleted = 1, updated_at = NOW(), updated_by = 'system'
|
WHERE group_id = #{groupId}
|
AND device_id = #{deviceId}
|
AND is_deleted = 0
|
</delete>
|
|
</mapper>
|