Search in sources :

Example 1 with BIDS_DETAILS_TENDERERS_ID

use of org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.BIDS_DETAILS_TENDERERS_ID in project oc-explorer by devgateway.

the class AwardsWonLostController method procurementsWonLost.

@ApiOperation(value = "Counts the won, lost procurements, flags and amounts. Receives any filters, " + "but most important here is the supplierId and bidderId. Requires bid extension. Use bidderId instead " + "of supplierId.")
@RequestMapping(value = "/api/procurementsWonLost", method = { RequestMethod.POST, RequestMethod.GET }, produces = "application/json")
public List<ProcurementsWonLost> procurementsWonLost(@ModelAttribute @Valid final YearFilterPagingRequest filter) {
    Assert.notEmpty(filter.getBidderId(), "bidderId must not be empty!");
    Assert.isTrue(CollectionUtils.isEmpty(filter.getSupplierId()), "supplierId is not allowed here! Use bidderId to show results!");
    // supplier is the same thing as bidder for this particular query
    filter.setSupplierId(filter.getBidderId());
    Map<String, CriteriaDefinition> noSupplierCriteria = createDefaultFilterCriteriaMap(filter);
    noSupplierCriteria.remove(MongoConstants.Filters.SUPPLIER_ID);
    Aggregation agg1 = newAggregation(match(getYearDefaultFilterCriteria(filter, noSupplierCriteria, TENDER_PERIOD_START_DATE)), unwind("bids.details"), unwind("bids.details.tenderers"), match(getYearDefaultFilterCriteria(filter, noSupplierCriteria, TENDER_PERIOD_START_DATE)), group(BIDS_DETAILS_TENDERERS_ID).count().as("count").sum(BIDS_DETAILS_VALUE_AMOUNT).as("totalAmount").sum(FLAGS_TOTAL_FLAGGED).as("countFlags"), project("count", "totalAmount", "countFlags"));
    List<CountAmountFlags> applied = releaseAgg(agg1, CountAmountFlags.class);
    Aggregation agg2 = newAggregation(match(where(AWARDS_STATUS).is(Award.Status.active.toString()).andOperator(getYearDefaultFilterCriteria(filter, TENDER_PERIOD_START_DATE))), unwind("awards"), unwind("awards.suppliers"), match(where(AWARDS_STATUS).is(Award.Status.active.toString()).andOperator(getYearDefaultFilterCriteria(filter.awardFiltering(), TENDER_PERIOD_START_DATE))), group(MongoConstants.FieldNames.AWARDS_SUPPLIERS_ID).count().as("count").sum(MongoConstants.FieldNames.AWARDS_VALUE_AMOUNT).as("totalAmount").sum(FLAGS_TOTAL_FLAGGED).as("countFlags"), project("count", "totalAmount", "countFlags"));
    List<CountAmountFlags> won = releaseAgg(agg2, CountAmountFlags.class);
    ArrayList<ProcurementsWonLost> ret = new ArrayList<>();
    applied.forEach(a -> {
        ProcurementsWonLost r = new ProcurementsWonLost();
        r.setApplied(a);
        Optional<CountAmountFlags> optWon = won.stream().filter(w -> w.getId().equals(a.getId())).findFirst();
        if (optWon.isPresent()) {
            r.setWon(optWon.get());
            r.setLostAmount(r.getApplied().getTotalAmount().subtract(r.getWon().getTotalAmount()));
            r.setLostCount(r.getApplied().getCount() - r.getWon().getCount());
        } else {
            r.setLostAmount(r.getApplied().getTotalAmount());
            r.setLostCount(r.getLostCount());
        }
        ret.add(r);
    });
    return ret;
}
Also used : Aggregation.newAggregation(org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation) Aggregation(org.springframework.data.mongodb.core.aggregation.Aggregation) JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) YearFilterPagingRequest(org.devgateway.ocds.web.rest.controller.request.YearFilterPagingRequest) Aggregation.group(org.springframework.data.mongodb.core.aggregation.Aggregation.group) Aggregation.newAggregation(org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation) AWARDS_SUPPLIERS_NAME(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.AWARDS_SUPPLIERS_NAME) FLAGS_TOTAL_FLAGGED(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.FLAGS_TOTAL_FLAGGED) Cacheable(org.springframework.cache.annotation.Cacheable) TENDER_PROCURING_ENTITY_ID(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.TENDER_PROCURING_ENTITY_ID) Aggregation.sort(org.springframework.data.mongodb.core.aggregation.Aggregation.sort) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) Award(org.devgateway.ocds.persistence.mongo.Award) Aggregation.match(org.springframework.data.mongodb.core.aggregation.Aggregation.match) AggregationOperation(org.springframework.data.mongodb.core.aggregation.AggregationOperation) TENDER_PERIOD_START_DATE(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.TENDER_PERIOD_START_DATE) Fields(org.springframework.data.mongodb.core.aggregation.Fields) MongoConstants(org.devgateway.ocds.persistence.mongo.constants.MongoConstants) Fields.field(org.springframework.data.mongodb.core.aggregation.Fields.field) ArrayList(java.util.ArrayList) Valid(javax.validation.Valid) ApiOperation(io.swagger.annotations.ApiOperation) BigDecimal(java.math.BigDecimal) ModelAttribute(org.springframework.web.bind.annotation.ModelAttribute) DBObject(com.mongodb.DBObject) BIDS_DETAILS_TENDERERS_ID(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.BIDS_DETAILS_TENDERERS_ID) AWARDS_STATUS(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.AWARDS_STATUS) Map(java.util.Map) TENDER_PROCURING_ENTITY_NAME(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.TENDER_PROCURING_ENTITY_NAME) Sort(org.springframework.data.domain.Sort) Aggregation.limit(org.springframework.data.mongodb.core.aggregation.Aggregation.limit) Criteria.where(org.springframework.data.mongodb.core.query.Criteria.where) Aggregation.skip(org.springframework.data.mongodb.core.aggregation.Aggregation.skip) AWARDS_SUPPLIERS_ID(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.AWARDS_SUPPLIERS_ID) RequestMethod(org.springframework.web.bind.annotation.RequestMethod) Aggregation.unwind(org.springframework.data.mongodb.core.aggregation.Aggregation.unwind) Aggregation(org.springframework.data.mongodb.core.aggregation.Aggregation) RestController(org.springframework.web.bind.annotation.RestController) Serializable(java.io.Serializable) List(java.util.List) BIDS_DETAILS_VALUE_AMOUNT(org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.BIDS_DETAILS_VALUE_AMOUNT) CriteriaDefinition(org.springframework.data.mongodb.core.query.CriteriaDefinition) CollectionUtils(org.springframework.util.CollectionUtils) Aggregation.project(org.springframework.data.mongodb.core.aggregation.Aggregation.project) CacheConfig(org.springframework.cache.annotation.CacheConfig) Optional(java.util.Optional) Assert(org.springframework.util.Assert) ArrayList(java.util.ArrayList) CriteriaDefinition(org.springframework.data.mongodb.core.query.CriteriaDefinition) ApiOperation(io.swagger.annotations.ApiOperation) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

JsonProperty (com.fasterxml.jackson.annotation.JsonProperty)1 DBObject (com.mongodb.DBObject)1 ApiOperation (io.swagger.annotations.ApiOperation)1 Serializable (java.io.Serializable)1 BigDecimal (java.math.BigDecimal)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Valid (javax.validation.Valid)1 Award (org.devgateway.ocds.persistence.mongo.Award)1 MongoConstants (org.devgateway.ocds.persistence.mongo.constants.MongoConstants)1 AWARDS_STATUS (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.AWARDS_STATUS)1 AWARDS_SUPPLIERS_ID (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.AWARDS_SUPPLIERS_ID)1 AWARDS_SUPPLIERS_NAME (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.AWARDS_SUPPLIERS_NAME)1 BIDS_DETAILS_TENDERERS_ID (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.BIDS_DETAILS_TENDERERS_ID)1 BIDS_DETAILS_VALUE_AMOUNT (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.BIDS_DETAILS_VALUE_AMOUNT)1 FLAGS_TOTAL_FLAGGED (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.FLAGS_TOTAL_FLAGGED)1 TENDER_PERIOD_START_DATE (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.TENDER_PERIOD_START_DATE)1 TENDER_PROCURING_ENTITY_ID (org.devgateway.ocds.persistence.mongo.constants.MongoConstants.FieldNames.TENDER_PROCURING_ENTITY_ID)1