Browse Source

修复抄表率BUG

lin 4 years ago
parent
commit
fb37c4fdcb

+ 23 - 21
smart-city-platform/src/main/java/com/bz/smart_city/dao/MeterReadRecordMapper.java

@@ -22,39 +22,41 @@ public interface MeterReadRecordMapper {
     int insertList(@Param("meterReadRecords") List<MeterReadRecord> meterReadRecords);
 
     int updateByPrimaryKeySelective(@Param("meterReadRecord") MeterReadRecord meterReadRecord);
-    
+
     int updateHitoryData(@Param("meterReadRecord") MeterReadRecord meterReadRecord);
-    
+
     List<MeterReadRecord> queryMeterReadRecord(@Param("param") MeterReadRecord meterReadRecord);
-    
+
     List<MeterReadRecord> queryMeterReadRecordWithCondtion(@Param("param") CommonQueryCondition condition);
-    
+
     List<MeterReadRecord> queryDeviceMeterReadRecordWithCondtion(@Param("param") CommonQueryCondition condition);
-    
+
 //    List<MeterRecordStat> statisticReadRecordsByProvince(@Param("param") CommonQueryCondition param);
-    
+
 //    List<MeterRecordStat> statisticReadRecordsByCity(@Param("param") CommonQueryCondition param);
-    
+
 //    List<MeterRecordStat> statisticReadRecordsByRegion(@Param("param") MeterReadRecord meterReadRecord);
 
 //    List<MeterRecordStat> statisticReadRecordsByBuilding(@Param("param") CommonQueryCondition param);
-    
+
 //    List<MeterRecordStat> statisticReadRecordsByCommunity(@Param("param") CommonQueryCondition param);
-    
-    int createTmpTable(@Param("param") CommonQueryCondition param,@Param("tableName") String tableName);
+
+    int createTmpTable(@Param("param") CommonQueryCondition param, @Param("tableName") String tableName);
 
     int dropTmpTable(@Param("tableName") String tableName);
-    
-    List<MeterRecordStat>  statisticReadRecordsByProvince(@Param("tableName") String tableName);
 
-    List<MeterRecordStat>  statisticReadRecordsByCity(@Param("tableName") String tableName);
+    List<MeterRecordStat> statisticReadRecordsByProvince(@Param("tableName") String tableName);
+
+    List<MeterRecordStat> statisticReadRecordsByCity(@Param("tableName") String tableName);
 
-    List<MeterRecordStat>  statisticReadRecordsByCommuinty(@Param("tableName") String tableName);
+    List<MeterRecordStat> statisticReadRecordsByCommuinty(@Param("tableName") String tableName);
+
+    List<MeterRecordStat> statisticReadRecordsByBuilding(@Param("tableName") String tableName);
 
-    List<MeterRecordStat>  statisticReadRecordsByBuilding(@Param("tableName") String tableName);
-    
     List<DeviceDto> queryUnReadDeviceList(@Param("param") CommonQueryCondition condition);
 
+    List<DeviceDto> queryUnReadDeviceListV2(@Param("tableName") String tableName, @Param("param") CommonQueryCondition condition);
+
     List<DeviceDto> queryUnReadDeviceListFor7Day(@Param("param") CommonQueryCondition condition);
 
     List<DeviceDto> queryUnReadDeviceListFor15Day(@Param("param") CommonQueryCondition condition);
@@ -88,9 +90,9 @@ public interface MeterReadRecordMapper {
     // 每日用水测试
     List<Long> getDeviceIdOnDate(@Param("date") Integer date, @Param("limit") Integer limit);
     //
-    
-    List<MeterReadDataDTO> queryMeterReadData(@Param("meterReadDate")String meterReadDate , 
-    		@Param("deviceNo")String deviceNo,
-    		@Param("electronicNo")String electronicNo,
-    		@Param("custId")Integer custId);
+
+    List<MeterReadDataDTO> queryMeterReadData(@Param("meterReadDate") String meterReadDate,
+                                              @Param("deviceNo") String deviceNo,
+                                              @Param("electronicNo") String electronicNo,
+                                              @Param("custId") Integer custId);
 }

+ 8 - 4
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/StatMeterReadRateByBuildingServiceImpl.java

@@ -56,18 +56,22 @@ public class StatMeterReadRateByBuildingServiceImpl implements StatMeterReadRate
         List<DeviceDto> rtnList = null;
         condition.setStatDay(Integer.parseInt(DateTimeUtil.formatDate(DateTimeUtil.beforeNow(1), "yyyyMMdd")));
         if (period == 2) {
-            rtnList = meterReadRecordMapper.queryUnReadDeviceList(condition);
+            //rtnList = meterReadRecordMapper.queryUnReadDeviceList(condition);
+            rtnList = meterReadRecordMapper.queryUnReadDeviceListV2("sc_stat_meter_unread_device_by_building",condition);
         }
         else if(period == 7) { // 近7天,查询近7天表
-        	rtnList = meterReadRecordMapper.queryUnReadDeviceListFor7Day(condition);
+        	//rtnList = meterReadRecordMapper.queryUnReadDeviceListFor7Day(condition);
+            rtnList = meterReadRecordMapper.queryUnReadDeviceListV2("sc_stat_meter_unread_device_by_building_7day",condition);
         }
         else if (period == 15) { // 近15天,查询近15天表
-        	rtnList = meterReadRecordMapper.queryUnReadDeviceListFor15Day(condition);
+        	//rtnList = meterReadRecordMapper.queryUnReadDeviceListFor15Day(condition);
+            rtnList = meterReadRecordMapper.queryUnReadDeviceListV2("sc_stat_meter_unread_device_by_building_15day",condition);
         }
         else if (period == 99) { // 上月,查询月表
             DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMM");
             condition.setStatDay(Integer.parseInt(LocalDateTime.now().plusMonths(-1).format(df)));
-            rtnList = meterReadRecordMapper.queryUnReadDeviceListForMonth(condition);
+            //rtnList = meterReadRecordMapper.queryUnReadDeviceListForMonth(condition);
+            rtnList = meterReadRecordMapper.queryUnReadDeviceListV2("sc_stat_meter_unread_device_by_building_month",condition);
         }
         log.info("end StatMeterReadRateByBuildingService queryUnReadDeviceList , condition = " + JSON.toJSONString(condition));
         return new Pagination<>(rtnList);

+ 71 - 15
smart-city-platform/src/main/resources/mapper/MeterReadRecordMapper.xml

@@ -977,24 +977,80 @@
 				tmp.device_id 
 			FROM
 				(
-					SELECT
-						site_id,
-						sys_id,
-						building_id,
-						device_id
-					FROM
-						sc_meter_read_record 
-					WHERE
-					<if test = "param.statDay != null and param.statDay != 0">
-						read_date = #{param.statDay}
-					</if>
-					<if test = "param.buildingId != null and param.buildingId != 0"> 
-						AND building_id = #{param.buildingId} 
-					</if>
-						AND read_status = 1 
+                    SELECT
+                    site_id,
+                    channel_id,
+                    building_id,
+                    device_id
+                    FROM
+                    sc_stat_meter_unread_device_by_building
+                    WHERE
+                    <if test = "param.statDay != null and param.statDay != 0">
+                        stat_day = #{param.statDay}
+                    </if>
+                    <if test = "param.buildingId != null and param.buildingId != 0">
+                        AND building_id = #{param.buildingId}
+                    </if>
 				) tmp 
 		)
     </select>
+    <select id="queryUnReadDeviceListV2" resultType="com.bz.smart_city.dto.DeviceDto">
+        SELECT
+        d.site_id as siteId,
+        d.customer_id as customerId,
+        d.sys_id as sysId,
+        d.id as id,
+        d.device_type as deviceType,
+        d.building_id as buildingId,
+        co.id as community,
+        p.id as province,
+        c.id as city,
+        r.id as region,
+        cu.customer_name as customerName,
+        b.`name`as buildingName,
+        co.`name`as communityName,
+        col.collector_no as collectorName,
+        con.serial_number as concentratorName,
+        d.water_meter_no as waterMeterNo,
+        d.water_meter_file_no as waterMeterFileNo,
+        d.device_no as deviceNo,
+        d.device_status as deviceStatus,
+        d.floor as floor,
+        d.loc_desc as locDesc,
+        d.last_receive_time as lastReceiveTime
+        FROM ${tableName} as t1
+        LEFT JOIN sc_device d on(t1.device_id = d.id)
+        LEFT JOIN sc_w_meter_type wmt ON ( d.device_type = wmt.device_type_id AND wmt.`status` = 1 )
+        LEFT JOIN sc_customer cu ON ( d.customer_id = cu.id AND cu.`status` = 1 )
+        LEFT JOIN sc_building b ON ( d.building_id = b.id AND b.`status` = 1 )
+        LEFT JOIN sc_community co ON ( b.community = co.id AND co.`status` = 1 )
+        LEFT JOIN sc_area p ON ( b.province = p.id )
+        LEFT JOIN sc_area c ON ( b.city = c.id )
+        LEFT JOIN sc_area r ON ( b.region = r.id )
+        LEFT JOIN sc_water_related_device rd ON ( rd.device_id = d.id AND rd.`status` = 1 )
+        LEFT JOIN sc_collector col ON ( col.id = rd.collector_id AND col.`status` = 1 )
+        LEFT JOIN sc_concentrator con ON ( con.id = rd.concentrator_id AND con.`status` = 1 )
+        where d.status = 1
+        <if test = "param.buildingId != null and param.buildingId != 0">
+            and  d.building_id = #{param.buildingId}
+        </if>
+        <if test="param.siteId != null and param.siteId != 0">
+            and d.site_id = #{param.siteId}
+        </if>
+        <if test = "param.channelId != null and param.channelId != 0">
+            and d.sys_id = #{param.channelId}
+        </if>
+        <if test="param.custormerId != null and param.custormerId != 0">
+            and d.customer_id = #{param.custormerId}
+        </if>
+        <if test = "param.statDay != null and param.statDay != 0">
+            and t1.stat_day = #{param.statDay}
+        </if>
+        <if test = "param.buildingId != null and param.buildingId != 0">
+            AND t1.building_id = #{param.buildingId}
+        </if>
+
+    </select>
     <select id="queryUnReadDeviceListFor7Day" resultType="com.bz.smart_city.dto.DeviceDto">
     	SELECT
 		  	d.site_id as siteId,

+ 4 - 4
smart-city-platform/src/main/resources/mapper/StatMeterReadRateByBuildingMapper.xml

@@ -706,7 +706,7 @@
     	<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}
+                order by ${param.sortColumn} ${param.sortOrder},device_count desc
             </if>
         </if>
     </select>
@@ -861,7 +861,7 @@
         <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}
+                order by ${param.sortColumn} ${param.sortOrder},device_count desc
             </if>
         </if>
     </select>
@@ -1002,7 +1002,7 @@
     	<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}
+                order by ${param.sortColumn} ${param.sortOrder},device_count desc
             </if>
         </if>
     </select>
@@ -1012,7 +1012,7 @@
         <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}
+                order by ${param.sortColumn} ${param.sortOrder},device_count desc
             </if>
         </if>
     </select>