123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- <?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.huaxu.dao.DayReportMapper">
- <resultMap type="DayReportEntity" id="DayReportResult">
- <result property="id" column="id"/>
- <result property="tenantId" column="tenant_id"/>
- <result property="year" column="year"/>
- <result property="month" column="month"/>
- <result property="day" column="day"/>
- <result property="hour" column="hour"/>
- <result property="parentSceneId" column="parent_scene_id"/>
- <result property="parentSceneName" column="parent_scene_name"/>
- <result property="sceneId" column="scene_id"/>
- <result property="sceneName" column="scene_name"/>
- <result property="deviceId" column="device_id"/>
- <result property="deviceName" column="device_name"/>
- <result property="deviceCode" column="device_code"/>
- <result property="attributeId" column="attribute_id"/>
- <result property="attributeName" column="attribute_name"/>
- <result property="minValue" column="min_value"/>
- <result property="maxValue" column="max_value"/>
- <result property="avgValue" column="avg_value"/>
- <result property="sumValue" column="sum_value"/>
- <result property="latestValue" column="latest_value"/>
- <result property="collectDate" column="collect_date"/>
- <result property="dateCreate" column="date_create"/>
- <result property="createBy" column="create_by"/>
- <result property="dateUpdate" column="date_update"/>
- <result property="updateBy" column="update_by"/>
- </resultMap>
- <!-- 实体栏位 -->
- <sql id="dayReportColumns">
- a.id as "id" ,
- a.tenant_id as "tenantId" ,
- a.year as "year" ,
- a.month as "month" ,
- a.day as "day" ,
- a.hour as "hour" ,
- a.parent_scene_id as "parentSceneId" ,
- a.parent_scene_name as "parentSceneName" ,
- a.scene_id as "sceneId" ,
- a.scene_name as "sceneName" ,
- a.device_id as "deviceId" ,
- a.device_name as "deviceName" ,
- a.device_code as "deviceCode" ,
- a.attribute_id as "attributeId" ,
- a.attribute_name as "attributeName" ,
- a.min_value as "minValue" ,
- a.max_value as "maxValue" ,
- a.avg_value as "avgValue" ,
- a.sum_value as "sumValue" ,
- a.latest_value as "latestValue" ,
- a.collect_date as "collectDate" ,
- a.date_create as "dateCreate" ,
- a.create_by as "createBy" ,
- a.date_update as "dateUpdate" ,
- a.update_by as "updateBy"
- </sql>
- <!-- 根据主键获取实体 -->
- <select id="findDayReportById" resultType="com.huaxu.entity.DayReportEntity">
- SELECT
- <include refid="dayReportColumns"/>
- FROM sms_day_report a
- WHERE a.id = #{id}
- </select>
- <!-- 根据获取实体List -->
- <select id="findList" resultType="com.huaxu.entity.DayReportEntity">
- SELECT
- <include refid="dayReportColumns"/>
- FROM sms_day_report a
- <where>
- <if test="tenantId != null and tenantId != ''">and a.tenant_id = #{tenantId}</if>
- <if test="year != null ">and a.year = #{year}</if>
- <if test="month != null ">and a.month = #{month}</if>
- <if test="day != null ">and a.day = #{day}</if>
- <if test="hour != null ">and a.hour = #{hour}</if>
- <if test="parentSceneId != null ">and a.parent_scene_id = #{parentSceneId}</if>
- <if test="sceneId != null ">and a.scene_id = #{sceneId}</if>
- <if test="deviceId != null ">and a.device_id = #{deviceId}</if>
- <if test="deviceCode != null and deviceCode != ''">and a.device_code = #{deviceCode}</if>
- <if test="attributeId != null ">and a.attribute_id = #{attributeId}</if>
- <if test="collectDate != null ">and a.collect_date = #{collectDate}</if>
- </where>
- </select>
- <!-- 根据获取实体 page -->
- <select id="findPage" resultType="com.huaxu.dto.ReportDto">
- SELECT
- distinct
- a.tenant_id as "tenantId" ,
- a.year as "year" ,
- a.month as "month" ,
- a.day as "day" ,
- a.hour as "hour" ,
- b.parent_scene_id as "parentSceneId",
- c.SCENE_NAME as "parentSceneName"
- FROM sms_day_report a
- inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
- inner join sms_scene c on b.PARENT_SCENE_ID=c.id
- <where>
- b.IS_REPORT=1
- <if test="dayReport.tenantId != null and dayReport.tenantId != ''">and a.tenant_id =
- #{dayReport.tenantId}
- </if>
- <if test="dayReport.year != null ">and a.year = #{dayReport.year}</if>
- <if test="dayReport.month != null ">and a.month = #{dayReport.month}</if>
- <if test="dayReport.day != null ">and a.day = #{dayReport.day}</if>
- and b.parent_scene_id in
- <foreach collection="dayReport.parentSceneIds" item="dramaId" open="(" close=")" separator=",">
- #{dramaId}
- </foreach>
- </where>
- order by b.parent_scene_id,a.year,a.month,a.day,a.hour
- </select>
- <select id="findAttributeList" resultType="com.huaxu.dto.ReportAttributeDto">
- SELECT tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
- max(tab.maxValue) as "maxValue",AVG(tab.avgValue)as "avgValue",
- AVG(tab.sumValue)as "sumValue",AVG(tab.latestValue) as "latestValue"
- from
- (SELECT IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
- c.min_value as "minValue" ,c.max_value as "maxValue" ,c.avg_value as "avgValue" ,
- c.sum_value as "sumValue" ,c.latest_value as "latestValue",
- a.PARM_TYPE as ATTRIBUTE_TYPE
- FROM sms_device_parm a
- INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID
- INNER JOIN sms_day_report c on a.ATTRIBUTE_ID=c.ATTRIBUTE_ID and a.DEVICE_ID=c.DEVICE_ID
- where
- a.IS_REPORT=1 and a.`STATUS`=1
- <if test="report.deviceIds != null and report.deviceIds.size() > 0">
- and a.DEVICE_ID in
- <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
- #{dramaId.id}
- </foreach>
- </if>
- <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
- <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
- <if test="report.day != null ">and c.`DAY`=#{report.day}</if>
- <if test="report.hour != null ">and c.`HOUR`=#{report.hour}</if>
- <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
- ORDER BY a.SEQ
- ) as tab
- group by tab.attributeName,tab.ATTRIBUTE_TYPE
- </select>
- <select id="findReport" resultType="com.huaxu.dto.ReportDto">
- select
- tab.year,tab.month,tab.day,tab.hour,
- sum(ifnull(intakeWaterUsage,0))as "intakeWaterUsage",
- sum(ifnull(yieldWaterUsage,0))as "yieldWaterUsage",
- sum(ifnull(powerUsage,0))as "powerUsage",
- sum(ifnull(drugUsage,0))as "drugUsage"
- from
- (SELECT
- c.year,c.month,c.day,c.hour,
- case when a.PARM_TYPE=4 then
- c.latest_value end as "intakeWaterUsage",
- case when a.PARM_TYPE=3 then
- c.latest_value end as "yieldWaterUsage",
- case when a.PARM_TYPE=5 then
- c.latest_value end as "powerUsage",
- case when a.PARM_TYPE=6 then
- c.latest_value end as "drugUsage"
- FROM sms_device_parm a
- INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID
- INNER JOIN sms_day_report c on a.ATTRIBUTE_ID=c.ATTRIBUTE_ID and a.DEVICE_ID=c.DEVICE_ID
- where
- <if test="report.deviceIds != null and report.deviceIds.size() > 0">
- a.DEVICE_ID in
- <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
- #{dramaId.id}
- </foreach>
- </if>
- <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
- <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
- <if test="report.day != null ">and c.`DAY`=#{report.day}</if>
- <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
- and (a.PARM_TYPE =3 or a.PARM_TYPE =4 or a.PARM_TYPE =5 or a.PARM_TYPE =6) and a.`STATUS`=1) tab
- group by tab.year,tab.month,tab.day,tab.HOUR
- order by tab.year desc,tab.month desc,tab.day desc,tab.hour desc
- </select>
- <!-- 根据获取实体 page -->
- <select id="findDevicePressPage" resultType="com.huaxu.dto.DevicePressReportAttributeDto">
- SELECT
- a.DEVICE_CODE as "deviceCode",
- a.DEVICE_NAME as "deviceName",
- a.min_value as "minValue" ,a.max_value as "maxValue" ,a.avg_value as "avgValue" ,
- a.sum_value as "sumValue" ,a.latest_value as "latestValue",
- a.COLLECT_DATE as "collectDate"
- FROM sms_day_report a
- inner join sms_device d on d.id = a.DEVICE_ID
- inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
- <if test="dayReport.type == 1">
- and b.PARM_TYPE = 13
- </if>
- <if test="dayReport.type == 2">
- and b.PARM_TYPE = 14
- </if>
- <where>
- <if test="dayReport.tenantId != null and dayReport.tenantId != ''">and a.tenant_id =
- #{dayReport.tenantId}
- </if>
- <if test="dayReport.year != null ">and a.year = #{dayReport.year}</if>
- <if test="dayReport.month != null ">and a.month = #{dayReport.month}</if>
- <if test="dayReport.day != null ">and a.day = #{dayReport.day}</if>
- and a.DEVICE_ID in
- <foreach collection="dayReport.deviceIds" item="dramaId" open="(" close=")" separator=",">
- #{dramaId.id}
- </foreach>
- </where>
- order by a.DEVICE_ID,a.year,a.month,a.day,a.hour
- </select>
- <!-- 根据获取实体 page -->
- <select id="findDeviceWaterPage" resultType="com.huaxu.dto.DeviceWaterReportAttributeDto">
- select tab.deviceCode,tab.deviceName,tab.collectDate,
- sum(tab.minPHValue) as minPHValue,sum(tab.maxPHValue) as maxPHValue,sum(tab.avgPHValue) as avgPHValue,sum(tab.sumPHValue) as sumPHValue,sum(tab.latestPHValue) as latestPHValue,
- sum(tab.minQuValue) as minQuValue,sum(tab.maxQuValue) as maxQuValue,sum(tab.avgQuValue) as avgQuValue,sum(tab.sumQuValue) as sumQuValue,sum(tab.latestQuValue) as latestQuValue,
- sum(tab.minCLValue) as minCLValue,sum(tab.maxCLValue) as maxCLValue,sum(tab.avgCLValue) as avgCLValue,sum(tab.sumCLValue) as sumCLValue,sum(tab.latestCLValue) as latestCLValue
- from (
- SELECT a.DEVICE_ID,a.id,a.DEVICE_CODE as "deviceCode", a.DEVICE_NAME as "deviceName",
- case when b.PARM_TYPE=7 then a.min_value end as "minPHValue" ,
- case when b.PARM_TYPE=7 then a.max_value end as "maxPHValue" ,
- case when b.PARM_TYPE=7 then a.avg_value end as "avgPHValue" ,
- case when b.PARM_TYPE=7 then a.sum_value end as "sumPHValue" ,
- case when b.PARM_TYPE=7 then a.latest_value end as "latestPHValue",
- case when b.PARM_TYPE=9 then a.min_value end as "minQuValue" ,
- case when b.PARM_TYPE=9 then a.max_value end as "maxQuValue" ,
- case when b.PARM_TYPE=9 then a.avg_value end as "avgQuValue" ,
- case when b.PARM_TYPE=9 then a.sum_value end as "sumQuValue" ,
- case when b.PARM_TYPE=9 then a.latest_value end as "latestQuValue",
- case when b.PARM_TYPE=11 then a.min_value end as "minCLValue" ,
- case when b.PARM_TYPE=11 then a.max_value end as "maxCLValue" ,
- case when b.PARM_TYPE=11 then a.avg_value end as "avgCLValue" ,
- case when b.PARM_TYPE=11 then a.sum_value end as "sumCLValue" ,
- case when b.PARM_TYPE=11 then a.latest_value end as "latestCLValue",
- a.COLLECT_DATE as "collectDate" ,
- a.year,a.month,a.day,a.hour
- FROM sms_day_report a
- inner join sms_device d on d.id = a.DEVICE_ID
- inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
- and (b.PARM_TYPE = 7 or b.PARM_TYPE = 10 or b.PARM_TYPE = 11)
- <where>
- <if test="dayReport.tenantId != null and dayReport.tenantId != ''">and a.tenant_id =
- #{dayReport.tenantId}
- </if>
- <if test="dayReport.year != null ">and a.year = #{dayReport.year}</if>
- <if test="dayReport.month != null ">and a.month = #{dayReport.month}</if>
- <if test="dayReport.day != null ">and a.day = #{dayReport.day}</if>
- and a.DEVICE_ID in
- <foreach collection="dayReport.deviceIds" item="dramaId" open="(" close=")" separator=",">
- #{dramaId.id}
- </foreach>
- </where>) as tab
- group by tab.DEVICE_ID,tab.year,tab.month,tab.day,tab.hour,tab.deviceCode,tab.deviceName,tab.collectDate
- order by tab.DEVICE_ID,tab.year,tab.month,tab.day,tab.hour
- </select>
- <select id="findDeviceLastDayValue" resultType="com.huaxu.entity.DayReportEntity">
- select a.LATEST_VALUE as "latestValue"
- from sms_day_report a
- where a.ATTRIBUTE_ID= #{dayReport.attributeId} and a.DEVICE_ID=#{dayReport.deviceId}
- <if test="dayReport.year != null ">and a.year = #{dayReport.year}</if>
- <if test="dayReport.month != null ">and a.month = #{dayReport.month}</if>
- <if test="dayReport.day != null ">and a.day = #{dayReport.day}</if>
- order by a.COLLECT_DATE DESC
- limit 1
- </select>
- </mapper>
|