Files
klp-oa/klp-ems/src/main/resources/mapper/EmsMeterMapper.xml
2025-12-09 16:43:45 +08:00

148 lines
6.5 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.klp.ems.mapper.EmsMeterMapper">
<resultMap type="com.klp.ems.domain.EmsMeter" id="EmsMeterResult">
<result property="meterId" column="meter_id"/>
<result property="meterCode" column="meter_code"/>
<result property="energyTypeId" column="energy_type_id"/>
<result property="locationId" column="location_id"/>
<result property="model" column="model"/>
<result property="manufacturer" column="manufacturer"/>
<result property="installDate" column="install_date"/>
<result property="status" column="status"/>
<result property="lastCalibrationDate" column="last_calibration_date"/>
<result property="thresholdValue" column="threshold_value"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
</resultMap>
<resultMap type="com.klp.ems.domain.vo.EmsMeterVo" id="EmsMeterVoResult">
<result property="meterId" column="meter_id"/>
<result property="meterCode" column="meter_code"/>
<result property="energyTypeId" column="energy_type_id"/>
<result property="locationId" column="location_id"/>
<result property="model" column="model"/>
<result property="manufacturer" column="manufacturer"/>
<result property="installDate" column="install_date"/>
<result property="status" column="status"/>
<result property="lastCalibrationDate" column="last_calibration_date"/>
<result property="thresholdValue" column="threshold_value"/>
<result property="remark" column="remark"/>
<result property="warehouseId" column="warehouse_id"/>
<result property="warehouseName" column="warehouse_name"/>
</resultMap>
<resultMap type="com.klp.ems.domain.vo.EnergyLinkMatrixVo" id="EnergyLinkMatrixVoResult">
<result property="warehouseId" column="warehouse_id"/>
<result property="warehouseName" column="warehouse_name"/>
<result property="warehouseCode" column="warehouse_code"/>
<collection property="links" ofType="com.klp.ems.domain.vo.EnergyLinkDetailVo" resultMap="EnergyLinkDetailVoResult"/>
</resultMap>
<resultMap type="com.klp.ems.domain.vo.EnergyLinkDetailVo" id="EnergyLinkDetailVoResult">
<result property="linkId" column="link_id"/>
<result property="meterId" column="meter_id"/>
<result property="meterCode" column="meter_code"/>
<result property="energyTypeId" column="energy_type_id"/>
<result property="energyTypeName" column="energy_type_name"/>
<result property="model" column="model"/>
<result property="manufacturer" column="manufacturer"/>
</resultMap>
<resultMap type="com.klp.ems.domain.vo.EnergyLinkStatisticsVo" id="EnergyLinkStatisticsVoResult">
<result property="totalWarehouses" column="totalWarehouses"/>
<result property="totalMeters" column="totalMeters"/>
<result property="totalLinks" column="totalLinks"/>
<result property="totalEnergyTypes" column="totalEnergyTypes"/>
</resultMap>
<!-- 查询设备列表,包含库区信息 -->
<select id="selectVoList" resultMap="EmsMeterVoResult">
SELECT
m.meter_id,
m.meter_code,
m.energy_type_id,
m.location_id,
m.model,
m.manufacturer,
m.install_date,
m.status,
m.last_calibration_date,
m.threshold_value,
m.remark,
COALESCE(w.warehouse_id, 0) as warehouse_id,
COALESCE(w.warehouse_name, '') as warehouse_name
FROM ems_meter m
LEFT JOIN wms_energy_area_link l ON m.meter_id = l.meter_id AND l.is_enabled = 1
LEFT JOIN wms_warehouse w ON l.warehouse_id = w.warehouse_id
WHERE m.del_flag = '0'
<if test="meterId != null">
AND m.meter_id = #{meterId}
</if>
<if test="meterCode != null and meterCode != ''">
AND m.meter_code LIKE CONCAT('%', #{meterCode}, '%')
</if>
<if test="energyTypeId != null">
AND m.energy_type_id = #{energyTypeId}
</if>
<if test="status != null">
AND m.status = #{status}
</if>
</select>
<select id="selectMeterIds" parameterType="com.klp.ems.domain.bo.MeterFilterBo" resultType="java.lang.Long">
SELECT meter_id
FROM ems_meter
WHERE del_flag = '0'
<if test="meterId != null">
AND meter_id = #{meterId}
</if>
<if test="energyTypeId != null">
AND energy_type_id = #{energyTypeId}
</if>
<if test="locationIds != null and locationIds.size() > 0">
AND location_id IN
<foreach collection="locationIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
<!-- 查询库区-设备绑定矩阵 -->
<select id="selectEnergyLinkMatrix" resultMap="EnergyLinkMatrixVoResult">
SELECT
w.warehouse_id,
w.warehouse_name,
w.warehouse_code,
l.link_id,
l.meter_id,
m.meter_code,
m.energy_type_id,
et.name AS energy_type_name,
m.model,
m.manufacturer
FROM wms_warehouse w
LEFT JOIN wms_energy_area_link l ON w.warehouse_id = l.warehouse_id AND l.is_enabled = 1
LEFT JOIN ems_meter m ON l.meter_id = m.meter_id
LEFT JOIN ems_energy_type et ON m.energy_type_id = et.energy_type_id
WHERE w.del_flag = '0'
ORDER BY w.warehouse_id, l.link_id
</select>
<!-- 查询能源绑定统计信息 -->
<select id="selectEnergyLinkStatistics" resultMap="EnergyLinkStatisticsVoResult">
SELECT
(SELECT COUNT(DISTINCT warehouse_id) FROM wms_warehouse WHERE del_flag = '0') AS totalWarehouses,
(SELECT COUNT(DISTINCT meter_id) FROM ems_meter WHERE del_flag = '0') AS totalMeters,
(SELECT COUNT(DISTINCT link_id) FROM wms_energy_area_link WHERE is_enabled = 1) AS totalLinks,
(SELECT COUNT(DISTINCT energy_type_id) FROM ems_energy_type WHERE del_flag = '0') AS totalEnergyTypes
</select>
</mapper>