Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

283 строки
8.3 KiB

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.iformall.mapper.KwMeterDataMapper">
  4. <resultMap id="BaseResultMap" type="com.iformall.domain.po.KwMeterData">
  5. <id column="id" jdbcType="BIGINT" property="id"/>
  6. <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
  7. <result column="meter_id" jdbcType="BIGINT" property="meterId"/>
  8. <result column="box_id" jdbcType="BIGINT" property="boxId"/>
  9. <result column="address" jdbcType="VARCHAR" property="address"/>
  10. <result column="total_power" jdbcType="INTEGER" property="totalPower"/>
  11. <result column="device_time" jdbcType="TIMESTAMP" property="deviceTime"/>
  12. <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
  13. <result column="used_power" jdbcType="INTEGER" property="usedPower"/>
  14. <result column="last_device_time" jdbcType="TIMESTAMP" property="lastDeviceTime"/>
  15. <result column="last_total_power" jdbcType="INTEGER" property="lastTotalPower"/>
  16. </resultMap>
  17. <sql id="allColumns">
  18. `id`,`tenant_id`,`meter_id`,`box_id`,`address`,`total_power`,`device_time`,`create_time`,`used_power`,`last_device_time`,`last_total_power`
  19. </sql>
  20. <sql id="dynamicWhereConditions">
  21. where 1 = 1
  22. <if test=" null != id ">
  23. and `id` = #{id}
  24. </if>
  25. <if test=" null != tenantId ">
  26. and `tenant_id` = #{tenantId}
  27. </if>
  28. <if test=" null != boxId ">
  29. and `box_id` = #{boxId}
  30. </if>
  31. <if test=" null != meterId ">
  32. and `meter_id` = #{meterId}
  33. </if>
  34. <if test=" null != address ">
  35. and `address` = #{address}
  36. </if>
  37. <if test=" null != totalPower ">
  38. and `total_power` is not null
  39. </if>
  40. <if test=" null != ids ">
  41. and id in
  42. <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
  43. #{idItem}
  44. </foreach>
  45. </if>
  46. <if test=" null != sortColumns">order by ${sortColumns}</if>
  47. </sql>
  48. <select id="findList" parameterType="com.iformall.domain.po.KwMeterData" resultMap="BaseResultMap">
  49. select
  50. <include refid="allColumns"/>
  51. from kw_meter_data
  52. <include refid="dynamicWhereConditions"/>
  53. </select>
  54. <select id="findLastRecordList" parameterType="com.iformall.domain.po.KwMeterData" resultMap="BaseResultMap">
  55. select
  56. <include refid="allColumns"/>
  57. from kw_meter_data
  58. join
  59. (
  60. select
  61. `meter_id` as maxMeterId,
  62. max(`create_time`) as maxTime
  63. from kw_meter_data
  64. where
  65. `total_power` is not null
  66. <if test=" null != meterId ">
  67. and `meter_id` = #{meterId}
  68. </if>
  69. <if test=" null != ids ">
  70. and `meter_id` in
  71. <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
  72. #{idItem}
  73. </foreach>
  74. </if>
  75. group by `meter_id`
  76. ) temp
  77. on create_time = temp.maxTime
  78. and meter_id = temp.maxMeterId
  79. </select>
  80. <resultMap id="VoResultMap" type="com.iformall.domain.vo.KwMeterDataVo">
  81. <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>
  82. <result column="totalPower" jdbcType="INTEGER" property="totalPower"/>
  83. <result column="lastTotalPower" jdbcType="INTEGER" property="lastTotalPower"/>
  84. <result column="usedPower" jdbcType="INTEGER" property="usedPower"/>
  85. <result column="reportTime" jdbcType="VARCHAR" property="reportTime"/>
  86. <result column="recordStartTime" jdbcType="TIMESTAMP" property="recordStartTime"/>
  87. <result column="recordEndTime" jdbcType="TIMESTAMP" property="recordEndTime"/>
  88. </resultMap>
  89. <sql id="dynamicWhereConditionsVo">
  90. where 1 = 1
  91. <if test=" null != tenantId ">
  92. and `tenant_id` = #{tenantId}
  93. </if>
  94. <if test=" null != boxId ">
  95. and `box_id` = #{boxId}
  96. </if>
  97. <if test=" null != meterId ">
  98. and `meter_id` = #{meterId}
  99. </if>
  100. <if test=" null != address ">
  101. and `address` = #{address}
  102. </if>
  103. <if test=" null != startTime and null != endTime ">
  104. and `create_time` between #{startTime} and #{endTime}
  105. </if>
  106. <if test=" null == reportType and null != reportTime">
  107. and date_format(`create_time`, '%Y-%m-%d %H:00') = #{reportTime}
  108. </if>
  109. <if test=" 1 == reportType and null != reportTime">
  110. and date_format(`create_time`, '%Y-%m-%d') = #{reportTime}
  111. </if>
  112. <if test=" 2 == reportType and null != reportTime">
  113. and date_format(`create_time`, '%Y-%m') = #{reportTime}
  114. </if>
  115. <if test=" 3 == reportType and null != reportTime">
  116. and date_format(`create_time`, '%Y') = #{reportTime}
  117. </if>
  118. <if test=" 4 == reportType and null != reportTime">
  119. and date_format(`create_time`, '%Y-%m') = #{reportTime}
  120. </if>
  121. </sql>
  122. <select id="findVoList" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="VoResultMap">
  123. select
  124. temp.tenant_id,
  125. temp.reportTime,
  126. <if test="4 != reportType ">
  127. min(temp.recordStartTime) as recordStartTime,
  128. max(temp.recordEndTime) as recordEndTime,
  129. sum(temp.totalPower) as totalPower,
  130. sum(temp.lastTotalPower) as lastTotalPower,
  131. </if>
  132. sum(temp.usedPower) as usedPower
  133. from
  134. (SELECT
  135. tenant_id,box_id,meter_id,
  136. <if test=" null == reportType">
  137. create_time as reportTime,
  138. </if>
  139. <if test="1 == reportType ">
  140. date_format(create_time, '%Y-%m-%d %H:00') as reportTime,
  141. </if>
  142. <if test="2 == reportType ">
  143. date_format(create_time, '%Y-%m-%d') as reportTime,
  144. </if>
  145. <if test="3 == reportType ">
  146. date_format(create_time, '%Y-%m') as reportTime,
  147. </if>
  148. <if test="4 == reportType ">
  149. date_format(create_time, '%H:00') as reportTime,
  150. </if>
  151. <if test="4 != reportType ">
  152. min(last_device_time) as recordStartTime,
  153. min(last_total_power) as lastTotalPower,
  154. max(device_time) as recordEndTime,
  155. max(total_power) as totalPower,
  156. </if>
  157. sum(used_power) as usedPower
  158. FROM kw_meter_data
  159. <include refid="dynamicWhereConditionsVo"/>
  160. group by reportTime,meter_id,box_id
  161. ) as temp join kw_meter on id = temp.meter_id
  162. <if test=" null != status ">
  163. and `status` = #{status}
  164. </if>
  165. group by
  166. temp.reportTime,
  167. temp.tenant_id
  168. <if test=" null != boxId ">
  169. ,temp.box_id
  170. </if>
  171. <if test=" null != meterId ">
  172. ,temp.meter_id
  173. </if>
  174. <if test=" null != sortColumns">order by ${sortColumns}</if>
  175. </select>
  176. <select id="getPower" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="VoResultMap">
  177. SELECT
  178. <if test=" null == reportType">
  179. #{reportTime} as reportTime,
  180. </if>
  181. <if test=" 1 == reportType ">
  182. date_format(create_time, '%Y-%m-%d %H:00') as reportTime,
  183. </if>
  184. <if test=" 2 == reportType ">
  185. date_format(create_time, '%Y-%m-%d') as reportTime,
  186. </if>
  187. <if test=" 3 == reportType ">
  188. date_format(create_time, '%Y-%m') as reportTime,
  189. </if>
  190. <if test=" null != startTime">
  191. min(device_time) as recordStartTime,
  192. min(total_power) as totalPower,
  193. </if>
  194. <if test=" null != endTime">
  195. max(device_time) as recordEndTime,
  196. max(total_power) as totalPower,
  197. </if>
  198. <if test=" null != endTime and null != endTime">
  199. sum(used_power) as usedPower,
  200. </if>
  201. <if test=" null != meterId ">
  202. meter_id,
  203. </if>
  204. <if test=" null != boxId ">
  205. box_id,
  206. </if>
  207. tenant_id
  208. FROM kw_meter_data
  209. where 1 = 1
  210. <if test=" null != tenantId ">
  211. and `tenant_id` = #{tenantId}
  212. </if>
  213. <if test=" null != meterId ">
  214. and `meter_id` = #{meterId}
  215. </if>
  216. <if test=" null != address ">
  217. and `address` = #{address}
  218. </if>
  219. <if test=" null != startTime">
  220. <if test=" null == reportType">
  221. and create_time &gt; #{startTime}
  222. </if>
  223. <if test=" 1 == reportType ">
  224. and date_format(create_time, '%Y-%m-%d %H:00') = date_format(#{startTime}, '%Y-%m-%d %H:00')
  225. </if>
  226. <if test=" 2 == reportType ">
  227. and date_format(create_time, '%Y-%m-%d') = date_format(#{startTime}, '%Y-%m-%d')
  228. </if>
  229. <if test=" 3 == reportType ">
  230. and date_format(create_time, '%Y-%m') = date_format(#{startTime}, '%Y-%m')
  231. </if>
  232. </if>
  233. <if test=" null != endTime">
  234. <if test=" null == reportType">
  235. and create_time &lt; #{endTime}
  236. </if>
  237. <if test=" 1 == reportType ">
  238. and date_format(create_time, '%Y-%m-%d %H:00') = date_format(#{endTime}, '%Y-%m-%d %H:00')
  239. </if>
  240. <if test=" 2 == reportType ">
  241. and date_format(create_time, '%Y-%m-%d') = date_format(#{endTime}, '%Y-%m-%d')
  242. </if>
  243. <if test=" 3 == reportType ">
  244. and date_format(create_time, '%Y-%m') = date_format(#{endTime}, '%Y-%m')
  245. </if>
  246. </if>
  247. group by reportTime
  248. <if test=" null != boxId ">
  249. ,box_id
  250. </if>
  251. <if test=" null != meterId ">
  252. ,meter_id
  253. </if>
  254. </select>
  255. </mapper>