This repository has been archived on 2025-08-12. You can view files and clone it, but cannot push or open issues or pull requests.
Files
springboot-xinda-dev/xinda-scada/src/main/resources/mapper/ScadaMapper.xml
2025-04-29 22:30:18 +08:00

378 lines
17 KiB
XML

<?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.xinda.scada.mapper.ScadaMapper">
<resultMap type="Scada" id="ScadaResult">
<result property="id" column="id" />
<result property="guid" column="guid" />
<result property="scadaData" column="scada_data" />
<result property="serialNumbers" column="serial_numbers" />
<result property="deviceName" column="device_name" />
<result property="isMainPage" column="is_main_page" />
<result property="pageName" column="page_name" />
<result property="pageResolution" column="page_resolution" />
<result property="isShare" column="is_share" />
<result property="shareUrl" column="share_url" />
<result property="sharePass" column="share_pass" />
<result property="pageImage" column="page_image" />
<result property="deptId" column="dept_id" />
<result property="tenantId" column="tenant_id" />
<result property="tenantName" column="tenant_name" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
<result property="type" column="type"/>
</resultMap>
<sql id="selectScadaVo">
select id, guid, scada_data, serial_numbers, device_name, is_main_page, page_name, page_resolution, is_share, share_url, share_pass, page_image, dept_id,tenant_id, tenant_name, create_by, create_time, update_by, update_time, del_flag, type from scada
</sql>
<select id="selectScadaList" parameterType="Scada" resultMap="ScadaResult">
select s.id, s.guid, s.scada_data, s.serial_numbers, s.device_name, s.is_main_page, s.page_name, s.page_resolution, s.is_share, s.share_url, s.share_pass, s.page_image, s.dept_id, s.tenant_id, s.tenant_name, s.create_by, s.create_time, s.update_by, s.update_time, s.del_flag, s.type
from scada s
<where>
<if test="guid != null and guid != ''"> and s.guid = #{guid}</if>
<if test="scadaData != null and scadaData != ''"> and s.scada_data = #{scadaData}</if>
<if test="serialNumbers != null and serialNumbers != ''"> and s.serial_numbers = #{serialNumbers}</if>
<if test="deviceName != null and deviceName != ''"> and s.device_name like concat('%', #{deviceName}, '%')</if>
<if test="isMainPage != null "> and s.is_main_page = #{isMainPage}</if>
<if test="pageName != null and pageName != ''"> and s.page_name like concat('%', #{pageName}, '%')</if>
<if test="pageResolution != null and pageResolution != ''"> and s.page_resolution = #{pageResolution}</if>
<if test="isShare != null "> and s.is_share = #{isShare}</if>
<if test="shareUrl != null and shareUrl != ''"> and s.share_url = #{shareUrl}</if>
<if test="sharePass != null and sharePass != ''"> and s.share_pass = #{sharePass}</if>
<if test="pageImage != null and pageImage != ''"> and s.page_image = #{pageImage}</if>
<if test="deptId != null ">
and ( s.dept_id in (SELECT de.dept_id FROM sys_dept de
WHERE FIND_IN_SET(#{deptId}, de.ancestors) OR de.dept_id = #{deptId})
)
</if>
<!-- <if test="tenantName != null and tenantName != ''"> and tenant_name like concat('%', #{tenantName}, '%')</if>-->
<if test="type != null">and s.type = #{type}</if>
</where>
</select>
<select id="selectScadaById" parameterType="Long" resultMap="ScadaResult">
<include refid="selectScadaVo"/>
where id = #{id}
</select>
<select id="selectScadaByGuid" resultType="com.xinda.scada.domain.Scada">
<include refid="selectScadaVo"/>
where guid = #{guid}
</select>
<select id="getStatusBySerialNumber" resultType="java.lang.Integer">
select status
from iot_device
where serial_number = #{serialNumber}
</select>
<select id="selectDeviceProductAlertCount" resultType="com.xinda.scada.vo.ScadaStatisticVO">
select
<!--设备数量-->
(select count(distinct d.device_id,d.user_id)
from iot_device d
inner join iot_device_user u on u.device_id = d.device_id
<where>
<if test="userId != null and userId != 0"> and u.user_id = #{userId}</if>
<if test="tenantId != null and tenantId != 0"> and d.tenant_id = #{tenantId}</if>
</where>
) as deviceCount,
<!--在线设备数量-->
(select count(distinct d.device_id,d.user_id)
from iot_device d
inner join iot_device_user u on u.device_id = d.device_id
<where>
d.status=3
<if test="userId != null and userId != 0"> and u.user_id = #{userId}</if>
<if test="tenantId != null and tenantId != 0"> and d.tenant_id = #{tenantId}</if>
</where>
) as deviceOnlineCount,
(
<!--普通用户查询设备中的产品数量-->
<if test="userId != null and userId != 0">
select count(distinct product_id)
from iot_device
where user_id = #{userId}
</if>
<!--管理员和租户直接查询产品的数量-->
<if test="userId == null || userId == 0">
select count(product_id)
from iot_product
<where>
<if test="tenantId != null and tenantId != 0"> and tenant_id = #{tenantId} </if>
</where>
</if>
) as productCount,
<!--告警设备数量-->
(select count(distinct l.serial_number)
from iot_alert_log l
left join iot_device d on l.serial_number=d.serial_number
left join iot_device_user u on d.device_id=u.device_id
<where>
<if test="userId != null and userId != 0"> and u.user_id = #{userId}</if>
<if test="tenantId != null and tenantId != 0"> and d.tenant_id = #{tenantId}</if>
</where>
) as alertDeviceCount,
<!--离线设备数量-->
(select count(distinct d.device_id,d.user_id)
from iot_device d
inner join iot_device_user u on u.device_id = d.device_id
<where>
d.status=4
<if test="userId != null and userId != 0"> and u.user_id = #{userId}</if>
<if test="tenantId != null and tenantId != 0"> and d.tenant_id = #{tenantId}</if>
</where>
) as deviceOfflineCount,
<!--告警未处理数量-->
(select count(distinct l.serial_number)
from iot_alert_log l
left join iot_device d on l.serial_number=d.serial_number
left join iot_device_user u on d.device_id=u.device_id
where l.status = 2
<if test="userId != null and userId != 0"> and u.user_id = #{userId}</if>
<if test="tenantId != null and tenantId != 0"> and d.tenant_id = #{tenantId}</if>
) as alertNotProcessedCount,
<!--告警已处理数量-->
(select count(distinct l.serial_number)
from iot_alert_log l
left join iot_device d on l.serial_number=d.serial_number
left join iot_device_user u on d.device_id=u.device_id
where l.status = 3
<if test="userId != null and userId != 0"> and u.user_id = #{userId}</if>
<if test="tenantId != null and tenantId != 0"> and d.tenant_id = #{tenantId}</if>
) as alertProcessedCount,
(select count(distinct alert_log_id)
from iot_alert_log l
left join iot_device d on l.serial_number=d.serial_number
left join iot_device_user u on d.device_id=u.device_id
<where>
<if test="userId != null and userId != 0"> and u.user_id = #{userId}</if>
<if test="tenantId != null and tenantId != 0"> and d.tenant_id = #{tenantId}</if>
</where>
) as alertCount
</select>
<select id="listFunctionLogHistory" resultType="com.xinda.scada.vo.ScadaHistoryModelVO">
select fun_value as value,
create_time as time,
identify as identity
from iot_function_log
<where>
<if test="serialNumber != null and serialNumber != ''">
and serial_number = #{serialNumber}
</if>
<if test="beginTime != null and endTime != null">
and create_time between #{beginTime} and #{endTime}
</if>
<if test="identifyList != null and identifyList != ''">
and identify in
<foreach collection="identifyList" item="identify" open="(" separator="," close=")">
#{identify}
</foreach>
</if>
</where>
order by create_time desc
</select>
<select id="listEventLogHistory" resultType="com.xinda.scada.vo.ScadaHistoryModelVO">
select log_value as value,
create_time as time,
identity as identity
from iot_event_log
<where>
<if test="serialNumber != null and serialNumber != ''">
and serial_number = #{serialNumber}
</if>
<if test="params.beginTime != null and params.beginTime != '' and params.endTime != null and params.endTime != ''">
and create_time between #{params.beginTime} and #{params.endTime}
</if>
<if test="identityList != null and identityList != ''">
and identity in
<foreach collection="identityList" item="identity" open="(" separator="," close=")">
#{identity}
</foreach>
</if>
</where>
order by create_time desc
</select>
<insert id="insertScada" parameterType="Scada" useGeneratedKeys="true" keyProperty="id">
insert into scada
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="guid != null">guid,</if>
<if test="scadaData != null">scada_data,</if>
<if test="serialNumbers != null">serial_numbers,</if>
<if test="deviceName != null">device_name,</if>
<if test="isMainPage != null">is_main_page,</if>
<if test="pageName != null">page_name,</if>
<if test="pageResolution != null">page_resolution,</if>
<if test="isShare != null">is_share,</if>
<if test="shareUrl != null">share_url,</if>
<if test="sharePass != null">share_pass,</if>
<if test="pageImage != null">page_image,</if>
<if test="deptId != null and deptId != 0">dept_id,</if>
<if test="tenantId != null">tenant_id,</if>
<if test="tenantName != null">tenant_name,</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="delFlag != null">del_flag,</if>
<if test="remark != null">remark,</if>
<if test="type != null">type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="guid != null">#{guid},</if>
<if test="scadaData != null">#{scadaData},</if>
<if test="serialNumbers != null">#{serialNumbers},</if>
<if test="deviceName != null">#{deviceName},</if>
<if test="isMainPage != null">#{isMainPage},</if>
<if test="pageName != null">#{pageName},</if>
<if test="pageResolution != null">#{pageResolution},</if>
<if test="isShare != null">#{isShare},</if>
<if test="shareUrl != null">#{shareUrl},</if>
<if test="sharePass != null">#{sharePass},</if>
<if test="pageImage != null">#{pageImage},</if>
<if test="deptId != null">#{deptId},</if>
<if test="tenantId != null">#{tenantId},</if>
<if test="tenantName != null">#{tenantName},</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="delFlag != null">#{delFlag},</if>
<if test="remark != null">#{remark},</if>
<if test="type != null">#{type},</if>
</trim>
</insert>
<update id="updateScada" parameterType="Scada">
update scada
<trim prefix="SET" suffixOverrides=",">
<if test="guid != null">guid = #{guid},</if>
<if test="scadaData != null">scada_data = #{scadaData},</if>
<if test="serialNumbers != null">serial_numbers = #{serialNumbers},</if>
<if test="deviceName != null">device_name = #{deviceName},</if>
<if test="isMainPage != null">is_main_page = #{isMainPage},</if>
<if test="pageName != null">page_name = #{pageName},</if>
<if test="pageResolution != null">page_resolution = #{pageResolution},</if>
<if test="isShare != null">is_share = #{isShare},</if>
<if test="shareUrl != null">share_url = #{shareUrl},</if>
<if test="sharePass != null">share_pass = #{sharePass},</if>
<if test="pageImage != null">page_image = #{pageImage},</if>
<if test="deptId != null ">dept_id = #{deptId},</if>
<if test="tenantId != null">tenant_id = #{tenantId},</if>
<if test="tenantName != null">tenant_name = #{tenantName},</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="delFlag != null">del_flag = #{delFlag},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="type != null">type = #{type},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteScadaById" parameterType="Long">
delete from scada where id = #{id}
</delete>
<delete id="deleteScadaByGuid" parameterType="String">
delete from scada where guid = #{guid}
</delete>
<delete id="deleteScadaByIds" parameterType="String">
delete from scada where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="selectUserIdByDeptId" resultType="java.lang.Long">
select user_id
from sys_user
where dept_id = #{deptId}
and status = 0
and del_flag = 0
</select>
<select id="selectGuidByProductId" resultType="java.lang.String">
select p.guid from iot_product p
where p.product_id = #{productId}
and p.del_flag = '0'
</select>
<select id="selectGuidBySceneModelId" resultType="java.lang.String">
select guid
from scene_model
where scene_model_id = #{sceneModelId}
and del_flag = 0
</select>
<select id="selectProductByGuid" resultType="java.lang.Long">
select product_id
from iot_product
where guid = #{guid}
and del_flag = '0'
</select>
<select id="selectSceneModelByGuid" resultType="java.lang.Long">
select scene_model_id
from scene_model
where guid = #{guid}
and del_flag = 0
</select>
<update id="updateProductGuid">
update iot_product
set guid = #{guid}
where product_id = #{productId}
</update>
<update id="updateSceneModelGuid">
update scene_model
set guid = #{guid}
where scene_model_id = #{sceneModelId}
</update>
<update id="updateDeviceGuid">
update iot_device
set guid = #{guid,jdbcType=VARCHAR}
where serial_number = #{serialNumber,jdbcType=VARCHAR}
</update>
<update id="deleteSceneModelByGuids">
update scene_model
set guid = null
where guid in
<foreach collection="guids" item="guid" open="(" separator="," close=")">
#{guid}
</foreach>
</update>
<update id="deleteProductByGuids">
update iot_product
set guid = null
where guid in
<foreach collection="guids" item="guid" open="(" separator="," close=")">
#{guid}
</foreach>
</update>
</mapper>