|
@@ -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;
|
|
|
+ }
|
|
|
+}
|