diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java index 41fb973..8ba834d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AreaCountFacade.java @@ -36,17 +36,24 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.aggregation.Aggregation; +import org.springframework.data.mongodb.core.aggregation.AggregationOperation; +import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; -import java.time.*; +import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneId; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.concurrent.*; +import static org.springframework.data.mongodb.core.aggregation.Aggregation.project; + /** * @@ -1412,7 +1419,7 @@ public class AreaCountFacade { hospitalIds = getCurrentUserHospPermissions(query.getUserId(), StringUtils.isEmpty(provinceId) ? null : provinceId, StringUtils.isEmpty(cityId) ? null : cityId, StringUtils.isEmpty(areaId) ? null : areaId); } - if (CollectionUtils.isNotEmpty(hospitalIds)){ + if (CollectionUtils.isEmpty(hospitalIds)){ return baseResponse; } @@ -1439,13 +1446,25 @@ public class AreaCountFacade { healthChargeQuery.setHospitalIds(hospitalIds); } - List list = healthChargeService.queryHealthChargeList(healthChargeQuery); - + AggregationOperation match = Aggregation.match(healthChargeQuery.convertToQuery().getCriteria()); + AggregationOperation group = Aggregation.group("day","month","year","healthType").count().as("count"); + AggregationOperation month = project(). + andExpression("dayOfMonth(created)").as("day"). + andExpression("month(created)").as("month"). + andExpression("year(created)").as("year"). + andExpression("healthType").as("healthType"); + Aggregation aggregation = Aggregation.newAggregation(match, month, group ); + AggregationResults result = mongoTemplate.aggregate(aggregation, "lyms_health_charge", HashMap.class); + List mappedResults = result.getMappedResults(); + AggregationOperation group2 = Aggregation.group("healthType").count().as("count"); + Aggregation aggregation2 = Aggregation.newAggregation(match, group2 ); + AggregationResults result2 = mongoTemplate.aggregate(aggregation2, "lyms_health_charge", HashMap.class); + List mappedResults2 = result2.getMappedResults(); + baseResponse.setObject(mappedResults2); - - return null; + return baseResponse; } }