StatMeterReadRateByBuildingMapper.xml 58 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187
  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. 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 = swmt.channel_id <if test="siteId != null"> and site_id = #{siteId} </if>
  379. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  380. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  381. GROUP BY stat_day desc limit 1) as device_count,
  382. SUM(ssmrrbb.read_times) as read_times,
  383. SUM(ssmrrbb.real_read_times) as real_read_times,
  384. SUM(ssmrrbb.un_read_times) as un_read_times,
  385. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  386. FROM sc_w_meter_type swmt
  387. LEFT JOIN sc_stat_meter_read_rate_by_building_7day ssmrrbb on (
  388. ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  389. and ssmrrbb.stat_day = #{startDate}
  390. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  391. <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  392. )
  393. left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
  394. WHERE swmt.`level` = 2
  395. GROUP BY swmt.channel_id,sdt.equipment_type
  396. <if test="sortColumn != null and sortColumn != ''">
  397. <if test="sortOrder != null and sortOrder != ''">
  398. order by ${sortColumn} ${sortOrder}
  399. </if>
  400. </if>
  401. ) t1 where t1.device_count is not null
  402. </select>
  403. <!--查询15天内根据表类型的抄表率数据统计-->
  404. <select id="getRateList15DayByType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  405. select * from (
  406. SELECT
  407. swmt.channel_id,
  408. sdt.equipment_type as device_type_name,
  409. (select SUM(device_count) from sc_stat_meter_read_rate_by_building_15day where channel_id = swmt.channel_id <if test="siteId != null"> and site_id = #{siteId} </if>
  410. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  411. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  412. GROUP BY stat_day desc limit 1) as device_count,
  413. SUM(ssmrrbb.read_times) as read_times,
  414. SUM(ssmrrbb.real_read_times) as real_read_times,
  415. SUM(ssmrrbb.un_read_times) as un_read_times,
  416. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  417. FROM sc_w_meter_type swmt
  418. LEFT JOIN sc_stat_meter_read_rate_by_building_15day ssmrrbb on (
  419. ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  420. and ssmrrbb.stat_day = #{startDate}
  421. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  422. <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  423. )
  424. left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
  425. WHERE swmt.`level` = 2
  426. GROUP BY swmt.channel_id,sdt.equipment_type
  427. <if test="sortColumn != null and sortColumn != ''">
  428. <if test="sortOrder != null and sortOrder != ''">
  429. order by ${sortColumn} ${sortOrder}
  430. </if>
  431. </if>
  432. ) t1 where t1.device_count is not null
  433. </select>
  434. <!--查询最近7天抄表率-->
  435. <select id="getLast7DaysReadRate" resultType="java.lang.Double">
  436. SELECT
  437. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0)
  438. FROM
  439. sc_stat_meter_read_rate_by_building ssmrrbb
  440. WHERE
  441. stat_day between #{beginTime} AND #{endTime}
  442. <if test="programItems != null and programItems.size() != 0">
  443. and EXISTS(
  444. select 1 from
  445. (select sd.building_id FROM sc_device_dim_info df
  446. LEFT JOIN sc_device sd ON sd.id = df.device_id
  447. WHERE 1 = 1
  448. and
  449. <foreach collection="programItems" item="item" open="(" separator=" or " close=")">
  450. (df.dimension_code = #{item.dimensionCode} and df.dimension_value = #{item.dimensionValue})
  451. </foreach>
  452. GROUP BY sd.building_id) ud
  453. WHERE ud.building_id = ssmrrbb.building_id
  454. )
  455. </if>
  456. <if test="siteId != null">
  457. AND site_id = #{siteId}
  458. </if>
  459. <if test="channelId != null">
  460. AND channel_id = #{channelId}
  461. </if>
  462. <if test="customerId != null">
  463. AND customer_id = #{customerId}
  464. </if>
  465. </select>
  466. <!--按客户查询时间范围内的抄表率数数据统计-->
  467. <select id="getRateListByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  468. SELECT
  469. sc.id as customer_id,
  470. sc.customer_name,
  471. (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>
  472. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  473. GROUP BY stat_day desc limit 1) as device_count,
  474. SUM(ssmrrbb.read_times) as read_times,
  475. SUM(ssmrrbb.real_read_times) as real_read_times,
  476. SUM(ssmrrbb.un_read_times) as un_read_times,
  477. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  478. FROM sc_customer sc
  479. LEFT JOIN sc_stat_meter_read_rate_by_building ssmrrbb on(
  480. ssmrrbb.customer_id = sc.id
  481. <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  482. and ssmrrbb.stat_day = #{startDate}
  483. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  484. )
  485. WHERE sc.status = 1
  486. <if test="customerList != null and customerList.size() != 0">
  487. and sc.id in
  488. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  489. </if>
  490. GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
  491. <if test="sortColumn != null and sortColumn != ''">
  492. <if test="sortOrder != null and sortOrder != ''">
  493. order by ${sortColumn} ${sortOrder}
  494. </if>
  495. </if>
  496. </select>
  497. <select id="getRateListByCustomerV2" resultType="com.bz.smart_city.dto.CustomerRateDto">
  498. SELECT sc.id as customer_id,sc.parent_id,sc.customer_name,sc.children_num FROM sc_customer sc
  499. LEFT JOIN(
  500. SELECT
  501. ssmrrbb.customer_id,
  502. SUM(device_count) as device_count
  503. FROM
  504. ${tableName} ssmrrbb
  505. WHERE
  506. ssmrrbb.site_id = #{siteId}
  507. <if test="channelId != null"> and ssmrrbb.channel_id = #{channelId} </if>
  508. AND ssmrrbb.stat_day = #{startDate}
  509. AND ssmrrbb.channel_id <![CDATA[ <> ]]> - 99
  510. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  511. <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  512. GROUP BY
  513. ssmrrbb.customer_id
  514. )t1 on(t1.customer_id = sc.id)
  515. WHERE sc.`status` = 1 and sc.site_id = #{siteId}
  516. <if test="customerIds != null and customerIds.size() != 0"> and sc.id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  517. ORDER BY device_count desc
  518. </select>
  519. <select id="getRateListByCustomerV2AndDeviceType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  520. SELECT
  521. ssmrrbb.customer_id,
  522. ssmrrbb.channel_id,
  523. sc.channel_name,
  524. SUM(device_count) as device_count,
  525. SUM(ssmrrbb.read_times) as read_times,
  526. SUM(ssmrrbb.real_read_times) as real_read_times,
  527. SUM(ssmrrbb.un_read_times) as un_read_times,
  528. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  529. FROM ${tableName} ssmrrbb
  530. left join sc_channel sc on(sc.id = ssmrrbb.channel_id)
  531. WHERE
  532. ssmrrbb.site_id = #{siteId}
  533. and ssmrrbb.stat_day = #{startDate}
  534. AND ssmrrbb.channel_id <![CDATA[ <> ]]> - 99
  535. <if test="customerId != null"> and ssmrrbb.customer_id = #{customerId} </if>
  536. <if test="channelId != null"> and ssmrrbb.channel_id = #{channelId} </if>
  537. GROUP BY ssmrrbb.customer_id,ssmrrbb.channel_id,sc.channel_name
  538. order by read_rate desc
  539. </select>
  540. <!--按客户查询7天内的抄表率数数据统计-->
  541. <select id="getRateList7DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  542. SELECT
  543. sc.id as customer_id,
  544. sc.customer_name,
  545. (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>
  546. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  547. GROUP BY stat_day desc limit 1) as device_count,
  548. SUM(ssmrrbb.read_times) as read_times,
  549. SUM(ssmrrbb.real_read_times) as real_read_times,
  550. SUM(ssmrrbb.un_read_times) as un_read_times,
  551. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  552. FROM sc_customer sc
  553. LEFT JOIN sc_stat_meter_read_rate_by_building_7day ssmrrbb on(
  554. ssmrrbb.customer_id = sc.id
  555. <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  556. and ssmrrbb.stat_day = #{startDate}
  557. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  558. )
  559. WHERE sc.status = 1
  560. <if test="customerList != null and customerList.size() != 0">
  561. and sc.id in
  562. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  563. </if>
  564. GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
  565. <if test="sortColumn != null and sortColumn != ''">
  566. <if test="sortOrder != null and sortOrder != ''">
  567. order by ${sortColumn} ${sortOrder}
  568. </if>
  569. </if>
  570. </select>
  571. <!--按客户查询15天内的抄表率数数据统计-->
  572. <select id="getRateList15DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
  573. SELECT
  574. sc.id as customer_id,
  575. sc.customer_name,
  576. (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>
  577. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  578. GROUP BY stat_day desc limit 1) as device_count,
  579. SUM(ssmrrbb.read_times) as read_times,
  580. SUM(ssmrrbb.real_read_times) as real_read_times,
  581. SUM(ssmrrbb.un_read_times) as un_read_times,
  582. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  583. FROM sc_customer sc
  584. LEFT JOIN sc_stat_meter_read_rate_by_building_15day ssmrrbb on(
  585. ssmrrbb.customer_id = sc.id
  586. <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
  587. and ssmrrbb.stat_day = #{startDate}
  588. <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  589. )
  590. WHERE sc.status = 1
  591. <if test="customerList != null and customerList.size() != 0">
  592. and sc.id in
  593. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  594. </if>
  595. GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
  596. <if test="sortColumn != null and sortColumn != ''">
  597. <if test="sortOrder != null and sortOrder != ''">
  598. order by ${sortColumn} ${sortOrder}
  599. </if>
  600. </if>
  601. </select>
  602. <!--按客户查询时间范围内的抄表率数据统计-->
  603. <select id="getCountByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  604. SELECT
  605. (select SUM(device_count) from sc_stat_meter_read_rate_by_building where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
  606. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  607. GROUP BY stat_day desc limit 1) as device_count,
  608. SUM(read_times) as read_times,
  609. SUM(real_read_times) as real_read_times,
  610. SUM(un_read_times) as un_read_times,
  611. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  612. FROM sc_stat_meter_read_rate_by_building a
  613. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  614. WHERE a.stat_day = #{startDate}
  615. AND b.`status` = 1
  616. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  617. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  618. <if test="customerList != null and customerList.size() != 0">
  619. and a.customer_id in
  620. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  621. </if>
  622. </select>
  623. <select id="getCountByCustomerV2" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  624. SELECT
  625. SUM(device_count) as device_count,
  626. SUM(read_times) as read_times,
  627. SUM(real_read_times) as real_read_times,
  628. SUM(un_read_times) as un_read_times,
  629. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  630. FROM ${tableName} scmrrbb
  631. WHERE stat_day = #{startDate}
  632. and channel_id <![CDATA[ <> ]]> - 99
  633. <if test="siteId != null"> and site_id = #{siteId} </if>
  634. <if test="channelId != null"> and channel_id = #{channelId} </if>
  635. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  636. <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  637. </select>
  638. <!--按客户查询时间范围内的抄表率数据统计-->
  639. <select id="getCount7DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  640. SELECT
  641. (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>
  642. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  643. GROUP BY stat_day desc limit 1) as device_count,
  644. SUM(read_times) as read_times,
  645. SUM(real_read_times) as real_read_times,
  646. SUM(un_read_times) as un_read_times,
  647. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  648. FROM sc_stat_meter_read_rate_by_building_7day a
  649. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  650. WHERE a.stat_day = #{startDate}
  651. AND b.`status` = 1
  652. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  653. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  654. <if test="customerList != null and customerList.size() != 0">
  655. and a.customer_id in
  656. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  657. </if>
  658. </select>
  659. <!--按客户查询时间范围内的抄表率数据统计-->
  660. <select id="getCount15DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
  661. SELECT
  662. (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>
  663. <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  664. GROUP BY stat_day desc limit 1) as device_count,
  665. SUM(read_times) as read_times,
  666. SUM(real_read_times) as real_read_times,
  667. SUM(un_read_times) as un_read_times,
  668. ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
  669. FROM sc_stat_meter_read_rate_by_building_15day a
  670. LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
  671. WHERE a.stat_day = #{startDate}
  672. AND b.`status` = 1
  673. <if test="siteId != null"> and a.site_id = #{siteId} </if>
  674. <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
  675. <if test="customerList != null and customerList.size() != 0">
  676. and a.customer_id in
  677. <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
  678. </if>
  679. </select>
  680. <!-- 按建筑统计天表 -->
  681. <sql id="base_GetRateListByBuildingForDay">
  682. select
  683. rb.stat_day as stat_day,
  684. rb.building_id as building_id,
  685. b.`name` AS building_name,
  686. rb.device_count AS device_count,
  687. rb.read_times AS read_times,
  688. rb.real_read_times AS real_read_times,
  689. rb.un_read_times AS un_read_times,
  690. rb.read_rate AS read_rate,
  691. rb.customer_id as customer_id,
  692. c.customer_name as customer_name
  693. from
  694. sc_stat_meter_read_rate_by_building rb
  695. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  696. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  697. </sql>
  698. <select id="getRateListByBuildingForDay" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  699. <include refid="base_GetRateListByBuildingForDay"></include>
  700. <include refid="where_clause"></include>
  701. <if test="param.sortColumn != null and param.sortColumn != ''">
  702. <if test="param.sortOrder != null and param.sortOrder != ''">
  703. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  704. </if>
  705. </if>
  706. </select>
  707. <select id="getRateAreaListByBuildingForDay" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  708. select
  709. b.id,
  710. b.name,
  711. b.province,
  712. b.city,
  713. b.region,
  714. b.community,
  715. b.longitude,
  716. b.latitude,
  717. 0
  718. from
  719. sc_stat_meter_read_rate_by_building rb
  720. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  721. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  722. <include refid="where_clause"></include>
  723. </select>
  724. <select id="summaryRateListByBuildingForDay" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  725. select
  726. ifnull(SUM(tmp.device_count),0) as device_count,
  727. ifnull(SUM(tmp.read_times),0) as read_times,
  728. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  729. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  730. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  731. from (
  732. <include refid="base_GetRateListByBuildingForDay"></include>
  733. <include refid="where_clause"></include>
  734. ) tmp
  735. <if test="param.sortColumn != null and param.sortColumn != ''">
  736. <if test="param.sortOrder != null and param.sortOrder != ''">
  737. order by read_rate ${param.sortOrder}
  738. </if>
  739. </if>
  740. </select>
  741. <!-- 按建筑统计天表 新装水表场景适用 -->
  742. <sql id="base_GetRateListByBuildingForDayWithNew">
  743. select
  744. rb.stat_day as stat_day,
  745. rb.building_id as building_id,
  746. b.`name` AS building_name,
  747. rb.device_count AS device_count,
  748. rb.read_times AS read_times,
  749. rb.real_read_times AS real_read_times,
  750. rb.un_read_times AS un_read_times,
  751. rb.customer_id as customer_id,
  752. c.customer_name as customer_name,
  753. (
  754. SELECT
  755. count( 1 )
  756. FROM
  757. sc_install_list l
  758. WHERE
  759. l.`status` = 1
  760. AND l.is_installed = 1
  761. AND l.is_accepted = 0
  762. AND l.building_id = rb.building_id
  763. ) AS installed_device_count,
  764. (
  765. SELECT
  766. SUM( IF ( d.device_status = 5, 1, 0 ) )
  767. FROM
  768. sc_device d
  769. WHERE
  770. d.building_id = rb.building_id
  771. AND d.`status` = 1
  772. AND d.sys_id = - 99
  773. ) AS unenable_device_count ,
  774. FORMAT(rb.real_read_times/ (
  775. SELECT
  776. count( 1 )
  777. FROM
  778. sc_install_list l
  779. WHERE
  780. l.`status` = 1
  781. AND l.is_installed = 1
  782. AND l.is_accepted = 0
  783. AND l.building_id = rb.building_id
  784. ) *100, 2) as read_rate
  785. from
  786. sc_stat_meter_read_rate_by_building rb
  787. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  788. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  789. </sql>
  790. <select id="getRateListByBuildingForDayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  791. <include refid="base_GetRateListByBuildingForDayWithNew"></include>
  792. <include refid="where_clause"></include>
  793. <if test="param.sortColumn != null and param.sortColumn != ''">
  794. <if test="param.sortOrder != null and param.sortOrder != ''">
  795. order by ${param.sortColumn} ${param.sortOrder}
  796. </if>
  797. </if>
  798. </select>
  799. <select id="summaryRateListByBuildingForDayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  800. select
  801. ifnull(SUM(tmp.installed_device_count),0) as device_count,
  802. ifnull(SUM(tmp.read_times),0) as read_times,
  803. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  804. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  805. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
  806. from (
  807. <include refid="base_GetRateListByBuildingForDayWithNew"></include>
  808. <include refid="where_clause"></include>
  809. ) tmp
  810. <if test="param.sortColumn != null and param.sortColumn != ''">
  811. <if test="param.sortOrder != null and param.sortOrder != ''">
  812. order by read_rate ${param.sortOrder}
  813. </if>
  814. </if>
  815. </select>
  816. <!-- 按建筑统计7天表 -->
  817. <sql id="base_GetRateListByBuildingFor7Day">
  818. select
  819. rb.stat_day as stat_day,
  820. rb.building_id as building_id,
  821. b.`name` AS building_name,
  822. rb.device_count AS device_count,
  823. rb.read_times AS read_times,
  824. rb.real_read_times AS real_read_times,
  825. rb.un_read_times AS un_read_times,
  826. rb.read_rate AS read_rate,
  827. rb.customer_id as customer_id,
  828. c.customer_name as customer_name
  829. from
  830. sc_stat_meter_read_rate_by_building_7day rb
  831. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  832. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  833. </sql>
  834. <select id="getRateAreaListByBuildingFor7Day" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  835. select
  836. b.id,
  837. b.name,
  838. b.province,
  839. b.city,
  840. b.region,
  841. b.community,
  842. b.longitude,
  843. b.latitude,
  844. 0
  845. from
  846. sc_stat_meter_read_rate_by_building_7day rb
  847. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  848. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  849. <include refid="where_clause"></include>
  850. </select>
  851. <select id="getRateListByBuildingFor7Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  852. <include refid="base_GetRateListByBuildingFor7Day"></include>
  853. <include refid="where_clause"></include>
  854. <if test="param.sortColumn != null and param.sortColumn != ''">
  855. <if test="param.sortOrder != null and param.sortOrder != ''">
  856. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  857. </if>
  858. </if>
  859. </select>
  860. <select id="summaryRateListByBuildingFor7Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  861. select
  862. ifnull(SUM(tmp.device_count),0) as device_count,
  863. ifnull(SUM(tmp.read_times),0) as read_times,
  864. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  865. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  866. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  867. from (
  868. <include refid="base_GetRateListByBuildingFor7Day"></include>
  869. <include refid="where_clause"></include>
  870. ) tmp
  871. <if test="param.sortColumn != null and param.sortColumn != ''">
  872. <if test="param.sortOrder != null and param.sortOrder != ''">
  873. order by read_rate ${param.sortOrder}
  874. </if>
  875. </if>
  876. </select>
  877. <!-- 按建筑统计7天表 新装水表场景适用 -->
  878. <sql id="base_GetRateListByBuildingFor7DayWithNew">
  879. select
  880. rb.stat_day as stat_day,
  881. rb.building_id as building_id,
  882. b.`name` AS building_name,
  883. rb.device_count AS device_count,
  884. rb.read_times AS read_times,
  885. rb.real_read_times AS real_read_times,
  886. rb.un_read_times AS un_read_times,
  887. rb.customer_id as customer_id,
  888. c.customer_name as customer_name,
  889. (
  890. SELECT
  891. count( 1 )
  892. FROM
  893. sc_install_list l
  894. WHERE
  895. l.`status` = 1
  896. AND l.is_installed = 1
  897. AND l.is_accepted = 0
  898. AND l.building_id = rb.building_id
  899. ) AS installed_device_count,
  900. (
  901. SELECT
  902. SUM( IF ( d.device_status = 5, 1, 0 ) )
  903. FROM
  904. sc_device d
  905. WHERE
  906. d.building_id = rb.building_id
  907. AND d.`status` = 1
  908. AND d.sys_id = - 99
  909. ) AS unenable_device_count ,
  910. FORMAT(rb.real_read_times/ (
  911. SELECT
  912. count( 1 )
  913. FROM
  914. sc_install_list l
  915. WHERE
  916. l.`status` = 1
  917. AND l.is_installed = 1
  918. AND l.is_accepted = 0
  919. AND l.building_id = rb.building_id
  920. ) *100, 2) as read_rate
  921. from
  922. sc_stat_meter_read_rate_by_building_7day rb
  923. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  924. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  925. </sql>
  926. <select id="getRateListByBuildingFor7DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  927. <include refid="base_GetRateListByBuildingFor7DayWithNew"></include>
  928. <include refid="where_clause"></include>
  929. <if test="param.sortColumn != null and param.sortColumn != ''">
  930. <if test="param.sortOrder != null and param.sortOrder != ''">
  931. order by ${param.sortColumn} ${param.sortOrder}
  932. </if>
  933. </if>
  934. </select>
  935. <select id="summaryRateListByBuildingFor7DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  936. select
  937. ifnull(SUM(tmp.installed_device_count),0) as device_count,
  938. ifnull(SUM(tmp.read_times),0) as read_times,
  939. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  940. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  941. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
  942. from (
  943. <include refid="base_GetRateListByBuildingFor7DayWithNew"></include>
  944. <include refid="where_clause"></include>
  945. ) tmp
  946. <if test="param.sortColumn != null and param.sortColumn != ''">
  947. <if test="param.sortOrder != null and param.sortOrder != ''">
  948. order by read_rate ${param.sortOrder}
  949. </if>
  950. </if>
  951. </select>
  952. <!-- 按建筑统计15天表 -->
  953. <sql id="base_GetRateListByBuildingFor15Day">
  954. select
  955. rb.stat_day as stat_day,
  956. rb.building_id as building_id,
  957. b.`name` AS building_name,
  958. rb.device_count AS device_count,
  959. rb.read_times AS read_times,
  960. rb.real_read_times AS real_read_times,
  961. rb.un_read_times AS un_read_times,
  962. rb.read_rate AS read_rate,
  963. rb.customer_id as customer_id,
  964. c.customer_name as customer_name
  965. from
  966. sc_stat_meter_read_rate_by_building_15day rb
  967. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  968. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  969. </sql>
  970. <!-- 按建筑统计月表 -->
  971. <sql id="base_GetRateListByBuildingForMonth">
  972. select
  973. rb.stat_day as stat_day,
  974. rb.building_id as building_id,
  975. b.`name` AS building_name,
  976. rb.device_count AS device_count,
  977. rb.read_times AS read_times,
  978. rb.real_read_times AS real_read_times,
  979. rb.un_read_times AS un_read_times,
  980. rb.read_rate AS read_rate,
  981. rb.customer_id as customer_id,
  982. c.customer_name as customer_name
  983. from
  984. sc_stat_meter_read_rate_by_building_month rb
  985. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  986. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  987. </sql>
  988. <select id="getRateListByBuildingFor15Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  989. <include refid="base_GetRateListByBuildingFor15Day"></include>
  990. <include refid="where_clause"></include>
  991. <if test="param.sortColumn != null and param.sortColumn != ''">
  992. <if test="param.sortOrder != null and param.sortOrder != ''">
  993. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  994. </if>
  995. </if>
  996. </select>
  997. <select id="getRateListByBuildingForMonth" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  998. <include refid="base_GetRateListByBuildingForMonth"></include>
  999. <include refid="where_clause"></include>
  1000. <if test="param.sortColumn != null and param.sortColumn != ''">
  1001. <if test="param.sortOrder != null and param.sortOrder != ''">
  1002. order by ${param.sortColumn} ${param.sortOrder},device_count desc
  1003. </if>
  1004. </if>
  1005. </select>
  1006. <select id="getRateAreaListByBuildingFor15Day" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  1007. select
  1008. b.id,
  1009. b.name,
  1010. b.province,
  1011. b.city,
  1012. b.region,
  1013. b.community,
  1014. b.longitude,
  1015. b.latitude,
  1016. 0
  1017. from
  1018. sc_stat_meter_read_rate_by_building_15day rb
  1019. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  1020. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  1021. <include refid="where_clause"></include>
  1022. </select>
  1023. <select id="getRateAreaListByBuildingForMonth" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
  1024. select
  1025. b.id,
  1026. b.name,
  1027. b.province,
  1028. b.city,
  1029. b.region,
  1030. b.community,
  1031. b.longitude,
  1032. b.latitude,
  1033. 0
  1034. from
  1035. sc_stat_meter_read_rate_by_building_month rb
  1036. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  1037. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  1038. <include refid="where_clause"></include>
  1039. </select>
  1040. <select id="summaryRateListByBuildingFor15Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1041. select
  1042. ifnull(SUM(tmp.device_count),0) as device_count,
  1043. ifnull(SUM(tmp.read_times),0) as read_times,
  1044. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  1045. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  1046. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  1047. from (
  1048. <include refid="base_GetRateListByBuildingFor15Day"></include>
  1049. <include refid="where_clause"></include>
  1050. ) tmp
  1051. <if test="param.sortColumn != null and param.sortColumn != ''">
  1052. <if test="param.sortOrder != null and param.sortOrder != ''">
  1053. order by read_rate ${param.sortOrder}
  1054. </if>
  1055. </if>
  1056. </select>
  1057. <select id="summaryRateListByBuildingForMonth" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1058. select
  1059. ifnull(SUM(tmp.device_count),0) as device_count,
  1060. ifnull(SUM(tmp.read_times),0) as read_times,
  1061. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  1062. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  1063. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
  1064. from (
  1065. <include refid="base_GetRateListByBuildingForMonth"></include>
  1066. <include refid="where_clause"></include>
  1067. ) tmp
  1068. <if test="param.sortColumn != null and param.sortColumn != ''">
  1069. <if test="param.sortOrder != null and param.sortOrder != ''">
  1070. order by read_rate ${param.sortOrder}
  1071. </if>
  1072. </if>
  1073. </select>
  1074. <!-- 按建筑统计15天表 新装水表场景适用-->
  1075. <sql id="base_GetRateListByBuildingFor15DayWithNew">
  1076. select
  1077. rb.stat_day as stat_day,
  1078. rb.building_id as building_id,
  1079. b.`name` AS building_name,
  1080. rb.device_count AS device_count,
  1081. rb.read_times AS read_times,
  1082. rb.real_read_times AS real_read_times,
  1083. rb.un_read_times AS un_read_times,
  1084. rb.customer_id as customer_id,
  1085. c.customer_name as customer_name,
  1086. (
  1087. SELECT
  1088. count( 1 )
  1089. FROM
  1090. sc_install_list l
  1091. WHERE
  1092. l.`status` = 1
  1093. AND l.is_installed = 1
  1094. AND l.is_accepted = 0
  1095. AND l.building_id = rb.building_id
  1096. ) AS installed_device_count,
  1097. (
  1098. SELECT
  1099. SUM( IF ( d.device_status = 5, 1, 0 ) )
  1100. FROM
  1101. sc_device d
  1102. WHERE
  1103. d.building_id = rb.building_id
  1104. AND d.`status` = 1
  1105. AND d.sys_id = - 99
  1106. ) AS unenable_device_count ,
  1107. FORMAT(rb.real_read_times/ (
  1108. SELECT
  1109. count( 1 )
  1110. FROM
  1111. sc_install_list l
  1112. WHERE
  1113. l.`status` = 1
  1114. AND l.is_installed = 1
  1115. AND l.is_accepted = 0
  1116. AND l.building_id = rb.building_id
  1117. ) *100, 2) as read_rate
  1118. from
  1119. sc_stat_meter_read_rate_by_building_15day rb
  1120. LEFT JOIN sc_building b ON ( rb.building_id = b.id )
  1121. LEFT JOIN sc_customer c on (rb.customer_id = c.id)
  1122. </sql>
  1123. <select id="getRateListByBuildingFor15DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1124. <include refid="base_GetRateListByBuildingFor15DayWithNew"></include>
  1125. <include refid="where_clause"></include>
  1126. <if test="param.sortColumn != null and param.sortColumn != ''">
  1127. <if test="param.sortOrder != null and param.sortOrder != ''">
  1128. order by ${param.sortColumn} ${param.sortOrder}
  1129. </if>
  1130. </if>
  1131. </select>
  1132. <select id="summaryRateListByBuildingFor15DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
  1133. select
  1134. ifnull(SUM(tmp.installed_device_count),0) as device_count,
  1135. ifnull(SUM(tmp.read_times),0) as read_times,
  1136. ifnull(SUM(tmp.real_read_times),0) as real_read_times,
  1137. ifnull(SUM(tmp.un_read_times),0) as un_read_times,
  1138. ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
  1139. from (
  1140. <include refid="base_GetRateListByBuildingFor15DayWithNew"></include>
  1141. <include refid="where_clause"></include>
  1142. ) tmp
  1143. <if test="param.sortColumn != null and param.sortColumn != ''">
  1144. <if test="param.sortOrder != null and param.sortOrder != ''">
  1145. order by read_rate ${param.sortOrder}
  1146. </if>
  1147. </if>
  1148. </select>
  1149. </mapper>