package com.example.kafkaproducerconsume.service; import com.albertsons.ecommerce.oms.model.core.Order; import com.albertsons.ecommerce.oms.model.enums.OrderMode; import com.example.kafkaproducerconsume.entity.KafkaEntity; import com.example.kafkaproducerconsume.repository.KafkaRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; @Service public class KafkaService { @Autowired private KafkaRepository repo; public void save(KafkaEntity message) { repo.save(message); } public KafkaEntity get(int id) { return repo.findById(id); } @Autowired private MongoTemplate mongoTemplate; @Autowired public KafkaService(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; } public List getFilteredOrders() { Query query = Query.query(Criteria.where("orderStatus").is("PAYMENT_REQUESTED")) .addCriteria(Criteria.where("isActive").is(true)) .addCriteria(Criteria.where("subOrders.subOrderType.isRescheduled").is(true)); List filteredOrders = mongoTemplate.find(query, Order.class); return filteredOrders.stream().filter(order -> Objects.nonNull(order.getOrderNumber()) && Objects.nonNull(order.getStoreNumber())) .map(Order::getBanner) .collect(Collectors.toList()); // List> ordersWithAdditionalFields = new ArrayList<>(); // for (Order order : filteredOrders) { // String orderNumber = order.getOrderNumber(); // String storeNumber = order.getStoreNumber(); // // Map orderWithAdditionalFields = new HashMap<>(); // orderWithAdditionalFields.put("orderNumber", orderNumber); // orderWithAdditionalFields.put("storeNumber", storeNumber); // orderWithAdditionalFields.put("banner", order.getBanner()); // orderWithAdditionalFields.put("versionNumber", order.getVersionNumber()); // orderWithAdditionalFields.put("orderStatus", order.getOrderStatus()); // // ordersWithAdditionalFields.add(orderWithAdditionalFields); // } // // return ordersWithAdditionalFields; } }