<?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.zhitan.model.mapper.ModelNodeMapper">
|
|
<resultMap type="com.zhitan.model.domain.ModelNode" id="ModelNodeResult">
|
<result property="nodeId" column="node_id"/>
|
<result property="code" column="code"/>
|
<result property="name" column="name"/>
|
<result property="parentId" column="parent_id"/>
|
<result property="address" column="address"/>
|
<result property="modelCode" column="model_code"/>
|
<result property="nodeCategory" column="node_category"/>
|
</resultMap>
|
|
<sql id="selectModelNodeVo">
|
select node_id, code, name, parent_id, address, model_code, node_category
|
from model_node
|
</sql>
|
|
<select id="selectModelNodeList"
|
parameterType="com.zhitan.model.domain.ModelNode"
|
resultMap="ModelNodeResult">
|
<include refid="selectModelNodeVo"/>
|
<where>
|
<if test="code != null and code != ''">and code like concat('%', #{code}, '%')</if>
|
<if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if>
|
</where>
|
order by order_num
|
</select>
|
|
<select id="selectModelNodeById" parameterType="String" resultMap="ModelNodeResult">
|
<include refid="selectModelNodeVo"/>
|
where node_id = #{nodeId}
|
</select>
|
<select id="getModelNodeByModelCode" resultMap="ModelNodeResult">
|
<include refid="selectModelNodeVo"/>
|
where model_code = #{modelCode}
|
order by order_num
|
</select>
|
<select id="getMaxOrder" resultType="java.lang.Integer">
|
select COALESCE(max(order_num), 0)
|
from model_node
|
where parent_id = #{parentId}
|
</select>
|
<select id="modelNodeHasExist" resultType="java.lang.Integer">
|
select count(*)
|
from model_node
|
where code = #{code}
|
and model_code = #{modelCode};
|
</select>
|
<select id="modelNodeHasExistWhenUpdate" resultType="java.lang.Integer">
|
select count(*)
|
from model_node
|
where code = #{code}
|
and model_code = #{modelCode}
|
AND node_id != #{nodeId};
|
</select>
|
<select id="getSettingDevice"
|
resultType="com.zhitan.basicdata.domain.MeterImplement">
|
select id, code, meter_name as meterName
|
from meter_implement m
|
left join node_device nd on m.id = nd.device_id
|
where nd.node_id = #{nodeId};
|
</select>
|
<select id="getSettingIndex"
|
resultType="com.zhitan.model.domain.EnergyIndex">
|
select ei.index_id as indexId, code, name, index_type as indexType
|
from energy_index ei
|
left join node_index ni on ei.index_id = ni.index_id
|
where ni.node_id = #{nodeId}
|
</select>
|
<select id="getSettingEnergy"
|
resultType="com.zhitan.basicdata.domain.SysEnergy">
|
select enerid, enersno, enername
|
from sys_energy e
|
left join node_energy ne on e.enerid = ne.energy_id
|
where ne.node_id = #{nodeId};
|
</select>
|
<select id="getSettingProduct"
|
resultType="com.zhitan.basicdata.domain.SysProduct">
|
select productid, productsno, productname
|
from sys_product p
|
left join node_product np on p.productid = np.product_id
|
where np.node_id = #{nodeId};
|
</select>
|
<select id="getSettingIndexByType"
|
resultType="com.zhitan.model.domain.EnergyIndex">
|
select ei.index_id as indexId, code, name, index_type as indexType
|
from energy_index ei
|
left join node_index ni on ei.index_id = ni.index_id
|
where ni.node_id = #{nodeId}
|
and ei.index_type = #{indexType}
|
<if test="code != null and code != ''">
|
and code like concat('%', #{code}, '%')
|
</if>
|
<if test="name != null and name != ''">
|
and name like concat('%', #{name}, '%')
|
</if>
|
</select>
|
<select id="getModelNodeByNodeCodes" resultMap="ModelNodeResult">
|
<include refid="selectModelNodeVo"/>
|
where code in
|
<foreach item="nodeCode" collection="list" open="(" separator="," close=")">
|
#{nodeCode}
|
</foreach>
|
order by order_num
|
</select>
|
<select id="getModelNodeByModelCodeWithAuth" resultMap="ModelNodeResult">
|
<include refid="selectModelNodeVo"/>
|
where model_code = #{modelCode}
|
and (
|
node_id in (
|
select node_id from data_auth_user where user_id = #{userId} and model_code = #{modelCode}
|
)
|
or node_id in (
|
select node_id from data_auth_role where role_id in (
|
select cast(r.role_id as varchar) from sys_role r
|
left join sys_user_role ur on ur.role_id = r.role_id
|
left join sys_user u on u.user_id = ur.user_id
|
where cast(u.user_id as VARCHAR) = #{userId}
|
) and model_code = #{modelCode}
|
)
|
)
|
order by order_num
|
</select>
|
|
<insert id="insertModelNode"
|
parameterType="com.zhitan.model.domain.ModelNode">
|
insert into model_node
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<if test="nodeId != null and nodeId != ''">node_id,</if>
|
<if test="code != null and code != ''">code,</if>
|
<if test="name != null and name != ''">name,</if>
|
<if test="parentId != null and parentId != ''">parent_id,</if>
|
<if test="address != null and address != ''">address,</if>
|
<if test="modelCode != null and modelCode != ''">model_code,</if>
|
<if test="nodeCategory != null and nodeCategory != ''">node_category,</if>
|
</trim>
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
<if test="nodeId != null and nodeId != ''">#{nodeId},</if>
|
<if test="code != null and code != ''">#{code},</if>
|
<if test="name != null and name != ''">#{name},</if>
|
<if test="parentId != null and parentId != ''">#{parentId},</if>
|
<if test="address != null and address != ''">#{address},</if>
|
<if test="modelCode != null and modelCode != ''">#{modelCode},</if>
|
<if test="nodeCategory != null and nodeCategory != ''">#{nodeCategory},</if>
|
</trim>
|
</insert>
|
<insert id="setDevice">
|
delete
|
from node_device
|
where node_id = #{nodeId};
|
<foreach collection="deviceIds" item="deviceId" separator=";">
|
insert into node_device (node_id, device_id)
|
values (#{nodeId}, #{deviceId})
|
</foreach>
|
</insert>
|
<insert id="setEnergy">
|
delete
|
from node_energy
|
where node_id = #{nodeId};
|
<foreach collection="energyIds" item="energyId" separator=";">
|
insert into node_energy (node_id, energy_id)
|
values (#{nodeId}, #{energyId})
|
</foreach>
|
</insert>
|
<insert id="setProduct">
|
delete
|
from node_product
|
where node_id = #{nodeId};
|
<foreach collection="productIds" item="productId" separator=";">
|
insert into node_product (node_id, product_id)
|
values (#{nodeId}, #{productId})
|
</foreach>
|
</insert>
|
|
<update id="updateModelNode"
|
parameterType="com.zhitan.model.domain.ModelNode">
|
update model_node
|
<trim prefix="SET" suffixOverrides=",">
|
<if test="code != null and code != ''">code = #{code},</if>
|
<if test="name != null and name != ''">name = #{name},</if>
|
<if test="parentId != null and parentId != ''">parent_id = #{parentId},</if>
|
<if test="address != null and address != ''">address = #{address},</if>
|
<if test="modelCode != null and modelCode != ''">model_code = #{modelCode},</if>
|
<if test="nodeCategory != null and nodeCategory != ''">node_category = #{nodeCategory},</if>
|
</trim>
|
where node_id = #{nodeId}
|
</update>
|
<update id="updateModelNodeParent">
|
update model_node
|
set parent_id = #{parentId}
|
where node_id = #{nodeId};
|
|
update model_node
|
set address = replace(address, (select address from model_node where node_id = #{nodeId}),
|
(select address ||
|
(select code from model_node where node_id = #{nodeId}) ||
|
','
|
from model_node
|
where node_id = #{parentId}))
|
where parent_id = #{nodeId}
|
or node_id = #{nodeId};
|
</update>
|
<update id="updateModelNodeOrder">
|
<foreach collection="orders" index="id" item="order" separator=";">
|
update model_node
|
set order_num = #{order}
|
where node_id = #{id}
|
</foreach>
|
</update>
|
<update id="setIndex">
|
delete
|
from node_index
|
where node_id = #{nodeId} and index_id in (select ni.index_id
|
from node_index ni left join energy_index ei on ni.index_id = ei.index_id
|
where node_id = #{nodeId} and ei.index_type = #{indexType});
|
<foreach collection="indexIds" item="indexId" separator=";">
|
insert into node_index (node_id, index_id)
|
values (#{nodeId}, #{indexId})
|
</foreach>
|
</update>
|
|
<delete id="deleteModelNodeById" parameterType="String">
|
delete
|
from model_node
|
where node_id = #{nodeId}
|
</delete>
|
|
<delete id="deleteModelNodeByIds" parameterType="String">
|
delete from model_node where node_id in
|
<foreach item="nodeId" collection="array" open="(" separator="," close=")">
|
#{nodeId}
|
</foreach>
|
</delete>
|
<delete id="delDevice">
|
delete
|
from node_device
|
where node_id = #{nodeId} and device_id in
|
<foreach item="deviceId" collection="deviceIds" open="(" separator="," close=")">
|
#{deviceId}
|
</foreach>
|
</delete>
|
<delete id="delEnergy">
|
delete
|
from node_energy
|
where node_id = #{nodeId} and energy_id in
|
<foreach item="energyId" collection="energyIds" open="(" separator="," close=")">
|
#{energyId}
|
</foreach>
|
</delete>
|
<delete id="delProduct">
|
delete
|
from node_product
|
where node_id = #{nodeId} and product_id in
|
<foreach item="productId" collection="productIds" open="(" separator="," close=")">
|
#{productId}
|
</foreach>
|
</delete>
|
<delete id="delIndex">
|
delete
|
from node_index
|
where node_id = #{nodeId} and index_id in
|
<foreach item="indexId" collection="indexIds" open="(" separator="," close=")">
|
#{indexId}
|
</foreach>
|
</delete>
|
|
<select id="getSettingIndexByWhere"
|
resultType="com.zhitan.model.domain.EnergyIndex">
|
select ei.index_id as indexId, code, name, index_type as indexType
|
from energy_index ei
|
left join node_index ni on ei.index_id = ni.index_id
|
where ni.node_id = #{nodeId}
|
<if test="indexName!=null and indexName!=''">
|
and ei.name like concat('%', #{indexName}, '%')
|
</if>
|
</select>
|
|
<select id="listIndesxByCodeList" resultType="java.lang.String">
|
SELECT
|
index_id
|
FROM
|
"node_index"
|
WHERE
|
node_id IN
|
<foreach item="nodeId" collection="nodeIds" open="(" separator="," close=")">
|
#{nodeId}
|
</foreach>
|
</select>
|
|
<select id="getModelNodeIndexIdRelationInforByCode"
|
resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor">
|
SELECT mn.node_id nodeId,
|
mn."name" "name",
|
ni.index_id indexId
|
FROM "model_node" mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
WHERE mn.model_code = #{code}
|
AND mn.parent_id IS NOT NULL
|
</select>
|
|
<select id="listModelNodeIndexIdRelationInforByParentId"
|
resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor">
|
SELECT mn.node_id nodeId,
|
mn."name" "name",
|
ni.index_id indexId
|
FROM "model_node" mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
WHERE mn.parent_id = #{parentId}
|
</select>
|
|
<select id="getModelNodeIndexIdRelationInforByNodeId"
|
resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor">
|
SELECT mn.node_id nodeId,
|
mn."name" "name",
|
ni.index_id indexId
|
FROM "model_node" mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
WHERE mn.node_id = #{nodeId}
|
</select>
|
|
<select id="getModelNodeByModelCodeByIndexCode" resultType="com.zhitan.model.domain.ModelNode">
|
SELECT node_id nodeId,
|
code,
|
"name",
|
parent_id parentId,
|
address,
|
model_code modelCode,
|
node_category nodeCategory
|
FROM "model_node"
|
WHERE model_code = #{indexCode}
|
AND parent_id IS NULL
|
LIMIT 1;
|
</select>
|
<select id="selectIndexByModelCodeAndNodeId"
|
resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor">
|
SELECT mn.node_id nodeId,
|
mn."name",
|
ni.index_id indexId
|
FROM model_node mn
|
LEFT JOIN node_index ni ON ni.node_id = mn.node_id
|
WHERE mn.model_code = #{modelCode}
|
AND mn.node_id = #{nodeId}
|
</select>
|
|
<select id="getSettingDeviceIndex" resultType="com.zhitan.basicdata.domain.MeterImplement">
|
SELECT distinct
|
m."id",
|
m.code,
|
m.meter_name AS meterName,
|
m.meter_type meterType,
|
m.wire_diameter wireDiameter,
|
m.max_allowable_power maxAllowablePower
|
FROM meter_implement m
|
LEFT JOIN energy_index ei ON ei.meter_id = m."id"
|
LEFT JOIN node_index ni ON ni.index_id = ei.index_id
|
WHERE ni.node_id = #{nodeId}
|
<if test="energyType!=null and energyType!=''">
|
AND M.energy_type = #{energyType}
|
</if>
|
</select>
|
|
<delete id="delIndexNodeIdAndIndexType">
|
delete
|
from node_index
|
where node_id = #{nodeId}
|
and index_id in (select ni.index_id
|
from node_index ni
|
left join energy_index ei on ni.index_id = ei.index_id
|
where node_id = #{nodeId}
|
and ei.index_type = #{indexType});
|
</delete>
|
<insert id="setIndexAndNodeId">
|
<foreach collection="indexIds" item="indexId" separator=";">
|
insert into node_index (node_id, index_id)
|
values (#{nodeId}, #{indexId})
|
</foreach>
|
</insert>
|
|
<select id="getModelNodeIndexIdByNodeId" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor">
|
SELECT mn.node_id nodeId,
|
mn."name" "name",
|
ni.index_id indexId,
|
ei.energy_id energyId,
|
ei.index_type indexType
|
FROM "model_node" mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
LEFT JOIN energy_index ei on ni.index_id = ei.index_id
|
WHERE ni.node_id = #{nodeId}
|
<if test="energyType!=null and energyType!=''">
|
and ei.energy_id = #{energyType}
|
</if>
|
</select>
|
<select id="getModelNodeByParentId" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor">
|
SELECT mn.node_id nodeId,
|
mn."name" "name",
|
ni.index_id indexId,
|
ei.energy_id
|
FROM "model_node" mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
left join energy_index ei on ni.index_id = ei.index_id
|
WHERE mn.parent_id = #{parentId}
|
and ei.index_type = 'STATISTIC'
|
</select>
|
<select id="getFirstModeNodeInfo" resultType="com.zhitan.model.domain.ModelNode">
|
<include refid="selectModelNodeVo"/>
|
where model_code = #{modelCode} AND parent_id is null
|
order by order_num
|
</select>
|
<select id="selectIndexByNodeIds" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfor">
|
SELECT mn.node_id nodeId,
|
mn."name" "name",
|
ni.index_id indexId,
|
ei.energy_id
|
FROM "model_node" mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
left join energy_index ei on ni.index_id = ei.index_id
|
<where>
|
mn.model_code = #{modelCode}
|
AND mn.node_id in
|
<foreach collection="nodeIds" index="index" item="item" open="(" separator="," close=")">
|
#{item}
|
</foreach>
|
<if test="modelCode!=null and modelCode!='' and nodeIds.size>0">
|
and ei.index_type='STATISTIC'
|
</if>
|
|
</where>
|
|
</select>
|
|
<select id="getDataItemByParentNodeId" resultType="com.zhitan.dataitem.domain.vo.NodeIndexValueVO">
|
SELECT mn.node_id nodeId,
|
mn."name" nodeName,
|
di.index_id indexId,
|
di."value" value
|
FROM model_node mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
LEFT JOIN "energy_index" ei ON ei.index_id = ni.index_id
|
LEFT JOIN "data_item" di ON ei.index_id = di.index_id
|
WHERE mn.parent_id = #{parentId}
|
AND ei.energy_id = #{energyType}
|
AND ei.index_type = 'STATISTIC'
|
AND di.time_type = #{timeType.name}
|
AND di.data_time >= #{dateTimeMap.startTime}
|
AND di.data_time <= #{dateTimeMap.endTime}
|
</select>
|
|
<select id="getDataItemByNodeId" resultType="com.zhitan.dataitem.domain.vo.NodeIndexValueVO">
|
SELECT mn.node_id nodeId,
|
mn."name" nodeName,
|
di.index_id indexId,
|
di."value" value
|
FROM "model_node" mn
|
LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
|
LEFT JOIN "energy_index" ei ON ei.index_id = ni.index_id
|
LEFT JOIN "data_item" di ON ei.index_id = di.index_id
|
WHERE mn.node_id = #{nodeId}
|
AND ei.energy_id = #{energyType}
|
AND ei.index_type = 'STATISTIC'
|
AND di.time_type = #{timeType.name}
|
AND di.data_time >= #{dateTimeMap.startTime}
|
AND di.data_time <= #{dateTimeMap.endTime}
|
</select>
|
</mapper>
|