Explorar o código

mongo结算清单查询

hym %!s(int64=3) %!d(string=hai) anos
pai
achega
86238e6c91

+ 36 - 0
zoniot-rmcp/zoniot-rmcp-core/src/main/java/com/zcxk/rmcp/core/dao/mongo/MeterReadRecordDao.java

@@ -1,5 +1,6 @@
 package com.zcxk.rmcp.core.dao.mongo;
 
+import com.mongodb.client.MongoCursor;
 import com.zcxk.core.common.pojo.PageResult;
 import com.zcxk.core.common.pojo.UserCondition;
 import com.zcxk.core.oauth2.util.UserUtil;
@@ -8,12 +9,14 @@ import com.zcxk.core.utils.BigDecimalUtils;
 import com.zcxk.core.utils.DateUtil;
 import com.zcxk.core.utils.ZoniotIntegerUtils;
 import com.zcxk.core.utils.ZoniotStringUtils;
+import com.zcxk.rmcp.api.dto.measurementSettlement.MeasurementSettlementDto;
 import com.zcxk.rmcp.api.dto.meterReadRecord.MeterReadRecordDto;
 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.mongo.MeterReadRecord;
+import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.aggregation.*;
@@ -26,6 +29,7 @@ import org.springframework.util.CollectionUtils;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -257,4 +261,36 @@ public class MeterReadRecordDao extends BaseDao<MeterReadRecord, String> impleme
         List<Map> mappedResults = aggregate.getMappedResults();
         return CollectionUtils.isEmpty(mappedResults) ? 0 : ZoniotIntegerUtils.parseInt(mappedResults.get(0).get("count"));
     }
+    /**
+     *
+     * @description 查询结算期的用水量
+     * @author hym
+     * @updateTime 2021/7/28 10:25
+     * @throws
+     */
+    public List<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());
+        }
+
+        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.orOperator(criteria1,criteria2);
+         Query query = Query.query(criteria);
+        Pageable pageable = PageRequest.of(num, 10000);
+        query.with(pageable);
+        List<MeterReadRecord> meterReadRecords = mongoTemplate.find(query, MeterReadRecord.class);
+        return meterReadRecords;
+    }
 }