ソースを参照

抄表记录写入到MongoDB PengDi@2021/1/6

pengdi@zoniot.com 4 年 前
コミット
83ea71813d

+ 1 - 1
meter-reading-batch/pom.xml

@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.1.RELEASE</version>
+        <version>2.2.6.RELEASE</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.huaxu.zoniot</groupId>

+ 11 - 1
meter-reading-common/pom.xml

@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.1.RELEASE</version>
+        <version>2.2.6.RELEASE</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.huaxu.zoniot</groupId>
@@ -35,6 +35,10 @@
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
         <!-- 糊涂工具包 -->
         <dependency>
             <groupId>cn.hutool</groupId>
@@ -51,10 +55,16 @@
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
         </dependency>
+        <!-- mybatis -->
         <dependency>
             <groupId>org.mybatis.spring.boot</groupId>
             <artifactId>mybatis-spring-boot-starter</artifactId>
             <version>2.1.3</version>
         </dependency>
+        <!-- mongodb -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 51 - 0
meter-reading-common/src/main/java/com/huaxu/zoniot/config/MongoDBConfig.java

@@ -0,0 +1,51 @@
+package com.huaxu.zoniot.config;
+
+import com.mongodb.MongoClientOptions;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.convert.CustomConversions;
+import org.springframework.data.mongodb.MongoDbFactory;
+import org.springframework.data.mongodb.core.convert.DbRefResolver;
+import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
+import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
+import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
+import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
+
+/**
+ * @author pengdi
+ */
+@Configuration
+public class MongoDBConfig {
+    /**
+     * <p>解决 MongoSocketReadTimeoutException异常</p>
+     * @return
+     */
+    @Bean
+    public MongoClientOptions mongoOptions() {
+        return MongoClientOptions
+            .builder()
+            .maxConnectionIdleTime(60000)
+            .build();
+    }
+
+    /**
+     * <p>去除文档中的_class字段</p>
+     * @param factory
+     * @param context
+     * @param beanFactory
+     * @return
+     */
+    @Bean
+    public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory, MongoMappingContext context, BeanFactory beanFactory) {
+        DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
+        MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
+        try {
+            mappingConverter.setCustomConversions(beanFactory.getBean(CustomConversions.class));
+        } catch (NoSuchBeanDefinitionException ignore) {
+        }
+        mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));
+        return mappingConverter;
+    }
+}

+ 35 - 1
meter-reading-common/src/main/java/com/huaxu/zoniot/entity/MeterReadRecord.java

@@ -1,18 +1,25 @@
 package com.huaxu.zoniot.entity;
 
 import lombok.Data;
+import org.springframework.data.mongodb.core.mapping.Document;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.Map;
 
 /**
  * <p>抄表记录</p>
+ * sh.enableSharding("meter-reading-database");
+ * sh.shardCollection("meter-reading-database.sc_meter_read_record",{"readDate":1,"deviceId":1});
+ * db.sc_meter_read_record.createIndex({readDate:1,customerId:1,buildingId:1,siteId:1,sysId:1,readStatus:1,concentratorId:1},{background: true,name:'idx_1'})
  * @Author wilian.peng
  * @Date 2020/12/22 16:59
  * @Version 1.0
  */
 @Data
-public class MeterReadRecord {
+@Document(collection = "sc_meter_read_record")
+public class MeterReadRecord implements Serializable {
     /**
     * 主键
     */
@@ -152,4 +159,31 @@ public class MeterReadRecord {
     * 更新人
     */
     private String updateBy;
+
+    /***********************************以下字段将存入MongoDB中**************************************/
+    private String communityName;
+
+    private String buildingName ;
+
+    private String customerName ;
+
+    private String provinceName ;
+
+    private String cityName ;
+
+    private String regionName ;
+
+    private String deviceTypeName ;
+
+    private String concentratorNo ;
+
+    private String collectorNo ;
+
+    private Integer manufacturerId ;
+
+    private String manufacturerName ;
+    /**
+     * 最后上送数据
+     */
+    private Map<String, MeasuringData> lastSendData ;
 }

+ 22 - 0
meter-reading-common/src/main/java/com/huaxu/zoniot/entity/WaterMeter.java

@@ -136,4 +136,26 @@ public class WaterMeter {
      */
     private String updateBy;
 
+    /***********************************以下字段将存入MongoDB中**************************************/
+    private String communityName;
+
+    private String buildingName ;
+
+    private String customerName ;
+
+    private String provinceName ;
+
+    private String cityName ;
+
+    private String regionName ;
+
+    private String deviceTypeName ;
+
+    private String concentratorNo ;
+
+    private String collectorNo ;
+
+    private Integer manufacturerId ;
+
+    private String manufacturerName ;
 }

+ 14 - 0
meter-reading-common/src/main/java/com/huaxu/zoniot/repository/MeterReadRecordRepository.java

@@ -0,0 +1,14 @@
+package com.huaxu.zoniot.repository;
+
+import com.huaxu.zoniot.entity.MeterReadRecord;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+/**
+ * <p></p>
+ *
+ * @Author wilian.peng
+ * @Date 2021/1/6 18:14
+ * @Version 1.0
+ */
+public interface MeterReadRecordRepository extends MongoRepository<MeterReadRecord,Long> {
+}

+ 70 - 17
meter-reading-common/src/main/java/com/huaxu/zoniot/service/impl/MeterReadRecordServiceImpl.java

@@ -16,12 +16,15 @@ import com.huaxu.zoniot.entity.JobTask;
 import com.huaxu.zoniot.entity.MeasuringData;
 import com.huaxu.zoniot.entity.MeterReadRecord;
 import com.huaxu.zoniot.entity.WaterMeter;
+import com.huaxu.zoniot.repository.MeterReadRecordRepository;
 import com.huaxu.zoniot.service.MeterReadRecordService;
 import com.huaxu.zoniot.utils.RedisUtil;
 import com.huaxu.zoniot.utils.SnowflakeIdWorker;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.StopWatch;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
 import org.springframework.transaction.annotation.Propagation;
@@ -55,6 +58,8 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
     @Resource
     RedisUtil redisUtil ;
 
+    @Autowired
+    MeterReadRecordRepository meterReadRecordRepository ;
     /**
      * 根据任务生成未抄记录
      * @param jobTask
@@ -97,11 +102,12 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
         }
         else{
             List<MeterReadRecord> meterReadRecordList = new ArrayList<>();
+            List<MeterReadRecord> meterReadRecordListForMongo = new ArrayList<>();
             for (WaterMeter waterMeter : waterMeterList){
                 MeterReadRecord meterReadRecord = buildUnReadRecord(waterMeter, readDay);
                 if(meterReadRecord != null){
-
                     meterReadRecordList.add(meterReadRecord);
+                    meterReadRecordListForMongo.add(meterReadRecord);
                 }
                 if (meterReadRecordList.size() == Constants.BATCH_SIZE){
                     // 按批次提交
@@ -115,6 +121,14 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
                 i = i+insert ;
                 meterReadRecordList.clear();
             }
+            if(meterReadRecordListForMongo.size() != 0){
+                try {
+                    meterReadRecordRepository.saveAll(meterReadRecordListForMongo);
+                }catch (Exception e){
+                    e.printStackTrace();
+                    log.error("Batch insert meter read record to mongo failed !",e);
+                }
+            }
         }
         log.info("end batch create meter record , readDay={} ,result size = {}",readDay,i);
         return i;
@@ -139,17 +153,17 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
      * @return
      */
     protected MeterReadRecord buildUnReadRecord(WaterMeter waterMeter , Integer readDay){
-        if(compareMeterReadDay(readDay) == 0){
-            // 生成今日的未抄,从缓存中获取最新的数据,若最新的数据不为今日数据才生成今日未抄
-            Map<String, MeasuringData> cacheMeasuringData = getMeterLastDataFromCache(waterMeter.getDeviceId());
-            if(cacheMeasuringData != null){
-                Date lastSendTime = getDateFromMeterData(cacheMeasuringData);
-                if(lastSendTime.after(DateUtil.parse(String.valueOf(readDay),Constants.DEFAULT_METER_READ_DATE_FORMAT))){
-                    log.warn("Don't Need Create UnRead Record , Device = {},Last Send Time = {}",waterMeter.getDeviceId(),lastSendTime);
-                    return  null ;
-                }
-            }
-        }
+//        if(compareMeterReadDay(readDay) == 0){
+//            // 生成今日的未抄,从缓存中获取最新的数据,若最新的数据不为今日数据才生成今日未抄
+//            Map<String, MeasuringData> cacheMeasuringData = getMeterLastDataFromCache(waterMeter.getDeviceId());
+//            if(cacheMeasuringData != null){
+//                Date lastSendTime = getDateFromMeterData(cacheMeasuringData);
+//                if(lastSendTime.after(DateUtil.parse(String.valueOf(readDay),Constants.DEFAULT_METER_READ_DATE_FORMAT))){
+//                    log.warn("Don't Need Create UnRead Record , Device = {},Last Send Time = {}",waterMeter.getDeviceId(),lastSendTime);
+//                    return  null ;
+//                }
+//            }
+//        }
         MeterReadRecord meterReadRecord = new MeterReadRecord() ;
         meterReadRecord.setBuildingId(waterMeter.getBuildingId());
         meterReadRecord.setCity(waterMeter.getCity());
@@ -176,6 +190,18 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
         meterReadRecord.setSysId(waterMeter.getSysId());
         meterReadRecord.setProvince(waterMeter.getProvince());
         meterReadRecord.setLastValid(getMeterLastValid(waterMeter,readDay));
+        /*********************如下字段为了MongoDB的需要**************************/
+        meterReadRecord.setProvinceName(waterMeter.getProvinceName());
+        meterReadRecord.setCityName(waterMeter.getCityName());
+        meterReadRecord.setRegionName(waterMeter.getRegionName());
+        meterReadRecord.setCustomerName(waterMeter.getCustomerName());
+        meterReadRecord.setDeviceTypeName(waterMeter.getDeviceTypeName());
+        meterReadRecord.setManufacturerId(waterMeter.getManufacturerId());
+        meterReadRecord.setManufacturerName(waterMeter.getManufacturerName());
+        meterReadRecord.setConcentratorNo(waterMeter.getConcentratorNo());
+        meterReadRecord.setCollectorNo(waterMeter.getCollectorNo());
+        meterReadRecord.setBuildingName(waterMeter.getBuildingName());
+        meterReadRecord.setCommunityName(waterMeter.getCommunityName());
         return meterReadRecord ;
     }
 
@@ -299,8 +325,10 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
             // 判断数据上报时间与抄表日期是否匹配
             Date sendTime = getDateFromMeterData(measuringData);
             DateTime readDate = DateUtil.parse(String.valueOf(readDay), Constants.DEFAULT_METER_READ_DATE_FORMAT);
+            // 允许一个小时日切延时
             int hour = 24 ;
-            if(sendTime.before(readDate) || sendTime.after(DateUtil.offsetHour(readDate,hour))){
+            if(sendTime.before(DateUtil.offsetHour(readDate,-1)) ||
+                    sendTime.after(DateUtil.offsetHour(readDate,hour))){
                 log.error("表{}数据异常,抄表时间与上报时间不匹配,上报时间{} != 本次抄表时间{}",
                         waterMeter.getDeviceId(),sendTime,readDate);
                 throw new ServiceException(ResultStatus.READING_ERROR_2);
@@ -310,7 +338,15 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
             if(record == null){
                 // 抄表记录不存在,则生成今日未抄表记录
                 record = buildUnReadRecord(waterMeter,readDay);
-                meterReadRecordMapper.insert(record);
+                if(record != null){
+                    meterReadRecordMapper.insert(record);
+                    // 同时也插入一份到mongo中
+                    meterReadRecordRepository.insert(record);
+                }
+                else{
+                    throw new ServiceException(ResultStatus.READING_ERROR_3);
+                }
+
             }
             // 根据上报数据更新抄表数据
             if(record.getReadStatus().equals(Constants.READ)){
@@ -329,7 +365,9 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
                 throw new ServiceException(ResultStatus.READING_ERROR_4);
             }
             // 计算今日用水量
-            BigDecimal todayCost = calculateTodayCost(currentReading, record);
+            BigDecimal todayCost = calculateTodayCost(currentReading,
+                    new BigDecimal(getMeterLastValid(waterMeter,readDay)),
+                    record);
             MeterReadRecord update = new MeterReadRecord();
             update.setId(record.getId());
             update.setLastCost(todayCost);
@@ -340,6 +378,21 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
             update.setReadTime(sendTime);
             update.setUpdateBy(Constants.SYS_FLAG);
             meterReadRecordMapper.updateByPrimaryKeySelective(update) ;
+            // 同时也将mongo抄表记录更新
+            try {
+                record.setLastSendData(measuringData);
+                update.setLastCost(todayCost);
+                record.setReadData(currentReading);
+                record.setLastValid(currentReading);
+                record.setReadStatus(Constants.READ);
+                record.setDateUpdate(new Date());
+                record.setReadTime(sendTime);
+                record.setUpdateBy(Constants.SYS_FLAG);
+                meterReadRecordRepository.save(record);
+            }catch (Exception e){
+                e.printStackTrace();
+                log.error("Update meter record to mongo failed!",e);
+            }
             // 更新缓存
             setMeterLastDataToCache(waterMeter.getDeviceId(),measuringData);
         }catch (Exception e){
@@ -374,9 +427,9 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService {
         String readingValue = readingData.getMeasuringVaule();
         return readingValue ;
     }
-    protected  BigDecimal calculateTodayCost(String currentReading,MeterReadRecord record){
+    protected  BigDecimal calculateTodayCost(String currentReading,BigDecimal lastValid,MeterReadRecord record){
         BigDecimal lastCost = record.getLastCost();
-        BigDecimal lastValid = new BigDecimal(record.getLastValid());
+//        BigDecimal lastValid = new BigDecimal(record.getLastValid());
         BigDecimal currentValid = new BigDecimal(currentReading);
         BigDecimal  cost = currentValid.subtract(lastValid).add(lastCost) ;
         return cost ;

+ 8 - 0
meter-reading-common/src/main/resources/application-common-dev.properties

@@ -32,6 +32,14 @@ spring.redis.host=114.135.61.188
 spring.redis.port=26379
 spring.redis.password=zoniot
 spring.redis.database=1
+spring.redis.lettuce.pool.max-active=8
+spring.redis.lettuce.pool.max-wait=100
+spring.redis.lettuce.pool.max-idle=8
+spring.redis.lettuce.pool.min-idle=0
+spring.redis.lettuce.shutdown-timeout=100
+######################################################MongoDB配置#####################################################
+spring.data.mongodb.uri=mongodb://114.135.61.188:17017/meter-reading-database
+logging.level.org.springframework.data.mongodb.core=DEBUG
 #########################################业务配置############################################
 #定义每个任务的数据集大小
 task.chunk.size=2000

+ 5 - 0
meter-reading-common/src/main/resources/application-common-sit.properties

@@ -32,6 +32,11 @@ spring.redis.host=114.135.61.188
 spring.redis.port=26379
 spring.redis.password=zoniot
 spring.redis.database=1
+spring.redis.lettuce.pool.max-active=8
+spring.redis.lettuce.pool.max-wait=100
+spring.redis.lettuce.pool.max-idle=8
+spring.redis.lettuce.pool.min-idle=0
+spring.redis.lettuce.shutdown-timeout=100
 #########################################业务配置############################################
 #定义每个任务的数据集大小
 task.chunk.size=2000

+ 4 - 3
meter-reading-common/src/main/resources/mapper/MeterReadRecordMapper.xml

@@ -399,12 +399,13 @@
       sc_meter_read_record
     where
         status = 1
-    and device_id = #{deviceId,jdbcType=BIGINT}
     and read_date = #{readDate,jdbcType=INTEGER}
+    and device_id = #{deviceId,jdbcType=BIGINT}
   </select>
   <update id="deleteRecordByReadDayAndDeviceId">
     update sc_meter_read_record set status = 0
-    where device_id = #{deviceId,jdbcType=BIGINT}
-      and read_date = #{readDate,jdbcType=INTEGER}
+    where
+     read_date = #{readDate,jdbcType=INTEGER}
+    and device_id = #{deviceId,jdbcType=BIGINT}
   </update>
 </mapper>

+ 36 - 1
meter-reading-common/src/main/resources/mapper/WaterMeterMapper.xml

@@ -27,6 +27,21 @@
     <result column="date_update" jdbcType="TIMESTAMP" property="dateUpdate" />
     <result column="create_by" jdbcType="VARCHAR" property="createBy" />
     <result column="update_by" jdbcType="VARCHAR" property="updateBy" />
+      <result column="community_name" jdbcType="VARCHAR" property="communityName" />
+      <result column="building_name" jdbcType="VARCHAR" property="buildingName" />
+      <result column="customer_name" jdbcType="VARCHAR" property="customerName" />
+      <result column="province_name" jdbcType="VARCHAR" property="provinceName" />
+      <result column="city_name" jdbcType="VARCHAR" property="cityName"/>
+      <result column="region_name" jdbcType="VARCHAR" property="regionName" />
+      <result column="concentrator_no" jdbcType="VARCHAR" property="concentratorNo" />
+      <result column="collector_no" jdbcType="VARCHAR" property="collectorNo" />
+      <result column="device_type_name" jdbcType="VARCHAR" property="deviceTypeName"/>
+      <result column="manufacturer_id" jdbcType="INTEGER" property="manufacturerId" />
+      <result column="manufacturer_name" jdbcType="VARCHAR" property="manufacturerName" />
+
+
+
+
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
@@ -55,7 +70,18 @@
       d.loc_desc as location,
       wmt.valve_measuring_code as valve_measuring_code ,
 	  wmt.reading_measuring_code as reading_measuring_code,
-	  d.date_create as date_create
+	  d.date_create as date_create,
+	  b.`name` as building_name,
+	  c.`name` as community_name ,
+	  p.name as province_name,
+	  cc.name as city_name,
+	  r.`name` as region_name,
+	  con.serial_number as concentrator_no,
+      col.collector_no as collector_no,
+	  concat_ws('/',m.name,dt.equipment_type,dt.model) as device_type_name,
+	  d.manufacturer_id as manufacturer_id ,
+	  m.`name` as manufacturer_name,
+      cu.customer_name as customer_name
   </sql>
   <sql id="Base_Meter_Query_Where">
       d.`status` = 1
@@ -77,6 +103,15 @@
       left join sc_device d on (d.`status` = 1 and wmt.device_type_id = d.device_type)
       left join sc_water_related_device  wrd on (wrd.device_id =d.id)
       left join sc_building b on (d.building_id = b.id)
+      LEFT JOIN sc_community c on (b.community = c.id )
+	  LEFT JOIN sc_area p on (c.province = p.id)
+	  LEFT JOIN sc_area cc on (c.city = cc.id)
+	  LEFT JOIN sc_area r on (c.region =r.id)
+	  LEFT JOIN sc_concentrator con on (con.id = wrd.concentrator_id)
+	  LEFT JOIN sc_collector col on (col.id = wrd.collector_id)
+	  left join sc_device_type dt on (d.device_type = dt.id)
+	  left join sc_device_manufacturer m on (d.manufacturer_id = m.id)
+	  left join sc_customer cu on (cu.id = d.customer_id)
   </sql>
   <select id="findAllWaterMeterList" resultMap="BaseResultMap">
     <include refid="Base_Meter_Query" />

+ 1 - 1
meter-reading-job/pom.xml

@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.1.RELEASE</version>
+        <version>2.2.6.RELEASE</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.huaxu.zoniot</groupId>

+ 1 - 3
meter-reading-service/pom.xml

@@ -6,7 +6,7 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.3.1.RELEASE</version>
+        <version>2.2.6.RELEASE</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.huaxu.zoniot</groupId>
@@ -16,8 +16,6 @@
 
     <properties>
         <java.version>1.8</java.version>
-        <netty-all.version>4.1.54.Final</netty-all.version>
-        <gson.version>2.8.6</gson.version>
         <skipTests>true</skipTests>
     </properties>
     <dependencies>

+ 2 - 2
meter-reading-service/src/main/resources/application-service-dev.properties

@@ -21,5 +21,5 @@ spring.rabbitmq.listener.simple.concurrency=2
 spring.rabbitmq.listener.simple.max-concurrency=4
 spring.rabbitmq.listener.simple.prefetch=250
 # Ë®±íÊý¾Ý¶ÓÁÐ
-com.huaxu.zoniot.meter.data.exchange=meter-data-exchange
-com.huaxu.zoniot.meter.data.queue=meter-data-queue
+com.huaxu.zoniot.meter.data.exchange=dev-meter-data-exchange
+com.huaxu.zoniot.meter.data.queue=dev-meter-data-queue

+ 0 - 13
meter-reading-service/src/test/java/com/huaxu/zoniot/MeterReadRateServiceTests.java

@@ -1,12 +1,8 @@
 package com.huaxu.zoniot;
 
-import com.huaxu.zoniot.service.MeterReadRateService;
 import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
-import java.util.Date;
-
 /**
  * <p></p>
  *
@@ -16,16 +12,7 @@ import java.util.Date;
  */
 @SpringBootTest
 public class MeterReadRateServiceTests {
-
-    @Autowired
-    MeterReadRateService meterReadRateService;
     @Test
     void contextLoads() {
     }
-
-    @Test
-    void statLastDayReadRateByBuildingTest(){
-//        int i = meterReadRateService.statLastDayReadRateByBuilding(new Date());
-//        System.out.println(i);
-    }
 }

+ 35 - 6
meter-reading-service/src/test/java/com/huaxu/zoniot/MeterReadingServiceTests.java

@@ -10,7 +10,9 @@ import org.springframework.boot.test.context.SpringBootTest;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p></p>
@@ -106,8 +108,8 @@ public class MeterReadingServiceTests {
         System.out.println(result.size());
     }
     @Test
-    void meterReadingTest(){
-        //WaterMeter meter = waterMeterMapper.findWaterMeterById(580141137533075456L);
+    void meterReadingTest1(){
+        WaterMeter meter = waterMeterMapper.findWaterMeterById(580141137533075456L);
         // 模拟数据
         MeasuringData md1 = new MeasuringData();
         md1.setMeasuringCode("TIME");
@@ -124,10 +126,37 @@ public class MeterReadingServiceTests {
         list.add(md1);
         list.add(md2);
         System.out.println(JSON.toJSONString(list));
-//        Map<String ,MeasuringData > mdm = new HashMap<>();
-//        mdm.put("TIME",md1);
-//        mdm.put("currentQuantity",md2);
-//        meterReadRecordService.meterReading(meter,mdm,20201225);
+        Map<String ,MeasuringData > mdm = new HashMap<>();
+        mdm.put("TIME",md1);
+        mdm.put("currentQuantity",md2);
+        meterReadRecordService.meterReading(meter,mdm,20201225);
+    }
+
+
+    @Test
+    void meterReadingTest2(){
+        //WaterMeter meter = waterMeterMapper.findWaterMeterById(775700946759057408L);
+        // 模拟数据
+        MeasuringData md1 = new MeasuringData();
+        md1.setMeasuringCode("TIME");
+        md1.setMeasuringName("最后上报时间");
+        md1.setMeasuringVaule("20210106132520");
+
+        MeasuringData md2 = new MeasuringData();
+        md2.setMeasuringCode("currentQuantity");
+        md2.setMeasuringName("当前止度");
+        md2.setMeasuringVaule("72.8");
+        md2.setMeasuringUnit("m³");
+
+        List<MeasuringData> list = new ArrayList<>();
+        list.add(md1);
+        list.add(md2);
+        System.out.println(JSON.toJSONString(list));
+        Map<String ,MeasuringData > mdm = new HashMap<>();
+        mdm.put("TIME",md1);
+        mdm.put("currentQuantity",md2);
+        meterReadRecordService.meterReading(775700946759057408L,mdm);
     }
 
+
 }

+ 1 - 1
smart-city-intf/src/main/resources/application-sit-node1.properties

@@ -75,4 +75,4 @@ spring.rabbitmq.listener.direct.acknowledge-mode=manual
 spring.rabbitmq.listener.simple.acknowledge-mode=manual
 com.zcxk.rabbitmq.water.meter.queue=water_meter_queue
 com.zcxk.rabbitmq.command.status.queue=command_status_queue
-com.zcxk.rabbitmq.meterdata.exchange=meter-data-exchange
+com.zcxk.rabbitmq.mete.data.exchange=meter-data-exchange