StatMeterReadRateByBuildingMapper.xml 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191
  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.bz.smart_city.dao.StatMeterReadRateByBuildingMapper">
  4. <!--auto generated Code-->
  5. <resultMap id="BaseResultMap" type="com.bz.smart_city.entity.StatMeterReadRateByBuilding">
  6. <result column="stat_day" property="statDay" jdbcType="INTEGER"/>
  7. <result column="site_id" property="siteId" jdbcType="INTEGER"/>
  8. <result column="channel_id" property="channelId" jdbcType="INTEGER"/>
  9. <result column="customer_id" property="customerId" jdbcType="INTEGER"/>
  10. <result column="building_id" property="buildingId" jdbcType="INTEGER"/>
  11. <result column="device_count" property="deviceCount" jdbcType="INTEGER"/>
  12. <result column="read_times" property="readTimes" jdbcType="INTEGER"/>
  13. <result column="real_read_times" property="realReadTimes" jdbcType="INTEGER"/>
  14. <result column="un_read_times" property="unReadTimes" jdbcType="INTEGER"/>
  15. <result column="read_rate" property="readRate" jdbcType="DECIMAL"/>
  16. <result column="date_create" property="dateCreate" jdbcType="TIMESTAMP"/>
  17. <result column="date_update" property="dateUpdate" jdbcType="TIMESTAMP"/>
  18. </resultMap>
  19. <!--auto generated Code-->
  20. <sql id="Base_Column_List">
  21. stat_day,
  22. site_id,
  23. channel_id,
  24. customer_id,
  25. building_id,
  26. device_count,
  27. read_times,
  28. real_read_times,
  29. un_read_times,
  30. read_rate,
  31. date_create,
  32. date_update
  33. </sql>
  34. <!--auto generated Code-->
  35. <insert id="insert" useGeneratedKeys="true" keyProperty="statMeterReadRateByBuilding.statDay">
  36. INSERT INTO sc_stat_meter_read_rate_by_building (
  37. stat_day,
  38. site_id,
  39. channel_id,
  40. customer_id,
  41. building_id,
  42. device_count,
  43. read_times,
  44. real_read_times,
  45. un_read_times,
  46. read_rate,
  47. date_create,
  48. date_update
  49. ) VALUES (
  50. #{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER},
  51. #{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},
  52. #{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},
  53. #{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},
  54. #{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},
  55. #{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},
  56. #{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},
  57. #{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},
  58. #{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},
  59. #{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},
  60. #{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},
  61. #{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP}
  62. )
  63. </insert>
  64. <!--auto generated Code-->
  65. <insert id="insertSelective" useGeneratedKeys="true" keyProperty="statMeterReadRateByBuilding.statDay">
  66. INSERT INTO sc_stat_meter_read_rate_by_building
  67. <trim prefix="(" suffix=")" suffixOverrides=",">
  68. <if test="statMeterReadRateByBuilding.statDay!=null"> stat_day,</if>
  69. <if test="statMeterReadRateByBuilding.siteId!=null"> site_id,</if>
  70. <if test="statMeterReadRateByBuilding.channelId!=null"> channel_id,</if>
  71. <if test="statMeterReadRateByBuilding.customerId!=null"> customer_id,</if>
  72. <if test="statMeterReadRateByBuilding.buildingId!=null"> building_id,</if>
  73. <if test="statMeterReadRateByBuilding.deviceCount!=null"> device_count,</if>
  74. <if test="statMeterReadRateByBuilding.readTimes!=null"> read_times,</if>
  75. <if test="statMeterReadRateByBuilding.realReadTimes!=null"> real_read_times,</if>
  76. <if test="statMeterReadRateByBuilding.unReadTimes!=null"> un_read_times,</if>
  77. <if test="statMeterReadRateByBuilding.readRate!=null"> read_rate,</if>
  78. <if test="statMeterReadRateByBuilding.dateCreate!=null"> date_create,</if>
  79. <if test="statMeterReadRateByBuilding.dateUpdate!=null"> date_update,</if>
  80. </trim>
  81. VALUES
  82. <trim prefix="(" suffix=")" suffixOverrides=",">
  83. <if test="statMeterReadRateByBuilding.statDay!=null">#{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER},
  84. </if>
  85. <if test="statMeterReadRateByBuilding.siteId!=null">#{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},
  86. </if>
  87. <if test="statMeterReadRateByBuilding.channelId!=null">#{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},
  88. </if>
  89. <if test="statMeterReadRateByBuilding.customerId!=null">#{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},
  90. </if>
  91. <if test="statMeterReadRateByBuilding.buildingId!=null">#{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},
  92. </if>
  93. <if test="statMeterReadRateByBuilding.deviceCount!=null">#{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},
  94. </if>
  95. <if test="statMeterReadRateByBuilding.readTimes!=null">#{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},
  96. </if>
  97. <if test="statMeterReadRateByBuilding.realReadTimes!=null">#{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},
  98. </if>
  99. <if test="statMeterReadRateByBuilding.unReadTimes!=null">#{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},
  100. </if>
  101. <if test="statMeterReadRateByBuilding.readRate!=null">#{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},
  102. </if>
  103. <if test="statMeterReadRateByBuilding.dateCreate!=null">#{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},
  104. </if>
  105. <if test="statMeterReadRateByBuilding.dateUpdate!=null">#{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP},
  106. </if>
  107. </trim>
  108. </insert>
  109. <!--auto generated Code-->
  110. <insert id="insertList">
  111. INSERT INTO sc_stat_meter_read_rate_by_building (
  112. stat_day,
  113. site_id,
  114. channel_id,
  115. customer_id,
  116. building_id,
  117. device_count,
  118. read_times,
  119. real_read_times,
  120. un_read_times,
  121. read_rate,
  122. date_create,
  123. date_update
  124. )VALUES
  125. <foreach collection="statMeterReadRateByBuildings" item="statMeterReadRateByBuilding" index="index" separator=",">
  126. (
  127. #{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER},
  128. #{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},
  129. #{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},
  130. #{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},
  131. #{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},
  132. #{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},
  133. #{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},
  134. #{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},
  135. #{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},
  136. #{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},
  137. #{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},
  138. #{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP}
  139. )
  140. </foreach>
  141. </insert>
  142. <!--auto generated Code-->
  143. <update id="updateByPrimaryKeySelective">
  144. UPDATE sc_stat_meter_read_rate_by_building
  145. <set>
  146. <if test="statMeterReadRateByBuilding.siteId != null"> site_id= #{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},</if>
  147. <if test="statMeterReadRateByBuilding.channelId != null"> channel_id= #{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},</if>
  148. <if test="statMeterReadRateByBuilding.customerId != null"> customer_id= #{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},</if>
  149. <if test="statMeterReadRateByBuilding.buildingId != null"> building_id= #{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},</if>
  150. <if test="statMeterReadRateByBuilding.deviceCount != null"> device_count= #{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},</if>
  151. <if test="statMeterReadRateByBuilding.readTimes != null"> read_times= #{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},</if>
  152. <if test="statMeterReadRateByBuilding.realReadTimes != null"> real_read_times= #{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},</if>
  153. <if test="statMeterReadRateByBuilding.unReadTimes != null"> un_read_times= #{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},</if>
  154. <if test="statMeterReadRateByBuilding.readRate != null"> read_rate= #{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},</if>
  155. <if test="statMeterReadRateByBuilding.dateCreate != null"> date_create= #{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},</if>
  156. <if test="statMeterReadRateByBuilding.dateUpdate != null"> date_update= #{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP}</if>
  157. </set>
  158. WHERE stat_day = #{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER}
  159. </update>
  160. <sql id="where_clause">
  161. WHERE 1 = 1
  162. <!-- 表类型 -->
  163. <if test="param.channelId != null and param.channelId != 0">
  164. and rb.channel_id = #{param.channelId}
  165. </if>
  166. <!-- 数据权限 -->
  167. <if test="param.siteId != null and param.siteId != 0 "> and rb.site_id = #{param.siteId} </if>
  168. <!--
  169. <if test="param.sites != null and param.sites.size() != 0">
  170. and rb.site_id in
  171. <foreach collection="param.sites" item="site" open="(" separator="," close=")">
  172. #{site.id}
  173. </foreach>
  174. </if>
  175. <if test='param.programItems != null and param.programItems.size() != 0' >
  176. and rb.building_id in (
  177. select c.id
  178. from
  179. sc_building c
  180. where 1 = 1
  181. and <foreach collection="param.programItems" item="item" open="(" separator=" or " close=")">
  182. <if test = 'item.dimensionCode == "PROVINCE" '>
  183. c.province = #{item.dimensionValue}
  184. </if>
  185. <if test = 'item.dimensionCode == "CITY" '>
  186. c.city = #{item.dimensionValue}
  187. </if>
  188. <if test = 'item.dimensionCode == "REGION" '>
  189. c.region = #{item.dimensionValue}
  190. </if>
  191. <if test = 'item.dimensionCode == "COMMUNITY" '>
  192. c.community = #{item.dimensionValue}
  193. </if>
  194. <if test = 'item.dimensionCode == "BUILDING" '>
  195. c.id = #{item.dimensionValue}
  196. </if>
  197. </foreach>
  198. )
  199. </if>
  200. -->
  201. <if test='param.programItems != null and param.programItems.size() != 0' >
  202. and
  203. <foreach collection="param.programItems" item="item" open="(" separator=" or " close=")">
  204. <if test = 'item.dimensionCode == "PROVINCE" or item.dimensionCode == "CITY" or item.dimensionCode == "REGION" or item.dimensionCode == "COMMUNITY" '>
  205. b.${item.dimensionCode} = #{item.dimensionValue}
  206. </if>
  207. <if test='item.dimensionCode == "BUILDING" '>
  208. b.id = #{item.dimensionValue}
  209. </if>
  210. <if test='item.dimensionCode == "CUSTOMER" '>
  211. c.id = #{item.dimensionValue}
  212. </if>
  213. </foreach>
  214. </if>
  215. <if test = "param.statDay != null and param.statDay != 0">and rb.stat_day = #{param.statDay}</if>
  216. <if test = "param.startDate != null and param.startDate != 0"> and rb.stat_day >= #{param.startDate}</if>
  217. <if test = "param.endDate != null and param.endDate != 0"> and rb.stat_day <![CDATA[ <= ]]> #{param.endDate}</if>
  218. <if test = "param.beginRate != null "> and rb.read_rate >= #{param.beginRate}</if>
  219. <if test = "param.endRate != null "> and rb.read_rate <![CDATA[ <= ]]> #{param.endRate}</if>
  220. <if test = "param.custormerId != null"> and rb.customer_id = #{param.custormerId}</if>
  221. <if test = "param.communityId != null "> and b.community = #{param.communityId}</if>
  222. <if test = "param.buildingId != null and param.buildingId != 0 "> and rb.building_id = #{param.buildingId}</if>
  223. </sql>
  224. <sql id="base_query">
  225. SELECT
  226. rb.stat_day as stat_day,
  227. rb.building_id as building_id,
  228. b.`name` AS building_name,
  229. rb.device_count AS device_count,
  230. rb.read_times AS read_times,
  231. rb.real_read_times AS real_read_times,
  232. rb.un_read_times AS un_read_times,
  233. rb.read_rate AS read_rate,
  234. de.alarm_device_num AS alarm_device_num ,
  235. c.customer_name as customer_name
  236. FROM
  237. sc_stat_meter_read_rate_by_building rb
  238. LEFT JOIN sc_stat_device_error_day de ON (
  239. rb.stat_day = de.stat_day
  240. AND rb.site_id = de.site_id
  241. AND rb.channel_id = de.sys_id
  242. AND rb.building_id = de.building_id
  243. AND de.alarm_category = '0'
  244. AND de.alarm_type = 0
  245. AND de.handle_status = '0'
  246. )
  247. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  248. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  249. </sql>
  250. <select id="summaryRateListByBuilding" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  251. select
  252. ifnull(SUM(tmp.device_count),0) as device_count,
  253. ifnull(SUM(tmp.read_times),0) as read_times,
  254. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  255. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  256. ifnull(SUM(tmp.alarm_device_num),0) as alarm_device_num,
  257. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  258. from (
  259. <include refid="base_query"></include>
  260. <include refid="where_clause"></include>
  261. ) tmp
  262. </select>
  263. <select id="analysisMeterReadRate" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  264. select
  265. tmp.stat_day as stat_day,
  266. ifnull(SUM(tmp.device_count),0) as device_count,
  267. ifnull(SUM(tmp.read_times),0) as read_times,
  268. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  269. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  270. ifnull(SUM(tmp.alarm_device_num),0) as alarm_device_num,
  271. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  272. from (
  273. <include refid="base_query"></include>
  274. <include refid="where_clause"></include>
  275. ) tmp
  276. group by tmp.stat_day
  277. </select>
  278. <select id="getRateListByBuilding" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  279. <include refid="base_query"></include>
  280. <include refid="where_clause"></include>
  281. order by rb.stat_day desc
  282. </select>
  283. <!--按表类型查询时间范围内的抄表率数据统计-->
  284. <select id="getRateCountByTime" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  285. SELECT
  286. (select SUM(device_count) from sc_stat_meter_read_rate_by_building where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
  287. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  288. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  289. GROUP BY stat_day desc limit 1) as device_count,
  290. SUM(read_times) as read_times,
  291. SUM(real_read_times) as real_read_times,
  292. SUM(un_read_times) as un_read_times,
  293. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  294. FROM sc_stat_meter_read_rate_by_building a
  295. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  296. WHERE a.stat_day = #{startDate}
  297. AND b.`status` = 1
  298. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  299. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  300. <if test="customerIds != null and customerIds.size() != 0"> and a.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  301. </select>
  302. <!--按表类型查询7天内的抄表率数据统计-->
  303. <select id="getRateCount7DayByTime" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  304. SELECT
  305. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_7day where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
  306. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  307. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  308. GROUP BY stat_day desc limit 1) as device_count,
  309. SUM(read_times) as read_times,
  310. SUM(real_read_times) as real_read_times,
  311. SUM(un_read_times) as un_read_times,
  312. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  313. FROM sc_stat_meter_read_rate_by_building_7day a
  314. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  315. WHERE a.stat_day = #{startDate}
  316. AND b.`status` = 1
  317. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  318. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  319. <if test="customerIds != null and customerIds.size() != 0"> and a.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  320. </select>
  321. <!--按表类型查询15天内的抄表率数据统计-->
  322. <select id="getRateCount15DayByTime" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  323. SELECT
  324. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_15day where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
  325. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  326. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  327. GROUP BY stat_day desc limit 1) as device_count,
  328. SUM(read_times) as read_times,
  329. SUM(real_read_times) as real_read_times,
  330. SUM(un_read_times) as un_read_times,
  331. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  332. FROM sc_stat_meter_read_rate_by_building_15day a
  333. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  334. WHERE a.stat_day = #{startDate}
  335. AND b.`status` = 1
  336. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  337. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  338. <if test="customerIds != null and customerIds.size() != 0"> and a.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  339. </select>
  340. <!--查询时间范围内根据表类型的抄表率数据统计-->
  341. <select id="getRateListByType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  342. select * from (
  343. SELECT
  344. swmt.channel_id,
  345. sdt.equipment_type as device_type_name,
  346. (select SUM(device_count) from sc_stat_meter_read_rate_by_building where channel_id = swmt.channel_id <if test="siteId != null"> and site_id = #{siteId} </if>
  347. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  348. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  349. GROUP BY stat_day desc limit 1) as device_count,
  350. SUM(ssmrrbb.read_times) as read_times,
  351. SUM(ssmrrbb.real_read_times) as real_read_times,
  352. SUM(ssmrrbb.un_read_times) as un_read_times,
  353. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  354. FROM sc_w_meter_type swmt
  355. LEFT JOIN sc_stat_meter_read_rate_by_building ssmrrbb on (
  356. ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  357. and ssmrrbb.stat_day = #{startDate}
  358. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  359. <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  360. )
  361. left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
  362. WHERE swmt.`level` = 2
  363. GROUP BY swmt.channel_id,sdt.equipment_type
  364. <if test="sortColumn != null and sortColumn != ''">
  365. <if test="sortOrder != null and sortOrder != ''">
  366. order by ${sortColumn} ${sortOrder}
  367. </if>
  368. </if>
  369. ) t1
  370. where t1.device_count is not null
  371. </select>
  372. <!--查询7天内根据表类型的抄表率数据统计-->
  373. <select id="getRateList7DayByType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  374. <if test="siteId != null">select * from (
  375. SELECT
  376. swmt.channel_id,
  377. sdt.equipment_type as device_type_name,
  378. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_7day where channel_id =
  379. swmt.channel_idand site_id = #{siteId}
  380. </if>
  381. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  382. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  383. GROUP BY stat_day desc limit 1) as device_count,
  384. SUM(ssmrrbb.read_times) as read_times,
  385. SUM(ssmrrbb.real_read_times) as real_read_times,
  386. SUM(ssmrrbb.un_read_times) as un_read_times,
  387. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  388. FROM sc_w_meter_type swmt
  389. LEFT JOIN sc_stat_meter_read_rate_by_building_7day ssmrrbb on (
  390. ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  391. and ssmrrbb.stat_day = #{startDate}
  392. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  393. <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  394. )
  395. left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
  396. WHERE swmt.`level` = 2
  397. GROUP BY swmt.channel_id,sdt.equipment_type
  398. <if test="sortColumn != null and sortColumn != ''">
  399. <if test="sortOrder != null and sortOrder != ''">
  400. order by ${sortColumn} ${sortOrder}
  401. </if>
  402. </if>
  403. ) t1 where t1.device_count is not null
  404. </select>
  405. <!--查询15天内根据表类型的抄表率数据统计-->
  406. <select id="getRateList15DayByType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  407. <if test="siteId != null">select * from (
  408. SELECT
  409. swmt.channel_id,
  410. sdt.equipment_type as device_type_name,
  411. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_15day where channel_id =
  412. swmt.channel_idand site_id = #{siteId}
  413. </if>
  414. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  415. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  416. GROUP BY stat_day desc limit 1) as device_count,
  417. SUM(ssmrrbb.read_times) as read_times,
  418. SUM(ssmrrbb.real_read_times) as real_read_times,
  419. SUM(ssmrrbb.un_read_times) as un_read_times,
  420. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  421. FROM sc_w_meter_type swmt
  422. LEFT JOIN sc_stat_meter_read_rate_by_building_15day ssmrrbb on (
  423. ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  424. and ssmrrbb.stat_day = #{startDate}
  425. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  426. <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  427. )
  428. left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
  429. WHERE swmt.`level` = 2
  430. GROUP BY swmt.channel_id,sdt.equipment_type
  431. <if test="sortColumn != null and sortColumn != ''">
  432. <if test="sortOrder != null and sortOrder != ''">
  433. order by ${sortColumn} ${sortOrder}
  434. </if>
  435. </if>
  436. ) t1 where t1.device_count is not null
  437. </select>
  438. <!--查询最近7天抄表率-->
  439. <select id="getLast7DaysReadRate" resultType="java.lang.Double">
  440. SELECT
  441. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0)
  442. FROM
  443. sc_stat_meter_read_rate_by_building ssmrrbb
  444. WHERE
  445. stat_day between #{beginTime} AND #{endTime}
  446. <if test="programItems != null and programItems.size() != 0">
  447. and EXISTS(
  448. select 1 from
  449. (select sd.building_id FROM sc_device_dim_info df
  450. LEFT JOIN sc_device sd ON sd.id = df.device_id
  451. WHERE 1 = 1
  452. and
  453. <foreach collection="programItems" item="item" open="(" separator=" or " close=")">
  454. (df.dimension_code = #{item.dimensionCode} and df.dimension_value = #{item.dimensionValue})
  455. </foreach>
  456. GROUP BY sd.building_id) ud
  457. WHERE ud.building_id = ssmrrbb.building_id
  458. )
  459. </if>
  460. <if test="siteId != null">
  461. AND site_id = #{siteId}
  462. </if>
  463. <if test="channelId != null">
  464. AND channel_id = #{channelId}
  465. </if>
  466. <if test="customerId != null">
  467. AND customer_id = #{customerId}
  468. </if>
  469. </select>
  470. <!--按客户查询时间范围内的抄表率数数据统计-->
  471. <select id="getRateListByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  472. SELECT
  473. sc.id as customer_id,
  474. sc.customer_name,
  475. (select SUM(device_count) from sc_stat_meter_read_rate_by_building where customer_id = ssmrrbb.customer_id <if test="siteId != null"> and site_id = #{siteId} </if>
  476. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  477. GROUP BY stat_day desc limit 1) as device_count,
  478. SUM(ssmrrbb.read_times) as read_times,
  479. SUM(ssmrrbb.real_read_times) as real_read_times,
  480. SUM(ssmrrbb.un_read_times) as un_read_times,
  481. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  482. FROM sc_customer sc
  483. LEFT JOIN sc_stat_meter_read_rate_by_building ssmrrbb on(
  484. ssmrrbb.customer_id = sc.id
  485. <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  486. and ssmrrbb.stat_day = #{startDate}
  487. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  488. )
  489. WHERE sc.status = 1
  490. <if test="customerList != null and customerList.size() != 0">
  491. and sc.id in
  492. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  493. </if>
  494. GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
  495. <if test="sortColumn != null and sortColumn != ''">
  496. <if test="sortOrder != null and sortOrder != ''">
  497. order by ${sortColumn} ${sortOrder}
  498. </if>
  499. </if>
  500. </select>
  501. <select id="getRateListByCustomerV2" resultType="com.bz.smart_city.dto.CustomerRateDto">
  502. SELECT sc.id as customer_id,sc.parent_id,sc.customer_name,sc.children_num FROM sc_customer sc
  503. LEFT JOIN(
  504. SELECT
  505. ssmrrbb.customer_id,
  506. SUM(device_count) as device_count
  507. FROM
  508. ${tableName} ssmrrbb
  509. WHERE
  510. ssmrrbb.site_id = #{siteId}
  511. <if test="channelId != null"> and ssmrrbb.channel_id = #{channelId} </if>
  512. AND ssmrrbb.stat_day = #{startDate}
  513. AND ssmrrbb.channel_id <![CDATA[ <> ]]> - 99
  514. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  515. <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  516. GROUP BY
  517. ssmrrbb.customer_id
  518. )t1 on(t1.customer_id = sc.id)
  519. WHERE sc.`status` = 1 and sc.site_id = #{siteId}
  520. <if test="customerIds != null and customerIds.size() != 0"> and sc.id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  521. ORDER BY device_count desc
  522. </select>
  523. <select id="getRateListByCustomerV2AndDeviceType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  524. SELECT
  525. ssmrrbb.customer_id,
  526. ssmrrbb.channel_id,
  527. sc.channel_name,
  528. SUM(device_count) as device_count,
  529. SUM(ssmrrbb.read_times) as read_times,
  530. SUM(ssmrrbb.real_read_times) as real_read_times,
  531. SUM(ssmrrbb.un_read_times) as un_read_times,
  532. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  533. FROM ${tableName} ssmrrbb
  534. left join sc_channel sc on(sc.id = ssmrrbb.channel_id)
  535. WHERE
  536. ssmrrbb.site_id = #{siteId}
  537. and ssmrrbb.stat_day = #{startDate}
  538. AND ssmrrbb.channel_id <![CDATA[ <> ]]> - 99
  539. <if test="customerId != null"> and ssmrrbb.customer_id = #{customerId} </if>
  540. <if test="channelId != null"> and ssmrrbb.channel_id = #{channelId} </if>
  541. GROUP BY ssmrrbb.customer_id,ssmrrbb.channel_id,sc.channel_name
  542. order by read_rate desc
  543. </select>
  544. <!--按客户查询7天内的抄表率数数据统计-->
  545. <select id="getRateList7DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  546. SELECT
  547. sc.id as customer_id,
  548. sc.customer_name,
  549. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_7day where customer_id = ssmrrbb.customer_id <if test="siteId != null"> and site_id = #{siteId} </if>
  550. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  551. GROUP BY stat_day desc limit 1) as device_count,
  552. SUM(ssmrrbb.read_times) as read_times,
  553. SUM(ssmrrbb.real_read_times) as real_read_times,
  554. SUM(ssmrrbb.un_read_times) as un_read_times,
  555. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  556. FROM sc_customer sc
  557. LEFT JOIN sc_stat_meter_read_rate_by_building_7day ssmrrbb on(
  558. ssmrrbb.customer_id = sc.id
  559. <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  560. and ssmrrbb.stat_day = #{startDate}
  561. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  562. )
  563. WHERE sc.status = 1
  564. <if test="customerList != null and customerList.size() != 0">
  565. and sc.id in
  566. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  567. </if>
  568. GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
  569. <if test="sortColumn != null and sortColumn != ''">
  570. <if test="sortOrder != null and sortOrder != ''">
  571. order by ${sortColumn} ${sortOrder}
  572. </if>
  573. </if>
  574. </select>
  575. <!--按客户查询15天内的抄表率数数据统计-->
  576. <select id="getRateList15DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  577. SELECT
  578. sc.id as customer_id,
  579. sc.customer_name,
  580. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_15day where customer_id = ssmrrbb.customer_id <if test="siteId != null"> and site_id = #{siteId} </if>
  581. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  582. GROUP BY stat_day desc limit 1) as device_count,
  583. SUM(ssmrrbb.read_times) as read_times,
  584. SUM(ssmrrbb.real_read_times) as real_read_times,
  585. SUM(ssmrrbb.un_read_times) as un_read_times,
  586. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  587. FROM sc_customer sc
  588. LEFT JOIN sc_stat_meter_read_rate_by_building_15day ssmrrbb on(
  589. ssmrrbb.customer_id = sc.id
  590. <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  591. and ssmrrbb.stat_day = #{startDate}
  592. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  593. )
  594. WHERE sc.status = 1
  595. <if test="customerList != null and customerList.size() != 0">
  596. and sc.id in
  597. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  598. </if>
  599. GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
  600. <if test="sortColumn != null and sortColumn != ''">
  601. <if test="sortOrder != null and sortOrder != ''">
  602. order by ${sortColumn} ${sortOrder}
  603. </if>
  604. </if>
  605. </select>
  606. <!--按客户查询时间范围内的抄表率数据统计-->
  607. <select id="getCountByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  608. SELECT
  609. (select SUM(device_count) from sc_stat_meter_read_rate_by_building where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
  610. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  611. GROUP BY stat_day desc limit 1) as device_count,
  612. SUM(read_times) as read_times,
  613. SUM(real_read_times) as real_read_times,
  614. SUM(un_read_times) as un_read_times,
  615. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  616. FROM sc_stat_meter_read_rate_by_building a
  617. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  618. WHERE a.stat_day = #{startDate}
  619. AND b.`status` = 1
  620. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  621. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  622. <if test="customerList != null and customerList.size() != 0">
  623. and a.customer_id in
  624. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  625. </if>
  626. </select>
  627. <select id="getCountByCustomerV2" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  628. SELECT
  629. SUM(device_count) as device_count,
  630. SUM(read_times) as read_times,
  631. SUM(real_read_times) as real_read_times,
  632. SUM(un_read_times) as un_read_times,
  633. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  634. FROM ${tableName} scmrrbb
  635. WHERE stat_day = #{startDate}
  636. and channel_id <![CDATA[ <> ]]> - 99
  637. <if test="siteId != null"> and site_id = #{siteId} </if>
  638. <if test="channelId != null"> and channel_id = #{channelId} </if>
  639. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  640. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  641. </select>
  642. <!--按客户查询时间范围内的抄表率数据统计-->
  643. <select id="getCount7DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  644. SELECT
  645. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_7day where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
  646. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  647. GROUP BY stat_day desc limit 1) as device_count,
  648. SUM(read_times) as read_times,
  649. SUM(real_read_times) as real_read_times,
  650. SUM(un_read_times) as un_read_times,
  651. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  652. FROM sc_stat_meter_read_rate_by_building_7day a
  653. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  654. WHERE a.stat_day = #{startDate}
  655. AND b.`status` = 1
  656. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  657. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  658. <if test="customerList != null and customerList.size() != 0">
  659. and a.customer_id in
  660. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  661. </if>
  662. </select>
  663. <!--按客户查询时间范围内的抄表率数据统计-->
  664. <select id="getCount15DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  665. SELECT
  666. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_15day where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
  667. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  668. GROUP BY stat_day desc limit 1) as device_count,
  669. SUM(read_times) as read_times,
  670. SUM(real_read_times) as real_read_times,
  671. SUM(un_read_times) as un_read_times,
  672. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  673. FROM sc_stat_meter_read_rate_by_building_15day a
  674. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  675. WHERE a.stat_day = #{startDate}
  676. AND b.`status` = 1
  677. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  678. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  679. <if test="customerList != null and customerList.size() != 0">
  680. and a.customer_id in
  681. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  682. </if>
  683. </select>
  684. <!-- 按建筑统计天表 -->
  685. <sql id="base_GetRateListByBuildingForDay">
  686. select
  687. rb.stat_day as stat_day,
  688. rb.building_id as building_id,
  689. b.`name` AS building_name,
  690. rb.device_count AS device_count,
  691. rb.read_times AS read_times,
  692. rb.real_read_times AS real_read_times,
  693. rb.un_read_times AS un_read_times,
  694. rb.read_rate AS read_rate,
  695. rb.customer_id as customer_id,
  696. c.customer_name as customer_name
  697. from
  698. sc_stat_meter_read_rate_by_building rb
  699. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  700. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  701. </sql>
  702. <select id="getRateListByBuildingForDay" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  703. <include refid="base_GetRateListByBuildingForDay"></include>
  704. <include refid="where_clause"></include>
  705. <if test="param.sortColumn != null and param.sortColumn != ''">
  706. <if test="param.sortOrder != null and param.sortOrder != ''">
  707. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  708. </if>
  709. </if>
  710. </select>
  711. <select id="getRateAreaListByBuildingForDay" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  712. select
  713. b.id,
  714. b.name,
  715. b.province,
  716. b.city,
  717. b.region,
  718. b.community,
  719. b.longitude,
  720. b.latitude,
  721. 0
  722. from
  723. sc_stat_meter_read_rate_by_building rb
  724. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  725. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  726. <include refid="where_clause"></include>
  727. </select>
  728. <select id="summaryRateListByBuildingForDay" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  729. select
  730. ifnull(SUM(tmp.device_count),0) as device_count,
  731. ifnull(SUM(tmp.read_times),0) as read_times,
  732. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  733. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  734. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  735. from (
  736. <include refid="base_GetRateListByBuildingForDay"></include>
  737. <include refid="where_clause"></include>
  738. ) tmp
  739. <if test="param.sortColumn != null and param.sortColumn != ''">
  740. <if test="param.sortOrder != null and param.sortOrder != ''">
  741. order by read_rate ${param.sortOrder}
  742. </if>
  743. </if>
  744. </select>
  745. <!-- 按建筑统计天表 新装水表场景适用 -->
  746. <sql id="base_GetRateListByBuildingForDayWithNew">
  747. select
  748. rb.stat_day as stat_day,
  749. rb.building_id as building_id,
  750. b.`name` AS building_name,
  751. rb.device_count AS device_count,
  752. rb.read_times AS read_times,
  753. rb.real_read_times AS real_read_times,
  754. rb.un_read_times AS un_read_times,
  755. rb.customer_id as customer_id,
  756. c.customer_name as customer_name,
  757. (
  758. SELECT
  759. count( 1 )
  760. FROM
  761. sc_install_list l
  762. WHERE
  763. l.`status` = 1
  764. AND l.is_installed = 1
  765. AND l.is_accepted = 0
  766. AND l.building_id = rb.building_id
  767. ) AS installed_device_count,
  768. (
  769. SELECT
  770. SUM( IF ( d.device_status = 5, 1, 0 ) )
  771. FROM
  772. sc_device d
  773. WHERE
  774. d.building_id = rb.building_id
  775. AND d.`status` = 1
  776. AND d.sys_id = - 99
  777. ) AS unenable_device_count ,
  778. FORMAT(rb.real_read_times/ (
  779. SELECT
  780. count( 1 )
  781. FROM
  782. sc_install_list l
  783. WHERE
  784. l.`status` = 1
  785. AND l.is_installed = 1
  786. AND l.is_accepted = 0
  787. AND l.building_id = rb.building_id
  788. ) *100, 2) as read_rate
  789. from
  790. sc_stat_meter_read_rate_by_building rb
  791. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  792. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  793. </sql>
  794. <select id="getRateListByBuildingForDayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  795. <include refid="base_GetRateListByBuildingForDayWithNew"></include>
  796. <include refid="where_clause"></include>
  797. <if test="param.sortColumn != null and param.sortColumn != ''">
  798. <if test="param.sortOrder != null and param.sortOrder != ''">
  799. order by ${param.sortColumn} ${param.sortOrder}
  800. </if>
  801. </if>
  802. </select>
  803. <select id="summaryRateListByBuildingForDayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  804. select
  805. ifnull(SUM(tmp.installed_device_count),0) as device_count,
  806. ifnull(SUM(tmp.read_times),0) as read_times,
  807. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  808. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  809. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
  810. from (
  811. <include refid="base_GetRateListByBuildingForDayWithNew"></include>
  812. <include refid="where_clause"></include>
  813. ) tmp
  814. <if test="param.sortColumn != null and param.sortColumn != ''">
  815. <if test="param.sortOrder != null and param.sortOrder != ''">
  816. order by read_rate ${param.sortOrder}
  817. </if>
  818. </if>
  819. </select>
  820. <!-- 按建筑统计7天表 -->
  821. <sql id="base_GetRateListByBuildingFor7Day">
  822. select
  823. rb.stat_day as stat_day,
  824. rb.building_id as building_id,
  825. b.`name` AS building_name,
  826. rb.device_count AS device_count,
  827. rb.read_times AS read_times,
  828. rb.real_read_times AS real_read_times,
  829. rb.un_read_times AS un_read_times,
  830. rb.read_rate AS read_rate,
  831. rb.customer_id as customer_id,
  832. c.customer_name as customer_name
  833. from
  834. sc_stat_meter_read_rate_by_building_7day rb
  835. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  836. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  837. </sql>
  838. <select id="getRateAreaListByBuildingFor7Day" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  839. select
  840. b.id,
  841. b.name,
  842. b.province,
  843. b.city,
  844. b.region,
  845. b.community,
  846. b.longitude,
  847. b.latitude,
  848. 0
  849. from
  850. sc_stat_meter_read_rate_by_building_7day rb
  851. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  852. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  853. <include refid="where_clause"></include>
  854. </select>
  855. <select id="getRateListByBuildingFor7Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  856. <include refid="base_GetRateListByBuildingFor7Day"></include>
  857. <include refid="where_clause"></include>
  858. <if test="param.sortColumn != null and param.sortColumn != ''">
  859. <if test="param.sortOrder != null and param.sortOrder != ''">
  860. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  861. </if>
  862. </if>
  863. </select>
  864. <select id="summaryRateListByBuildingFor7Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  865. select
  866. ifnull(SUM(tmp.device_count),0) as device_count,
  867. ifnull(SUM(tmp.read_times),0) as read_times,
  868. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  869. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  870. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  871. from (
  872. <include refid="base_GetRateListByBuildingFor7Day"></include>
  873. <include refid="where_clause"></include>
  874. ) tmp
  875. <if test="param.sortColumn != null and param.sortColumn != ''">
  876. <if test="param.sortOrder != null and param.sortOrder != ''">
  877. order by read_rate ${param.sortOrder}
  878. </if>
  879. </if>
  880. </select>
  881. <!-- 按建筑统计7天表 新装水表场景适用 -->
  882. <sql id="base_GetRateListByBuildingFor7DayWithNew">
  883. select
  884. rb.stat_day as stat_day,
  885. rb.building_id as building_id,
  886. b.`name` AS building_name,
  887. rb.device_count AS device_count,
  888. rb.read_times AS read_times,
  889. rb.real_read_times AS real_read_times,
  890. rb.un_read_times AS un_read_times,
  891. rb.customer_id as customer_id,
  892. c.customer_name as customer_name,
  893. (
  894. SELECT
  895. count( 1 )
  896. FROM
  897. sc_install_list l
  898. WHERE
  899. l.`status` = 1
  900. AND l.is_installed = 1
  901. AND l.is_accepted = 0
  902. AND l.building_id = rb.building_id
  903. ) AS installed_device_count,
  904. (
  905. SELECT
  906. SUM( IF ( d.device_status = 5, 1, 0 ) )
  907. FROM
  908. sc_device d
  909. WHERE
  910. d.building_id = rb.building_id
  911. AND d.`status` = 1
  912. AND d.sys_id = - 99
  913. ) AS unenable_device_count ,
  914. FORMAT(rb.real_read_times/ (
  915. SELECT
  916. count( 1 )
  917. FROM
  918. sc_install_list l
  919. WHERE
  920. l.`status` = 1
  921. AND l.is_installed = 1
  922. AND l.is_accepted = 0
  923. AND l.building_id = rb.building_id
  924. ) *100, 2) as read_rate
  925. from
  926. sc_stat_meter_read_rate_by_building_7day rb
  927. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  928. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  929. </sql>
  930. <select id="getRateListByBuildingFor7DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  931. <include refid="base_GetRateListByBuildingFor7DayWithNew"></include>
  932. <include refid="where_clause"></include>
  933. <if test="param.sortColumn != null and param.sortColumn != ''">
  934. <if test="param.sortOrder != null and param.sortOrder != ''">
  935. order by ${param.sortColumn} ${param.sortOrder}
  936. </if>
  937. </if>
  938. </select>
  939. <select id="summaryRateListByBuildingFor7DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  940. select
  941. ifnull(SUM(tmp.installed_device_count),0) as device_count,
  942. ifnull(SUM(tmp.read_times),0) as read_times,
  943. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  944. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  945. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
  946. from (
  947. <include refid="base_GetRateListByBuildingFor7DayWithNew"></include>
  948. <include refid="where_clause"></include>
  949. ) tmp
  950. <if test="param.sortColumn != null and param.sortColumn != ''">
  951. <if test="param.sortOrder != null and param.sortOrder != ''">
  952. order by read_rate ${param.sortOrder}
  953. </if>
  954. </if>
  955. </select>
  956. <!-- 按建筑统计15天表 -->
  957. <sql id="base_GetRateListByBuildingFor15Day">
  958. select
  959. rb.stat_day as stat_day,
  960. rb.building_id as building_id,
  961. b.`name` AS building_name,
  962. rb.device_count AS device_count,
  963. rb.read_times AS read_times,
  964. rb.real_read_times AS real_read_times,
  965. rb.un_read_times AS un_read_times,
  966. rb.read_rate AS read_rate,
  967. rb.customer_id as customer_id,
  968. c.customer_name as customer_name
  969. from
  970. sc_stat_meter_read_rate_by_building_15day rb
  971. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  972. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  973. </sql>
  974. <!-- 按建筑统计月表 -->
  975. <sql id="base_GetRateListByBuildingForMonth">
  976. select
  977. rb.stat_day as stat_day,
  978. rb.building_id as building_id,
  979. b.`name` AS building_name,
  980. rb.device_count AS device_count,
  981. rb.read_times AS read_times,
  982. rb.real_read_times AS real_read_times,
  983. rb.un_read_times AS un_read_times,
  984. rb.read_rate AS read_rate,
  985. rb.customer_id as customer_id,
  986. c.customer_name as customer_name
  987. from
  988. sc_stat_meter_read_rate_by_building_month rb
  989. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  990. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  991. </sql>
  992. <select id="getRateListByBuildingFor15Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  993. <include refid="base_GetRateListByBuildingFor15Day"></include>
  994. <include refid="where_clause"></include>
  995. <if test="param.sortColumn != null and param.sortColumn != ''">
  996. <if test="param.sortOrder != null and param.sortOrder != ''">
  997. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  998. </if>
  999. </if>
  1000. </select>
  1001. <select id="getRateListByBuildingForMonth" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1002. <include refid="base_GetRateListByBuildingForMonth"></include>
  1003. <include refid="where_clause"></include>
  1004. <if test="param.sortColumn != null and param.sortColumn != ''">
  1005. <if test="param.sortOrder != null and param.sortOrder != ''">
  1006. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  1007. </if>
  1008. </if>
  1009. </select>
  1010. <select id="getRateAreaListByBuildingFor15Day" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  1011. select
  1012. b.id,
  1013. b.name,
  1014. b.province,
  1015. b.city,
  1016. b.region,
  1017. b.community,
  1018. b.longitude,
  1019. b.latitude,
  1020. 0
  1021. from
  1022. sc_stat_meter_read_rate_by_building_15day rb
  1023. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  1024. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  1025. <include refid="where_clause"></include>
  1026. </select>
  1027. <select id="getRateAreaListByBuildingForMonth" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  1028. select
  1029. b.id,
  1030. b.name,
  1031. b.province,
  1032. b.city,
  1033. b.region,
  1034. b.community,
  1035. b.longitude,
  1036. b.latitude,
  1037. 0
  1038. from
  1039. sc_stat_meter_read_rate_by_building_month rb
  1040. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  1041. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  1042. <include refid="where_clause"></include>
  1043. </select>
  1044. <select id="summaryRateListByBuildingFor15Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1045. select
  1046. ifnull(SUM(tmp.device_count),0) as device_count,
  1047. ifnull(SUM(tmp.read_times),0) as read_times,
  1048. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  1049. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  1050. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  1051. from (
  1052. <include refid="base_GetRateListByBuildingFor15Day"></include>
  1053. <include refid="where_clause"></include>
  1054. ) tmp
  1055. <if test="param.sortColumn != null and param.sortColumn != ''">
  1056. <if test="param.sortOrder != null and param.sortOrder != ''">
  1057. order by read_rate ${param.sortOrder}
  1058. </if>
  1059. </if>
  1060. </select>
  1061. <select id="summaryRateListByBuildingForMonth" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1062. select
  1063. ifnull(SUM(tmp.device_count),0) as device_count,
  1064. ifnull(SUM(tmp.read_times),0) as read_times,
  1065. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  1066. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  1067. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  1068. from (
  1069. <include refid="base_GetRateListByBuildingForMonth"></include>
  1070. <include refid="where_clause"></include>
  1071. ) tmp
  1072. <if test="param.sortColumn != null and param.sortColumn != ''">
  1073. <if test="param.sortOrder != null and param.sortOrder != ''">
  1074. order by read_rate ${param.sortOrder}
  1075. </if>
  1076. </if>
  1077. </select>
  1078. <!-- 按建筑统计15天表 新装水表场景适用-->
  1079. <sql id="base_GetRateListByBuildingFor15DayWithNew">
  1080. select
  1081. rb.stat_day as stat_day,
  1082. rb.building_id as building_id,
  1083. b.`name` AS building_name,
  1084. rb.device_count AS device_count,
  1085. rb.read_times AS read_times,
  1086. rb.real_read_times AS real_read_times,
  1087. rb.un_read_times AS un_read_times,
  1088. rb.customer_id as customer_id,
  1089. c.customer_name as customer_name,
  1090. (
  1091. SELECT
  1092. count( 1 )
  1093. FROM
  1094. sc_install_list l
  1095. WHERE
  1096. l.`status` = 1
  1097. AND l.is_installed = 1
  1098. AND l.is_accepted = 0
  1099. AND l.building_id = rb.building_id
  1100. ) AS installed_device_count,
  1101. (
  1102. SELECT
  1103. SUM( IF ( d.device_status = 5, 1, 0 ) )
  1104. FROM
  1105. sc_device d
  1106. WHERE
  1107. d.building_id = rb.building_id
  1108. AND d.`status` = 1
  1109. AND d.sys_id = - 99
  1110. ) AS unenable_device_count ,
  1111. FORMAT(rb.real_read_times/ (
  1112. SELECT
  1113. count( 1 )
  1114. FROM
  1115. sc_install_list l
  1116. WHERE
  1117. l.`status` = 1
  1118. AND l.is_installed = 1
  1119. AND l.is_accepted = 0
  1120. AND l.building_id = rb.building_id
  1121. ) *100, 2) as read_rate
  1122. from
  1123. sc_stat_meter_read_rate_by_building_15day rb
  1124. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  1125. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  1126. </sql>
  1127. <select id="getRateListByBuildingFor15DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1128. <include refid="base_GetRateListByBuildingFor15DayWithNew"></include>
  1129. <include refid="where_clause"></include>
  1130. <if test="param.sortColumn != null and param.sortColumn != ''">
  1131. <if test="param.sortOrder != null and param.sortOrder != ''">
  1132. order by ${param.sortColumn} ${param.sortOrder}
  1133. </if>
  1134. </if>
  1135. </select>
  1136. <select id="summaryRateListByBuildingFor15DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1137. select
  1138. ifnull(SUM(tmp.installed_device_count),0) as device_count,
  1139. ifnull(SUM(tmp.read_times),0) as read_times,
  1140. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  1141. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  1142. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
  1143. from (
  1144. <include refid="base_GetRateListByBuildingFor15DayWithNew"></include>
  1145. <include refid="where_clause"></include>
  1146. ) tmp
  1147. <if test="param.sortColumn != null and param.sortColumn != ''">
  1148. <if test="param.sortOrder != null and param.sortOrder != ''">
  1149. order by read_rate ${param.sortOrder}
  1150. </if>
  1151. </if>
  1152. </select>
  1153. </mapper>