YearReportMapper.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  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.YearReportMapper">
  6. <resultMap type="YearReportEntity" id="YearReportResult">
  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="yearReportColumns">
  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="findYearReportById" resultType="com.huaxu.entity.YearReportEntity">
  63. SELECT
  64. <include refid="yearReportColumns"/>
  65. FROM sms_year_report a
  66. WHERE a.id = #{id}
  67. </select>
  68. <!-- 根据获取实体List -->
  69. <select id="findList" resultType="com.huaxu.entity.YearReportEntity">
  70. SELECT
  71. <include refid="yearReportColumns"/>
  72. FROM sms_year_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. b.parent_scene_id as "parentSceneId",
  95. c.SCENE_NAME as "parentSceneName"
  96. FROM sms_year_report a
  97. inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
  98. inner join sms_scene c on b.PARENT_SCENE_ID=c.id
  99. <where>
  100. b.IS_REPORT=1
  101. <if test="yearReport.tenantId != null and yearReport.tenantId != ''">and a.tenant_id =
  102. #{yearReport.tenantId}
  103. </if>
  104. <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
  105. and b.parent_scene_id in
  106. <foreach collection = "yearReport.parentSceneIds" item = "dramaId" open = "(" close = ")" separator = "," >
  107. #{dramaId}
  108. </foreach>
  109. </where>
  110. order by b.parent_scene_id,a.year,a.month
  111. </select>
  112. <select id="findAttributeList" resultType="com.huaxu.dto.ReportAttributeDto">
  113. SELECT tab.attributeName,tab.ATTRIBUTE_TYPE,min(tab.minValue) as "minValue",
  114. max(tab.maxValue) as "maxValue",AVG(tab.avgValue)as "avgValue",
  115. AVG(tab.sumValue)as "sumValue",AVG(tab.latestValue) as "latestValue"
  116. from
  117. (SELECT IFNULL(a.REMARK,b.`NAME`) AS "attributeName",
  118. c.min_value as "minValue" ,c.max_value as "maxValue" ,c.avg_value as "avgValue" ,
  119. c.sum_value as "sumValue" ,c.latest_value as "latestValue",
  120. a.PARM_TYPE as ATTRIBUTE_TYPE
  121. FROM sms_device_parm a
  122. INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID
  123. INNER JOIN sms_year_report c on a.ATTRIBUTE_ID=c.ATTRIBUTE_ID and a.DEVICE_ID=c.DEVICE_ID
  124. where
  125. a.IS_REPORT=1
  126. <if test="report.deviceIds != null and report.deviceIds.size() > 0">
  127. and a.DEVICE_ID in
  128. <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
  129. #{dramaId.id}
  130. </foreach>
  131. </if>
  132. <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
  133. <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
  134. <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
  135. ORDER BY a.SEQ
  136. ) as tab
  137. group by tab.attributeName,tab.ATTRIBUTE_TYPE
  138. </select>
  139. <select id="findReport" resultType="com.huaxu.dto.ReportDto">
  140. select
  141. tab.year,tab.month,
  142. sum(ifnull(intakeWaterUsage,0))as "intakeWaterUsage",
  143. sum(ifnull(yieldWaterUsage,0))as "yieldWaterUsage",
  144. sum(ifnull(powerUsage,0))as "powerUsage",
  145. sum(ifnull(drugUsage,0))as "drugUsage"
  146. from
  147. (SELECT
  148. c.year,c.month,
  149. case when a.PARM_TYPE=4 then
  150. c.latest_value end as "intakeWaterUsage",
  151. case when a.PARM_TYPE=3 then
  152. c.latest_value end as "yieldWaterUsage",
  153. case when a.PARM_TYPE=5 then
  154. c.latest_value end as "powerUsage",
  155. case when a.PARM_TYPE=6 then
  156. c.latest_value end as "drugUsage"
  157. FROM sms_device_parm a
  158. INNER JOIN sms_device_attribute b on a.ATTRIBUTE_ID=b.ID
  159. INNER JOIN sms_year_report c on a.ATTRIBUTE_ID=c.ATTRIBUTE_ID and a.DEVICE_ID=c.DEVICE_ID
  160. where
  161. <if test="report.deviceIds != null and report.deviceIds.size() > 0">
  162. a.DEVICE_ID in
  163. <foreach collection="report.deviceIds" item="dramaId" open="(" close=")" separator=",">
  164. #{dramaId.id}
  165. </foreach>
  166. </if>
  167. <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
  168. <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
  169. <if test="report.parentSceneId != null ">and a.PARENT_SCENE_ID=#{report.parentSceneId}</if>
  170. and (a.PARM_TYPE =3 or a.PARM_TYPE =4 or a.PARM_TYPE =5 or a.PARM_TYPE =6)) tab
  171. group by tab.year,tab.month
  172. order by tab.year desc,tab.month desc
  173. </select>
  174. <!-- 根据获取实体 page -->
  175. <select id="findDevicePressPage" resultType="com.huaxu.dto.DevicePressReportAttributeDto">
  176. SELECT
  177. a.DEVICE_CODE as "deviceCode",
  178. a.DEVICE_NAME as "deviceName",
  179. a.min_value as "minValue" ,a.max_value as "maxValue" ,a.avg_value as "avgValue" ,
  180. a.sum_value as "sumValue" ,a.latest_value as "latestValue",
  181. a.COLLECT_DATE as "collectDate"
  182. FROM sms_year_report a
  183. inner join sms_device d on d.id = a.DEVICE_ID
  184. inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
  185. <if test="yearReport.type == 1">
  186. and b.PARM_TYPE = 13
  187. </if>
  188. <if test="yearReport.type == 2">
  189. and b.PARM_TYPE = 14
  190. </if>
  191. <where>
  192. <if test="yearReport.tenantId != null and yearReport.tenantId != ''">and a.tenant_id =
  193. #{yearReport.tenantId}
  194. </if>
  195. <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
  196. and a.DEVICE_ID in
  197. <foreach collection="yearReport.deviceIds" item="dramaId" open="(" close=")" separator=",">
  198. #{dramaId.id}
  199. </foreach>
  200. </where>
  201. order by a.DEVICE_ID,a.year,a.month
  202. </select>
  203. <!-- 根据获取实体 page -->
  204. <select id="findDeviceWaterPage" resultType="com.huaxu.dto.DeviceWaterReportAttributeDto">
  205. select tab.deviceCode,tab.deviceName,tab.collectDate,
  206. 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,
  207. 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,
  208. 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
  209. from (
  210. SELECT a.DEVICE_ID,a.id,a.DEVICE_CODE as "deviceCode", a.DEVICE_NAME as "deviceName",
  211. case when b.PARM_TYPE=7 then a.min_value end as "minPHValue" ,
  212. case when b.PARM_TYPE=7 then a.max_value end as "maxPHValue" ,
  213. case when b.PARM_TYPE=7 then a.avg_value end as "avgPHValue" ,
  214. case when b.PARM_TYPE=7 then a.sum_value end as "sumPHValue" ,
  215. case when b.PARM_TYPE=7 then a.latest_value end as "latestPHValue",
  216. case when b.PARM_TYPE=10 then a.min_value end as "minQuValue" ,
  217. case when b.PARM_TYPE=10 then a.max_value end as "maxQuValue" ,
  218. case when b.PARM_TYPE=10 then a.avg_value end as "avgQuValue" ,
  219. case when b.PARM_TYPE=10 then a.sum_value end as "sumQuValue" ,
  220. case when b.PARM_TYPE=10 then a.latest_value end as "latestQuValue",
  221. case when b.PARM_TYPE=11 then a.min_value end as "minCLValue" ,
  222. case when b.PARM_TYPE=11 then a.max_value end as "maxCLValue" ,
  223. case when b.PARM_TYPE=11 then a.avg_value end as "avgCLValue" ,
  224. case when b.PARM_TYPE=11 then a.sum_value end as "sumCLValue" ,
  225. case when b.PARM_TYPE=11 then a.latest_value end as "latestCLValue",
  226. a.COLLECT_DATE as "collectDate" ,
  227. a.year,a.month
  228. FROM sms_year_report a
  229. inner join sms_device d on d.id = a.DEVICE_ID
  230. inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID
  231. and (b.PARM_TYPE = 7 or b.PARM_TYPE = 10 or b.PARM_TYPE = 11)
  232. <where>
  233. <if test="yearReport.tenantId != null and yearReport.tenantId != ''">and a.tenant_id =
  234. #{yearReport.tenantId}
  235. </if>
  236. <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
  237. and a.DEVICE_ID in
  238. <foreach collection="yearReport.deviceIds" item="dramaId" open="(" close=")" separator=",">
  239. #{dramaId.id}
  240. </foreach>
  241. </where>) as tab
  242. group by tab.DEVICE_ID,tab.year,tab.month,tab.deviceCode,tab.deviceName,tab.collectDate
  243. order by tab.DEVICE_ID,tab.year,tab.month
  244. </select>
  245. </mapper>