|
@@ -15,6 +15,7 @@ import com.zcxk.rmcp.api.dto.meterReadRecord.MeterReadRecordUpdateDto;
|
|
|
import com.zcxk.rmcp.api.enums.ReadStatusEnum;
|
|
|
import com.zcxk.rmcp.api.vo.MeterReadRecordAggregaVo;
|
|
|
import com.zcxk.rmcp.api.vo.MeterReadRecordVo;
|
|
|
+import com.zcxk.rmcp.core.entity.Device;
|
|
|
import com.zcxk.rmcp.core.mongo.MeterReadRecord;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
@@ -268,38 +269,38 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
|
|
|
* @updateTime 2021/7/28 10:25
|
|
|
* @throws
|
|
|
*/
|
|
|
- public PageResult<MeterReadRecord> querySettlementWaterConsumption(MeasurementSettlementDto dto,int num){
|
|
|
|
|
|
- List<AggregationOperation> commonOperations = new ArrayList<>();
|
|
|
- LocalDate startDate=DateUtil.parseLocalDate(dto.getSettlementTime());
|
|
|
- LocalDate endDate=startDate.plusMonths(dto.getBillingCycle());
|
|
|
- Criteria criteria = new Criteria();
|
|
|
- criteria.and("tenantId").is(dto.getTenantId());
|
|
|
- criteria.and("companyOrgId").is(dto.getCompanyOrgId());
|
|
|
- if (ZoniotStringUtils.isNotEmpty(dto.getDeptOrgId())) {
|
|
|
- criteria.and("deptOrgId").is(dto.getDeptOrgId());
|
|
|
- }
|
|
|
- if (ZoniotStringUtils.isNotEmpty(dto.getCommunityId())) {
|
|
|
- criteria.and("communityId").is(dto.getCommunityId());
|
|
|
- }
|
|
|
+ public List<MeterReadRecord> querySettlementWaterConsumption(Device device, Date clearingStartDate, Date clearingEndDate) {
|
|
|
|
|
|
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMDD");
|
|
|
- Criteria criteria1 = Criteria.where("data.readDate").is(Integer.valueOf(formatter.format(startDate)));
|
|
|
- Criteria criteria2 = Criteria.where("data.readDate").is(Integer.valueOf(formatter.format(endDate)));
|
|
|
+
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("deviceId").is(device.getId());
|
|
|
+ Criteria criteria1 = Criteria.where("data.readDate").lte(Integer.valueOf(
|
|
|
+ DateUtil.formatDate(clearingEndDate,"yyyyMMdd")));
|
|
|
+ Criteria criteria2 = Criteria.where("data.readDate").gte(Integer.valueOf(
|
|
|
+ DateUtil.formatDate(clearingStartDate,"yyyyMMdd")));
|
|
|
Criteria dayCritera = new Criteria();
|
|
|
dayCritera.orOperator(criteria1,criteria2);
|
|
|
List<AggregationOperation> countQuery =aggrQueryCondition(criteria,"data",
|
|
|
dayCritera,null);
|
|
|
- int pageSize=10000;
|
|
|
- Pageable page=PageRequest.of(num, pageSize);
|
|
|
- // 分页条件
|
|
|
- commonOperations.add(Aggregation.skip(num > 1 ?(num-1) * pageSize : 0));
|
|
|
|
|
|
- commonOperations.add(Aggregation.limit(pageSize));
|
|
|
AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
|
|
|
AggregationResults<MeterReadRecord> aggregate = mongoTemplate.aggregate(Aggregation.newAggregation(countQuery).withOptions(aggregationOptions)
|
|
|
, MeterReadRecord.class, MeterReadRecord.class);
|
|
|
+ return aggregate.getMappedResults();
|
|
|
+ }
|
|
|
|
|
|
- return PageResult.builder(aggregate.getMappedResults(), page.getPageNumber() + 1, page.getPageSize(), 1);
|
|
|
+ public List<MeterReadRecord> queryDeviceMeterReadRecordWithCondtion(Long id, int endDate) {
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("deviceId").is(id);
|
|
|
+ Criteria dayCritera = new Criteria();
|
|
|
+ dayCritera.and("data.readDate").lte(endDate);
|
|
|
+ List<AggregationOperation> countQuery =aggrQueryCondition(criteria,"data",
|
|
|
+ dayCritera,null);
|
|
|
+ countQuery.add(Aggregation.sort(Sort.Direction.DESC,"data.readTime"));
|
|
|
+ AggregationOptions aggregationOptions = AggregationOptions.builder().allowDiskUse(true).build();
|
|
|
+ AggregationResults<MeterReadRecord> aggregate = mongoTemplate.aggregate(Aggregation.newAggregation(countQuery).withOptions(aggregationOptions)
|
|
|
+ , MeterReadRecord.class, MeterReadRecord.class);
|
|
|
+ return aggregate.getMappedResults();
|
|
|
}
|
|
|
}
|