fastbee/fastbee-service/fastbee-iot-service/src/main/resources/mapper/iot/DeviceMapper.xml

1217 lines
61 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.fastbee.iot.mapper.DeviceMapper">
<resultMap type="com.fastbee.iot.domain.Device" id="DeviceResult">
<result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" />
<result property="productId" column="product_id" />
<result property="productName" column="product_name" />
<result property="tenantId" column="tenant_id" />
<result property="tenantName" column="tenant_name" />
<result property="serialNumber" column="serial_number" />
<result property="firmwareVersion" column="firmware_version" />
<result property="status" column="status" />
<result property="deviceType" column="device_type" />
<result property="rssi" column="rssi" />
<result property="isShadow" column="is_shadow" />
<result property="locationWay" column="location_way" />
<result property="thingsModelValue" column="things_model_value" />
<result property="networkAddress" column="network_address" />
<result property="networkIp" column="network_ip" />
<result property="longitude" column="longitude" />
<result property="latitude" column="latitude" />
<result property="activeTime" column="active_time" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
<result property="imgUrl" column="img_url" />
<result property="summary" column="summary" />
<result property="isOwner" column="is_owner" />
<result property="gwDevCode" column="gw_dev_code"/>
<result property="isSimulate" column="is_simulate"/>
<result property="slaveId" column="slave_id" />
<result property="transport" column="transport" />
<result property="guid" column="guid" />
<result property="protocolCode" column="protocol_code" />
<result property="imei" column="imei" />
<result property="iccid" column="iccid" />
<result property="projectId" column="project_id" />
<result property="projectName" column="project_name" />
<result property="baselineDeviceId" column="baseline_device_id" />
</resultMap>
<!--
轻量查询结果映射:仅用于 IMEI/ICCID 读取场景。
目的:避免 selectDeviceResultBySerialNumber 拉取过多无关字段。
-->
<resultMap type="com.fastbee.iot.domain.Device" id="DeviceImeiIccidTypeResult">
<result property="deviceType" column="device_type" />
<result property="imei" column="imei" />
<result property="iccid" column="iccid" />
<result property="longitude" column="longitude" />
<result property="latitude" column="latitude" />
</resultMap>
<resultMap type="com.fastbee.iot.model.DeviceShortOutput" id="DeviceShortResult">
<result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" />
<result property="productId" column="product_id" />
<result property="productName" column="product_name" />
<result property="deviceType" column="device_type" />
<result property="tenantId" column="tenant_id" />
<result property="tenantName" column="tenant_name" />
<result property="serialNumber" column="serial_number" />
<result property="firmwareVersion" column="firmware_version" />
<result property="status" column="status" />
<result property="activeTime" column="active_time" />
<result property="createTime" column="create_time" />
<result property="rssi" column="rssi" />
<result property="isShadow" column="is_shadow" />
<result property="isSimulate" column="is_simulate" />
<result property="locationWay" column="location_way" />
<result property="thingsModelValue" column="things_model_value" />
<result property="imgUrl" column="img_url" />
<result property="isOwner" column="is_owner" />
<result property="gwDevCode" column="gw_dev_code"/>
<result property="subDeviceCount" column="sub_device_count"/>
<result property="slaveId" column="slave_id" />
<result property="protocolCode" column="protocol_code"/>
<result property="transport" column="transport" />
<result property="guid" column="guid" />
<result property="imei" column="imei" />
<result property="iccid" column="iccid" />
<result property="projectId" column="project_id" />
<result property="projectName" column="project_name" />
<result property="longitude" column="longitude" />
<result property="latitude" column="latitude" />
</resultMap>
<resultMap type="com.fastbee.iot.model.DeviceAllShortOutput" id="DeviceAllShortResult">
<result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" />
<result property="productName" column="product_name" />
<result property="deviceType" column="device_type" />
<result property="userName" column="tenant_name" />
<result property="serialNumber" column="serial_number" />
<result property="firmwareVersion" column="firmware_version" />
<result property="status" column="status" />
<result property="activeTime" column="active_time" />
<result property="rssi" column="rssi" />
<result property="isShadow" column="is_shadow" />
<result property="locationWay" column="location_way" />
<result property="networkAddress" column="network_address" />
<result property="longitude" column="longitude" />
<result property="latitude" column="latitude" />
<result property="isOwner" column="is_owner" />
<result property="subDeviceCount" column="sub_device_count"/>
<result property="imei" column="imei" />
<result property="iccid" column="iccid" />
<result property="projectId" column="project_id" />
<result property="projectName" column="project_name" />
</resultMap>
<resultMap type="com.fastbee.iot.model.UserAndTenant" id="UserAndTenantResult">
<result property="userId" column="user_id" />
</resultMap>
<resultMap type="com.fastbee.iot.model.ProductAuthenticateModel" id="DeviceAuthenticateResult">
<result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" />
<result property="status" column="status" />
<result property="productId" column="product_id" />
<result property="productName" column="product_name" />
<result property="productStatus" column="product_status" />
<result property="isAuthorize" column="is_authorize" />
<result property="serialNumber" column="serial_number" />
<result property="mqttAccount" column="mqtt_account" />
<result property="mqttPassword" column="mqtt_password" />
<result property="mqttSecret" column="mqtt_secret" />
<result property="vertificateMethod" column="vertificate_method" />
</resultMap>
<resultMap type="com.fastbee.iot.model.ThingsModels.ThingsModelValuesOutput" id="DeviceThingsValueResult">
<result property="deviceId" column="device_id" />
<result property="deviceName" column="device_name" />
<result property="status" column="status" />
<result property="isShadow" column="is_shadow" />
<result property="isSimulate" column="is_Simulate" />
<result property="productId" column="product_id" />
<result property="productName" column="product_name" />
<result property="serialNumber" column="serial_number" />
<result property="thingsModelValue" column="things_model_value" />
<result property="tenantId" column="tenant_id" />
<result property="tenantName" column="tenant_name" />
<result property="slaveId" column="slave_id" />
</resultMap>
<resultMap type="com.fastbee.iot.model.DeviceMqttVO" id="DeviceMqttVOResult">
<result property="deviceId" column="device_id"/>
<result property="serialNumber" column="serial_number"/>
<result property="productId" column="product_id"/>
<result property="tenantId" column="tenant_id"/>
<result property="mqttAccount" column="mqtt_account"/>
<result property="mqttPassword" column="mqtt_password"/>
<result property="mqttSecret" column="mqtt_secret"/>
<result property="vertificateMethod" column="vertificate_method"/>
<result property="isAuthorize" column="is_authorize"/>
<result property="transport" column="transport"/>
</resultMap>
<resultMap type="com.fastbee.iot.model.DeviceRelateAlertLogVO" id="DeviceRelateAlertLogVOResult">
<result property="deviceId" column="device_id"/>
<result property="serialNumber" column="serial_number"/>
<result property="deviceName" column="device_name" />
<result property="userId" column="user_id"/>
</resultMap>
<resultMap type="com.fastbee.iot.model.DeviceNumberStatus" id="DeviceStatusResult">
<result property="serialNumber" column="serial_number"/>
<result property="status" column="status" />
</resultMap>
<resultMap type="com.fastbee.common.core.device.DeviceAndProtocol" id="DeviceAndProtocolResult">
<result property="serialNumber" column="serial_number"/>
<result property="protocolCode" column="protocol_code"/>
<result property="productId" column="product_id"/>
<result property="deviceId" column="device_id"/>
<result property="transport" column="transport"/>
<result property="deviceType" column="device_type"/>
<result property="slaveId" column="slave_id"/>
<result property="proSlaveId" column="pro_slave_id"/>
<result property="gwDeviceId" column="gw_device_id"/>
<result property="gwProductId" column="gw_product_id"/>
<result property="gwSerialNumber" column="gw_serial_number"/>
<result property="gwDeviceName" column="gw_device_name"/>
<result property="gwProductName" column="gw_product_name"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
<sql id="selectDeviceVo">
select device_id,
device_name,
product_id,
product_name,
tenant_id,
tenant_name,
serial_number,
gw_dev_code,
firmware_version,
status,
rssi,
is_shadow,
is_simulate,
location_way,
things_model_value,
network_address,
network_ip,
longitude,
latitude,
active_time,
create_time,
update_time,
img_url,
summary,
imei,
iccid,
remark,
slave_id,
project_id,
project_name
from iot_device
</sql>
<sql id="selectDeviceShortVo">
select device_id,
device_name,
product_id,
product_name,
tenant_id,
tenant_name,
serial_number,
firmware_version,
status,
rssi,
is_shadow,
is_simulate,
location_way,
things_model_value,
active_time,
imei,
iccid,
img_url,
slave_id,
project_id,
project_name
from iot_device
</sql>
<sql id="selectWebhookDeviceVo">
select device_id,
device_name,
product_id,
serial_number,
tenant_id,
tenant_name,
status,
is_shadow,
is_simulate,
rssi,
location_way,
things_model_value,
active_time
from iot_device
</sql>
<select id="selectDeviceList" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceResult">
<include refid="selectDeviceVo"/>
<where>
<if test="gwDevCode != null and gwDevCode != ''">and gw_dev_code = #{gwDevCode}</if>
<if test="deviceName != null and deviceName != ''"> and device_name like concat('%', #{deviceName}, '%')</if>
<if test="productId != null "> and product_id = #{productId}</if>
<if test="productName != null and productName != ''"> and product_name like concat('%', #{productName}, '%')</if>
<if test="tenantId != null "> and tenant_id = #{tenantId}</if>
<if test="tenantName != null and tenantName != ''"> and tenant_name like concat('%', #{tenantName}, '%')</if>
<if test="projectId != null and projectId != 0"> and project_id = #{projectId}</if>
<if test="serialNumber != null and serialNumber != ''"> and serial_number = #{serialNumber}</if>
<if test="status != null "> and status = #{status}</if>
<if test="networkAddress != null and networkAddress != ''"> and network_address like concat('%', #{networkAddress}, '%')</if>
<if test="deptId != null and deptId != 0 and showChild != null and showChild">
and tenant_id in (SELECT u.user_id FROM sys_user u
join sys_dept de on u.dept_id = de.dept_id
WHERE FIND_IN_SET(#{deptId}, de.ancestors) OR de.dept_id = #{deptId})
</if>
<if test="deptId != null and deptId != 0 and showChild != null and !showChild">
and tenant_id = (SELECT dept_user_id FROM sys_dept WHERE dept_id = #{deptId})
</if>
<if test="params.beginActiveTime != null and params.beginActiveTime != '' and params.endActiveTime != null and params.endActiveTime != ''"> and active_time between #{params.beginActiveTime} and #{params.endActiveTime}</if>
</where>
order by create_time desc
</select>
<select id="selectUnAuthDeviceList" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceResult">
select d.device_id, d.device_name, d.product_id, d.product_name, d.tenant_id, d.tenant_name,
d.serial_number,d.gw_dev_code, d.firmware_version, d.status,d.is_shadow,d.is_simulate ,d.location_way,d.active_time, d.img_url,
d.project_id, d.project_name, a.device_id as auth_device_id
from iot_device d
left join iot_product_authorize a on a.device_id=d.device_id
<where>
<if test="1==1"> and ISNULL(a.device_id)</if>
<if test="deviceName != null and deviceName != ''"> and d.device_name like concat('%', #{deviceName}, '%')</if>
<if test="productId != null "> and d.product_id = #{productId}</if>
<if test="productName != null and productName != ''"> and d.product_name like concat('%', #{productName}, '%')</if>
<if test="tenantId != null "> and d.tenant_id = #{tenantId}</if>
<if test="tenantName != null and tenantName != ''"> and d.tenant_name like concat('%', #{tenantName}, '%')</if>
<if test="serialNumber != null and serialNumber != ''"> and d.serial_number = #{serialNumber}</if>
<if test="gwDevCode != null and gwDevCode != ''">and d.gw_dev_code = #{gwDevCode,jdbcType=VARCHAR}</if>
<if test="status != null "> and d.status = #{status}</if>
<if test="deptId != null and deptId != 0 and showChild != null and showChild">
and d.tenant_id in (SELECT u.user_id FROM sys_user u
join sys_dept de on u.dept_id = de.dept_id
WHERE FIND_IN_SET(#{deptId}, de.ancestors) OR de.dept_id = #{deptId})
</if>
<if test="deptId != null and deptId != 0 and showChild != null and !showChild">
and d.tenant_id = (SELECT dept_user_id FROM sys_dept WHERE dept_id = #{deptId})
</if>
<if test="params.beginActiveTime != null and params.beginActiveTime != '' and params.endActiveTime != null and params.endActiveTime != ''"> and d.active_time between #{params.beginActiveTime} and #{params.endActiveTime}</if>
</where>
order by d.create_time desc
</select>
<select id="selectDeviceListByGroup" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceResult">
SELECT
d.device_id,
d.device_name,
d.product_name,
d.serial_number,
d.firmware_version,
d.wireless_version,
d.STATUS,
d.rssi,
d.is_shadow,
d.location_way,
d.active_time,
d.network_address,
d.longitude,
d.latitude
FROM
iot_device d
<where>
<if test="productId != null ">
and d.product_id = #{productId}
</if>
<if test="deviceName != null and deviceName != ''">
and d.device_name like concat('%', #{deviceName}, '%')
</if>
<if test="productName != null and productName != ''">
and d.product_name like concat('%', #{productName}, '%')
</if>
<if test="serialNumber != null and serialNumber != ''">
and d.serial_number = #{serialNumber}
</if>
<if test="status != null ">
and d.status = #{status}
</if>
<if test="networkAddress != null and networkAddress != ''">
and d.network_address like concat('%', #{networkAddress}, '%')
</if>
<if test="params.beginActiveTime != null and params.beginActiveTime != '' and params.endActiveTime != null and params.endActiveTime != ''">
and d.active_time between #{params.beginActiveTime} and #{params.endActiveTime}
</if>
<if test="deptId != null and deptId != 0 and showChild != null and showChild">
and d.tenant_id in (SELECT
u.user_id
FROM
sys_user u
WHERE
u.dept_id IN ( SELECT dept_id FROM sys_dept WHERE find_in_set(#{deptId}, ancestors) OR dept_id =
#{deptId}))
</if>
<if test="deptId != null and deptId != 0 and showChild != null and !showChild">
and d.tenant_id = (SELECT dept_user_id FROM sys_dept WHERE dept_id = #{deptId})
</if>
<if test="firmwareVersion != null">
and firmware_version = #{firmwareVersion}
</if>
<if test="wirelessVersion != null">
and d.wireless_version = #{wirelessVersion}
</if>
</where>
group by d.device_id,d.tenant_id
order by d.create_time desc
</select>
<select id="selectAllDeviceShortList" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceAllShortResult">
select d.device_id, d.device_name, d.product_name,p.device_type, d.tenant_name, d.serial_number,d.gw_dev_code, d.firmware_version, d.status,d.rssi,d.is_shadow ,
d.location_way, d.active_time,d.network_address,d.longitude,d.latitude,d.project_id,d.project_name
from iot_device d
left join iot_product p on p.product_id=d.product_id
<where>
<if test="productId != null "> and d.product_id = #{productId}</if>
<if test="projectId != null and projectId != 0"> and d.project_id = #{projectId}</if>
<if test="deptId != null and deptId != 0 and showChild != null and showChild">
and d.tenant_id in (SELECT u.user_id FROM sys_user u
join sys_dept de on u.dept_id = de.dept_id
WHERE FIND_IN_SET(#{deptId}, de.ancestors) OR de.dept_id = #{deptId})
</if>
<if test="deptId != null and deptId != 0 and showChild != null and !showChild">
and d.tenant_id = (SELECT dept_user_id FROM sys_dept WHERE dept_id = #{deptId})
</if>
</where>
group by d.device_id,d.tenant_id
limit 3000
</select>
<select id="selectSerialNumberByProductId" parameterType="Long" resultType="String">
select serial_number from iot_device where product_id = #{productId}
</select>
<select id="selectDeviceCountByProductId" parameterType="Long" resultType="Integer">
select count(device_id) from iot_device where product_id = #{productId}
</select>
<select id="selectDeviceThingsModelValueBySerialNumber" parameterType="String" resultMap="DeviceThingsValueResult">
select product_id,product_name,device_id,device_name,serial_number,gw_dev_code,is_shadow,is_simulate,status,tenant_id, tenant_name,things_model_value from iot_device where serial_number = #{serialNumber}
</select>
<update id="updateDeviceThingsModelValue" parameterType="com.fastbee.common.core.thingsModel.ThingsModelValuesInput">
update iot_device set things_model_value=#{stringValue} where device_id = #{deviceId}
</update>
<!-- 设备简短列表的 FROM/WHERE 共享片段(含权限过滤,供 selectDeviceShortList 与 selectDeviceTreeBaseList 复用) -->
<sql id="selectDeviceShortListJoinWhere">
from iot_device d
left join iot_product p on p.product_id=d.product_id
<if test="groupId != null and groupId !=0 "> left join iot_device_group g on g.device_id=d.device_id </if>
<where>
and d.gw_dev_code is null
<if test="entrance != null and (entrance == 1 or entrance == 2)">
and (p.device_type is null or p.device_type != 4)
</if>
<if test="groupId != null and groupId !=0 "> and g.group_id = #{groupId}</if>
<if test="deviceName != null and deviceName != ''"> and d.device_name like concat('%', #{deviceName}, '%')</if>
<if test="productId != null "> and d.product_id = #{productId}</if>
<if test="deviceType != null "> and p.device_type = #{deviceType}</if>
<if test="deviceTypes != null and deviceTypes.size() > 0">
and p.device_type in
<foreach collection="deviceTypes" item="deviceTypeItem" open="(" separator="," close=")">
#{deviceTypeItem}
</foreach>
</if>
<if test="productName != null and productName != ''"> and d.product_name like concat('%', #{productName}, '%')</if>
<if test="serialNumber != null and serialNumber != ''"> and d.serial_number = #{serialNumber}</if>
<if test="gwDevCode != null and gwDevCode != ''"> and d.gw_dev_code = #{gwDevCode}</if>
<if test="status != null "> and d.status = #{status}</if>
<if test="isSimulate != null">and d.is_simulate = #{isSimulate}</if>
<if test="projectDeviceMode == null or !projectDeviceMode">
<if test="projectId != null and projectId != 0"> and d.project_id = #{projectId}</if>
</if>
<if test="deptId != null and deptId != 0 and showChild != null and showChild">
and
( d.tenant_id in (SELECT u.user_id FROM sys_user u
join sys_dept de on u.dept_id = de.dept_id
WHERE FIND_IN_SET(#{deptId}, de.ancestors) OR de.dept_id = #{deptId})
or d.device_id in (select du.device_id from iot_device_share du where du.user_id = #{tenantId})
)
</if>
<if test="deptId != null and deptId != 0 and showChild != null and !showChild">
and (
d.tenant_id = (SELECT dept_user_id FROM sys_dept WHERE dept_id = #{deptId})
or d.device_id in (select du.device_id from iot_device_share du where du.user_id = #{tenantId})
)
</if>
</where>
group by d.device_id,d.tenant_id
order by d.create_time desc
</sql>
<select id="selectDeviceShortList" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceShortResult">
select d.device_id, d.device_name, p.product_id, p.product_name,p.device_type,
d.tenant_id, d.tenant_name, d.serial_number,d.gw_dev_code,
d.firmware_version, d.status,d.rssi,d.is_shadow,d.is_simulate ,d.location_way,
d.things_model_value, d.active_time,d.create_time, if(null = d.img_url or '' = d.img_url, p.img_url, d.img_url) as img_url,
d.longitude, d.latitude,
case
when (select count(device_id) from iot_device_share du where du.device_id = d.device_id and du.user_id = #{tenantId}) then 0
else 1
end as is_owner,
(select count(1) from iot_device d1 where d1.gw_dev_code = d.serial_number) as sub_device_count,
p.protocol_code,p.transport,p.guid,d.project_id
<include refid="selectDeviceShortListJoinWhere"/>
</select>
<!-- 树形设备列表专用轻量查询:只取树所需字段,避开 is_owner/sub_device_count 逐行关联子查询 -->
<select id="selectDeviceTreeBaseList" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceShortResult">
select d.device_id, d.device_name, d.serial_number, d.status, d.tenant_id,
p.product_id, p.product_name, p.device_type
<include refid="selectDeviceShortListJoinWhere"/>
</select>
<select id="selectDeviceShortStatistic" parameterType="com.fastbee.iot.domain.Device" resultType="com.fastbee.iot.model.DeviceStatistic">
select
count(1) as deviceCount,
sum(case when t.status = 3 then 1 else 0 end) as deviceOnlineCount
from (
select d.device_id, d.tenant_id, d.status
from iot_device d
left join iot_product p on p.product_id = d.product_id
<where>
and d.gw_dev_code is null
<if test="entrance != null and (entrance == 1 or entrance == 2)">
and (p.device_type is null or p.device_type != 4)
</if>
<if test="deviceName != null and deviceName != ''"> and d.device_name like concat('%', #{deviceName}, '%')</if>
<if test="productId != null"> and d.product_id = #{productId}</if>
<if test="deviceType != null"> and p.device_type = #{deviceType}</if>
<if test="status != null"> and d.status = #{status}</if>
<if test="deptId != null and deptId != 0 and showChild != null and showChild">
and
( d.tenant_id in (SELECT u.user_id FROM sys_user u
join sys_dept de on u.dept_id = de.dept_id
WHERE FIND_IN_SET(#{deptId}, de.ancestors) OR de.dept_id = #{deptId})
or d.device_id in (select du.device_id from iot_device_share du where du.user_id = #{tenantId})
)
</if>
<if test="deptId != null and deptId != 0 and showChild != null and !showChild">
and (
d.tenant_id = (SELECT dept_user_id FROM sys_dept WHERE dept_id = #{deptId})
or d.device_id in (select du.device_id from iot_device_share du where du.user_id = #{tenantId})
)
</if>
</where>
group by d.device_id, d.tenant_id
) t
</select>
<select id="selectTerminalUserDeviceStatistic" parameterType="com.fastbee.iot.domain.Device" resultType="com.fastbee.iot.model.DeviceStatistic">
select
count(1) as deviceCount,
sum(case when d.status = 3 then 1 else 0 end) as deviceOnlineCount
from (
select device_id from iot_device_user where user_id = #{tenantId}
union
select device_id from iot_device_share where user_id = #{tenantId}
) u
inner join iot_device d on u.device_id = d.device_id
inner join iot_product p on d.product_id = p.product_id
where d.gw_dev_code is null
and (p.device_type is null or p.device_type != 4)
</select>
<select id="selectDeviceByDeviceId" parameterType="Long" resultMap="DeviceResult">
select d.device_id, d.device_name, d.product_id, p.product_name,p.device_type, d.tenant_id, d.tenant_name,
d.serial_number, d.firmware_version,d.wireless_version, d.status, d.rssi,d.is_shadow,d.is_simulate ,d.location_way,d.things_model_value,
d.network_address, d.network_ip, d.longitude, d.latitude, d.active_time, d.create_time, d.update_time,
d.img_url,d.summary,d.imei,d.iccid,d.remark,d.project_id,d.project_name,p.guid, p.transport, p.protocol_code,
d.baseline_device_id from iot_device d
left join iot_product p on p.product_id=d.product_id
where device_id = #{deviceId}
</select>
<select id="selectDeviceInfoBySerialNumber" parameterType="String" resultMap="DeviceImeiIccidTypeResult">
select
p.device_type as device_type,
d.imei as imei,
d.iccid as iccid,
d.longitude,
d.latitude
from iot_device d
left join iot_product p on p.product_id = d.product_id
where d.serial_number = #{serialNumber}
limit 1
</select>
<select id="selectDeviceBySerialNumber" parameterType="String" resultMap="DeviceResult">
<include refid="selectDeviceVo"/>
where serial_number = #{serialNumber}
</select>
<select id="selectDeviceCountBySerialNumber" parameterType="String" resultType="int">
select count(device_id) from iot_device
where serial_number = #{serialNumber}
</select>
<select id="selectDeviceProductAlertCount" parameterType="Long" resultType="com.fastbee.iot.model.DeviceStatistic">
select
<!--设备数量-->
(select count(distinct d.device_id,d.tenant_id)
from iot_device d
<where>
<if test="deptId != null and deptId != 0">
and d.tenant_id in (SELECT
u.user_id
FROM
sys_user u
WHERE
u.dept_id IN ( SELECT dept_id FROM sys_dept WHERE find_in_set(#{deptId}, ancestors) OR dept_id = #{deptId}))
</if>
</where>
) as deviceCount,
<!--在线设备数量-->
(select count(distinct d.device_id,d.tenant_id)
from iot_device d
<where>
d.status=3
<if test="deptId != null and deptId != 0">
and d.tenant_id in (SELECT
u.user_id
FROM
sys_user u
WHERE
u.dept_id IN ( SELECT dept_id FROM sys_dept WHERE find_in_set(#{deptId}, ancestors) OR dept_id = #{deptId}))
</if>
</where>
) as deviceOnlineCount,
(
select count(product_id)
from iot_product p
<where>
<if test="deptId != null and deptId != 0">
and p.tenant_id in (SELECT
u.user_id
FROM
sys_user u
WHERE
u.dept_id IN ( SELECT dept_id FROM sys_dept WHERE find_in_set(#{deptId}, ancestors) OR dept_id = #{deptId}))
</if>
</where>
) as productCount,
(select count(distinct alert_log_id)
from iot_alert_log l
left join iot_device d on l.serial_number=d.serial_number
<where>
<if test="deptId != null and deptId != 0">
and d.tenant_id in (SELECT
u.user_id
FROM
sys_user u
WHERE
u.dept_id IN ( SELECT dept_id FROM sys_dept WHERE find_in_set(#{deptId}, ancestors) OR dept_id = #{deptId}))
</if>
</where>
) as alertCount
</select>
<select id="selectProductAuthenticate" parameterType="com.fastbee.iot.model.AuthenticateInputModel" resultMap="DeviceAuthenticateResult">
SELECT p.mqtt_password,p.mqtt_account, p.mqtt_secret,p.is_authorize,p.product_id,p.product_name,p.vertificate_method,p.STATUS as product_status,d.device_id,d.device_name,d.STATUS,d.serial_number
FROM iot_product p
LEFT JOIN ( SELECT device_id, device_name, STATUS, product_id, product_name, serial_number
FROM iot_device
WHERE serial_number = #{serialNumber} ) AS d ON d.product_id = p.product_id
WHERE
p.product_id = #{productId}
</select>
<select id="selectShortDeviceBySerialNumber" parameterType="String" resultMap="DeviceResult">
<include refid="selectWebhookDeviceVo"/>
where serial_number = #{serialNumber}
</select>
<select id="getProtocolBySerialNumber" resultType="com.fastbee.iot.model.ProductCode">
select p.protocol_code as protocolCode,
p.product_id as productId,
d.serial_number as serialNumber,
d.tenant_id as userId
from
iot_product p
inner join iot_device d on p.product_id = d.product_id
and d.serial_number = #{serialNumber,jdbcType=VARCHAR}
</select>
<select id="selectDeviceRunningStatusByDeviceId" parameterType="Long" resultMap="DeviceShortResult">
<include refid="selectDeviceShortVo"/>
where device_id = #{deviceId}
</select>
<insert id="insertDevice" parameterType="com.fastbee.iot.domain.Device" useGeneratedKeys="true" keyProperty="deviceId">
insert into iot_device
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="deviceName != null and deviceName != ''">device_name,</if>
<if test="productId != null">product_id,</if>
<if test="productName != null and productName != ''">product_name,</if>
<if test="tenantId != null">tenant_id,</if>
<if test="tenantName != null and tenantName != ''">tenant_name,</if>
<if test="serialNumber != null and serialNumber != ''">serial_number,</if>
<if test="firmwareVersion != null">firmware_version,</if>
<if test="status != null">status,</if>
<if test="rssi != null">rssi,</if>
<if test="isShadow != null">is_shadow,</if>
<if test="locationWay != null">location_way,</if>
<if test="thingsModelValue != null">things_model_value,</if>
<if test="networkAddress != null">network_address,</if>
<if test="networkIp != null">network_ip,</if>
<if test="longitude != null">longitude,</if>
<if test="latitude != null">latitude,</if>
<if test="activeTime != null">active_time,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
<if test="imgUrl != null">img_url,</if>
<if test="summary != null">summary,</if>
<if test="gwDevCode != null">gw_dev_code,</if>
<if test="isSimulate != null">is_simulate,</if>
<if test="slaveId != null">slave_id,</if>
<if test="projectId != null">project_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="deviceName != null and deviceName != ''">#{deviceName},</if>
<if test="productId != null">#{productId},</if>
<if test="productName != null and productName != ''">#{productName},</if>
<if test="tenantId != null">#{tenantId},</if>
<if test="tenantName != null and tenantName != ''">#{tenantName},</if>
<if test="serialNumber != null and serialNumber != ''">#{serialNumber},</if>
<if test="firmwareVersion != null">#{firmwareVersion},</if>
<if test="status != null">#{status},</if>
<if test="rssi != null">#{rssi},</if>
<if test="isShadow != null">#{isShadow},</if>
<if test="locationWay != null">#{locationWay},</if>
<if test="thingsModelValue != null">#{thingsModelValue},</if>
<if test="networkAddress != null">#{networkAddress},</if>
<if test="networkIp != null">#{networkIp},</if>
<if test="longitude != null">#{longitude},</if>
<if test="latitude != null">#{latitude},</if>
<if test="activeTime != null">#{activeTime},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
<if test="imgUrl != null">#{imgUrl},</if>
<if test="summary != null">#{summary},</if>
<if test="gwDevCode != null">#{gwDevCode},</if>
<if test="isSimulate != null">#{isSimulate},</if>
<if test="slaveId != null">#{slaveId},</if>
<if test="projectId != null">#{projectId},</if>
</trim>
</insert>
<insert id="insertBatchDevice" parameterType="com.fastbee.iot.domain.Device" useGeneratedKeys="true" keyProperty="deviceId">
insert into iot_device (device_name, product_id, product_name, tenant_id, tenant_name, serial_number, firmware_version, rssi, is_shadow, location_way, create_by, create_time)
values
<foreach collection="deviceList" item="device" separator=",">
(#{device.deviceName},
#{device.productId},
#{device.productName},
#{device.tenantId},
#{device.tenantName},
#{device.serialNumber},
#{device.firmwareVersion},
#{device.rssi},
#{device.isShadow},
#{device.locationWay},
#{device.createBy},
sysdate())
</foreach>
</insert>
<update id="updateDevice" parameterType="com.fastbee.iot.domain.Device">
update iot_device
<trim prefix="SET" suffixOverrides=",">
<if test="deviceName != null and deviceName != ''">device_name = #{deviceName},</if>
<if test="productId != null">product_id = #{productId},</if>
<if test="productName != null and productName != ''">product_name = #{productName},</if>
<if test="tenantId != null">tenant_id = #{tenantId},</if>
<if test="tenantName != null and tenantName != ''">tenant_name = #{tenantName},</if>
<if test="serialNumber != null and serialNumber != ''">serial_number = #{serialNumber},</if>
<if test="gwDevCode != null and gwDevCode != ''">gw_dev_code = #{gwDevCode}, </if>
<if test="firmwareVersion != null">firmware_version = #{firmwareVersion},</if>
<if test="status != null">status = #{status},</if>
<if test="rssi != null">rssi = #{rssi},</if>
<if test="isShadow != null">is_shadow = #{isShadow},</if>
<if test="isSimulate != null">is_simulate = #{isSimulate},</if>
<if test="locationWay != null">location_way = #{locationWay},</if>
<if test="thingsModelValue != null">things_model_value = #{thingsModelValue},</if>
<if test="networkAddress != null">network_address = #{networkAddress},</if>
<if test="networkIp != null">network_ip = #{networkIp},</if>
<if test="longitude != null">longitude = #{longitude},</if>
<if test="latitude != null">latitude = #{latitude},</if>
<if test="activeTime != null">active_time = #{activeTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="imgUrl != null">img_url = #{imgUrl},</if>
<if test="summary != null">summary = #{summary},</if>
<if test="imei != null">imei = #{imei},</if>
<if test="iccid != null">iccid = #{iccid},</if>
<if test="slaveId != null">slave_id = #{slaveId},</if>
<if test="baselineDeviceId != null">baseline_device_id = #{baselineDeviceId},</if>
<if test="projectId != null">project_id = #{projectId},</if>
</trim>
where device_id = #{deviceId}
</update>
<update id="updateDeviceStatus" parameterType="com.fastbee.iot.domain.Device">
update iot_device
<trim prefix="SET" suffixOverrides=",">
<if test="status != null">status = #{status},</if>
<if test="networkAddress != null">network_address = #{networkAddress},</if>
<if test="networkIp != null">network_ip = #{networkIp},</if>
<if test="longitude != null">longitude = #{longitude},</if>
<if test="latitude != null">latitude = #{latitude},</if>
<if test="activeTime != null">active_time = #{activeTime},</if>
<if test="updateTime !=null">update_time = #{updateTime,jdbcType=TIMESTAMP}</if>
</trim>
where serial_number = #{serialNumber} or gw_dev_code = #{serialNumber}
</update>
<update id="updateDeviceFirmwareVersion" parameterType="com.fastbee.iot.domain.Device">
update iot_device
set firmware_version = #{firmwareVersion,jdbcType=DECIMAL}
where serial_number = #{serialNumber,jdbcType=VARCHAR}
</update>
<update id="resetDeviceStatus" parameterType="String">
-- 设备状态(1-未激活,2-禁用,3-在线,4-离线)
update iot_device set status=4
where serial_number = #{serialNumber} and status = 3
</update>
<update id="updateDeviceBySerialNumber" parameterType="com.fastbee.iot.domain.Device">
update iot_device
<trim prefix="SET" suffixOverrides=",">
<if test="deviceName != null and deviceName != ''">device_name = #{deviceName},</if>
<if test="productId != null">product_id = #{productId},</if>
<if test="productName != null and productName != ''">product_name = #{productName},</if>
<if test="tenantId != null">tenant_id = #{tenantId},</if>
<if test="tenantName != null and tenantName != ''">tenant_name = #{tenantName},</if>
<if test="serialNumber != null and serialNumber != ''">serial_number = #{serialNumber},</if>
<if test="firmwareVersion != null">firmware_version = #{firmwareVersion},</if>
<if test="status != null">status = #{status},</if>
<if test="rssi != null">rssi = #{rssi},</if>
<if test="isShadow != null">is_shadow = #{isShadow},</if>
<if test="isSimulate != null">is_simulate = #{isSimulate},</if>
<if test="locationWay != null">location_way = #{locationWay},</if>
<if test="thingsModelValue != null">things_model_value = #{thingsModelValue},</if>
<if test="networkAddress != null">network_address = #{networkAddress},</if>
<if test="networkIp != null">network_ip = #{networkIp},</if>
<if test="longitude != null">longitude = #{longitude},</if>
<if test="latitude != null">latitude = #{latitude},</if>
<if test="activeTime != null">active_time = #{activeTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="imgUrl != null">img_url = #{imgUrl},</if>
<if test="summary != null">summary = #{summary},</if>
<if test="gwDevCode != null">gw_dev_code = #{gwDevCode},</if>
<if test="imei != null">imei = #{imei},</if>
<if test="iccid != null">iccid = #{iccid},</if>
</trim>
where serial_number = #{serialNumber}
</update>
<delete id="deleteDeviceByDeviceId" parameterType="Long">
delete from iot_device where device_id = #{deviceId}
</delete>
<delete id="deleteDeviceByDeviceIds" parameterType="String">
delete from iot_device where device_id in
<foreach item="deviceId" collection="array" open="(" separator="," close=")">
#{deviceId}
</foreach>
</delete>
<select id="getDeviceNumCount" parameterType="String" resultType="int">
select count(1) from iot_device where serial_number = #{deviceNum}
</select>
<delete id="deleteDeviceGroupByDeviceId" parameterType="com.fastbee.iot.model.UserIdDeviceIdModel">
delete from iot_device_group
<where>
<if test="1==1"> and device_id = #{deviceId}</if>
<if test="userId != null"> and group_id in(select group_id from iot_group where user_id = #{userId})</if>
</where>
</delete>
<select id="selectProtocolBySerialNumber" parameterType="java.lang.String"
resultMap="DeviceAndProtocolResult">
select p.protocol_code,
p.product_id,
d.serial_number,
d.device_id,
p.device_type,
g.slave_id,
d.tenant_id,
CASE
when p.device_type = 4 then gp.transport
ELSE p.transport
END as transport,
mp.slave_id as pro_slave_id,
gw.device_id as gw_device_id,
gw.product_id as gw_product_id,
gw.serial_number as gw_serial_number,
gw.device_name as gw_device_name,
gw.product_name as gw_product_name
from iot_device d
inner join
iot_product p on d.product_id = p.product_id
left join iot_sub_gateway g on g.sub_device_id = d.device_id
left join iot_modbus_params mp on mp.product_id = p.product_id
left join iot_device gw on gw.device_id = g.gw_device_id
left join iot_product gp on gp.product_id = gw.product_id
where d.serial_number = #{serialNumber,jdbcType=VARCHAR}
</select>
<select id="selectDevicesByProductId" resultMap="DeviceResult">
select d.serial_number,
d.device_name
from iot_device d
where d.product_id = #{productId,jdbcType=BIGINT}
<if test="hasSub != null and hasSub == 2">
and d.gw_dev_code is NULL
</if>
</select>
<update id="batchChangeOnline">
update iot_device d
set d.status = 3,
d.update_time = now()
where d.serial_number in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<update id="batchChangeOffline">
update iot_device d
set d.status = 4,
d.update_time = now()
where d.serial_number in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<select id="selectMqttConnectData" resultMap="DeviceMqttVOResult">
select d.device_id,
d.serial_number,
d.product_id,
d.tenant_id,
p.mqtt_account,
p.mqtt_password,
p.mqtt_secret,
p.vertificate_method,
p.is_authorize,
p.transport
from iot_device d inner join iot_product p on d.product_id = p.product_id
where d.device_id = #{deviceId}
and d.del_flag = 0
and p.del_flag = 0
</select>
<select id="selectDeviceBySerialNumbers" resultMap="DeviceRelateAlertLogVOResult">
select device_id, serial_number, device_name
from iot_device
where serial_number in
<foreach collection="deviceNumbers" item="deviceNumber" index="index" open="(" separator="," close=")">
#{deviceNumber}
</foreach>
</select>
<select id="selectRelateAlertLogBySerialNumber" parameterType="java.lang.String" resultMap="DeviceRelateAlertLogVOResult">
select device_id, serial_number, device_name
from iot_device
where serial_number = #{deviceNumber}
</select>
<select id="getDeviceNumsByProductId" parameterType="Long" resultType="String">
select serial_number from iot_device
where product_id = #{productId} and gw_dev_code is NULL
</select>
<select id="selectDeviceStatusByNumbers" parameterType="String" resultMap="DeviceStatusResult">
select serial_number, status
from iot_device
where serial_number in
<foreach collection="deviceNumbers" item="deviceNumber" index="index" open="(" separator="," close=")">
#{deviceNumber}
</foreach>
</select>
<select id="checkExistBySerialNumbers" resultType="java.lang.String">
select serial_number
from iot_device
where serial_number in
<foreach collection="serialNumberList" item="serialNumber" open="(" separator="," close=")">
#{serialNumber}
</foreach>
</select>
<select id="listTerminalUser" parameterType="com.fastbee.iot.domain.Device" resultMap="DeviceShortResult">
select d.device_id, d.device_name, d.product_id, d.product_name,p.device_type,
d.tenant_id, d.tenant_name, d.serial_number,d.gw_dev_code,
d.firmware_version, d.status,d.rssi,d.is_shadow,d.is_simulate ,d.location_way,
d.things_model_value, d.active_time,d.create_time,d.img_url,d.project_id,d.project_name,
(select count(1) from iot_device d1 where d1.gw_dev_code = d.serial_number) as sub_device_count,
p.protocol_code,p.transport, u.is_owner
from (
select device_id, 1 AS is_owner
from iot_device_user
where user_id = #{tenantId}
union
select device_id, 0 AS is_owner
from iot_device_share
where user_id = #{tenantId}
) as u
inner join iot_device d on u.device_id = d.device_id
inner join iot_product p on d.product_id = p.product_id
<if test="groupId != null and groupId !=0 "> left join iot_device_group g on g.device_id=d.device_id </if>
<where>
and d.gw_dev_code is null
<if test="entrance != null and (entrance == 1 or entrance == 2)">
and (p.device_type is null or p.device_type != 4)
</if>
<if test="groupId != null and groupId !=0 "> and g.group_id = #{groupId}</if>
<if test="deviceName != null and deviceName != ''"> and d.device_name like concat('%', #{deviceName}, '%')</if>
<if test="productId != null "> and d.product_id = #{productId}</if>
<if test="deviceType != null "> and p.device_type = #{deviceType}</if>
<if test="deviceTypes != null and deviceTypes.size() > 0">
and p.device_type in
<foreach collection="deviceTypes" item="deviceTypeItem" open="(" separator="," close=")">
#{deviceTypeItem}
</foreach>
</if>
<if test="productName != null and productName != ''"> and d.product_name like concat('%', #{productName}, '%')</if>
<if test="serialNumber != null and serialNumber != ''"> and d.serial_number = #{serialNumber}</if>
<if test="gwDevCode != null and gwDevCode != ''"> and d.gw_dev_code = #{gwDevCode}</if>
<if test="status != null "> and d.status = #{status}</if>
<if test="isSimulate != null">and d.is_simulate = #{isSimulate}</if>
<if test="params.beginActiveTime != null and params.beginActiveTime != '' and params.endActiveTime != null and params.endActiveTime != ''"> and d.active_time between #{params.beginActiveTime} and #{params.endActiveTime}</if>
</where>
order by u.is_owner desc, d.create_time desc
<!-- select d.device_id, d.device_name, d.product_id, d.product_name,p.device_type,-->
<!-- d.tenant_id, d.tenant_name, d.serial_number,d.gw_dev_code,-->
<!-- d.firmware_version, d.status,d.rssi,d.is_shadow,d.is_simulate ,d.location_way,-->
<!-- d.things_model_value, d.active_time,d.create_time,d.img_url,-->
<!-- case-->
<!-- when (select count(1) from iot_device_share du where du.device_id = d.device_id and du.user_id = #{tenantId}) then 0-->
<!-- else 1-->
<!-- end as is_owner,-->
<!-- (select count(1) from iot_device d1 where d1.gw_dev_code = d.serial_number) as sub_device_count,-->
<!-- p.protocol_code,p.transport-->
<!-- from iot_device d-->
<!-- left join iot_product p on p.product_id=d.product_id-->
<!-- left join iot_device_user u on u.device_id = d.device_id-->
<!-- left join iot_device_share s on s.device_id = d.device_id-->
<!-- <if test="groupId != null and groupId !=0 "> left join iot_device_group g on g.device_id=d.device_id </if>-->
<!-- <where>-->
<!-- and d.gw_dev_code is null-->
<!-- <if test="groupId != null and groupId !=0 "> and g.group_id = #{groupId}</if>-->
<!-- <if test="deviceName != null and deviceName != ''"> and d.device_name like concat('%', #{deviceName}, '%')</if>-->
<!-- <if test="tenantId != null "> and (u.user_id = #{tenantId} or s.user_id = #{tenantId})</if>-->
<!-- <if test="productId != null "> and d.product_id = #{productId}</if>-->
<!-- <if test="deviceType != null "> and p.device_type = #{deviceType}</if>-->
<!-- <if test="productName != null and productName != ''"> and d.product_name like concat('%', #{productName}, '%')</if>-->
<!-- <if test="serialNumber != null and serialNumber != ''"> and d.serial_number = #{serialNumber}</if>-->
<!-- <if test="gwDevCode != null and gwDevCode != ''"> and d.gw_dev_code = #{gwDevCode}</if>-->
<!-- <if test="status != null "> and d.status = #{status}</if>-->
<!-- <if test="isSimulate != null">and d.is_simulate = #{isSimulate}</if>-->
<!-- <if test="params.beginActiveTime != null and params.beginActiveTime != '' and params.endActiveTime != null and params.endActiveTime != ''"> and d.active_time between #{params.beginActiveTime} and #{params.endActiveTime}</if>-->
<!-- </where>-->
<!-- group by d.device_id-->
<!-- order by is_owner desc, d.create_time desc-->
</select>
<select id="listTerminalUserByGroup" resultType="com.fastbee.iot.domain.Device">
select d.device_id, d.device_name, d.product_name, d.serial_number,d.gw_dev_code, d.firmware_version,d.wireless_version, d.status,d.rssi,d.is_shadow ,
d.location_way, d.active_time,d.network_address,d.longitude,d.latitude,d.project_id,d.project_name
from (
select device_id, 1 AS is_owner
from iot_device_user
where user_id = #{tenantId}
union
select device_id, 0 AS is_owner
from iot_device_share
where user_id = #{tenantId}
) as u
inner join iot_device d on u.device_id = d.device_id
inner join iot_product p on d.product_id = p.product_id
<where>
<if test="wirelessVersion != null">
and d.wireless_version = #{wirelessVersion}
</if>
<if test="deviceName != null and deviceName != ''"> and d.device_name like concat('%', #{deviceName}, '%')</if>
</where>
order by u.is_owner desc, d.create_time desc
</select>
<update id="reSetDeviceStatus">
update iot_device set status = 4 where status = 3
</update>
<select id="selectDeviceActive" resultType="com.fastbee.iot.model.DeviceStatusVO">
select d.status , d.serial_number as serialNumber, d.rssi,d.is_shadow, d.product_id
from iot_device d inner join iot_product p on d.product_id = p.product_id
where d.status in (3,4) and p.transport not in ('GB28181')
</select>
<select id="countByTenantId" resultType="java.lang.Integer">
select count(1)
from iot_device
where tenant_id = #{tenantId}
and del_flag = 0
</select>
<select id="selectDeviceListByDeviceIds" resultMap="DeviceResult">
<include refid="selectDeviceShortVo"/>
where device_id in
<foreach collection="deviceIdList" item="deviceId" open="(" separator="," close=")">
#{deviceId}
</foreach>
</select>
<update id="updateTenantIdByDeptIds">
update iot_device
set tenant_id = #{tenantId},
tenant_name = #{tenantName}
<if test="clearProject == true">,project_id = null </if>
where device_id in
<foreach collection="deviceIdList" item="deviceId" open="(" separator="," close=")">
#{deviceId}
</foreach>
</update>
<update id="updateTenantIdByDeviceId">
update iot_device
set tenant_id = #{tenantId},
tenant_name = #{tenantName},
update_time = now()
where device_id = #{deviceId}
</update>
<select id="selectDeviceByChannelId" resultMap="DeviceResult">
select device_name,device_id from iot_device
where channel_id = #{channelId}
</select>
<select id="selectDeviceStatusAndTransportStatus" resultType="com.fastbee.iot.model.DeviceStatusVO">
SELECT
d.status,
d.serial_number,
p.transport,
p.product_id,
p.device_type
FROM iot_device d
inner join iot_product p on d.product_id = p.product_id
WHERE d.serial_number = #{serialNumber,jdbcType=VARCHAR}
</select>
<select id="listDeviceGroupByGroupIds" resultType="com.fastbee.iot.domain.DeviceGroup">
select device_id, group_id
from iot_device_group
<where>
<if test="collection != null and collection.size() > 0">
and group_id in
<foreach collection="collection" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
<select id="selectSerialNumbersByProductId" resultType="string">
select d.serial_number
from iot_device d
where d.product_id = #{productId,jdbcType=BIGINT}
</select>
<!-- 批量更新设备的项目归属 -->
<update id="updateDeviceProjectByIds">
update iot_device set project_id = #{projectId} where device_id in
<foreach item="id" collection="deviceIds" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<!-- 清除项目下除指定设备外的其他设备归属 -->
<update id="clearDeviceProjectExcept">
update iot_device set project_id = null where project_id = #{projectId}
<if test="deviceIds != null and deviceIds.length > 0">
and device_id not in
<foreach item="id" collection="deviceIds" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</update>
<update id="clearDeviceProjectByProjectIds">
update iot_device set project_id = null where project_id in
<foreach item="id" collection="projectIds" open="(" separator="," close=")">
#{id}
</foreach>
</update>
<select id="selectDeviceShortByIds" resultType="com.fastbee.iot.domain.Device">
SELECT device_id, product_id, serial_number, tenant_id, tenant_name
FROM iot_device
WHERE del_flag = '0' AND device_id IN
<foreach item="id" collection="deviceIds" open="(" separator="," close=")">
#{id}
</foreach>
</select>
</mapper>