后台服务
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

KwMeterDataMapper.xml 9.0 KiB

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