DayReportMapper.xml 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.huaxu.dao.DayReportMapper">
  6. <resultMap type="DayReportEntity" id="DayReportResult">
  7. <result property="id" column="id"/>
  8. <result property="tenantId" column="tenant_id"/>
  9. <result property="year" column="year"/>
  10. <result property="month" column="month"/>
  11. <result property="day" column="day"/>
  12. <result property="hour" column="hour"/>
  13. <result property="parentSceneId" column="parent_scene_id"/>
  14. <result property="parentSceneName" column="parent_scene_name"/>
  15. <result property="sceneId" column="scene_id"/>
  16. <result property="sceneName" column="scene_name"/>
  17. <result property="deviceId" column="device_id"/>
  18. <result property="deviceName" column="device_name"/>
  19. <result property="deviceCode" column="device_code"/>
  20. <result property="attributeId" column="attribute_id"/>
  21. <result property="attributeName" column="attribute_name"/>
  22. <result property="minValue" column="min_value"/>
  23. <result property="maxValue" column="max_value"/>
  24. <result property="avgValue" column="avg_value"/>
  25. <result property="sumValue" column="sum_value"/>
  26. <result property="latestValue" column="latest_value"/>
  27. <result property="collectDate" column="collect_date"/>
  28. <result property="dateCreate" column="date_create"/>
  29. <result property="createBy" column="create_by"/>
  30. <result property="dateUpdate" column="date_update"/>
  31. <result property="updateBy" column="update_by"/>
  32. </resultMap>
  33. <!-- 实体栏位 -->
  34. <sql id="dayReportColumns">
  35. a.id as "id" ,
  36. a.tenant_id as "tenantId" ,
  37. a.year as "year" ,
  38. a.month as "month" ,
  39. a.day as "day" ,
  40. a.hour as "hour" ,
  41. a.parent_scene_id as "parentSceneId" ,
  42. a.parent_scene_name as "parentSceneName" ,
  43. a.scene_id as "sceneId" ,
  44. a.scene_name as "sceneName" ,
  45. a.device_id as "deviceId" ,
  46. a.device_name as "deviceName" ,
  47. a.device_code as "deviceCode" ,
  48. a.attribute_id as "attributeId" ,
  49. a.attribute_name as "attributeName" ,
  50. a.min_value as "minValue" ,
  51. a.max_value as "maxValue" ,
  52. a.avg_value as "avgValue" ,
  53. a.sum_value as "sumValue" ,
  54. a.latest_value as "latestValue" ,
  55. a.collect_date as "collectDate" ,
  56. a.date_create as "dateCreate" ,
  57. a.create_by as "createBy" ,
  58. a.date_update as "dateUpdate" ,
  59. a.update_by as "updateBy"
  60. </sql>
  61. <!-- 根据主键获取实体 -->
  62. <select id="findDayReportById" resultType="com.huaxu.entity.DayReportEntity">
  63. SELECT
  64. <include refid="dayReportColumns"/>
  65. FROM sms_day_report a
  66. WHERE a.id = #{id}
  67. </select>
  68. <!-- 根据获取实体List -->
  69. <select id="findList" resultType="com.huaxu.entity.DayReportEntity">
  70. SELECT
  71. <include refid="dayReportColumns"/>
  72. FROM sms_day_report a
  73. <where>
  74. <if test="tenantId != null and tenantId != ''">and a.tenant_id = #{tenantId}</if>
  75. <if test="year != null ">and a.year = #{year}</if>
  76. <if test="month != null ">and a.month = #{month}</if>
  77. <if test="day != null ">and a.day = #{day}</if>
  78. <if test="hour != null ">and a.hour = #{hour}</if>
  79. <if test="parentSceneId != null ">and a.parent_scene_id = #{parentSceneId}</if>
  80. <if test="sceneId != null ">and a.scene_id = #{sceneId}</if>
  81. <if test="deviceId != null ">and a.device_id = #{deviceId}</if>
  82. <if test="deviceCode != null and deviceCode != ''">and a.device_code = #{deviceCode}</if>
  83. <if test="attributeId != null ">and a.attribute_id = #{attributeId}</if>
  84. <if test="collectDate != null ">and a.collect_date = #{collectDate}</if>
  85. </where>
  86. </select>
  87. <!-- 根据获取实体 page -->
  88. <select id="findPage" resultType="com.huaxu.dto.ReportDto">
  89. SELECT
  90. distinct
  91. a.tenant_id as "tenantId" ,
  92. a.year as "year" ,
  93. a.month as "month" ,
  94. a.day as "day" ,
  95. a.hour as "hour" ,
  96. a.parent_scene_id as "parentSceneId",
  97. a.parent_scene_name as "parentSceneName"
  98. FROM sms_day_report a
  99. inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID
  100. <where>
  101. b.IS_REPORT=1
  102. <if test="dayReport.tenantId != null and dayReport.tenantId != ''">and a.tenant_id =
  103. #{dayReport.tenantId}
  104. </if>
  105. <if test="dayReport.year != null ">and a.year = #{dayReport.year}</if>
  106. <if test="dayReport.month != null ">and a.month = #{dayReport.month}</if>
  107. <if test="dayReport.day != null ">and a.day = #{dayReport.day}</if>
  108. and a.parent_scene_id in
  109. <foreach collection="dayReport.parentSceneIds" item="dramaId" open="(" close=")" separator=",">
  110. #{dramaId}
  111. </foreach>
  112. </where>
  113. order by a.parent_scene_id,a.year,a.month,a.day,a.hour
  114. </select>
  115. <select id="findAttributeList" resultType="com.huaxu.dto.ReportAttributeDto">
  116. SELECT tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
  117. max(tab.maxValue) as "maxValue",AVG(tab.avgValue)as "avgValue",
  118. AVG(tab.sumValue)as "sumValue",AVG(tab.latestValue) as "latestValue"
  119. from
  120. (SELECT IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
  121. c.min_value as "minValue" ,c.max_value as "maxValue" ,c.avg_value as "avgValue" ,
  122. c.sum_value as "sumValue" ,c.latest_value as "latestValue",
  123. a.PARM_TYPE as ATTRIBUTE_TYPE
  124. FROM sms_device_parm a
  125. INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID
  126. INNER JOIN sms_day_report c on a.ATTRIBUTE_ID=c.ATTRIBUTE_ID and a.DEVICE_ID=c.DEVICE_ID
  127. where
  128. a.IS_REPORT=1
  129. <if test="report.deviceIds != null and report.deviceIds.size() > 0">
  130. and a.DEVICE_ID in
  131. <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
  132. #{dramaId.id}
  133. </foreach>
  134. </if>
  135. <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
  136. <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
  137. <if test="report.day != null ">and c.`DAY`=#{report.day}</if>
  138. <if test="report.hour != null ">and c.`HOUR`=#{report.hour}</if>
  139. <if test="report.parentSceneId != null ">and c.PARENT_SCENE_ID=#{report.parentSceneId}</if>
  140. ORDER BY a.SEQ
  141. ) as tab
  142. group by tab.attributeName,tab.ATTRIBUTE_TYPE
  143. </select>
  144. <select id="findReport" resultType="com.huaxu.dto.ReportDto">
  145. select
  146. tab.year,tab.month,tab.day,tab.hour,
  147. sum(ifnull(intakeWaterUsage,0))as "intakeWaterUsage",
  148. sum(ifnull(yieldWaterUsage,0))as "yieldWaterUsage",
  149. sum(ifnull(powerUsage,0))as "powerUsage",
  150. sum(ifnull(drugUsage,0))as "drugUsage"
  151. from
  152. (SELECT
  153. c.year,c.month,c.day,c.hour,
  154. case when a.PARM_TYPE=4 then
  155. c.latest_value end as "intakeWaterUsage",
  156. case when a.PARM_TYPE=3 then
  157. c.latest_value end as "yieldWaterUsage",
  158. case when a.PARM_TYPE=5 then
  159. c.latest_value end as "powerUsage",
  160. case when a.PARM_TYPE=6 then
  161. c.latest_value end as "drugUsage"
  162. FROM sms_device_parm a
  163. INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID
  164. INNER JOIN sms_day_report c on a.ATTRIBUTE_ID=c.ATTRIBUTE_ID and a.DEVICE_ID=c.DEVICE_ID
  165. where
  166. <if test="report.deviceIds != null and report.deviceIds.size() > 0">
  167. a.DEVICE_ID in
  168. <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
  169. #{dramaId.id}
  170. </foreach>
  171. </if>
  172. <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
  173. <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
  174. <if test="report.day != null ">and c.`DAY`=#{report.day}</if>
  175. <if test="report.parentSceneId != null ">and c.PARENT_SCENE_ID=#{report.parentSceneId}</if>
  176. and (a.PARM_TYPE =3 or a.PARM_TYPE =4 or a.PARM_TYPE =5 or a.PARM_TYPE =6)) tab
  177. group by tab.year,tab.month,tab.day,tab.HOUR
  178. order by tab.year desc,tab.month desc,tab.day desc,tab.hour desc
  179. </select>
  180. </mapper>