YearReportMapper.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  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 and b.`STATUS`=1
  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 and a.`STATUS`=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.SUM_VALUE end as "intakeWaterUsage",
  151. case when a.PARM_TYPE=3 then
  152. c.SUM_VALUE end as "yieldWaterUsage",
  153. case when a.PARM_TYPE=5 then
  154. c.SUM_VALUE end as "powerUsage",
  155. case when a.PARM_TYPE=6 then
  156. c.SUM_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.parentSceneIds != null > 0">
  168. and a.PARENT_SCENE_ID in
  169. <foreach collection="report.parentSceneIds" item="dramaId" open="(" close=")" separator=",">
  170. #{dramaId}
  171. </foreach>
  172. </if>
  173. <if test="report.year != null ">and c.`YEAR`=#{report.year}</if>
  174. <if test="report.month != null ">and c.`MONTH`=#{report.month}</if>
  175. <if test="report.parentSceneId != null ">and a.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) and a.`STATUS`=1) tab
  177. group by tab.year,tab.month
  178. order by tab.year desc,tab.month desc
  179. </select>
  180. <!-- 根据获取实体 page -->
  181. <select id="findDevicePressPage" resultType="com.huaxu.dto.DevicePressReportAttributeDto">
  182. SELECT
  183. a.DEVICE_CODE as "deviceCode",
  184. a.DEVICE_NAME as "deviceName",
  185. a.min_value as "minValue" ,a.max_value as "maxValue" ,a.avg_value as "avgValue" ,
  186. a.sum_value as "sumValue" ,a.latest_value as "latestValue",
  187. a.COLLECT_DATE as "collectDate"
  188. FROM sms_year_report a
  189. inner join sms_device d on d.id = a.DEVICE_ID
  190. inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
  191. <if test="yearReport.type == 1">
  192. and b.PARM_TYPE = 13
  193. </if>
  194. <if test="yearReport.type == 2">
  195. and b.PARM_TYPE = 14
  196. </if>
  197. <where>
  198. <if test="yearReport.tenantId != null and yearReport.tenantId != ''">and a.tenant_id =
  199. #{yearReport.tenantId}
  200. </if>
  201. <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
  202. and a.DEVICE_ID in
  203. <foreach collection="yearReport.deviceIds" item="dramaId" open="(" close=")" separator=",">
  204. #{dramaId.id}
  205. </foreach>
  206. </where>
  207. order by a.DEVICE_ID,a.year,a.month
  208. </select>
  209. <!-- 根据获取实体 page -->
  210. <select id="findDeviceWaterPage" resultType="com.huaxu.dto.DeviceWaterReportAttributeDto">
  211. select tab.deviceCode,tab.deviceName,tab.collectDate,
  212. 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,
  213. 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,
  214. 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
  215. from (
  216. SELECT a.DEVICE_ID,a.id,a.DEVICE_CODE as "deviceCode", a.DEVICE_NAME as "deviceName",
  217. case when b.PARM_TYPE=7 then a.min_value end as "minPHValue" ,
  218. case when b.PARM_TYPE=7 then a.max_value end as "maxPHValue" ,
  219. case when b.PARM_TYPE=7 then a.avg_value end as "avgPHValue" ,
  220. case when b.PARM_TYPE=7 then a.sum_value end as "sumPHValue" ,
  221. case when b.PARM_TYPE=7 then a.latest_value end as "latestPHValue",
  222. case when b.PARM_TYPE=9 then a.min_value end as "minQuValue" ,
  223. case when b.PARM_TYPE=9 then a.max_value end as "maxQuValue" ,
  224. case when b.PARM_TYPE=9 then a.avg_value end as "avgQuValue" ,
  225. case when b.PARM_TYPE=9 then a.sum_value end as "sumQuValue" ,
  226. case when b.PARM_TYPE=9 then a.latest_value end as "latestQuValue",
  227. case when b.PARM_TYPE=11 then a.min_value end as "minCLValue" ,
  228. case when b.PARM_TYPE=11 then a.max_value end as "maxCLValue" ,
  229. case when b.PARM_TYPE=11 then a.avg_value end as "avgCLValue" ,
  230. case when b.PARM_TYPE=11 then a.sum_value end as "sumCLValue" ,
  231. case when b.PARM_TYPE=11 then a.latest_value end as "latestCLValue",
  232. a.COLLECT_DATE as "collectDate" ,
  233. a.year,a.month
  234. FROM sms_year_report a
  235. inner join sms_device d on d.id = a.DEVICE_ID
  236. inner join sms_device_parm b on a.DEVICE_ID = b.DEVICE_ID and a.ATTRIBUTE_ID=b.ATTRIBUTE_ID and b.`STATUS`=1
  237. and (b.PARM_TYPE = 7 or b.PARM_TYPE = 9 or b.PARM_TYPE = 11)
  238. <where>
  239. <if test="yearReport.tenantId != null and yearReport.tenantId != ''">and a.tenant_id =
  240. #{yearReport.tenantId}
  241. </if>
  242. <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
  243. and a.DEVICE_ID in
  244. <foreach collection="yearReport.deviceIds" item="dramaId" open="(" close=")" separator=",">
  245. #{dramaId.id}
  246. </foreach>
  247. </where>) as tab
  248. group by tab.DEVICE_ID,tab.year,tab.month,tab.deviceCode,tab.deviceName,tab.collectDate
  249. order by tab.DEVICE_ID,tab.year,tab.month
  250. </select>
  251. <select id="findAmountTotalBySceneIds" resultType="com.huaxu.entity.YearReportEntity">
  252. select sum(a.LATEST_VALUE) as "latestValue"
  253. from sms_year_report a
  254. inner join sms_device_parm b on a.DEVICE_ID=b.DEVICE_ID and b.ATTRIBUTE_ID=a.ATTRIBUTE_ID and b.`STATUS`=1
  255. inner join (
  256. select max(a.`month`) as month,a.DEVICE_ID
  257. from sms_year_report a
  258. inner join sms_device_parm b on a.DEVICE_ID=b.DEVICE_ID and b.ATTRIBUTE_ID=a.ATTRIBUTE_ID and b.`STATUS`=1
  259. where b.PARM_TYPE=3 and b.PARENT_SCENE_ID in
  260. <foreach collection="yearReport.parentSceneLists" item="dramaId" open="(" close=")" separator=",">
  261. #{dramaId.id}
  262. </foreach>
  263. <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
  264. group by a.DEVICE_ID
  265. ) as tab on tab.DEVICE_ID=a.DEVICE_ID and a.`month`=tab.`month`
  266. where b.PARM_TYPE=3 and b.PARENT_SCENE_ID in
  267. <foreach collection="yearReport.parentSceneLists" item="dramaId" open="(" close=")" separator=",">
  268. #{dramaId.id}
  269. </foreach>
  270. <if test="yearReport.year != null ">and a.year = #{yearReport.year}</if>
  271. </select>
  272. </mapper>