|
@@ -1,5 +1,6 @@
|
|
package com.example.demo.service;
|
|
package com.example.demo.service;
|
|
|
|
|
|
|
|
+import com.example.demo.dao.SiteDao;
|
|
import com.example.demo.entity.*;
|
|
import com.example.demo.entity.*;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
@@ -21,7 +22,10 @@ import java.util.List;
|
|
public class SiteService {
|
|
public class SiteService {
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
- MongoTemplate mongoTemplate;
|
|
|
|
|
|
+ private MongoTemplate mongoTemplate;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private SiteDao siteDao;
|
|
|
|
|
|
@Value("${Account.username}")
|
|
@Value("${Account.username}")
|
|
private String username; //账号
|
|
private String username; //账号
|
|
@@ -38,7 +42,12 @@ public class SiteService {
|
|
}
|
|
}
|
|
|
|
|
|
if(requestReadingMeterDto.getMeterCode() != null && requestReadingMeterDto.getMeterCode() .size()>0){
|
|
if(requestReadingMeterDto.getMeterCode() != null && requestReadingMeterDto.getMeterCode() .size()>0){
|
|
- List<MeterInfoDto> meterInfos = this.queryMeterInfoList(requestReadingMeterDto.getMeterCode());
|
|
|
|
|
|
+
|
|
|
|
+ List<Long> deviceIds = siteDao.findDeviceIds(requestReadingMeterDto.getMeterCode());
|
|
|
|
+ if(deviceIds == null || deviceIds.size()==0){
|
|
|
|
+ return new ResponseMsg( false,"未查询到有效数据",new ResultDto());
|
|
|
|
+ }
|
|
|
|
+ List<MeterInfoDto> meterInfos = this.queryMeterInfoList(deviceIds);
|
|
if(meterInfos.size()>0){
|
|
if(meterInfos.size()>0){
|
|
return new ResponseMsg( true,"成功",new ResultDto(meterInfos));
|
|
return new ResponseMsg( true,"成功",new ResultDto(meterInfos));
|
|
}else{
|
|
}else{
|
|
@@ -76,7 +85,11 @@ public class SiteService {
|
|
return new ResponseMsg(false, "查询表数请限制在1000个以内", new ResultDto());
|
|
return new ResponseMsg(false, "查询表数请限制在1000个以内", new ResultDto());
|
|
}
|
|
}
|
|
//查询数据
|
|
//查询数据
|
|
- List<MeterReadDto> meterReads = this.queryReadInfoList(meterCodes,readDate);
|
|
|
|
|
|
+ List<Long> deviceIds = siteDao.findDeviceIds(meterCodes);
|
|
|
|
+ if(deviceIds == null || deviceIds.size()==0){
|
|
|
|
+ return new ResponseMsg( false,"未查询到有效数据",new ResultDto());
|
|
|
|
+ }
|
|
|
|
+ List<MeterReadDto> meterReads = this.queryReadInfoList(deviceIds,readDate);
|
|
|
|
|
|
if (meterCodes != null && meterCodes.size() > 0 && meterReads.size() != meterCodes.size()) {
|
|
if (meterCodes != null && meterCodes.size() > 0 && meterReads.size() != meterCodes.size()) {
|
|
//遍历未查询到表的编码
|
|
//遍历未查询到表的编码
|
|
@@ -91,12 +104,16 @@ public class SiteService {
|
|
c.add(Calendar.DAY_OF_MONTH, -1);
|
|
c.add(Calendar.DAY_OF_MONTH, -1);
|
|
Integer yesterday = Integer.valueOf(formatter.format(requestReadingMeterDto.getReadingTime()));
|
|
Integer yesterday = Integer.valueOf(formatter.format(requestReadingMeterDto.getReadingTime()));
|
|
//查询前一天的数据
|
|
//查询前一天的数据
|
|
- List<MeterReadDto> meterRead2 = this.queryReadInfoList(meterCodes,yesterday);
|
|
|
|
- //遍历未查询到表的编码
|
|
|
|
- for (MeterReadDto meterReadDto : meterRead2) {
|
|
|
|
- meterCodes.remove(meterReadDto.getMeterCode());//移除已经查询到的表号
|
|
|
|
|
|
+ List<Long> deviceIds2 = siteDao.findDeviceIds(meterCodes);
|
|
|
|
+ if(deviceIds == null || deviceIds.size()==0){
|
|
|
|
+ List<MeterReadDto> meterRead2 = this.queryReadInfoList(deviceIds2,yesterday);
|
|
|
|
+ for (MeterReadDto meterReadDto : meterRead2) {
|
|
|
|
+ meterCodes.remove(meterReadDto.getMeterCode());//移除已经查询到的表号
|
|
|
|
+ }
|
|
|
|
+ meterReads.addAll(meterRead2);//合并两次查询的数据
|
|
|
|
+
|
|
}
|
|
}
|
|
- meterReads.addAll(meterRead2);//合并两次查询的数据
|
|
|
|
|
|
+ //遍历未查询到表的编码
|
|
|
|
|
|
//未查询到的数据标记异常
|
|
//未查询到的数据标记异常
|
|
for (String meterCode : meterCodes) {
|
|
for (String meterCode : meterCodes) {
|
|
@@ -119,13 +136,13 @@ public class SiteService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public List<MeterReadDto> queryReadInfoList(List<String> meterCodes, Integer readDate){
|
|
|
|
|
|
+ public List<MeterReadDto> queryReadInfoList(List<Long> deviceIds, Integer readDate){
|
|
Query query = new Query();
|
|
Query query = new Query();
|
|
- if(meterCodes != null && meterCodes.size()>0){
|
|
|
|
- query.addCriteria(Criteria.where("meterNo").in(meterCodes)) ;
|
|
|
|
|
|
+ if(deviceIds != null && deviceIds.size()>0){
|
|
|
|
+ query.addCriteria(Criteria.where("deviceId").in(deviceIds)) ;
|
|
}
|
|
}
|
|
query.addCriteria(Criteria.where("readData").ne(null));
|
|
query.addCriteria(Criteria.where("readData").ne(null));
|
|
- query.addCriteria(Criteria.where("customerId").is(3));
|
|
|
|
|
|
+ query.addCriteria(Criteria.where("customerId").is(2));
|
|
query.addCriteria(Criteria.where("status").is(1));
|
|
query.addCriteria(Criteria.where("status").is(1));
|
|
query.addCriteria(Criteria.where("readDate").is(readDate));
|
|
query.addCriteria(Criteria.where("readDate").is(readDate));
|
|
query.fields().include("meterNo");
|
|
query.fields().include("meterNo");
|
|
@@ -137,13 +154,13 @@ public class SiteService {
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|
|
- public List<MeterInfoDto> queryMeterInfoList(List<String> meterCodes) {
|
|
|
|
|
|
+ public List<MeterInfoDto> queryMeterInfoList(List<Long> deviceIds) {
|
|
|
|
|
|
Criteria criteria = Criteria.where("readData").ne(null)
|
|
Criteria criteria = Criteria.where("readData").ne(null)
|
|
- .and("customerId").is(3)
|
|
|
|
|
|
+ .and("customerId").is(2)
|
|
.and("status").is(1);
|
|
.and("status").is(1);
|
|
- if(meterCodes != null && meterCodes.size()>0){
|
|
|
|
- criteria.and("meterNo").in(meterCodes);
|
|
|
|
|
|
+ if(deviceIds != null && deviceIds.size()>0){
|
|
|
|
+ criteria.and("deviceId").in(deviceIds);
|
|
}
|
|
}
|
|
|
|
|
|
Aggregation agg = Aggregation.newAggregation(
|
|
Aggregation agg = Aggregation.newAggregation(
|