12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187 |
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
- <mapper namespace="com.bz.smart_city.dao.StatMeterReadRateByBuildingMapper">
- <!--auto generated Code-->
- <resultMap id="BaseResultMap" type="com.bz.smart_city.entity.StatMeterReadRateByBuilding">
- <result column="stat_day" property="statDay" jdbcType="INTEGER"/>
- <result column="site_id" property="siteId" jdbcType="INTEGER"/>
- <result column="channel_id" property="channelId" jdbcType="INTEGER"/>
- <result column="customer_id" property="customerId" jdbcType="INTEGER"/>
- <result column="building_id" property="buildingId" jdbcType="INTEGER"/>
- <result column="device_count" property="deviceCount" jdbcType="INTEGER"/>
- <result column="read_times" property="readTimes" jdbcType="INTEGER"/>
- <result column="real_read_times" property="realReadTimes" jdbcType="INTEGER"/>
- <result column="un_read_times" property="unReadTimes" jdbcType="INTEGER"/>
- <result column="read_rate" property="readRate" jdbcType="DECIMAL"/>
- <result column="date_create" property="dateCreate" jdbcType="TIMESTAMP"/>
- <result column="date_update" property="dateUpdate" jdbcType="TIMESTAMP"/>
- </resultMap>
- <!--auto generated Code-->
- <sql id="Base_Column_List">
- stat_day,
- site_id,
- channel_id,
- customer_id,
- building_id,
- device_count,
- read_times,
- real_read_times,
- un_read_times,
- read_rate,
- date_create,
- date_update
- </sql>
- <!--auto generated Code-->
- <insert id="insert" useGeneratedKeys="true" keyProperty="statMeterReadRateByBuilding.statDay">
- INSERT INTO sc_stat_meter_read_rate_by_building (
- stat_day,
- site_id,
- channel_id,
- customer_id,
- building_id,
- device_count,
- read_times,
- real_read_times,
- un_read_times,
- read_rate,
- date_create,
- date_update
- ) VALUES (
- #{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},
- #{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},
- #{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP}
- )
- </insert>
- <!--auto generated Code-->
- <insert id="insertSelective" useGeneratedKeys="true" keyProperty="statMeterReadRateByBuilding.statDay">
- INSERT INTO sc_stat_meter_read_rate_by_building
- <trim prefix="(" suffix=")" suffixOverrides=",">
- <if test="statMeterReadRateByBuilding.statDay!=null"> stat_day,</if>
- <if test="statMeterReadRateByBuilding.siteId!=null"> site_id,</if>
- <if test="statMeterReadRateByBuilding.channelId!=null"> channel_id,</if>
- <if test="statMeterReadRateByBuilding.customerId!=null"> customer_id,</if>
- <if test="statMeterReadRateByBuilding.buildingId!=null"> building_id,</if>
- <if test="statMeterReadRateByBuilding.deviceCount!=null"> device_count,</if>
- <if test="statMeterReadRateByBuilding.readTimes!=null"> read_times,</if>
- <if test="statMeterReadRateByBuilding.realReadTimes!=null"> real_read_times,</if>
- <if test="statMeterReadRateByBuilding.unReadTimes!=null"> un_read_times,</if>
- <if test="statMeterReadRateByBuilding.readRate!=null"> read_rate,</if>
- <if test="statMeterReadRateByBuilding.dateCreate!=null"> date_create,</if>
- <if test="statMeterReadRateByBuilding.dateUpdate!=null"> date_update,</if>
- </trim>
- VALUES
- <trim prefix="(" suffix=")" suffixOverrides=",">
- <if test="statMeterReadRateByBuilding.statDay!=null">#{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.siteId!=null">#{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.channelId!=null">#{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.customerId!=null">#{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.buildingId!=null">#{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.deviceCount!=null">#{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.readTimes!=null">#{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.realReadTimes!=null">#{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.unReadTimes!=null">#{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},
- </if>
- <if test="statMeterReadRateByBuilding.readRate!=null">#{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},
- </if>
- <if test="statMeterReadRateByBuilding.dateCreate!=null">#{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},
- </if>
- <if test="statMeterReadRateByBuilding.dateUpdate!=null">#{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP},
- </if>
- </trim>
- </insert>
- <!--auto generated Code-->
- <insert id="insertList">
- INSERT INTO sc_stat_meter_read_rate_by_building (
- stat_day,
- site_id,
- channel_id,
- customer_id,
- building_id,
- device_count,
- read_times,
- real_read_times,
- un_read_times,
- read_rate,
- date_create,
- date_update
- )VALUES
- <foreach collection="statMeterReadRateByBuildings" item="statMeterReadRateByBuilding" index="index" separator=",">
- (
- #{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},
- #{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},
- #{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},
- #{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP}
- )
- </foreach>
- </insert>
- <!--auto generated Code-->
- <update id="updateByPrimaryKeySelective">
- UPDATE sc_stat_meter_read_rate_by_building
- <set>
- <if test="statMeterReadRateByBuilding.siteId != null"> site_id= #{statMeterReadRateByBuilding.siteId,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.channelId != null"> channel_id= #{statMeterReadRateByBuilding.channelId,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.customerId != null"> customer_id= #{statMeterReadRateByBuilding.customerId,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.buildingId != null"> building_id= #{statMeterReadRateByBuilding.buildingId,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.deviceCount != null"> device_count= #{statMeterReadRateByBuilding.deviceCount,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.readTimes != null"> read_times= #{statMeterReadRateByBuilding.readTimes,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.realReadTimes != null"> real_read_times= #{statMeterReadRateByBuilding.realReadTimes,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.unReadTimes != null"> un_read_times= #{statMeterReadRateByBuilding.unReadTimes,jdbcType=INTEGER},</if>
- <if test="statMeterReadRateByBuilding.readRate != null"> read_rate= #{statMeterReadRateByBuilding.readRate,jdbcType=DECIMAL},</if>
- <if test="statMeterReadRateByBuilding.dateCreate != null"> date_create= #{statMeterReadRateByBuilding.dateCreate,jdbcType=TIMESTAMP},</if>
- <if test="statMeterReadRateByBuilding.dateUpdate != null"> date_update= #{statMeterReadRateByBuilding.dateUpdate,jdbcType=TIMESTAMP}</if>
- </set>
- WHERE stat_day = #{statMeterReadRateByBuilding.statDay,jdbcType=INTEGER}
- </update>
-
- <sql id="where_clause">
- WHERE 1 = 1
- <!-- 表类型 -->
- <if test="param.channelId != null and param.channelId != 0">
- and rb.channel_id = #{param.channelId}
- </if>
- <!-- 数据权限 -->
- <if test="param.siteId != null and param.siteId != 0 "> and rb.site_id = #{param.siteId} </if>
- <!--
- <if test="param.sites != null and param.sites.size() != 0">
- and rb.site_id in
- <foreach collection="param.sites" item="site" open="(" separator="," close=")">
- #{site.id}
- </foreach>
- </if>
-
- <if test='param.programItems != null and param.programItems.size() != 0' >
- and rb.building_id in (
- select c.id
- from
- sc_building c
- where 1 = 1
- and <foreach collection="param.programItems" item="item" open="(" separator=" or " close=")">
- <if test = 'item.dimensionCode == "PROVINCE" '>
- c.province = #{item.dimensionValue}
- </if>
- <if test = 'item.dimensionCode == "CITY" '>
- c.city = #{item.dimensionValue}
- </if>
- <if test = 'item.dimensionCode == "REGION" '>
- c.region = #{item.dimensionValue}
- </if>
- <if test = 'item.dimensionCode == "COMMUNITY" '>
- c.community = #{item.dimensionValue}
- </if>
- <if test = 'item.dimensionCode == "BUILDING" '>
- c.id = #{item.dimensionValue}
- </if>
- </foreach>
- )
- </if>
- -->
- <if test='param.programItems != null and param.programItems.size() != 0' >
- and
- <foreach collection="param.programItems" item="item" open="(" separator=" or " close=")">
- <if test = 'item.dimensionCode == "PROVINCE" or item.dimensionCode == "CITY" or item.dimensionCode == "REGION" or item.dimensionCode == "COMMUNITY" '>
- b.${item.dimensionCode} = #{item.dimensionValue}
- </if>
- <if test='item.dimensionCode == "BUILDING" '>
- b.id = #{item.dimensionValue}
- </if>
- <if test='item.dimensionCode == "CUSTOMER" '>
- c.id = #{item.dimensionValue}
- </if>
- </foreach>
- </if>
- <if test = "param.statDay != null and param.statDay != 0">and rb.stat_day = #{param.statDay}</if>
- <if test = "param.startDate != null and param.startDate != 0"> and rb.stat_day >= #{param.startDate}</if>
- <if test = "param.endDate != null and param.endDate != 0"> and rb.stat_day <![CDATA[ <= ]]> #{param.endDate}</if>
- <if test = "param.beginRate != null "> and rb.read_rate >= #{param.beginRate}</if>
- <if test = "param.endRate != null "> and rb.read_rate <![CDATA[ <= ]]> #{param.endRate}</if>
- <if test = "param.custormerId != null"> and rb.customer_id = #{param.custormerId}</if>
- <if test = "param.communityId != null "> and b.community = #{param.communityId}</if>
- <if test = "param.buildingId != null and param.buildingId != 0 "> and rb.building_id = #{param.buildingId}</if>
- </sql>
- <sql id="base_query">
- SELECT
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.read_rate AS read_rate,
- de.alarm_device_num AS alarm_device_num ,
- c.customer_name as customer_name
- FROM
- sc_stat_meter_read_rate_by_building rb
- LEFT JOIN sc_stat_device_error_day de ON (
- rb.stat_day = de.stat_day
- AND rb.site_id = de.site_id
- AND rb.channel_id = de.sys_id
- AND rb.building_id = de.building_id
- AND de.alarm_category = '0'
- AND de.alarm_type = 0
- AND de.handle_status = '0'
- )
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <select id="summaryRateListByBuilding" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(SUM(tmp.alarm_device_num),0) as alarm_device_num,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
- from (
- <include refid="base_query"></include>
- <include refid="where_clause"></include>
- ) tmp
- </select>
- <select id="analysisMeterReadRate" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- tmp.stat_day as stat_day,
- ifnull(SUM(tmp.device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(SUM(tmp.alarm_device_num),0) as alarm_device_num,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
- from (
- <include refid="base_query"></include>
- <include refid="where_clause"></include>
- ) tmp
- group by tmp.stat_day
- </select>
- <select id="getRateListByBuilding" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_query"></include>
- <include refid="where_clause"></include>
- order by rb.stat_day desc
- </select>
- <!--按表类型查询时间范围内的抄表率数据统计-->
- <select id="getRateCountByTime" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
- SELECT
- (select SUM(device_count) from sc_stat_meter_read_rate_by_building where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(read_times) as read_times,
- SUM(real_read_times) as real_read_times,
- SUM(un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_stat_meter_read_rate_by_building a
- LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
- WHERE a.stat_day = #{startDate}
- AND b.`status` = 1
- <if test="siteId != null"> and a.site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and a.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- </select>
- <!--按表类型查询7天内的抄表率数据统计-->
- <select id="getRateCount7DayByTime" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
- SELECT
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(read_times) as read_times,
- SUM(real_read_times) as real_read_times,
- SUM(un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_stat_meter_read_rate_by_building_7day a
- LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
- WHERE a.stat_day = #{startDate}
- AND b.`status` = 1
- <if test="siteId != null"> and a.site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and a.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- </select>
- <!--按表类型查询15天内的抄表率数据统计-->
- <select id="getRateCount15DayByTime" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
- SELECT
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(read_times) as read_times,
- SUM(real_read_times) as real_read_times,
- SUM(un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_stat_meter_read_rate_by_building_15day a
- LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
- WHERE a.stat_day = #{startDate}
- AND b.`status` = 1
- <if test="siteId != null"> and a.site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and a.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- </select>
- <!--查询时间范围内根据表类型的抄表率数据统计-->
- <select id="getRateListByType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
- select * from (
- SELECT
- swmt.channel_id,
- sdt.equipment_type as device_type_name,
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(ssmrrbb.read_times) as read_times,
- SUM(ssmrrbb.real_read_times) as real_read_times,
- SUM(ssmrrbb.un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_w_meter_type swmt
- LEFT JOIN sc_stat_meter_read_rate_by_building ssmrrbb on (
- ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
- and ssmrrbb.stat_day = #{startDate}
- <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- )
- left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
- WHERE swmt.`level` = 2
- GROUP BY swmt.channel_id,sdt.equipment_type
- <if test="sortColumn != null and sortColumn != ''">
- <if test="sortOrder != null and sortOrder != ''">
- order by ${sortColumn} ${sortOrder}
- </if>
- </if>
- ) t1
- where t1.device_count is not null
- </select>
- <!--查询7天内根据表类型的抄表率数据统计-->
- <select id="getRateList7DayByType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
- select * from (
- SELECT
- swmt.channel_id,
- sdt.equipment_type as device_type_name,
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(ssmrrbb.read_times) as read_times,
- SUM(ssmrrbb.real_read_times) as real_read_times,
- SUM(ssmrrbb.un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_w_meter_type swmt
- LEFT JOIN sc_stat_meter_read_rate_by_building_7day ssmrrbb on (
- ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
- and ssmrrbb.stat_day = #{startDate}
- <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- )
- left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
- WHERE swmt.`level` = 2
- GROUP BY swmt.channel_id,sdt.equipment_type
- <if test="sortColumn != null and sortColumn != ''">
- <if test="sortOrder != null and sortOrder != ''">
- order by ${sortColumn} ${sortOrder}
- </if>
- </if>
- ) t1 where t1.device_count is not null
- </select>
- <!--查询15天内根据表类型的抄表率数据统计-->
- <select id="getRateList15DayByType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
- select * from (
- SELECT
- swmt.channel_id,
- sdt.equipment_type as device_type_name,
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(ssmrrbb.read_times) as read_times,
- SUM(ssmrrbb.real_read_times) as real_read_times,
- SUM(ssmrrbb.un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_w_meter_type swmt
- LEFT JOIN sc_stat_meter_read_rate_by_building_15day ssmrrbb on (
- ssmrrbb.channel_id = swmt.channel_id <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
- and ssmrrbb.stat_day = #{startDate}
- <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- )
- left join sc_device_type sdt on (sdt.id = swmt.device_type_id)
- WHERE swmt.`level` = 2
- GROUP BY swmt.channel_id,sdt.equipment_type
- <if test="sortColumn != null and sortColumn != ''">
- <if test="sortOrder != null and sortOrder != ''">
- order by ${sortColumn} ${sortOrder}
- </if>
- </if>
- ) t1 where t1.device_count is not null
- </select>
- <!--查询最近7天抄表率-->
- <select id="getLast7DaysReadRate" resultType="java.lang.Double">
- SELECT
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0)
- FROM
- sc_stat_meter_read_rate_by_building ssmrrbb
- WHERE
- stat_day between #{beginTime} AND #{endTime}
- <if test="programItems != null and programItems.size() != 0">
- and EXISTS(
- select 1 from
- (select sd.building_id FROM sc_device_dim_info df
- LEFT JOIN sc_device sd ON sd.id = df.device_id
- WHERE 1 = 1
- and
- <foreach collection="programItems" item="item" open="(" separator=" or " close=")">
- (df.dimension_code = #{item.dimensionCode} and df.dimension_value = #{item.dimensionValue})
- </foreach>
- GROUP BY sd.building_id) ud
- WHERE ud.building_id = ssmrrbb.building_id
- )
- </if>
- <if test="siteId != null">
- AND site_id = #{siteId}
- </if>
- <if test="channelId != null">
- AND channel_id = #{channelId}
- </if>
- <if test="customerId != null">
- AND customer_id = #{customerId}
- </if>
- </select>
- <!--按客户查询时间范围内的抄表率数数据统计-->
- <select id="getRateListByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
- SELECT
- sc.id as customer_id,
- sc.customer_name,
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(ssmrrbb.read_times) as read_times,
- SUM(ssmrrbb.real_read_times) as real_read_times,
- SUM(ssmrrbb.un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_customer sc
- LEFT JOIN sc_stat_meter_read_rate_by_building ssmrrbb on(
- ssmrrbb.customer_id = sc.id
- <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
- and ssmrrbb.stat_day = #{startDate}
- <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- )
- WHERE sc.status = 1
- <if test="customerList != null and customerList.size() != 0">
- and sc.id in
- <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
- </if>
- GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
- <if test="sortColumn != null and sortColumn != ''">
- <if test="sortOrder != null and sortOrder != ''">
- order by ${sortColumn} ${sortOrder}
- </if>
- </if>
- </select>
- <select id="getRateListByCustomerV2" resultType="com.bz.smart_city.dto.CustomerRateDto">
- SELECT sc.id as customer_id,sc.parent_id,sc.customer_name,sc.children_num FROM sc_customer sc
- LEFT JOIN(
- SELECT
- ssmrrbb.customer_id,
- SUM(device_count) as device_count
- FROM
- ${tableName} ssmrrbb
- WHERE
- ssmrrbb.site_id = #{siteId}
- <if test="channelId != null"> and ssmrrbb.channel_id = #{channelId} </if>
- AND ssmrrbb.stat_day = #{startDate}
- AND ssmrrbb.channel_id <![CDATA[ <> ]]> - 99
- <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and ssmrrbb.customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY
- ssmrrbb.customer_id
- )t1 on(t1.customer_id = sc.id)
- WHERE sc.`status` = 1 and sc.site_id = #{siteId}
- <if test="customerIds != null and customerIds.size() != 0"> and sc.id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- ORDER BY device_count desc
- </select>
- <select id="getRateListByCustomerV2AndDeviceType" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
- SELECT
- ssmrrbb.customer_id,
- ssmrrbb.channel_id,
- sc.channel_name,
- SUM(device_count) as device_count,
- SUM(ssmrrbb.read_times) as read_times,
- SUM(ssmrrbb.real_read_times) as real_read_times,
- SUM(ssmrrbb.un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM ${tableName} ssmrrbb
- left join sc_channel sc on(sc.id = ssmrrbb.channel_id)
- WHERE
- ssmrrbb.site_id = #{siteId}
- and ssmrrbb.stat_day = #{startDate}
- AND ssmrrbb.channel_id <![CDATA[ <> ]]> - 99
- <if test="customerId != null"> and ssmrrbb.customer_id = #{customerId} </if>
- <if test="channelId != null"> and ssmrrbb.channel_id = #{channelId} </if>
- GROUP BY ssmrrbb.customer_id,ssmrrbb.channel_id,sc.channel_name
- order by read_rate desc
- </select>
- <!--按客户查询7天内的抄表率数数据统计-->
- <select id="getRateList7DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
- SELECT
- sc.id as customer_id,
- sc.customer_name,
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(ssmrrbb.read_times) as read_times,
- SUM(ssmrrbb.real_read_times) as real_read_times,
- SUM(ssmrrbb.un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_customer sc
- LEFT JOIN sc_stat_meter_read_rate_by_building_7day ssmrrbb on(
- ssmrrbb.customer_id = sc.id
- <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
- and ssmrrbb.stat_day = #{startDate}
- <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- )
- WHERE sc.status = 1
- <if test="customerList != null and customerList.size() != 0">
- and sc.id in
- <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
- </if>
- GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
- <if test="sortColumn != null and sortColumn != ''">
- <if test="sortOrder != null and sortOrder != ''">
- order by ${sortColumn} ${sortOrder}
- </if>
- </if>
- </select>
- <!--按客户查询15天内的抄表率数数据统计-->
- <select id="getRateList15DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateListDto">
- SELECT
- sc.id as customer_id,
- sc.customer_name,
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(ssmrrbb.read_times) as read_times,
- SUM(ssmrrbb.real_read_times) as real_read_times,
- SUM(ssmrrbb.un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_customer sc
- LEFT JOIN sc_stat_meter_read_rate_by_building_15day ssmrrbb on(
- ssmrrbb.customer_id = sc.id
- <if test="siteId != null"> and ssmrrbb.site_id = #{siteId} </if>
- and ssmrrbb.stat_day = #{startDate}
- <if test="buildingIds != null and buildingIds.size() != 0"> and ssmrrbb.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- )
- WHERE sc.status = 1
- <if test="customerList != null and customerList.size() != 0">
- and sc.id in
- <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
- </if>
- GROUP BY sc.id,ssmrrbb.customer_id,sc.customer_name
- <if test="sortColumn != null and sortColumn != ''">
- <if test="sortOrder != null and sortOrder != ''">
- order by ${sortColumn} ${sortOrder}
- </if>
- </if>
- </select>
- <!--按客户查询时间范围内的抄表率数据统计-->
- <select id="getCountByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
- SELECT
- (select SUM(device_count) from sc_stat_meter_read_rate_by_building where 1 = 1 <if test="siteId != null"> and site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(read_times) as read_times,
- SUM(real_read_times) as real_read_times,
- SUM(un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_stat_meter_read_rate_by_building a
- LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
- WHERE a.stat_day = #{startDate}
- AND b.`status` = 1
- <if test="siteId != null"> and a.site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerList != null and customerList.size() != 0">
- and a.customer_id in
- <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
- </if>
- </select>
- <select id="getCountByCustomerV2" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
- SELECT
- SUM(device_count) as device_count,
- SUM(read_times) as read_times,
- SUM(real_read_times) as real_read_times,
- SUM(un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM ${tableName} scmrrbb
- WHERE stat_day = #{startDate}
- and channel_id <![CDATA[ <> ]]> - 99
- <if test="siteId != null"> and site_id = #{siteId} </if>
- <if test="channelId != null"> and channel_id = #{channelId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerIds != null and customerIds.size() != 0"> and customer_id in <foreach collection="customerIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- </select>
- <!--按客户查询时间范围内的抄表率数据统计-->
- <select id="getCount7DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
- SELECT
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(read_times) as read_times,
- SUM(real_read_times) as real_read_times,
- SUM(un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_stat_meter_read_rate_by_building_7day a
- LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
- WHERE a.stat_day = #{startDate}
- AND b.`status` = 1
- <if test="siteId != null"> and a.site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerList != null and customerList.size() != 0">
- and a.customer_id in
- <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
- </if>
- </select>
- <!--按客户查询时间范围内的抄表率数据统计-->
- <select id="getCount15DayByCustomer" resultType="com.bz.smart_city.dto.WaterReadRateCountDto">
- SELECT
- (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>
- <if test="buildingIds != null and buildingIds.size() != 0"> and building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- GROUP BY stat_day desc limit 1) as device_count,
- SUM(read_times) as read_times,
- SUM(real_read_times) as real_read_times,
- SUM(un_read_times) as un_read_times,
- ifnull(ROUND(sum(real_read_times)/sum(device_count)*100,2),0) as read_rate
- FROM sc_stat_meter_read_rate_by_building_15day a
- LEFT JOIN sc_w_meter_type b ON b.channel_id = a.channel_id
- WHERE a.stat_day = #{startDate}
- AND b.`status` = 1
- <if test="siteId != null"> and a.site_id = #{siteId} </if>
- <if test="buildingIds != null and buildingIds.size() != 0"> and a.building_id in <foreach collection="buildingIds" item="item" open="(" separator="," close=")">#{item}</foreach> </if>
- <if test="customerList != null and customerList.size() != 0">
- and a.customer_id in
- <foreach collection="customerList" item="item" open="(" separator="," close=")">#{item.id}</foreach>
- </if>
- </select>
- <!-- 按建筑统计天表 -->
- <sql id="base_GetRateListByBuildingForDay">
- select
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.read_rate AS read_rate,
- rb.customer_id as customer_id,
- c.customer_name as customer_name
- from
- sc_stat_meter_read_rate_by_building rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <select id="getRateListByBuildingForDay" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_GetRateListByBuildingForDay"></include>
- <include refid="where_clause"></include>
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by ${param.sortColumn} ${param.sortOrder},device_count desc
- </if>
- </if>
- </select>
- <select id="getRateAreaListByBuildingForDay" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
- select
- b.id,
- b.name,
- b.province,
- b.city,
- b.region,
- b.community,
- b.longitude,
- b.latitude,
- 0
- from
- sc_stat_meter_read_rate_by_building rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- <include refid="where_clause"></include>
- </select>
- <select id="summaryRateListByBuildingForDay" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
- from (
- <include refid="base_GetRateListByBuildingForDay"></include>
- <include refid="where_clause"></include>
- ) tmp
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by read_rate ${param.sortOrder}
- </if>
- </if>
- </select>
-
- <!-- 按建筑统计天表 新装水表场景适用 -->
- <sql id="base_GetRateListByBuildingForDayWithNew">
- select
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.customer_id as customer_id,
- c.customer_name as customer_name,
- (
- SELECT
- count( 1 )
- FROM
- sc_install_list l
- WHERE
- l.`status` = 1
- AND l.is_installed = 1
- AND l.is_accepted = 0
- AND l.building_id = rb.building_id
- ) AS installed_device_count,
- (
- SELECT
- SUM( IF ( d.device_status = 5, 1, 0 ) )
- FROM
- sc_device d
- WHERE
- d.building_id = rb.building_id
- AND d.`status` = 1
- AND d.sys_id = - 99
- ) AS unenable_device_count ,
- FORMAT(rb.real_read_times/ (
- SELECT
- count( 1 )
- FROM
- sc_install_list l
- WHERE
- l.`status` = 1
- AND l.is_installed = 1
- AND l.is_accepted = 0
- AND l.building_id = rb.building_id
- ) *100, 2) as read_rate
- from
- sc_stat_meter_read_rate_by_building rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <select id="getRateListByBuildingForDayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_GetRateListByBuildingForDayWithNew"></include>
- <include refid="where_clause"></include>
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by ${param.sortColumn} ${param.sortOrder}
- </if>
- </if>
- </select>
- <select id="summaryRateListByBuildingForDayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.installed_device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
- from (
- <include refid="base_GetRateListByBuildingForDayWithNew"></include>
- <include refid="where_clause"></include>
- ) tmp
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by read_rate ${param.sortOrder}
- </if>
- </if>
- </select>
- <!-- 按建筑统计7天表 -->
- <sql id="base_GetRateListByBuildingFor7Day">
- select
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.read_rate AS read_rate,
- rb.customer_id as customer_id,
- c.customer_name as customer_name
- from
- sc_stat_meter_read_rate_by_building_7day rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <select id="getRateAreaListByBuildingFor7Day" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
- select
- b.id,
- b.name,
- b.province,
- b.city,
- b.region,
- b.community,
- b.longitude,
- b.latitude,
- 0
- from
- sc_stat_meter_read_rate_by_building_7day rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- <include refid="where_clause"></include>
- </select>
- <select id="getRateListByBuildingFor7Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_GetRateListByBuildingFor7Day"></include>
- <include refid="where_clause"></include>
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by ${param.sortColumn} ${param.sortOrder},device_count desc
- </if>
- </if>
- </select>
- <select id="summaryRateListByBuildingFor7Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
- from (
- <include refid="base_GetRateListByBuildingFor7Day"></include>
- <include refid="where_clause"></include>
- ) tmp
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by read_rate ${param.sortOrder}
- </if>
- </if>
- </select>
- <!-- 按建筑统计7天表 新装水表场景适用 -->
- <sql id="base_GetRateListByBuildingFor7DayWithNew">
- select
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.customer_id as customer_id,
- c.customer_name as customer_name,
- (
- SELECT
- count( 1 )
- FROM
- sc_install_list l
- WHERE
- l.`status` = 1
- AND l.is_installed = 1
- AND l.is_accepted = 0
- AND l.building_id = rb.building_id
- ) AS installed_device_count,
- (
- SELECT
- SUM( IF ( d.device_status = 5, 1, 0 ) )
- FROM
- sc_device d
- WHERE
- d.building_id = rb.building_id
- AND d.`status` = 1
- AND d.sys_id = - 99
- ) AS unenable_device_count ,
- FORMAT(rb.real_read_times/ (
- SELECT
- count( 1 )
- FROM
- sc_install_list l
- WHERE
- l.`status` = 1
- AND l.is_installed = 1
- AND l.is_accepted = 0
- AND l.building_id = rb.building_id
- ) *100, 2) as read_rate
- from
- sc_stat_meter_read_rate_by_building_7day rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <select id="getRateListByBuildingFor7DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_GetRateListByBuildingFor7DayWithNew"></include>
- <include refid="where_clause"></include>
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by ${param.sortColumn} ${param.sortOrder}
- </if>
- </if>
- </select>
- <select id="summaryRateListByBuildingFor7DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.installed_device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
- from (
- <include refid="base_GetRateListByBuildingFor7DayWithNew"></include>
- <include refid="where_clause"></include>
- ) tmp
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by read_rate ${param.sortOrder}
- </if>
- </if>
- </select>
-
- <!-- 按建筑统计15天表 -->
- <sql id="base_GetRateListByBuildingFor15Day">
- select
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.read_rate AS read_rate,
- rb.customer_id as customer_id,
- c.customer_name as customer_name
- from
- sc_stat_meter_read_rate_by_building_15day rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <!-- 按建筑统计月表 -->
- <sql id="base_GetRateListByBuildingForMonth">
- select
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.read_rate AS read_rate,
- rb.customer_id as customer_id,
- c.customer_name as customer_name
- from
- sc_stat_meter_read_rate_by_building_month rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <select id="getRateListByBuildingFor15Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_GetRateListByBuildingFor15Day"></include>
- <include refid="where_clause"></include>
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by ${param.sortColumn} ${param.sortOrder},device_count desc
- </if>
- </if>
- </select>
- <select id="getRateListByBuildingForMonth" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_GetRateListByBuildingForMonth"></include>
- <include refid="where_clause"></include>
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by ${param.sortColumn} ${param.sortOrder},device_count desc
- </if>
- </if>
- </select>
- <select id="getRateAreaListByBuildingFor15Day" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
- select
- b.id,
- b.name,
- b.province,
- b.city,
- b.region,
- b.community,
- b.longitude,
- b.latitude,
- 0
- from
- sc_stat_meter_read_rate_by_building_15day rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- <include refid="where_clause"></include>
- </select>
- <select id="getRateAreaListByBuildingForMonth" resultType="com.bz.smart_city.dto.BuildingSelectInfoDto">
- select
- b.id,
- b.name,
- b.province,
- b.city,
- b.region,
- b.community,
- b.longitude,
- b.latitude,
- 0
- from
- sc_stat_meter_read_rate_by_building_month rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- <include refid="where_clause"></include>
- </select>
- <select id="summaryRateListByBuildingFor15Day" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
- from (
- <include refid="base_GetRateListByBuildingFor15Day"></include>
- <include refid="where_clause"></include>
- ) tmp
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by read_rate ${param.sortOrder}
- </if>
- </if>
- </select>
- <select id="summaryRateListByBuildingForMonth" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.read_times)*100,2),0) as read_rate
- from (
- <include refid="base_GetRateListByBuildingForMonth"></include>
- <include refid="where_clause"></include>
- ) tmp
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by read_rate ${param.sortOrder}
- </if>
- </if>
- </select>
-
- <!-- 按建筑统计15天表 新装水表场景适用-->
- <sql id="base_GetRateListByBuildingFor15DayWithNew">
- select
- rb.stat_day as stat_day,
- rb.building_id as building_id,
- b.`name` AS building_name,
- rb.device_count AS device_count,
- rb.read_times AS read_times,
- rb.real_read_times AS real_read_times,
- rb.un_read_times AS un_read_times,
- rb.customer_id as customer_id,
- c.customer_name as customer_name,
- (
- SELECT
- count( 1 )
- FROM
- sc_install_list l
- WHERE
- l.`status` = 1
- AND l.is_installed = 1
- AND l.is_accepted = 0
- AND l.building_id = rb.building_id
- ) AS installed_device_count,
- (
- SELECT
- SUM( IF ( d.device_status = 5, 1, 0 ) )
- FROM
- sc_device d
- WHERE
- d.building_id = rb.building_id
- AND d.`status` = 1
- AND d.sys_id = - 99
- ) AS unenable_device_count ,
- FORMAT(rb.real_read_times/ (
- SELECT
- count( 1 )
- FROM
- sc_install_list l
- WHERE
- l.`status` = 1
- AND l.is_installed = 1
- AND l.is_accepted = 0
- AND l.building_id = rb.building_id
- ) *100, 2) as read_rate
- from
- sc_stat_meter_read_rate_by_building_15day rb
- LEFT JOIN sc_building b ON ( rb.building_id = b.id )
- LEFT JOIN sc_customer c on (rb.customer_id = c.id)
- </sql>
- <select id="getRateListByBuildingFor15DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- <include refid="base_GetRateListByBuildingFor15DayWithNew"></include>
- <include refid="where_clause"></include>
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by ${param.sortColumn} ${param.sortOrder}
- </if>
- </if>
- </select>
- <select id="summaryRateListByBuildingFor15DayWithNew" resultType="com.bz.smart_city.dto.StatMeterReadRateDto">
- select
- ifnull(SUM(tmp.installed_device_count),0) as device_count,
- ifnull(SUM(tmp.read_times),0) as read_times,
- ifnull(SUM(tmp.real_read_times),0) as real_read_times,
- ifnull(SUM(tmp.un_read_times),0) as un_read_times,
- ifnull(ROUND(SUM(tmp.real_read_times)/SUM(tmp.installed_device_count)*100,2),0) as read_rate
- from (
- <include refid="base_GetRateListByBuildingFor15DayWithNew"></include>
- <include refid="where_clause"></include>
- ) tmp
- <if test="param.sortColumn != null and param.sortColumn != ''">
- <if test="param.sortOrder != null and param.sortOrder != ''">
- order by read_rate ${param.sortOrder}
- </if>
- </if>
- </select>
- </mapper>
|