Browse Source

添加mongo查询抄表记录service

lin 4 years ago
parent
commit
3c9622870b

+ 0 - 2
smart-city-platform/src/main/java/com/bz/smart_city/service/MeterReadRecordService.java

@@ -81,7 +81,5 @@ public interface MeterReadRecordService{
      */
     int waterMeterReadDataByType(Date date ,String waterMeterCode ,String wsvCode);
 
-    List<MeterReadRecord> queryMeterReadRecordWithCondtion(CommonQueryCondition condition);
 
-    List<MeterReadRecord> findByIds(List<Long> deviceIds);
 }

+ 24 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/MongoMeterReadRecordService.java

@@ -0,0 +1,24 @@
+package com.bz.smart_city.service;
+
+import com.bz.smart_city.commom.model.CommonQueryCondition;
+import com.bz.smart_city.commom.model.Pagination;
+import com.bz.smart_city.entity.MeterReadRecord;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.mongodb.core.query.Query;
+
+import java.util.List;
+
+public interface MongoMeterReadRecordService {
+    Query buildMongodbQuery(CommonQueryCondition condition);
+
+    List<MeterReadRecord> findMongoMeterReadRecordList(Query query);
+
+    Pagination<MeterReadRecord> findMongoMeterReadRecordPage(CommonQueryCondition condition, int pageNum, int pageSize);
+
+    List<MeterReadRecord> queryMeterReadRecordWithCondtion(CommonQueryCondition condition);
+
+    List<MeterReadRecord> findByIds(List<Long> deviceIds);
+
+    // 查询水表最后一次抄表数据
+    MeterReadRecord findMeterLastReadRecord(Long deviceId);
+}

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

@@ -6,6 +6,7 @@ import com.bz.smart_city.commom.util.*;
 import com.bz.smart_city.dto.*;
 
 import com.bz.smart_city.repository.MongoMeterReadRecord;
+import com.bz.smart_city.service.MongoMeterReadRecordService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -97,8 +98,9 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService{
 
 	@Resource
 	CustomerService customerService;
+
 	@Autowired
-	MongoTemplate mongoTemplate;
+	private MongoMeterReadRecordService mongoMeterReadRecordService;
 
 	@Override
 	public Pagination<MeterReadRecord> queryMeterReadRecord(MeterReadRecord param, int pageNum, int pageSize) {
@@ -125,99 +127,10 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService{
 		return new Pagination<MeterReadRecord>(result);
 
 		//切换mongoDB查询
-		//return this.findMongoMeterReadRecordPage(condition,pageNum,pageSize);
-	}
-
-	private Query buildMongodbQuery(CommonQueryCondition condition){
-		Query query = new Query();
-		if(condition.getSiteId()!=null) query.addCriteria(Criteria.where("siteId").is(condition.getSiteId()));
-		if(condition.getStartDate()!=null && condition.getEndDate()!=null)query.addCriteria(Criteria.where("readDate").gte(condition.getStartDate()).lte(condition.getEndDate()));
-		if(condition.getChannelId()!=null) query.addCriteria(Criteria.where("sysId").is(condition.getChannelId()));
-		if(condition.getReadStatus()!=null && !"".equals(condition.getReadStatus())) query.addCriteria(Criteria.where("readStatus").is(condition.getReadStatus()));
-		if(condition.getBuildingId()!=null) query.addCriteria(Criteria.where("buildingId").is(condition.getBuildingId()));
-		if(condition.getCommunityId()!=null) query.addCriteria(Criteria.where("community").is(condition.getCommunityId()));
-		if(condition.getConcentratorId()!=null) query.addCriteria(Criteria.where("concentratorId").is(condition.getConcentratorId()));
-		if(condition.getChannelNumberId()!=null) query.addCriteria(Criteria.where("channelNumberId").is(condition.getChannelNumberId()));
-		if(condition.getCollectorCode()!=null && !"".equals(condition.getCollectorCode())) query.addCriteria(Criteria.where("collectorNo").regex(condition.getCollectorCode()));
-
-		Criteria customerIdCriteria = Criteria.where("customerId");
-		if(condition.getCustormerId()!=null) customerIdCriteria.is(condition.getCustormerId());
-		if(condition.getCustomerIds()!=null && condition.getCustomerIds().size()>0) customerIdCriteria.andOperator(Criteria.where("customerId").in(condition.getCustomerIds()));
-		if(condition.getCustormerId()!=null || (condition.getCustomerIds()!=null && condition.getCustomerIds().size()>0)) query.addCriteria(customerIdCriteria);
-
-		if(condition.getDeviceNo()!=null && !"".equals(condition.getDeviceNo())){
-			Criteria criteria = new Criteria();
-			List<Criteria> result = new ArrayList<>();
-			result.add(Criteria.where("meterNo").regex(condition.getDeviceNo()));
-			result.add(Criteria.where("meterFileNo").regex(condition.getDeviceNo()));
-			Criteria[] criteriaArray = result.toArray(new Criteria[result.size()]);
-			criteria.orOperator(criteriaArray);
-			query.addCriteria(criteria);
-		}
-		return query;
-	}
-
-
-	private List<MeterReadRecord> findMongoMeterReadRecordList(Query query) {
-		List<MongoMeterReadRecord> list = mongoTemplate.find(query, MongoMeterReadRecord.class,"sc_meter_read_record");
-		List<MeterReadRecord> readRecordList = new ArrayList<>();
-		if (list != null && list.size() > 0) {
-			for (MongoMeterReadRecord mongoRecord : list) {
-				MeterReadRecord record = new MeterReadRecord();
-				record.setId(mongoRecord.getId());
-				record.setReadDate(mongoRecord.getReadDate());
-				record.setSiteId(mongoRecord.getSiteId());
-				record.setSysId(mongoRecord.getSysId());
-				record.setProvince(mongoRecord.getProvince());
-				record.setCity(mongoRecord.getCity());
-				record.setRegion(mongoRecord.getRegion());
-				record.setCommunityId(mongoRecord.getCommunity());
-				record.setCommunityName(mongoRecord.getCommunityName());
-				record.setBuildingId(mongoRecord.getBuildingId());
-				record.setBuildingName(mongoRecord.getBuildingName());
-				record.setLocation(mongoRecord.getLocation());
-				record.setDeviceTypeId(mongoRecord.getDeviceTypeId());
-				record.setDeviceId(mongoRecord.getDeviceId());
-				record.setDeviceNo(mongoRecord.getDeviceNo());
-				record.setMeterNo(mongoRecord.getMeterNo());
-				record.setMeterFileNo(mongoRecord.getMeterFileNo());
-				record.setReadTime(mongoRecord.getReadTime());
-				record.setReadStatus(mongoRecord.getReadStatus());
-				record.setReadData(mongoRecord.getReadData());
-				record.setConcentratorId(mongoRecord.getConcentratorId());
-				record.setConcentratorNo(mongoRecord.getConcentratorNo());
-				record.setCollectorId(mongoRecord.getCollectorId());
-				record.setCollectorNo(mongoRecord.getCollectorNo());
-				record.setCustomerId(mongoRecord.getCustomerId());
-				record.setCustomerName(mongoRecord.getCustomerName());
-				record.setFactoryId(mongoRecord.getManufacturerId());
-				record.setFactoryName(mongoRecord.getManufacturerName());
-				record.setStatus(mongoRecord.getStatus());
-				record.setLastValid(mongoRecord.getLastValid());
-				record.setLastCost(mongoRecord.getLastCost());
-
-				record.setEquipmentType(mongoRecord.getDeviceTypeName());
-				//record.setModel(mongoRecord.getde);
-				record.setChannelNumberName(mongoRecord.getChannelName());
-				readRecordList.add(record);
-			}
-		}
-		return readRecordList;
+		//return mongoMeterReadRecordService.findMongoMeterReadRecordPage(condition,pageNum,pageSize);
 	}
-	private Pagination<MeterReadRecord> findMongoMeterReadRecordPage(CommonQueryCondition condition,int pageNum, int pageSize) {
-		//List<MongoMeterReadRecord> result = meterReadRecordMapper.queryMeterReadRecordWithCondtion(condition);
 
 
-		Query query = buildMongodbQuery(condition);
-
-		long count = mongoTemplate.count(query, MongoMeterReadRecord.class,"sc_meter_read_record");
-
-		query.skip((pageNum - 1) * pageSize).limit(pageSize);
-
-		List<MeterReadRecord> readRecordList = findMongoMeterReadRecordList(query);
-
-		return new Pagination<MeterReadRecord>(readRecordList,count);
-	}
 
 	@Override
 	public List<MeterRecordStat> statisticRecords(CommonQueryCondition param) {
@@ -1028,18 +941,6 @@ public class MeterReadRecordServiceImpl implements MeterReadRecordService{
 		return total;
 	}
 
-	@Override
-	public List<MeterReadRecord> queryMeterReadRecordWithCondtion(CommonQueryCondition condition) {
-		Query query = this.buildMongodbQuery(condition);
-		return this.findMongoMeterReadRecordList(query);
-	}
-
-	@Override
-	public List<MeterReadRecord> findByIds(List<Long> deviceIds) {
-		Query query = new Query();
-		query.addCriteria(Criteria.where("_id").in(deviceIds));
-		return this.findMongoMeterReadRecordList(query);
-	}
 
 	protected MeterReadRecord  genrateMeterRecord(Date current , DeviceDto device, String wsvCode){
 		MeterReadRecord  record = null ;

+ 183 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/MongoMeterReadRecordServiceImpl.java

@@ -0,0 +1,183 @@
+package com.bz.smart_city.service.impl;
+
+import com.bz.smart_city.commom.model.CommonQueryCondition;
+import com.bz.smart_city.commom.model.Pagination;
+import com.bz.smart_city.entity.MeterReadRecord;
+import com.bz.smart_city.repository.MongoMeterReadRecord;
+import com.bz.smart_city.service.MongoMeterReadRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@Service
+public class MongoMeterReadRecordServiceImpl implements MongoMeterReadRecordService {
+
+    @Autowired
+    MongoTemplate mongoTemplate;
+
+    @Override
+    public Query buildMongodbQuery(CommonQueryCondition condition){
+        Query query = new Query();
+        if(condition.getSiteId()!=null) query.addCriteria(Criteria.where("siteId").is(condition.getSiteId()));
+        if(condition.getStartDate()!=null && condition.getEndDate()!=null)query.addCriteria(Criteria.where("readDate").gte(condition.getStartDate()).lte(condition.getEndDate()));
+        if(condition.getChannelId()!=null) query.addCriteria(Criteria.where("sysId").is(condition.getChannelId()));
+        if(condition.getReadStatus()!=null && !"".equals(condition.getReadStatus())) query.addCriteria(Criteria.where("readStatus").is(condition.getReadStatus()));
+        if(condition.getBuildingId()!=null) query.addCriteria(Criteria.where("buildingId").is(condition.getBuildingId()));
+        if(condition.getCommunityId()!=null) query.addCriteria(Criteria.where("community").is(condition.getCommunityId()));
+        if(condition.getConcentratorId()!=null) query.addCriteria(Criteria.where("concentratorId").is(condition.getConcentratorId()));
+        if(condition.getChannelNumberId()!=null) query.addCriteria(Criteria.where("channelNumberId").is(condition.getChannelNumberId()));
+        if(condition.getCollectorCode()!=null && !"".equals(condition.getCollectorCode())) query.addCriteria(Criteria.where("collectorNo").regex(condition.getCollectorCode()));
+
+        Criteria customerIdCriteria = Criteria.where("customerId");
+        if(condition.getCustormerId()!=null) customerIdCriteria.is(condition.getCustormerId());
+        if(condition.getCustomerIds()!=null && condition.getCustomerIds().size()>0) customerIdCriteria.andOperator(Criteria.where("customerId").in(condition.getCustomerIds()));
+        if(condition.getCustormerId()!=null || (condition.getCustomerIds()!=null && condition.getCustomerIds().size()>0)) query.addCriteria(customerIdCriteria);
+
+        if(condition.getDeviceNo()!=null && !"".equals(condition.getDeviceNo())){
+            Criteria criteria = new Criteria();
+            List<Criteria> result = new ArrayList<>();
+            result.add(Criteria.where("meterNo").regex(condition.getDeviceNo()));
+            result.add(Criteria.where("meterFileNo").regex(condition.getDeviceNo()));
+            Criteria[] criteriaArray = result.toArray(new Criteria[result.size()]);
+            criteria.orOperator(criteriaArray);
+            query.addCriteria(criteria);
+        }
+        return query;
+    }
+
+
+    @Override
+    public List<MeterReadRecord> findMongoMeterReadRecordList(Query query) {
+        List<MongoMeterReadRecord> list = mongoTemplate.find(query, MongoMeterReadRecord.class,"sc_meter_read_record");
+        List<MeterReadRecord> readRecordList = new ArrayList<>();
+        if (list != null && list.size() > 0) {
+            for (MongoMeterReadRecord mongoRecord : list) {
+                MeterReadRecord record = new MeterReadRecord();
+                record.setId(mongoRecord.getId());
+                record.setReadDate(mongoRecord.getReadDate());
+                record.setSiteId(mongoRecord.getSiteId());
+                record.setSysId(mongoRecord.getSysId());
+                record.setProvince(mongoRecord.getProvince());
+                record.setCity(mongoRecord.getCity());
+                record.setRegion(mongoRecord.getRegion());
+                record.setCommunityId(mongoRecord.getCommunity());
+                record.setCommunityName(mongoRecord.getCommunityName());
+                record.setBuildingId(mongoRecord.getBuildingId());
+                record.setBuildingName(mongoRecord.getBuildingName());
+                record.setLocation(mongoRecord.getLocation());
+                record.setDeviceTypeId(mongoRecord.getDeviceTypeId());
+                record.setDeviceId(mongoRecord.getDeviceId());
+                record.setDeviceNo(mongoRecord.getDeviceNo());
+                record.setMeterNo(mongoRecord.getMeterNo());
+                record.setMeterFileNo(mongoRecord.getMeterFileNo());
+                record.setReadTime(mongoRecord.getReadTime());
+                record.setReadStatus(mongoRecord.getReadStatus());
+                record.setReadData(mongoRecord.getReadData());
+                record.setConcentratorId(mongoRecord.getConcentratorId());
+                record.setConcentratorNo(mongoRecord.getConcentratorNo());
+                record.setCollectorId(mongoRecord.getCollectorId());
+                record.setCollectorNo(mongoRecord.getCollectorNo());
+                record.setCustomerId(mongoRecord.getCustomerId());
+                record.setCustomerName(mongoRecord.getCustomerName());
+                record.setFactoryId(mongoRecord.getManufacturerId());
+                record.setFactoryName(mongoRecord.getManufacturerName());
+                record.setStatus(mongoRecord.getStatus());
+                record.setLastValid(mongoRecord.getLastValid());
+                record.setLastCost(mongoRecord.getLastCost());
+
+                record.setEquipmentType(mongoRecord.getDeviceTypeName());
+                //record.setModel(mongoRecord.getde);
+                record.setChannelNumberName(mongoRecord.getChannelName());
+                readRecordList.add(record);
+            }
+        }
+        return readRecordList;
+    }
+
+
+    @Override
+    public Pagination<MeterReadRecord> findMongoMeterReadRecordPage(CommonQueryCondition condition, int pageNum, int pageSize) {
+        //List<MongoMeterReadRecord> result = meterReadRecordMapper.queryMeterReadRecordWithCondtion(condition);
+
+
+        Query query = buildMongodbQuery(condition);
+
+        long count = mongoTemplate.count(query, MongoMeterReadRecord.class,"sc_meter_read_record");
+
+        query.skip((pageNum - 1) * pageSize).limit(pageSize);
+
+        List<MeterReadRecord> readRecordList = findMongoMeterReadRecordList(query);
+
+        return new Pagination<MeterReadRecord>(readRecordList,count);
+    }
+
+    @Override
+    public List<MeterReadRecord> queryMeterReadRecordWithCondtion(CommonQueryCondition condition) {
+        Query query = this.buildMongodbQuery(condition);
+        return this.findMongoMeterReadRecordList(query);
+    }
+
+    @Override
+    public List<MeterReadRecord> findByIds(List<Long> deviceIds) {
+        Query query = new Query();
+        query.addCriteria(Criteria.where("_id").in(deviceIds));
+        return this.findMongoMeterReadRecordList(query);
+    }
+
+    @Override
+    public MeterReadRecord findMeterLastReadRecord(Long deviceId) {
+        Query query = new Query();
+        query.addCriteria(Criteria.where("_id").is(deviceId));
+        query.with(Sort.by(Sort.Order.desc("dateCreate")));
+
+        MongoMeterReadRecord mongoRecord = mongoTemplate.findOne(query, MongoMeterReadRecord.class,"sc_meter_read_record");
+        if (mongoRecord != null) {
+            MeterReadRecord record = new MeterReadRecord();
+            record.setId(mongoRecord.getId());
+            record.setReadDate(mongoRecord.getReadDate());
+            record.setSiteId(mongoRecord.getSiteId());
+            record.setSysId(mongoRecord.getSysId());
+            record.setProvince(mongoRecord.getProvince());
+            record.setCity(mongoRecord.getCity());
+            record.setRegion(mongoRecord.getRegion());
+            record.setCommunityId(mongoRecord.getCommunity());
+            record.setCommunityName(mongoRecord.getCommunityName());
+            record.setBuildingId(mongoRecord.getBuildingId());
+            record.setBuildingName(mongoRecord.getBuildingName());
+            record.setLocation(mongoRecord.getLocation());
+            record.setDeviceTypeId(mongoRecord.getDeviceTypeId());
+            record.setDeviceId(mongoRecord.getDeviceId());
+            record.setDeviceNo(mongoRecord.getDeviceNo());
+            record.setMeterNo(mongoRecord.getMeterNo());
+            record.setMeterFileNo(mongoRecord.getMeterFileNo());
+            record.setReadTime(mongoRecord.getReadTime());
+            record.setReadStatus(mongoRecord.getReadStatus());
+            record.setReadData(mongoRecord.getReadData());
+            record.setConcentratorId(mongoRecord.getConcentratorId());
+            record.setConcentratorNo(mongoRecord.getConcentratorNo());
+            record.setCollectorId(mongoRecord.getCollectorId());
+            record.setCollectorNo(mongoRecord.getCollectorNo());
+            record.setCustomerId(mongoRecord.getCustomerId());
+            record.setCustomerName(mongoRecord.getCustomerName());
+            record.setFactoryId(mongoRecord.getManufacturerId());
+            record.setFactoryName(mongoRecord.getManufacturerName());
+            record.setStatus(mongoRecord.getStatus());
+            record.setLastValid(mongoRecord.getLastValid());
+            record.setLastCost(mongoRecord.getLastCost());
+
+            record.setEquipmentType(mongoRecord.getDeviceTypeName());
+            //record.setModel(mongoRecord.getde);
+            record.setChannelNumberName(mongoRecord.getChannelName());
+            return record;
+        }
+        return null;
+    }
+}