Pārlūkot izejas kodu

增加结算用水查询

hym 4 gadi atpakaļ
vecāks
revīzija
a615049646

+ 23 - 22
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/dao/mongo/MeterReadRecordDao.java

@@ -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();
     }
 }